diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d6a3972d..ca092958 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,8 +18,11 @@ permissions: jobs: build: - name: Build + name: Build Minecraft ${{ matrix.minecraft }} runs-on: blacksmith-4vcpu-ubuntu-2404 + strategy: + matrix: + minecraft: [26.1.2, 26.2] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -29,7 +32,7 @@ jobs: - uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 with: distribution: temurin - java-version: 21 + java-version: 25 - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: @@ -41,18 +44,18 @@ jobs: ${{ runner.os }}-gradle- - name: Build - run: ./gradlew --no-daemon build -PreleaseBuild + run: ./gradlew --no-daemon :${{ matrix.minecraft }}:build -PreleaseBuild - name: Upload Loader uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: - name: V5-Loader-26.1.2 - path: build/libs/V5-Loader-26.1.2.jar + name: V5-Loader-${{ matrix.minecraft }} + path: versions/${{ matrix.minecraft }}/build/libs/V5-Loader-${{ matrix.minecraft }}.jar if-no-files-found: error publish: needs: build - if: ${{ github.ref == 'refs/heads/26.1.2' }} + if: ${{ github.ref == 'refs/heads/26.1.2' || github.ref == 'refs/heads/26.2' }} runs-on: blacksmith-4vcpu-ubuntu-2404 permissions: contents: write @@ -65,8 +68,9 @@ jobs: - name: Download Loader uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 with: - name: V5-Loader-26.1.2 + pattern: V5-Loader-* path: build/libs + merge-multiple: true - name: Publish GitHub release env: @@ -82,7 +86,7 @@ jobs: tag="${version}-r$(( ${revision:-0} + 1 ))" gh release create "$tag" --target "$SHA" --title "$tag" --generate-notes fi - gh release upload "$tag" build/libs/V5-Loader-26.1.2.jar --clobber + gh release upload "$tag" build/libs/V5-Loader-*.jar --clobber - name: Setup Node uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 @@ -97,6 +101,9 @@ jobs: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} run: | - sha256sum build/libs/V5-Loader-26.1.2.jar | awk '{print $1}' > V5-Loader-26.1.2.jar.sha256 - wrangler r2 object put v5-builds/V5-Loader-26.1.2.jar.sha256 --file V5-Loader-26.1.2.jar.sha256 --remote - wrangler r2 object put v5-builds/V5-Loader-26.1.2.jar --file build/libs/V5-Loader-26.1.2.jar --remote + for jar in build/libs/V5-Loader-*.jar; do + name=$(basename "$jar") + sha256sum "$jar" | awk '{print $1}' > "$name.sha256" + wrangler r2 object put "v5-builds/$name.sha256" --file "$name.sha256" --remote + wrangler r2 object put "v5-builds/$name" --file "$jar" --remote + done diff --git a/.gitignore b/.gitignore index bb226010..8994e314 100644 --- a/.gitignore +++ b/.gitignore @@ -41,5 +41,6 @@ replay_*.log *.jfr versions/*/api/ +versions/*/logs/ -grunt-main.jar \ No newline at end of file +grunt-main.jar diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..51db2a3e --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,42 @@ +# Repository Guidelines + +## Coding Style + +You are a lazy senior developer. Lazy means efficient, not careless. The best code is the code never written. + +Before writing any code, stop at the first rung that holds: + +Does this need to be built at all? (YAGNI) +Does it already exist in this codebase? Reuse the helper, util, or pattern that's already here, don't re-write it. +Does the standard library already do this? Use it. +Does a native platform feature cover it? Use it. +Does an already-installed dependency solve it? Use it. +Can this be one line? Make it one line. +Only then: write the minimum code that works. +The ladder runs after you understand the problem, not instead of it: read the task and the code it touches, trace the real flow end to end, then climb. + +Bug fix = root cause, not symptom: a report names a symptom. Grep every caller of the function you touch and fix the shared function once — one guard there is a smaller diff than one per caller, and patching only the path the ticket names leaves a sibling caller still broken. + +Rules: + +No abstractions that weren't explicitly requested. +No new dependency if it can be avoided. +No boilerplate nobody asked for. +Deletion over addition. Boring over clever. Fewest files possible. +Shortest working diff wins, but only once you understand the problem. The smallest change in the wrong place isn't lazy, it's a second bug. +Question complex requests: "Do you actually need X, or does Y cover it?" +Pick the edge-case-correct option when two stdlib approaches are the same size, lazy means less code, not the flimsier algorithm. +Mark deliberate simplifications that cut a real corner with a known ceiling (global lock, O(n²) scan, naive heuristic) with a ponytail: comment naming the ceiling and upgrade path. +Not lazy about: understanding the problem (read it fully and trace the real flow before picking a rung, a small diff you don't understand is just laziness dressed up as efficiency), input validation at trust boundaries, error handling that prevents data loss, security, accessibility, the calibration real hardware needs (the platform is never the spec ideal, a clock drifts, a sensor reads off), anything explicitly requested. Lazy code without its check is unfinished: non-trivial logic leaves ONE runnable check behind, the smallest thing that fails if the logic breaks (an assert-based demo/self-check or one small test file; no frameworks, no fixtures). Trivial one-liners need no test. + +## Build, Test, and Development Process + +- `./gradlew build` — compile all supported Minecraft versions and produces `versions//build/libs/V5-Loader-DEV-.jar`. +- `./gradlew generateTypings` — regenerate `typing-generator/src/main/resources/typings.d.ts` after exported API changes. + +## Testing Guidelines + +Do not implement any testing coverage. +Before finishing, run `./gradlew build` only, do not use any other gradlew commands for confirming build status. +Changes affecting API should run `./gradlew generateTypings`. NEVER manually edit the `typings.d.ts` file EVER. +For native changes, rebuild with CMake for local only; Automated workflows will handle building all natives on push. diff --git a/NativeSrc/src/common.hpp b/NativeSrc/src/common.hpp index d5f46f35..2aad57bb 100644 --- a/NativeSrc/src/common.hpp +++ b/NativeSrc/src/common.hpp @@ -50,40 +50,42 @@ inline uint64_t chunkKey(const int x, const int z) { return (px << 32) | pz; } -struct ActionCosts { - static constexpr double INF_COST = 1e6; - static constexpr double FLY_ONE_BLOCK_TIME = 1.0 / 0.7; - static constexpr double SPRINT_ONE_BLOCK_TIME = 1.0 / 0.2806; - static constexpr double SPRINT_DIAGONAL_TIME = SPRINT_ONE_BLOCK_TIME * 1.4142135623730951; - static constexpr double MOMENTUM_LOSS_PENALTY = 6.0; - static constexpr double JUMP_PENALTY = 2.0; - static constexpr double GAP_JUMP_REWARD_OFFSET = 1.5; - static constexpr double SLAB_ASCENT_TIME = SPRINT_ONE_BLOCK_TIME * 1.1; - static constexpr double WALK_OFF_EDGE_TIME = SPRINT_ONE_BLOCK_TIME * 0.5; - static constexpr double LAND_RECOVERY_TIME = 2.0; - static constexpr double JUMP_UP_ONE_BLOCK_TIME = 28.0 + MOMENTUM_LOSS_PENALTY + SPRINT_ONE_BLOCK_TIME; - - std::array fallTimes{}; +constexpr std::array makeFallTimes() { + std::array fallTimes{}; + float currentDistance = 0.0f; + int tick = 0; + float velocity = 0.0f; - ActionCosts() { - double currentDistance = 0.0; - int tick = 0; - double velocity = 0.0; - - for (int targetDistance = 1; targetDistance <= 256; targetDistance++) { - while (currentDistance < targetDistance) { - velocity = (velocity - 0.08) * 0.98; - currentDistance -= velocity; - tick++; - } - fallTimes[static_cast(targetDistance)] = static_cast(tick); + for (int targetDistance = 1; targetDistance <= 256; targetDistance++) { + while (currentDistance < targetDistance) { + velocity = (velocity - 0.08f) * 0.98f; + currentDistance -= velocity; + tick++; } + fallTimes[static_cast(targetDistance)] = static_cast(tick); } + return fallTimes; +} + +struct ActionCosts { + static constexpr float INF_COST = 1e6f; + static constexpr float FLY_ONE_BLOCK_TIME = 1.0f / 0.7f; + static constexpr float SPRINT_ONE_BLOCK_TIME = 1.0f / 0.2806f; + static constexpr float SPRINT_DIAGONAL_TIME = SPRINT_ONE_BLOCK_TIME * 1.41421356f; + static constexpr float MOMENTUM_LOSS_PENALTY = 6.0f; + static constexpr float JUMP_PENALTY = 2.0f; + static constexpr float GAP_JUMP_REWARD_OFFSET = 1.5f; + static constexpr float SLAB_ASCENT_TIME = SPRINT_ONE_BLOCK_TIME * 1.1f; + static constexpr float WALK_OFF_EDGE_TIME = SPRINT_ONE_BLOCK_TIME * 0.5f; + static constexpr float LAND_RECOVERY_TIME = 2.0f; + static constexpr float JUMP_UP_ONE_BLOCK_TIME = 28.0f + MOMENTUM_LOSS_PENALTY + SPRINT_ONE_BLOCK_TIME; + + inline static constexpr auto FALL_TIMES = makeFallTimes(); - [[nodiscard]] double getFallTime(const int blocks) const { - if (blocks <= 0) return 0.0; - if (blocks >= static_cast(fallTimes.size())) return INF_COST; - return fallTimes[static_cast(blocks)] + LAND_RECOVERY_TIME; + [[nodiscard]] static float getFallTime(const int blocks) { + if (blocks <= 0) return 0.0f; + if (blocks >= static_cast(FALL_TIMES.size())) return INF_COST; + return FALL_TIMES[static_cast(blocks)] + LAND_RECOVERY_TIME; } }; diff --git a/NativeSrc/src/etherwarp_search.cpp b/NativeSrc/src/etherwarp_search.cpp index bb259733..366df99c 100644 --- a/NativeSrc/src/etherwarp_search.cpp +++ b/NativeSrc/src/etherwarp_search.cpp @@ -104,7 +104,7 @@ struct SimplifiedEtherwarpPath { struct SharedState { explicit SharedState(const int reserveTarget) - : heap(nodeF, nodeHeapPos) { + : heap(nodeF, nodeH, nodeG, nodeHeapPos) { nodeX.reserve(static_cast(reserveTarget)); nodeY.reserve(static_cast(reserveTarget)); nodeZ.reserve(static_cast(reserveTarget)); @@ -135,7 +135,7 @@ struct SharedState { std::vector nodePitch; std::vector nodeHeapPos; std::unordered_map coordToNode; - detail::Heap heap; + detail::Heap heap; int iterations = 0; int activeExpanders = 0; diff --git a/NativeSrc/src/jni_bridge.cpp b/NativeSrc/src/jni_bridge.cpp index 1d12f9b8..2c95d168 100644 --- a/NativeSrc/src/jni_bridge.cpp +++ b/NativeSrc/src/jni_bridge.cpp @@ -344,7 +344,7 @@ JNIEXPORT jobject JNICALL Java_com_chattriggers_ctjs_api_world_pathfinding_Nativ avoidMetaFlat[base + 2], avoidMetaFlat[base + 3], avoidMetaFlat[base + 4], - avoidPenaltyFlat[i], + static_cast(avoidPenaltyFlat[i]), }); } } @@ -355,8 +355,8 @@ JNIEXPORT jobject JNICALL Java_com_chattriggers_ctjs_api_world_pathfinding_Nativ params.goals = goals; params.isFly = isFly == JNI_TRUE; params.maxIterations = static_cast(maxIterations); - params.heuristicWeight = static_cast(heuristicWeight); - params.nonPrimaryStartPenalty = static_cast(nonPrimaryStartPenalty); + params.heuristicWeight = static_cast(heuristicWeight); + params.nonPrimaryStartPenalty = static_cast(nonPrimaryStartPenalty); params.moveOrderOffset = static_cast(moveOrderOffset); params.avoidZones = std::move(avoidZones); diff --git a/NativeSrc/src/lazy_section_array.hpp b/NativeSrc/src/lazy_section_array.hpp new file mode 100644 index 00000000..ef02bd42 --- /dev/null +++ b/NativeSrc/src/lazy_section_array.hpp @@ -0,0 +1,45 @@ +#pragma once + +#include "common.hpp" + +#include +#include +#include + +namespace v5pf::detail { + +template +class LazySectionArray { + public: + T& at(const int x, const int y, const int z) { + const uint64_t key = coordKey(x >> 4, y >> 4, z >> 4); + const size_t cursorIdx = static_cast((key ^ (key >> 26) ^ (key >> 38)) & 3ULL); + auto& cursor = cursors_[cursorIdx]; + if (cursor.section == nullptr || cursor.key != key) { + auto [it, inserted] = sections_.try_emplace(key); + if (inserted) it->second = std::make_unique
(); + cursor = {key, it->second.get()}; + } + + const size_t index = static_cast(((y & 15) << 8) | ((z & 15) << 4) | (x & 15)); + return (*cursor.section)[index]; + } + + void clear() { + sections_.clear(); + cursors_ = {}; + } + + private: + using Section = std::array; + + struct Cursor { + uint64_t key = 0; + Section* section = nullptr; + }; + + std::unordered_map> sections_; + std::array cursors_{}; +}; + +} // namespace v5pf::detail diff --git a/NativeSrc/src/path_simplifier.cpp b/NativeSrc/src/path_simplifier.cpp index 532a4a15..c3115e2a 100644 --- a/NativeSrc/src/path_simplifier.cpp +++ b/NativeSrc/src/path_simplifier.cpp @@ -106,14 +106,6 @@ std::vector extractKeyPoints( if (canSimplify) { if (isFly) { canSimplify = canFlyDirectly(world, start, end); - } else { - for (int i = from + 1; i < to; i++) { - const Int3& p = points[static_cast(i)]; - if (!isWalkSafeVoxel(world, p.x, p.y, p.z)) { - canSimplify = false; - break; - } - } } } diff --git a/NativeSrc/src/pathfinder.cpp b/NativeSrc/src/pathfinder.cpp index 569b1753..c01bd55c 100644 --- a/NativeSrc/src/pathfinder.cpp +++ b/NativeSrc/src/pathfinder.cpp @@ -1,6 +1,7 @@ #include "pathfinder.hpp" #include "path_annotations.hpp" +#include "lazy_section_array.hpp" #include "path_simplifier.hpp" #include "path_signature.hpp" #include "pathfinder_heap.hpp" @@ -11,10 +12,90 @@ #include #include #include -#include namespace v5pf { +namespace { + +struct NodeIndexEntry { + uint32_t generation = 0; + int index = -1; +}; + +class NodeIndexTable { + public: + void reset() { + if (++generation_ == 0) { + entries_.clear(); + generation_ = 1; + } + } + + std::pair getOrInsert(const int x, const int y, const int z, const int index) { + auto& entry = entries_.at(x, y, z); + if (entry.generation == generation_) return {entry.index, false}; + entry = {generation_, index}; + return {index, true}; + } + + private: + uint32_t generation_ = 0; + detail::LazySectionArray entries_; +}; + +struct SearchWorkspace { + std::vector nodeX; + std::vector nodeY; + std::vector nodeZ; + std::vector nodeG; + std::vector nodeH; + std::vector nodeF; + std::vector nodeAvoidPenalty; + std::vector nodeParent; + std::vector nodeStartIndex; + std::vector nodeHeapPos; + NodeIndexTable coordToNode; + detail::Heap heap; + + SearchWorkspace() + : heap(nodeF, nodeH, nodeG, nodeHeapPos) { + } + + void reset(const size_t reserveSize, const int heapCapacity) { + nodeX.clear(); + nodeY.clear(); + nodeZ.clear(); + nodeG.clear(); + nodeH.clear(); + nodeF.clear(); + nodeAvoidPenalty.clear(); + nodeParent.clear(); + nodeStartIndex.clear(); + nodeHeapPos.clear(); + coordToNode.reset(); + heap.clear(); + + nodeX.reserve(reserveSize); + nodeY.reserve(reserveSize); + nodeZ.reserve(reserveSize); + nodeG.reserve(reserveSize); + nodeH.reserve(reserveSize); + nodeF.reserve(reserveSize); + nodeAvoidPenalty.reserve(reserveSize); + nodeParent.reserve(reserveSize); + nodeStartIndex.reserve(reserveSize); + nodeHeapPos.reserve(reserveSize); + heap.reserve(heapCapacity); + } +}; + +SearchWorkspace& searchWorkspace() { + static thread_local SearchWorkspace workspace; + return workspace; +} + +} // namespace + std::optional findPath( const WorldSnapshot& world, const SearchParams& params, @@ -39,54 +120,49 @@ std::optional findPath( const int reserveTarget = std::clamp(params.maxIterations / 2, 16384, 262144); const size_t reserveSize = static_cast(reserveTarget); - - std::vector nodeX; - std::vector nodeY; - std::vector nodeZ; - std::vector nodeG; - std::vector nodeH; - std::vector nodeF; - std::vector nodeParent; - std::vector nodeStartIndex; - std::vector nodeHeapPos; - - nodeX.reserve(reserveSize); - nodeY.reserve(reserveSize); - nodeZ.reserve(reserveSize); - nodeG.reserve(reserveSize); - nodeH.reserve(reserveSize); - nodeF.reserve(reserveSize); - nodeParent.reserve(reserveSize); - nodeStartIndex.reserve(reserveSize); - nodeHeapPos.reserve(reserveSize); - - std::unordered_map coordToNode; - coordToNode.reserve(reserveSize); + auto& workspace = searchWorkspace(); + workspace.reset(reserveSize, reserveTarget); + auto& nodeX = workspace.nodeX; + auto& nodeY = workspace.nodeY; + auto& nodeZ = workspace.nodeZ; + auto& nodeG = workspace.nodeG; + auto& nodeH = workspace.nodeH; + auto& nodeF = workspace.nodeF; + auto& nodeAvoidPenalty = workspace.nodeAvoidPenalty; + auto& nodeParent = workspace.nodeParent; + auto& nodeStartIndex = workspace.nodeStartIndex; + auto& nodeHeapPos = workspace.nodeHeapPos; + auto& coordToNode = workspace.coordToNode; + auto& heap = workspace.heap; + + const float weight = (std::isfinite(params.heuristicWeight) && params.heuristicWeight > 0.0f) + ? params.heuristicWeight + : 1.0f; + const bool isFly = params.isFly; auto getOrCreateNode = [&](const int x, const int y, const int z) { const int idx = static_cast(nodeX.size()); - const auto [it, inserted] = coordToNode.try_emplace(coordKey(x, y, z), idx); - if (!inserted) return std::pair{it->second, false}; + const auto [nodeIdx, inserted] = coordToNode.getOrInsert(x, y, z, idx); + if (!inserted) return std::pair{nodeIdx, false}; nodeX.push_back(x); nodeY.push_back(y); nodeZ.push_back(z); - nodeG.push_back(std::numeric_limits::infinity()); - nodeH.push_back(runtime.heuristic(x, y, z)); - nodeF.push_back(std::numeric_limits::infinity()); + nodeG.push_back(std::numeric_limits::infinity()); + nodeH.push_back(runtime.heuristic(x, y, z) * weight); + nodeF.push_back(nodeH.back()); + nodeAvoidPenalty.push_back(runtime.transientAvoidPenalty(x, y, z)); nodeParent.push_back(-1); nodeStartIndex.push_back(-1); nodeHeapPos.push_back(-1); return std::pair{idx, true}; }; - detail::Heap heap(nodeF, nodeHeapPos); - heap.reserve(reserveTarget); - - const double weight = (std::isfinite(params.heuristicWeight) && params.heuristicWeight > 0.0) - ? params.heuristicWeight - : 1.0; - const bool isFly = params.isFly; + auto setNodeCost = [&](const int nodeIdx, const float cost) { + const size_t idx = static_cast(nodeIdx); + nodeG[idx] = cost; + nodeF[idx] = cost + nodeH[idx]; + }; std::array walkMovesOrdered = detail::WALK_MOVES; const int walkOffset = params.moveOrderOffset >= 0 ? (params.moveOrderOffset % static_cast(walkMovesOrdered.size())) : 0; @@ -99,15 +175,14 @@ std::optional findPath( for (size_t i = 0; i < params.starts.size(); i++) { const auto& start = params.starts[i]; - const double startPenalty = i == 0 ? 0.0 : std::max(0.0, params.nonPrimaryStartPenalty); + const float startPenalty = i == 0 ? 0.0f : std::max(0.0f, params.nonPrimaryStartPenalty); const int nodeIdx = getOrCreateNode(start.x, start.y, start.z).first; if (startPenalty < nodeG[static_cast(nodeIdx)]) { nodeParent[static_cast(nodeIdx)] = -1; nodeStartIndex[static_cast(nodeIdx)] = static_cast(i); - nodeG[static_cast(nodeIdx)] = startPenalty; - nodeF[static_cast(nodeIdx)] = startPenalty + nodeH[static_cast(nodeIdx)] * weight; + setNodeCost(nodeIdx, startPenalty); } if (nodeHeapPos[static_cast(nodeIdx)] == -1) { @@ -119,7 +194,7 @@ std::optional findPath( int iterations = 0; while (!heap.empty() && iterations < params.maxIterations) { - if (cancelFlag.load()) { + if ((iterations & 63) == 0 && cancelFlag.load(std::memory_order_relaxed)) { return std::nullopt; } @@ -164,31 +239,29 @@ std::optional findPath( return result; } - const double currCost = nodeG[static_cast(currIdx)]; + const float currCost = nodeG[static_cast(currIdx)]; const int currStartIdx = nodeStartIndex[static_cast(currIdx)]; if (isFly) { - const double currFlyProgress = runtime.flyHorizontalProgress(curr.x, curr.y, curr.z); + const float currFlyProgress = runtime.flyHorizontalProgress(curr.x, curr.y, curr.z); for (const auto& move : detail::FLY_MOVES) { detail::MoveOut out; if (!runtime.flyMove(curr, move, currFlyProgress, out)) continue; if (out.cost >= ActionCosts::INF_COST) continue; - const double newCost = currCost + out.cost + runtime.transientAvoidPenalty(out.pos.x, out.pos.y, out.pos.z); const auto [nIdx, inserted] = getOrCreateNode(out.pos.x, out.pos.y, out.pos.z); + const float newCost = currCost + out.cost + nodeAvoidPenalty[static_cast(nIdx)]; if (inserted) { nodeParent[static_cast(nIdx)] = currIdx; nodeStartIndex[static_cast(nIdx)] = currStartIdx; - nodeG[static_cast(nIdx)] = newCost; - nodeF[static_cast(nIdx)] = newCost + nodeH[static_cast(nIdx)] * weight; + setNodeCost(nIdx, newCost); heap.add(nIdx); } else { if (newCost < nodeG[static_cast(nIdx)]) { nodeParent[static_cast(nIdx)] = currIdx; nodeStartIndex[static_cast(nIdx)] = currStartIdx; - nodeG[static_cast(nIdx)] = newCost; - nodeF[static_cast(nIdx)] = newCost + nodeH[static_cast(nIdx)] * weight; + setNodeCost(nIdx, newCost); if (nodeHeapPos[static_cast(nIdx)] != -1) { heap.relocate(nIdx); @@ -206,20 +279,18 @@ std::optional findPath( if (!runtime.walkMove(curr, move, out)) continue; if (out.cost >= ActionCosts::INF_COST) continue; - const double newCost = currCost + out.cost + runtime.transientAvoidPenalty(out.pos.x, out.pos.y, out.pos.z); const auto [nIdx, inserted] = getOrCreateNode(out.pos.x, out.pos.y, out.pos.z); + const float newCost = currCost + out.cost + nodeAvoidPenalty[static_cast(nIdx)]; if (inserted) { nodeParent[static_cast(nIdx)] = currIdx; nodeStartIndex[static_cast(nIdx)] = currStartIdx; - nodeG[static_cast(nIdx)] = newCost; - nodeF[static_cast(nIdx)] = newCost + nodeH[static_cast(nIdx)] * weight; + setNodeCost(nIdx, newCost); heap.add(nIdx); } else { if (newCost < nodeG[static_cast(nIdx)]) { nodeParent[static_cast(nIdx)] = currIdx; nodeStartIndex[static_cast(nIdx)] = currStartIdx; - nodeG[static_cast(nIdx)] = newCost; - nodeF[static_cast(nIdx)] = newCost + nodeH[static_cast(nIdx)] * weight; + setNodeCost(nIdx, newCost); if (nodeHeapPos[static_cast(nIdx)] != -1) { heap.relocate(nIdx); diff --git a/NativeSrc/src/pathfinder.hpp b/NativeSrc/src/pathfinder.hpp index 56145024..f55d3d86 100644 --- a/NativeSrc/src/pathfinder.hpp +++ b/NativeSrc/src/pathfinder.hpp @@ -13,7 +13,7 @@ struct AvoidZone { int z; int radiusSq; int maxYDiff; - double penalty; + float penalty; }; struct SearchParams { @@ -21,8 +21,8 @@ struct SearchParams { std::vector goals; bool isFly = false; int maxIterations = 500000; - double heuristicWeight = 1.05; - double nonPrimaryStartPenalty = 0.0; + float heuristicWeight = 1.05f; + float nonPrimaryStartPenalty = 0.0f; int moveOrderOffset = 0; std::vector avoidZones; }; diff --git a/NativeSrc/src/pathfinder_heap.hpp b/NativeSrc/src/pathfinder_heap.hpp index ba9ebf82..d34780b6 100644 --- a/NativeSrc/src/pathfinder_heap.hpp +++ b/NativeSrc/src/pathfinder_heap.hpp @@ -1,13 +1,19 @@ #pragma once +#include #include namespace v5pf::detail { +template class Heap { public: - explicit Heap(std::vector& fCost, std::vector& heapPos) - : fCost_(fCost), heapPos_(heapPos) { + explicit Heap( + const std::vector& fCost, + const std::vector& hCost, + const std::vector& gCost, + std::vector& heapPos + ) : fCost_(fCost), hCost_(hCost), gCost_(gCost), heapPos_(heapPos) { items_.resize(1); } @@ -15,6 +21,10 @@ class Heap { return size_ == 0; } + void clear() { + size_ = 0; + } + void reserve(const int capacity) { if (capacity <= 0) return; const size_t needed = static_cast(capacity + 1); @@ -65,18 +75,27 @@ class Heap { std::vector items_; int size_ = 0; - std::vector& fCost_; + const std::vector& fCost_; + const std::vector& hCost_; + const std::vector& gCost_; std::vector& heapPos_; + [[nodiscard]] bool less(const int left, const int right) const { + const size_t lhs = static_cast(left); + const size_t rhs = static_cast(right); + if (fCost_[lhs] != fCost_[rhs]) return fCost_[lhs] < fCost_[rhs]; + if (hCost_[lhs] != hCost_[rhs]) return hCost_[lhs] < hCost_[rhs]; + if (gCost_[lhs] != gCost_[rhs]) return gCost_[lhs] > gCost_[rhs]; + return left < right; + } + void siftUp(int pos) { const int node = items_[static_cast(pos)]; - const double cost = fCost_[static_cast(node)]; while (pos > 1) { - const int parent = pos >> 1; + const int parent = (pos - 2) / 4 + 1; const int parentNode = items_[static_cast(parent)]; - const double parentCost = fCost_[static_cast(parentNode)]; - if (cost >= parentCost) break; + if (!less(node, parentNode)) break; items_[static_cast(pos)] = parentNode; heapPos_[static_cast(parentNode)] = pos; @@ -89,26 +108,21 @@ class Heap { void siftDown(int pos) { const int node = items_[static_cast(pos)]; - const double cost = fCost_[static_cast(node)]; - const int half = size_ >> 1; - - while (pos <= half) { - int child = pos << 1; - int childNode = items_[static_cast(child)]; - double childCost = fCost_[static_cast(childNode)]; - - const int right = child + 1; - if (right <= size_) { - const int rightNode = items_[static_cast(right)]; - const double rightCost = fCost_[static_cast(rightNode)]; - if (rightCost < childCost) { - child = right; - childNode = rightNode; - childCost = rightCost; + + while (true) { + const int firstChild = (pos - 1) * 4 + 2; + if (firstChild > size_) break; + + int child = firstChild; + const int lastChild = std::min(firstChild + 3, size_); + for (int candidate = firstChild + 1; candidate <= lastChild; candidate++) { + if (less(items_[static_cast(candidate)], items_[static_cast(child)])) { + child = candidate; } } - if (cost <= childCost) break; + const int childNode = items_[static_cast(child)]; + if (!less(childNode, node)) break; items_[static_cast(pos)] = childNode; heapPos_[static_cast(childNode)] = pos; diff --git a/NativeSrc/src/pathfinder_runtime.hpp b/NativeSrc/src/pathfinder_runtime.hpp index 52090ac9..0a7c4cee 100644 --- a/NativeSrc/src/pathfinder_runtime.hpp +++ b/NativeSrc/src/pathfinder_runtime.hpp @@ -1,17 +1,17 @@ #pragma once +#include "lazy_section_array.hpp" #include "pathfinder.hpp" #include "world_voxel_cursor.hpp" #include -#include namespace v5pf::detail { constexpr int MAX_DIST = 6; constexpr int OPEN_SPACE_SOFT_CAP = MAX_DIST; -inline constexpr std::array EDGE_PENALTIES = { +inline constexpr std::array EDGE_PENALTIES = { 24.0, 19.5, 16.0, @@ -21,7 +21,7 @@ inline constexpr std::array EDGE_PENALTIES = { 0.5, }; -inline constexpr std::array WALL_PENALTIES = { +inline constexpr std::array WALL_PENALTIES = { 17.0, 13.5, 11.0, @@ -56,96 +56,120 @@ inline bool hasFlag(const uint16_t flags, const uint16_t bit) { return (flags & bit) != 0; } +inline bool isPassableFlags(const uint16_t flags) { + return hasFlag(flags, VF_PASSABLE) || hasFlag(flags, VF_CARPET_LIKE); +} + +inline bool isFlyPassableFlags(const uint16_t flags) { + return isPassableFlags(flags) || hasFlag(flags, VF_PASSABLE_FLY); +} + struct MoveOut { Int3 pos{}; - double cost = ActionCosts::INF_COST; + float cost = ActionCosts::INF_COST; }; struct FlyEnvironment { - double groundCost = 0.0; - double horizontalCost = 0.0; - double enclosureCost = 0.0; - bool confined = false; + float groundCost = 0.0f; + float horizontalCost = 0.0f; + float enclosureCost = 0.0f; + uint8_t computed = 0; +}; + +template +struct StampedValue { + uint32_t generation = 0; + T value{}; +}; + +struct VoxelClassifications { uint8_t computed = 0; + uint8_t values = 0; }; +struct RuntimeCache { + std::shared_ptr worldIdentity; + int snapshotMinY = 0; + int snapshotMaxY = 0; + LazySectionArray> classifications; + LazySectionArray> penalties; + LazySectionArray> flyEnvironments; + + void begin(const WorldSnapshot& world) { + const auto identity = world.data != nullptr ? world.data->identity : nullptr; + if (worldIdentity == identity && snapshotMinY == world.minY && snapshotMaxY == world.maxY) return; + worldIdentity = identity; + snapshotMinY = world.minY; + snapshotMaxY = world.maxY; + classifications.clear(); + penalties.clear(); + flyEnvironments.clear(); + } +}; + +inline RuntimeCache& runtimeCache() { + static thread_local RuntimeCache cache; + return cache; +} + class Runtime { public: Runtime(const WorldSnapshot& world, const SearchParams& params); [[nodiscard]] bool isAtGoal(int x, int y, int z) const; - [[nodiscard]] double heuristic(int x, int y, int z) const; - [[nodiscard]] double transientAvoidPenalty(int x, int y, int z) const; - [[nodiscard]] double flyHorizontalProgress(int x, int y, int z) const; + [[nodiscard]] float heuristic(int x, int y, int z) const; + [[nodiscard]] float transientAvoidPenalty(int x, int y, int z) const; + [[nodiscard]] float flyHorizontalProgress(int x, int y, int z) const; [[nodiscard]] bool walkMove(const Int3& current, const Int3& delta, MoveOut& out); [[nodiscard]] bool flyMove(const Int3& current, const Int3& delta, MoveOut& out); - [[nodiscard]] bool flyMove(const Int3& current, const Int3& delta, double progress, MoveOut& out); + [[nodiscard]] bool flyMove(const Int3& current, const Int3& delta, float progress, MoveOut& out); private: const WorldSnapshot& world_; const SearchParams& params_; - ActionCosts costs_{}; mutable WorldVoxelCursor voxelCursor_; - - std::unordered_map safeCache_; - std::unordered_map flyClearCache_; - std::unordered_map flyEnvironmentCache_; - std::unordered_map penaltyCache_; - mutable std::unordered_map avoidPenaltyCache_; - - bool avoidPenaltyCacheEnabled_ = false; - - int walkStartX_ = 0; - int walkStartZ_ = 0; + RuntimeCache& cache_; Int3 startFly_{0, 0, 0}; int flyMinY_ = 0; int flyMaxY_ = 0; [[nodiscard]] uint16_t flagsAt(int x, int y, int z) const; - [[nodiscard]] bool isSolid(int x, int y, int z) const; + [[nodiscard]] uint32_t cacheGenerationAt(int x, int z) const; [[nodiscard]] bool isPassable(int x, int y, int z) const; [[nodiscard]] bool isPassableForFlying(int x, int y, int z) const; - [[nodiscard]] bool isBottomSlab(int x, int y, int z) const; - [[nodiscard]] bool isTopSlab(int x, int y, int z) const; - [[nodiscard]] bool isFenceLike(int x, int y, int z) const; - [[nodiscard]] bool isStairsBottom(int x, int y, int z) const; - [[nodiscard]] bool isBlockingWall(int x, int y, int z) const; - [[nodiscard]] bool isFluid(int x, int y, int z) const; [[nodiscard]] bool isSafe(int x, int y, int z); [[nodiscard]] bool isFlyColumnClear(int x, int y, int z); - [[nodiscard]] double fluidPenalty(int x, int y, int z) const; - - [[nodiscard]] double walkHeuristic(int x, int y, int z) const; - [[nodiscard]] double flyHeuristic(int x, int y, int z) const; + [[nodiscard]] float walkHeuristic(int x, int y, int z) const; + [[nodiscard]] float flyHeuristic(int x, int y, int z) const; [[nodiscard]] const Int3& closestFlyGoal(int x, int y, int z) const; - [[nodiscard]] double calculateProgress(int x, int z, const Int3& goal) const; + [[nodiscard]] float calculateProgress(int x, int z, const Int3& goal) const; [[nodiscard]] int directionMask(int x, int y, int z); [[nodiscard]] bool isStepDirection(int x, int y, int z, int dx, int dz); - [[nodiscard]] bool isStepSurface(int x, int y, int z); [[nodiscard]] bool isEdge(int x, int y, int z); [[nodiscard]] bool isWall(int x, int y, int z); - [[nodiscard]] int scanForEdge(int x, int y, int z, int dx, int dz); - [[nodiscard]] int scanForWall(int x, int y, int z, int dx, int dz); - - [[nodiscard]] int edgeDistance(int x, int y, int z); - [[nodiscard]] int wallDistance(int x, int y, int z); - [[nodiscard]] int edgeDistanceWithMask(int x, int y, int z, int mask); - [[nodiscard]] int wallDistanceWithMask(int x, int y, int z, int mask); - [[nodiscard]] double combinedPenalty(int edgeDist, int wallDist) const; - [[nodiscard]] double pathPenalty(int x, int y, int z); + void directionalDistances(int x, int y, int z, int mask, int& edgeDist, int& wallDist); + [[nodiscard]] float combinedPenalty(int edgeDist, int wallDist) const; + [[nodiscard]] float pathPenalty(int x, int y, int z); [[nodiscard]] bool moveTraverse(const Int3& current, int dx, int dz, MoveOut& out); [[nodiscard]] bool moveDiagonal(const Int3& current, int dx, int dz, MoveOut& out); [[nodiscard]] bool moveAscend(const Int3& current, int dx, int dz, MoveOut& out); [[nodiscard]] bool moveDescend(const Int3& current, int dx, int dz, MoveOut& out); - [[nodiscard]] bool moveFly(const Int3& current, int dx, int dy, int dz, double progress, MoveOut& out); + [[nodiscard]] bool moveFly(const Int3& current, int dx, int dy, int dz, float progress, MoveOut& out); void populateFlyEnvironment(int x, int y, int z, uint8_t needed, FlyEnvironment& environment); + + struct ChunkGenerationCursor { + int chunkX = std::numeric_limits::min(); + int chunkZ = std::numeric_limits::min(); + uint32_t generation = 0; + }; + mutable std::array chunkGenerationCursors_{}; }; } // namespace v5pf::detail diff --git a/NativeSrc/src/pathfinder_runtime_common.inl b/NativeSrc/src/pathfinder_runtime_common.inl index edad3429..60a66ea1 100644 --- a/NativeSrc/src/pathfinder_runtime_common.inl +++ b/NativeSrc/src/pathfinder_runtime_common.inl @@ -10,22 +10,8 @@ inline Runtime::Runtime(const WorldSnapshot& world, const SearchParams& params) : world_(world), params_(params), voxelCursor_(world), - walkStartX_(params.starts.empty() ? 0 : params.starts.front().x), - walkStartZ_(params.starts.empty() ? 0 : params.starts.front().z) { - const int reserveTarget = std::clamp(params_.maxIterations / 2, 4096, 262144); - const size_t cacheReserve = static_cast(reserveTarget); - avoidPenaltyCacheEnabled_ = params_.avoidZones.size() >= 3; - - if (params_.isFly) { - flyClearCache_.reserve(cacheReserve); - flyEnvironmentCache_.reserve(cacheReserve); - } else { - safeCache_.reserve(cacheReserve); - penaltyCache_.reserve(cacheReserve); - } - if (avoidPenaltyCacheEnabled_) { - avoidPenaltyCache_.reserve(cacheReserve); - } + cache_(runtimeCache()) { + cache_.begin(world); flyMinY_ = world_.minY; flyMaxY_ = world_.maxY - 2; @@ -44,37 +30,12 @@ inline bool Runtime::isAtGoal(const int x, const int y, const int z) const { return false; } -inline double Runtime::heuristic(const int x, const int y, const int z) const { +inline float Runtime::heuristic(const int x, const int y, const int z) const { return params_.isFly ? flyHeuristic(x, y, z) : walkHeuristic(x, y, z); } -inline double Runtime::transientAvoidPenalty(const int x, const int y, const int z) const { - if (params_.avoidZones.empty()) return 0.0; - - if (!avoidPenaltyCacheEnabled_) { - double penalty = 0.0; - for (const auto& zone : params_.avoidZones) { - if (std::abs(y - zone.y) > zone.maxYDiff) continue; - - const int dx = x - zone.x; - const int dz = z - zone.z; - const long long distSq = static_cast(dx) * dx + static_cast(dz) * dz; - if (distSq > zone.radiusSq) continue; - - const double normalized = zone.radiusSq <= 1 ? 0.0 : static_cast(distSq) / static_cast(zone.radiusSq); - const double falloff = std::max(0.2, 1.0 - normalized); - penalty += zone.penalty * falloff; - } - return penalty; - } - - const uint64_t key = coordKey(x, y, z); - const auto cached = avoidPenaltyCache_.find(key); - if (cached != avoidPenaltyCache_.end()) { - return cached->second; - } - - double penalty = 0.0; +inline float Runtime::transientAvoidPenalty(const int x, const int y, const int z) const { + float penalty = 0.0f; for (const auto& zone : params_.avoidZones) { if (std::abs(y - zone.y) > zone.maxYDiff) continue; @@ -83,15 +44,14 @@ inline double Runtime::transientAvoidPenalty(const int x, const int y, const int const long long distSq = static_cast(dx) * dx + static_cast(dz) * dz; if (distSq > zone.radiusSq) continue; - const double normalized = zone.radiusSq <= 1 ? 0.0 : static_cast(distSq) / static_cast(zone.radiusSq); - const double falloff = std::max(0.2, 1.0 - normalized); + const float normalized = zone.radiusSq <= 1 ? 0.0f : static_cast(distSq) / static_cast(zone.radiusSq); + const float falloff = std::max(0.2f, 1.0f - normalized); penalty += zone.penalty * falloff; } - avoidPenaltyCache_.emplace(key, penalty); return penalty; } -inline double Runtime::flyHorizontalProgress(const int x, const int y, const int z) const { +inline float Runtime::flyHorizontalProgress(const int x, const int y, const int z) const { return calculateProgress(x, z, closestFlyGoal(x, y, z)); } @@ -115,7 +75,7 @@ inline bool Runtime::flyMove(const Int3& current, const Int3& delta, MoveOut& ou return moveFly(current, delta.x, delta.y, delta.z, calculateProgress(current.x, current.z, goal), out); } -inline bool Runtime::flyMove(const Int3& current, const Int3& delta, const double progress, MoveOut& out) { +inline bool Runtime::flyMove(const Int3& current, const Int3& delta, const float progress, MoveOut& out) { return moveFly(current, delta.x, delta.y, delta.z, progress, out); } @@ -123,91 +83,67 @@ inline uint16_t Runtime::flagsAt(const int x, const int y, const int z) const { return voxelCursor_.getFlags(x, y, z); } -inline bool Runtime::isSolid(const int x, const int y, const int z) const { - return hasFlag(flagsAt(x, y, z), VF_SOLID); +inline uint32_t Runtime::cacheGenerationAt(const int x, const int z) const { + const int chunkX = x >> 4; + const int chunkZ = z >> 4; + const uint32_t hash = static_cast(chunkX) ^ (static_cast(chunkZ) << 1); + auto& cursor = chunkGenerationCursors_[static_cast(hash & 3u)]; + if (cursor.chunkX != chunkX || cursor.chunkZ != chunkZ) { + cursor = {chunkX, chunkZ, world_.cacheGenerationForChunk(chunkX, chunkZ)}; + } + return cursor.generation; } inline bool Runtime::isPassable(const int x, const int y, const int z) const { - const uint16_t flags = flagsAt(x, y, z); - return hasFlag(flags, VF_PASSABLE) || hasFlag(flags, VF_CARPET_LIKE); + return isPassableFlags(flagsAt(x, y, z)); } inline bool Runtime::isPassableForFlying(const int x, const int y, const int z) const { - const uint16_t flags = flagsAt(x, y, z); - return hasFlag(flags, VF_PASSABLE) || hasFlag(flags, VF_PASSABLE_FLY) || hasFlag(flags, VF_CARPET_LIKE); -} - -inline bool Runtime::isBottomSlab(const int x, const int y, const int z) const { - return hasFlag(flagsAt(x, y, z), VF_SLAB_BOTTOM); -} - -inline bool Runtime::isTopSlab(const int x, const int y, const int z) const { - return hasFlag(flagsAt(x, y, z), VF_SLAB_TOP); -} - -inline bool Runtime::isFenceLike(const int x, const int y, const int z) const { - return hasFlag(flagsAt(x, y, z), VF_FENCE_LIKE); -} - -inline bool Runtime::isStairsBottom(const int x, const int y, const int z) const { - return hasFlag(flagsAt(x, y, z), VF_STAIRS_BOTTOM); -} - -inline bool Runtime::isBlockingWall(const int x, const int y, const int z) const { - return hasFlag(flagsAt(x, y, z), VF_BLOCKING_WALL); -} - -inline bool Runtime::isFluid(const int x, const int y, const int z) const { - return hasFlag(flagsAt(x, y, z), VF_FLUID); + return isFlyPassableFlags(flagsAt(x, y, z)); } inline bool Runtime::isSafe(const int x, const int y, const int z) { - const uint64_t key = coordKey(x, y, z); - const auto it = safeCache_.find(key); - if (it != safeCache_.end()) { - return it->second == 1; - } - - const bool safe = isSolid(x, y - 1, z) && - isPassable(x, y, z) && - isPassable(x, y + 1, z); - - safeCache_[key] = safe ? 1 : 0; + constexpr uint8_t bit = 1u << 0; + auto& cached = cache_.classifications.at(x, y, z); + const uint32_t generation = cacheGenerationAt(x, z); + if (cached.generation != generation) cached = {generation, {}}; + if ((cached.value.computed & bit) != 0) return (cached.value.values & bit) != 0; + + const bool safe = hasFlag(flagsAt(x, y - 1, z), VF_SOLID) && + isPassableFlags(flagsAt(x, y, z)) && + isPassableFlags(flagsAt(x, y + 1, z)); + cached.value.computed |= bit; + if (safe) cached.value.values |= bit; return safe; } inline bool Runtime::isFlyColumnClear(const int x, const int y, const int z) { - const uint64_t key = coordKey(x, y, z); - const auto it = flyClearCache_.find(key); - if (it != flyClearCache_.end()) { - return it->second == 1; - } - - const bool clear = isPassableForFlying(x, y, z) && - !isTopSlab(x, y + 1, z) && - isPassableForFlying(x, y + 1, z); - - flyClearCache_[key] = clear ? 1 : 0; + constexpr uint8_t bit = 1u << 3; + auto& cached = cache_.classifications.at(x, y, z); + const uint32_t generation = cacheGenerationAt(x, z); + if (cached.generation != generation) cached = {generation, {}}; + if ((cached.value.computed & bit) != 0) return (cached.value.values & bit) != 0; + + const uint16_t feet = flagsAt(x, y, z); + const uint16_t head = flagsAt(x, y + 1, z); + const bool clear = isFlyPassableFlags(feet) && + !hasFlag(head, VF_SLAB_TOP) && + isFlyPassableFlags(head); + cached.value.computed |= bit; + if (clear) cached.value.values |= bit; return clear; } -inline double Runtime::fluidPenalty(const int x, const int y, const int z) const { - double penalty = 0.0; - if (isFluid(x, y, z)) penalty += 20.0; - if (isFluid(x, y + 1, z)) penalty += 20.0; - return penalty; -} - -inline double Runtime::walkHeuristic(const int x, const int y, const int z) const { - if (params_.goals.empty()) return 0.0; +inline float Runtime::walkHeuristic(const int x, const int y, const int z) const { + if (params_.goals.empty()) return 0.0f; - const double sprintCost = ActionCosts::SPRINT_ONE_BLOCK_TIME; - const double diagonalCost = ActionCosts::SPRINT_DIAGONAL_TIME; - const double fallCostPerBlock = costs_.getFallTime(2) * 0.5; - const double jumpCostPerBlock = ActionCosts::JUMP_UP_ONE_BLOCK_TIME; - const double verticalReluctance = sprintCost * 0.35; + const float sprintCost = ActionCosts::SPRINT_ONE_BLOCK_TIME; + const float diagonalCost = ActionCosts::SPRINT_DIAGONAL_TIME; + const float fallCostPerBlock = ActionCosts::getFallTime(2) * 0.5f; + const float jumpCostPerBlock = ActionCosts::JUMP_UP_ONE_BLOCK_TIME; + const float verticalReluctance = sprintCost * 0.35f; - double best = std::numeric_limits::infinity(); + float best = std::numeric_limits::infinity(); for (const auto& goal : params_.goals) { const long long dx = std::llabs(static_cast(x) - goal.x); const long long dz = std::llabs(static_cast(z) - goal.z); @@ -216,12 +152,12 @@ inline double Runtime::walkHeuristic(const int x, const int y, const int z) cons const long long minHoriz = std::min(dx, dz); const long long maxHoriz = std::max(dx, dz); - double horizontal = static_cast(minHoriz) * diagonalCost + - static_cast(maxHoriz - minHoriz) * sprintCost; + float horizontal = static_cast(minHoriz) * diagonalCost + + static_cast(maxHoriz - minHoriz) * sprintCost; if (dy != 0) { - const double absDy = static_cast(std::llabs(dy)); - horizontal += (dy > 0 ? static_cast(dy) * fallCostPerBlock : absDy * jumpCostPerBlock); + const float absDy = static_cast(std::llabs(dy)); + horizontal += (dy > 0 ? static_cast(dy) * fallCostPerBlock : absDy * jumpCostPerBlock); horizontal += absDy * verticalReluctance; } @@ -230,7 +166,7 @@ inline double Runtime::walkHeuristic(const int x, const int y, const int z) cons } } - return std::isfinite(best) ? best : 0.0; + return std::isfinite(best) ? best : 0.0f; } inline int Runtime::directionMask(const int x, const int y, const int z) { @@ -247,110 +183,110 @@ inline bool Runtime::isStepDirection(const int x, const int y, const int z, cons const int nx = x + dx; const int nz = z + dz; - if (isStepSurface(nx, y, nz) && isSolid(nx, y, nz) && isPassable(nx, y + 1, nz) && isPassable(nx, y + 2, nz)) { + const uint16_t upperSurface = flagsAt(nx, y, nz); + if ((hasFlag(upperSurface, VF_STAIRS_BOTTOM) || hasFlag(upperSurface, VF_SLAB_BOTTOM)) && + hasFlag(upperSurface, VF_SOLID) && + isPassableFlags(flagsAt(nx, y + 1, nz)) && + isPassableFlags(flagsAt(nx, y + 2, nz))) { return true; } - if (isStepSurface(nx, y - 2, nz) && isSolid(nx, y - 2, nz) && isPassable(nx, y - 1, nz) && isPassable(nx, y, nz)) { + const uint16_t lowerSurface = flagsAt(nx, y - 2, nz); + if ((hasFlag(lowerSurface, VF_STAIRS_BOTTOM) || hasFlag(lowerSurface, VF_SLAB_BOTTOM)) && + hasFlag(lowerSurface, VF_SOLID) && + isPassableFlags(flagsAt(nx, y - 1, nz)) && + isPassableFlags(upperSurface)) { return true; } return false; } -inline bool Runtime::isStepSurface(const int x, const int y, const int z) { - return isStairsBottom(x, y, z) || isBottomSlab(x, y, z); -} - inline bool Runtime::isEdge(const int x, const int y, const int z) { - if (isSolid(x, y, z)) return false; - if (isSolid(x, y - 1, z)) return false; - if (isSolid(x, y - 2, z)) return false; - return true; -} + constexpr uint8_t bit = 1u << 1; + auto& cached = cache_.classifications.at(x, y, z); + const uint32_t generation = cacheGenerationAt(x, z); + if (cached.generation != generation) cached = {generation, {}}; + if ((cached.value.computed & bit) != 0) return (cached.value.values & bit) != 0; -inline bool Runtime::isWall(const int x, const int y, const int z) { - if (isBlockingWall(x, y + 1, z)) return true; - - if (isSolid(x, y + 1, z)) { - if (isTopSlab(x, y + 1, z)) return true; - if (isBottomSlab(x, y, z) || isStairsBottom(x, y, z)) return false; - return true; - } - - return isBlockingWall(x, y, z); + const bool edge = !hasFlag(flagsAt(x, y, z), VF_SOLID) && + !hasFlag(flagsAt(x, y - 1, z), VF_SOLID) && + !hasFlag(flagsAt(x, y - 2, z), VF_SOLID); + cached.value.computed |= bit; + if (edge) cached.value.values |= bit; + return edge; } -inline int Runtime::scanForEdge(const int x, const int y, const int z, const int dx, const int dz) { - int cx = x + dx; - int cz = z + dz; - for (int d = 1; d <= MAX_DIST; d++) { - if (isEdge(cx, y, cz)) return d - 1; - cx += dx; - cz += dz; - } - return MAX_DIST; -} - -inline int Runtime::scanForWall(const int x, const int y, const int z, const int dx, const int dz) { - int cx = x + dx; - int cz = z + dz; - for (int d = 1; d <= MAX_DIST; d++) { - if (isWall(cx, y, cz)) return d - 1; - cx += dx; - cz += dz; +inline bool Runtime::isWall(const int x, const int y, const int z) { + constexpr uint8_t bit = 1u << 2; + auto& cached = cache_.classifications.at(x, y, z); + const uint32_t generation = cacheGenerationAt(x, z); + if (cached.generation != generation) cached = {generation, {}}; + if ((cached.value.computed & bit) != 0) return (cached.value.values & bit) != 0; + + const uint16_t head = flagsAt(x, y + 1, z); + bool wall = hasFlag(head, VF_BLOCKING_WALL); + if (!wall && hasFlag(head, VF_SOLID)) { + const uint16_t feet = flagsAt(x, y, z); + wall = hasFlag(head, VF_SLAB_TOP) || + (!hasFlag(feet, VF_SLAB_BOTTOM) && !hasFlag(feet, VF_STAIRS_BOTTOM)); + } else if (!wall) { + wall = hasFlag(flagsAt(x, y, z), VF_BLOCKING_WALL); } - return MAX_DIST; -} -inline int Runtime::edgeDistanceWithMask(const int x, const int y, const int z, const int mask) { - int dist = MAX_DIST; + cached.value.computed |= bit; + if (wall) cached.value.values |= bit; + return wall; +} + +inline void Runtime::directionalDistances( + const int x, + const int y, + const int z, + const int mask, + int& edgeDist, + int& wallDist +) { + edgeDist = MAX_DIST; + wallDist = MAX_DIST; for (int dir = 0; dir < 8; dir++) { if ((mask & (1 << dir)) == 0) continue; - const int d = scanForEdge(x, y, z, DX[static_cast(dir)], DZ[static_cast(dir)]); - if (d < dist) dist = d; - if (dist == 0) break; - } - return dist; -} -inline int Runtime::wallDistanceWithMask(const int x, const int y, const int z, const int mask) { - int dist = MAX_DIST; - for (int dir = 0; dir < 8; dir++) { - if ((mask & (1 << dir)) == 0) continue; - const int d = scanForWall(x, y, z, DX[static_cast(dir)], DZ[static_cast(dir)]); - if (d < dist) dist = d; - if (dist == 0) break; + int rayEdge = MAX_DIST; + int rayWall = MAX_DIST; + int cx = x; + int cz = z; + for (int d = 1; d <= MAX_DIST && (rayEdge == MAX_DIST || rayWall == MAX_DIST); d++) { + cx += DX[static_cast(dir)]; + cz += DZ[static_cast(dir)]; + if (rayEdge == MAX_DIST && isEdge(cx, y, cz)) rayEdge = d - 1; + if (rayWall == MAX_DIST && isWall(cx, y, cz)) rayWall = d - 1; + } + edgeDist = std::min(edgeDist, rayEdge); + wallDist = std::min(wallDist, rayWall); + if (edgeDist == 0 && wallDist == 0) break; } - return dist; -} - -inline int Runtime::edgeDistance(const int x, const int y, const int z) { - return edgeDistanceWithMask(x, y, z, directionMask(x, y, z)); } -inline int Runtime::wallDistance(const int x, const int y, const int z) { - return wallDistanceWithMask(x, y, z, directionMask(x, y, z)); -} - -inline double Runtime::combinedPenalty(const int edgeDist, const int wallDist) const { +inline float Runtime::combinedPenalty(const int edgeDist, const int wallDist) const { const int edgeIdx = std::clamp(edgeDist, 0, OPEN_SPACE_SOFT_CAP); const int wallIdx = std::clamp(wallDist, 0, OPEN_SPACE_SOFT_CAP); return EDGE_PENALTIES[static_cast(edgeIdx)] + WALL_PENALTIES[static_cast(wallIdx)]; } -inline double Runtime::pathPenalty(const int x, const int y, const int z) { - const uint64_t key = coordKey(x, y, z); - const auto cached = penaltyCache_.find(key); - if (cached != penaltyCache_.end()) { - return cached->second; - } +inline float Runtime::pathPenalty(const int x, const int y, const int z) { + auto& cached = cache_.penalties.at(x, y, z); + const uint32_t generation = cacheGenerationAt(x, z); + if (cached.generation == generation) return cached.value; const int mask = directionMask(x, y, z); - const int edgeDist = edgeDistanceWithMask(x, y, z, mask); - const int wallDist = wallDistanceWithMask(x, y, z, mask); - const double value = combinedPenalty(edgeDist, wallDist); - penaltyCache_[key] = value; + int edgeDist; + int wallDist; + directionalDistances(x, y, z, mask, edgeDist, wallDist); + float value = combinedPenalty(edgeDist, wallDist); + if (hasFlag(flagsAt(x, y, z), VF_FLUID)) value += 20.0f; + if (hasFlag(flagsAt(x, y + 1, z), VF_FLUID)) value += 20.0f; + cached = {generation, value}; return value; } diff --git a/NativeSrc/src/pathfinder_runtime_fly.inl b/NativeSrc/src/pathfinder_runtime_fly.inl index 4ab671cd..ea5fa9cd 100644 --- a/NativeSrc/src/pathfinder_runtime_fly.inl +++ b/NativeSrc/src/pathfinder_runtime_fly.inl @@ -5,27 +5,26 @@ namespace v5pf::detail { constexpr uint8_t FLY_ENV_GROUND = 1u << 0; -constexpr uint8_t FLY_ENV_CONFINED = 1u << 1; -constexpr uint8_t FLY_ENV_HORIZONTAL = 1u << 2; -constexpr uint8_t FLY_ENV_ENCLOSURE = 1u << 3; +constexpr uint8_t FLY_ENV_HORIZONTAL = 1u << 1; +constexpr uint8_t FLY_ENV_ENCLOSURE = 1u << 2; -constexpr double groundClearanceCost(const int distance) { - return static_cast(6 - distance) * 2.0; +constexpr float groundClearanceCost(const int distance) { + return static_cast(6 - distance) * 2.0f; } -static_assert(groundClearanceCost(1) == 10.0 && groundClearanceCost(5) == 2.0); +static_assert(groundClearanceCost(1) == 10.0f && groundClearanceCost(5) == 2.0f); -inline double Runtime::flyHeuristic(const int x, const int y, const int z) const { +inline float Runtime::flyHeuristic(const int x, const int y, const int z) const { const auto& goal = closestFlyGoal(x, y, z); - const double dx = static_cast(x) - static_cast(goal.x); - const double dy = static_cast(y) - static_cast(goal.y); - const double dz = static_cast(z) - static_cast(goal.z); - - double h = std::sqrt(dx * dx + dy * dy + dz * dz) * ActionCosts::FLY_ONE_BLOCK_TIME; - const double crossProduct = std::abs( - dx * (static_cast(startFly_.z) - static_cast(goal.z)) - - dz * (static_cast(startFly_.x) - static_cast(goal.x)) + const float dx = static_cast(static_cast(x) - goal.x); + const float dy = static_cast(static_cast(y) - goal.y); + const float dz = static_cast(static_cast(z) - goal.z); + + float h = std::sqrt(dx * dx + dy * dy + dz * dz) * ActionCosts::FLY_ONE_BLOCK_TIME; + const float crossProduct = std::abs( + dx * static_cast(static_cast(startFly_.z) - goal.z) - + dz * static_cast(static_cast(startFly_.x) - goal.x) ); - h += crossProduct * 0.001; + h += crossProduct * 0.001f; return h; } @@ -46,7 +45,7 @@ inline const Int3& Runtime::closestFlyGoal(const int x, const int y, const int z return *best; } -inline double Runtime::calculateProgress(const int x, const int z, const Int3& goal) const { +inline float Runtime::calculateProgress(const int x, const int z, const Int3& goal) const { const long long dxStart = static_cast(x) - startFly_.x; const long long dzStart = static_cast(z) - startFly_.z; const long long dxGoal = static_cast(x) - goal.x; @@ -56,10 +55,10 @@ inline double Runtime::calculateProgress(const int x, const int z, const Int3& g const long long distToGoalSq = dxGoal * dxGoal + dzGoal * dzGoal; const long long totalSq = distFromStartSq + distToGoalSq; - return totalSq > 0 ? static_cast(distFromStartSq) / static_cast(totalSq) : 0.5; + return totalSq > 0 ? static_cast(distFromStartSq) / static_cast(totalSq) : 0.5f; } -inline bool Runtime::moveFly(const Int3& current, const int dx, const int dy, const int dz, const double progress, MoveOut& out) { +inline bool Runtime::moveFly(const Int3& current, const int dx, const int dy, const int dz, const float progress, MoveOut& out) { const int destX = current.x + dx; const int destY = current.y + dy; const int destZ = current.z + dz; @@ -86,30 +85,33 @@ inline bool Runtime::moveFly(const Int3& current, const int dx, const int dy, co } const int axisCount = (dx != 0 ? 1 : 0) + (dy != 0 ? 1 : 0) + (dz != 0 ? 1 : 0); - static constexpr std::array baseDistances = {0.0, 1.0, 1.4142135623730951, 1.7320508075688772}; - double cost = baseDistances[static_cast(axisCount)] * ActionCosts::FLY_ONE_BLOCK_TIME; + static constexpr std::array baseDistances = {0.0f, 1.0f, 1.41421356f, 1.73205081f}; + float cost = baseDistances[static_cast(axisCount)] * ActionCosts::FLY_ONE_BLOCK_TIME; - auto environmentIt = flyEnvironmentCache_.try_emplace(coordKey(destX, destY, destZ)).first; - auto& environment = environmentIt->second; + auto& cachedEnvironment = cache_.flyEnvironments.at(destX, destY, destZ); + const uint32_t generation = cacheGenerationAt(destX, destZ); + if (cachedEnvironment.generation != generation) { + cachedEnvironment = {generation, {}}; + } + auto& environment = cachedEnvironment.value; uint8_t needed = FLY_ENV_GROUND; - if (progress <= 0.92) needed |= FLY_ENV_CONFINED; - if (progress <= 0.88) needed |= FLY_ENV_HORIZONTAL; - if (progress <= 0.94) needed |= FLY_ENV_ENCLOSURE; + if (progress <= 0.88f) needed |= FLY_ENV_HORIZONTAL; + if (progress <= 0.94f) needed |= FLY_ENV_ENCLOSURE; populateFlyEnvironment(destX, destY, destZ, needed, environment); if (dy != 0) { - cost += (diagonalHorizontal || dx != 0 || dz != 0) ? 0.2 : 1.2; + cost += (diagonalHorizontal || dx != 0 || dz != 0) ? 0.2f : 1.2f; } cost += environment.groundCost; - if (progress <= 0.88) { - const double scale = progress > 0.84 ? 0.45 : (progress > 0.72 ? 0.7 : 1.0); + if (progress <= 0.88f) { + const float scale = progress > 0.84f ? 0.45f : (progress > 0.72f ? 0.7f : 1.0f); cost += environment.horizontalCost * scale; } - if (progress <= 0.94) { - const double scale = progress > 0.84 ? 0.5 : (progress > 0.72 ? 0.75 : 1.0); + if (progress <= 0.94f) { + const float scale = progress > 0.84f ? 0.5f : (progress > 0.72f ? 0.75f : 1.0f); cost += environment.enclosureCost * scale; } @@ -138,16 +140,12 @@ inline void Runtime::populateFlyEnvironment( environment.computed |= FLY_ENV_GROUND; } - const bool needConfined = (missing & FLY_ENV_CONFINED) != 0; const bool needHorizontal = (missing & FLY_ENV_HORIZONTAL) != 0; const bool needEnclosure = (missing & FLY_ENV_ENCLOSURE) != 0; - if (!needConfined && !needHorizontal && !needEnclosure) return; + if (!needHorizontal && !needEnclosure) return; - const bool ceilingClear = isPassableForFlying(x, y + 2, z); - const bool scanExtended = needHorizontal || (needConfined && ceilingClear); - const int scanDistance = scanExtended ? 5 : 1; + const int scanDistance = needHorizontal ? 5 : 1; int minClearance = 5; - int blockedCardinals = 0; int blockedImmediate = 0; for (int i = 0; i < 4; i++) { int nx = x; @@ -157,50 +155,43 @@ inline void Runtime::populateFlyEnvironment( nz += DZ[static_cast(i)]; if (!isFlyColumnClear(nx, y, nz)) { minClearance = std::min(minClearance, d - 1); - blockedCardinals++; if (d == 1) blockedImmediate++; break; } } } - if (needConfined) { - environment.confined = !ceilingClear || - blockedCardinals >= 3 || - (blockedCardinals >= 2 && minClearance <= 1); - environment.computed |= FLY_ENV_CONFINED; - } - if (needHorizontal) { - double diagonalTouchPenalty = 0.0; + float diagonalTouchPenalty = 0.0f; if (minClearance > 0) { for (int i = 4; i < 8; i++) { if (!isFlyColumnClear(x + DX[static_cast(i)], y, z + DZ[static_cast(i)])) { - diagonalTouchPenalty += 3.5; + diagonalTouchPenalty += 3.5f; } } } switch (minClearance) { - case 0: environment.horizontalCost = 16.0; break; - case 1: environment.horizontalCost = 9.0; break; - case 2: environment.horizontalCost = 4.0; break; - case 3: environment.horizontalCost = 1.5; break; - default: environment.horizontalCost = 0.0; break; + case 0: environment.horizontalCost = 16.0f; break; + case 1: environment.horizontalCost = 9.0f; break; + case 2: environment.horizontalCost = 4.0f; break; + case 3: environment.horizontalCost = 1.5f; break; + default: environment.horizontalCost = 0.0f; break; } environment.horizontalCost += diagonalTouchPenalty; environment.computed |= FLY_ENV_HORIZONTAL; } if (needEnclosure) { + const bool ceilingClear = isPassableForFlying(x, y + 2, z); if (!ceilingClear) { - environment.enclosureCost = 10.0; + environment.enclosureCost = 10.0f; } else if (!isPassableForFlying(x, y + 3, z)) { - environment.enclosureCost = 4.0; + environment.enclosureCost = 4.0f; } - environment.enclosureCost += static_cast(blockedImmediate) * 2.2; - if (blockedImmediate >= 3) environment.enclosureCost += 7.5; - if (blockedImmediate == 4) environment.enclosureCost += 12.0; + environment.enclosureCost += static_cast(blockedImmediate) * 2.2f; + if (blockedImmediate >= 3) environment.enclosureCost += 7.5f; + if (blockedImmediate == 4) environment.enclosureCost += 12.0f; environment.computed |= FLY_ENV_ENCLOSURE; } } diff --git a/NativeSrc/src/pathfinder_runtime_walk.inl b/NativeSrc/src/pathfinder_runtime_walk.inl index 0b288861..f941b6be 100644 --- a/NativeSrc/src/pathfinder_runtime_walk.inl +++ b/NativeSrc/src/pathfinder_runtime_walk.inl @@ -9,8 +9,7 @@ inline bool Runtime::moveTraverse(const Int3& current, const int dx, const int d out.pos = {destX, current.y, destZ}; out.cost = ActionCosts::SPRINT_ONE_BLOCK_TIME + - pathPenalty(destX, current.y, destZ) + - fluidPenalty(destX, current.y, destZ); + pathPenalty(destX, current.y, destZ); return true; } @@ -18,17 +17,15 @@ inline bool Runtime::moveDiagonal(const Int3& current, const int dx, const int d const int destX = current.x + dx; const int destZ = current.z + dz; - if (!isSafe(destX, current.y, destZ)) return false; - if (!isPassable(destX, current.y, current.z)) return false; if (!isPassable(current.x, current.y, destZ)) return false; if (!isPassable(destX, current.y + 1, current.z)) return false; if (!isPassable(current.x, current.y + 1, destZ)) return false; + if (!isSafe(destX, current.y, destZ)) return false; out.pos = {destX, current.y, destZ}; out.cost = ActionCosts::SPRINT_DIAGONAL_TIME + - pathPenalty(destX, current.y, destZ) + - fluidPenalty(destX, current.y, destZ); + pathPenalty(destX, current.y, destZ); return true; } @@ -36,31 +33,30 @@ inline bool Runtime::moveAscend(const Int3& current, const int dx, const int dz, const int destX = current.x + dx; const int destZ = current.z + dz; - if (!isPassable(current.x, current.y + 2, current.z)) return false; + if (!isPassableFlags(flagsAt(current.x, current.y + 2, current.z))) return false; - if (!isSolid(destX, current.y, destZ)) return false; - if (isFenceLike(destX, current.y, destZ)) return false; + const uint16_t destSupport = flagsAt(destX, current.y, destZ); + if (!hasFlag(destSupport, VF_SOLID) || hasFlag(destSupport, VF_FENCE_LIKE)) return false; + if (!isPassableFlags(flagsAt(destX, current.y + 1, destZ))) return false; + if (!isPassableFlags(flagsAt(destX, current.y + 2, destZ))) return false; - if (!isPassable(destX, current.y + 1, destZ)) return false; - if (!isPassable(destX, current.y + 2, destZ)) return false; - - const bool srcBottom = isBottomSlab(current.x, current.y - 1, current.z); - const bool destBottom = isBottomSlab(destX, current.y, destZ); + const uint16_t srcSupport = flagsAt(current.x, current.y - 1, current.z); + const bool srcBottom = hasFlag(srcSupport, VF_SLAB_BOTTOM); + const bool destBottom = hasFlag(destSupport, VF_SLAB_BOTTOM); if (srcBottom && !destBottom) return false; - const bool srcStair = isStairsBottom(current.x, current.y - 1, current.z); - const bool destStair = isStairsBottom(destX, current.y, destZ); + const bool srcStair = hasFlag(srcSupport, VF_STAIRS_BOTTOM); + const bool destStair = hasFlag(destSupport, VF_STAIRS_BOTTOM); out.pos = {destX, current.y + 1, destZ}; - double baseCost = ActionCosts::JUMP_UP_ONE_BLOCK_TIME; + float baseCost = ActionCosts::JUMP_UP_ONE_BLOCK_TIME; if (destBottom || srcStair || destStair) { baseCost = ActionCosts::SLAB_ASCENT_TIME; } out.cost = baseCost + - pathPenalty(destX, current.y + 1, destZ) + - fluidPenalty(destX, current.y + 1, destZ); + pathPenalty(destX, current.y + 1, destZ); return true; } @@ -77,25 +73,23 @@ inline bool Runtime::moveDescend(const Int3& current, const int dx, const int dz for (int dropBlocks = 1; dropBlocks <= maxFallHeight; dropBlocks++) { const int floorY = current.y - dropBlocks - 1; - if (isPassable(destX, floorY, destZ)) { + const uint16_t floorFlags = flagsAt(destX, floorY, destZ); + if (isPassableFlags(floorFlags)) { continue; } - if (!isSolid(destX, floorY, destZ)) { + if (!hasFlag(floorFlags, VF_SOLID)) { return false; } const int destY = floorY + 1; - if (!isPassable(destX, destY, destZ)) return false; - if (!isPassable(destX, destY + 1, destZ)) return false; - - double totalCost = ActionCosts::WALK_OFF_EDGE_TIME + costs_.getFallTime(dropBlocks); + float totalCost = ActionCosts::WALK_OFF_EDGE_TIME + ActionCosts::getFallTime(dropBlocks); if (dropBlocks > 3) { const int excess = dropBlocks - 3; - totalCost += static_cast(excess * excess) * 2.0; + totalCost += static_cast(excess * excess) * 2.0f; } - totalCost += pathPenalty(destX, destY, destZ) + fluidPenalty(destX, destY, destZ); + totalCost += pathPenalty(destX, destY, destZ); out.pos = {destX, destY, destZ}; out.cost = totalCost; diff --git a/NativeSrc/src/world_state.cpp b/NativeSrc/src/world_state.cpp index 7a3370cc..b2a101e1 100644 --- a/NativeSrc/src/world_state.cpp +++ b/NativeSrc/src/world_state.cpp @@ -3,6 +3,7 @@ #include #include #include +#include namespace v5pf { @@ -19,6 +20,35 @@ constexpr int64_t kMaxAllowedWorldSpan = 4096; static_cast(maxY) - static_cast(minY) <= kMaxAllowedWorldSpan; } +[[nodiscard]] bool chunksEqual(const ChunkData& left, const ChunkData& right) { + return left.minY == right.minY && + left.maxY == right.maxY && + left.sectionOffsets == right.sectionOffsets && + left.voxels == right.voxels; +} + +void invalidateChunkNeighborhood( + WorldData& world, + const int chunkX, + const int chunkZ, + const uint32_t generation +) { + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + world.chunkCacheGenerations[chunkKey(chunkX + dx, chunkZ + dz)] = generation; + } + } +} + +uint32_t nextCacheGeneration(WorldData& world) { + if (++world.latestCacheGeneration == 0) { + world.identity = std::make_shared(); + world.latestCacheGeneration = 1; + world.chunkCacheGenerations.clear(); + } + return world.latestCacheGeneration; +} + } // namespace void ChunkData::ensureLayout() { @@ -138,6 +168,12 @@ uint16_t WorldSnapshot::getFlags(const int x, const int y, const int z) const { return it->second->getFlags(x & 15, y, z & 15); } +uint32_t WorldSnapshot::cacheGenerationForChunk(const int chunkX, const int chunkZ) const { + if (data == nullptr) return 1; + const auto it = data->chunkCacheGenerations.find(chunkKey(chunkX, chunkZ)); + return it == data->chunkCacheGenerations.end() ? 1 : it->second; +} + void WorldState::setWorld(std::string worldKey, const int minY, const int maxY) { if (!isValidWorldBounds(minY, maxY)) { return; @@ -155,6 +191,9 @@ void WorldState::clear() { std::lock_guard lock(mutex_); auto next = std::make_shared(*data_); next->chunks.clear(); + next->identity = std::make_shared(); + next->latestCacheGeneration = 1; + next->chunkCacheGenerations.clear(); data_ = std::move(next); } @@ -193,10 +232,20 @@ void WorldState::upsertChunk( } std::lock_guard lock(mutex_); + const auto key = chunkKey(chunkX, chunkZ); + const auto existing = data_->chunks.find(key); + if (data_->minY == minY && data_->maxY == maxY && + existing != data_->chunks.end() && existing->second != nullptr && + chunksEqual(*existing->second, chunk)) { + return; + } + auto next = std::make_shared(*data_); next->minY = minY; next->maxY = maxY; - next->chunks[chunkKey(chunkX, chunkZ)] = std::make_shared(std::move(chunk)); + next->chunks[key] = std::make_shared(std::move(chunk)); + const uint32_t generation = nextCacheGeneration(*next); + invalidateChunkNeighborhood(*next, chunkX, chunkZ, generation); data_ = std::move(next); } @@ -208,7 +257,9 @@ void WorldState::applyUpdates(const std::vector& updates) { std::lock_guard lock(mutex_); auto next = std::make_shared(*data_); std::unordered_map> mutableChunks; + std::unordered_set changedChunks; mutableChunks.reserve(updates.size()); + changedChunks.reserve(updates.size()); for (const auto& update : updates) { const int chunkX = update.x >> 4; @@ -218,6 +269,10 @@ void WorldState::applyUpdates(const std::vector& updates) { if (it == next->chunks.end() || it->second == nullptr) { continue; } + if (update.y < it->second->minY || update.y >= it->second->maxY || + it->second->getFlags(update.x & 15, update.y, update.z & 15) == update.flags) { + continue; + } std::shared_ptr chunk; const auto mutableIt = mutableChunks.find(key); @@ -230,8 +285,17 @@ void WorldState::applyUpdates(const std::vector& updates) { } chunk->setFlags(update.x & 15, update.y, update.z & 15, update.flags); + changedChunks.insert(key); } + if (changedChunks.empty()) return; + + const uint32_t generation = nextCacheGeneration(*next); + for (const uint64_t key : changedChunks) { + const int chunkX = static_cast(static_cast(key >> 32)); + const int chunkZ = static_cast(static_cast(key)); + invalidateChunkNeighborhood(*next, chunkX, chunkZ, generation); + } data_ = std::move(next); } diff --git a/NativeSrc/src/world_state.hpp b/NativeSrc/src/world_state.hpp index f8727392..694e044a 100644 --- a/NativeSrc/src/world_state.hpp +++ b/NativeSrc/src/world_state.hpp @@ -49,11 +49,16 @@ struct ChunkData { using SharedChunkData = std::shared_ptr; using ChunkMap = std::unordered_map; +struct WorldIdentity {}; + struct WorldData { std::string worldKey = "runtime_memory"; int minY = -64; int maxY = 320; // exclusive ChunkMap chunks; + std::shared_ptr identity = std::make_shared(); + uint32_t latestCacheGeneration = 1; + std::unordered_map chunkCacheGenerations; }; struct WorldSnapshot { @@ -64,6 +69,7 @@ struct WorldSnapshot { [[nodiscard]] const ChunkMap& chunks() const; [[nodiscard]] uint16_t getFlags(int x, int y, int z) const; + [[nodiscard]] uint32_t cacheGenerationForChunk(int chunkX, int chunkZ) const; }; class WorldState { diff --git a/NativeSrc/src/world_voxel_cursor.hpp b/NativeSrc/src/world_voxel_cursor.hpp index 7245c21f..4ce50465 100644 --- a/NativeSrc/src/world_voxel_cursor.hpp +++ b/NativeSrc/src/world_voxel_cursor.hpp @@ -2,6 +2,8 @@ #include "world_state.hpp" +#include +#include #include namespace v5pf { @@ -19,51 +21,52 @@ class WorldVoxelCursor { const int chunkX = x >> 4; const int chunkZ = z >> 4; - if (chunkX != cachedChunkX_ || chunkZ != cachedChunkZ_) { - cachedChunkX_ = chunkX; - cachedChunkZ_ = chunkZ; - cachedChunk_ = nullptr; - cachedSectionIdx_ = std::numeric_limits::min(); - cachedSection_ = nullptr; + const int sectionY = (y - world_.minY) >> 4; + const uint32_t cursorHash = static_cast(chunkX) ^ + (static_cast(chunkZ) << 1) ^ static_cast(sectionY); + auto& entry = entries_[static_cast(cursorHash & 3u)]; + if (chunkX != entry.chunkX || chunkZ != entry.chunkZ || y < entry.sectionMinY || y >= entry.sectionMaxY) { + entry = {}; + entry.chunkX = chunkX; + entry.chunkZ = chunkZ; const auto& chunks = world_.chunks(); const auto it = chunks.find(chunkKey(chunkX, chunkZ)); if (it == chunks.end() || it->second == nullptr) { - return VF_SOLID | VF_BLOCKING_WALL; + entry.sectionMinY = world_.minY; + entry.sectionMaxY = world_.maxY; + entry.fallback = VF_SOLID | VF_BLOCKING_WALL; + return entry.fallback; } - cachedChunk_ = it->second.get(); + const ChunkData* chunk = it->second.get(); + if (y < chunk->minY || y >= chunk->maxY) return VF_AIR_DEFAULT; + const int sectionIdx = (y - chunk->minY) >> 4; + entry.sectionMinY = chunk->minY + (sectionIdx << 4); + entry.sectionMaxY = std::min(entry.sectionMinY + 16, chunk->maxY); + entry.section = chunk->sectionData(sectionIdx); } - if (cachedChunk_ == nullptr) { - return VF_SOLID | VF_BLOCKING_WALL; - } - - if (y < cachedChunk_->minY || y >= cachedChunk_->maxY) { - return VF_AIR_DEFAULT; - } - - const int sectionIdx = (y - cachedChunk_->minY) >> 4; - if (sectionIdx != cachedSectionIdx_) { - cachedSectionIdx_ = sectionIdx; - cachedSection_ = cachedChunk_->sectionData(sectionIdx); - } - - if (cachedSection_ == nullptr) { - return VF_AIR_DEFAULT; + if (entry.section == nullptr) { + return entry.fallback; } const int index = ((y & 15) << 8) | ((z & 15) << 4) | (x & 15); - return cachedSection_[static_cast(index)]; + return entry.section[static_cast(index)]; } private: + struct Entry { + int chunkX = std::numeric_limits::min(); + int chunkZ = std::numeric_limits::min(); + int sectionMinY = std::numeric_limits::max(); + int sectionMaxY = std::numeric_limits::min(); + const uint16_t* section = nullptr; + uint16_t fallback = VF_AIR_DEFAULT; + }; + const WorldSnapshot& world_; - mutable int cachedChunkX_ = std::numeric_limits::min(); - mutable int cachedChunkZ_ = std::numeric_limits::min(); - mutable const ChunkData* cachedChunk_ = nullptr; - mutable int cachedSectionIdx_ = std::numeric_limits::min(); - mutable const uint16_t* cachedSection_ = nullptr; + mutable std::array entries_{}; }; } // namespace v5pf diff --git a/README.md b/README.md index 1a8354c9..b78977a8 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ For production release commits, CI builds all platforms in parallel and commits ### Quick dev commands -Each command compiles required native C++ code, then builds the final Kotlin mod. The output can be found at `build/libs/V5-Loader-DEV.jar`. +Each command compiles required native C++ code, then builds the final Kotlin mod. The output can be found at `versions//build/libs/V5-Loader-DEV-.jar`. - **Linux:** @@ -76,4 +76,4 @@ cmake -S NativeSrc -B NativeSrc/build -DCMAKE_BUILD_TYPE=Release; cmake --build ### Install built mod -After building, copy `build/libs/V5-Loader-DEV.jar` into `.minecraft/mods/`. +After building, copy the relevant `versions//build/libs/V5-Loader-DEV-.jar` into `.minecraft/mods/`. diff --git a/build.gradle.kts b/build.gradle.kts index 0cf6c451..61737596 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,16 +1,12 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.gradle.jvm.toolchain.JavaLanguageVersion +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.apache.tools.ant.filters.ReplaceTokens plugins { alias(libs.plugins.kotlin) alias(libs.plugins.serialization) alias(libs.plugins.ksp) alias(libs.plugins.loom) - id("io.github.izhangzhihao.unmeta") version "1.0.3" -} - -unmeta { - enable.set(true) } version = property("mod_version").toString() @@ -25,16 +21,19 @@ repositories { maven("https://repo.hypixel.net/repository/Hypixel/") maven("https://api.modrinth.com/maven") } +val minecraftVersion = sc.current.version +val fabricApiVersion: String = sc.properties["deps.fabric_api"] +val universalcraftMinecraftVersion = if (minecraftVersion == "26.1.2") "26.1" else minecraftVersion dependencies { - // To change the versions see the gradle/libs.versions.toml - minecraft(libs.minecraft) + // Minecraft-specific versions live in stonecutter.properties.toml. + minecraft("com.mojang:minecraft:$minecraftVersion") implementation(libs.fabric.loader) - implementation(libs.fabric.api) + implementation("net.fabricmc.fabric-api:fabric-api:$fabricApiVersion") implementation(libs.fabric.kotlin) implementation(libs.bundles.included) { include(this) } - implementation(libs.universalcraft) { + implementation("gg.essential:universalcraft-$universalcraftMinecraftVersion-fabric:${libs.versions.universalcraft.get()}") { include(this) exclude("gg.essential", "universalcraft-1.18.1-fabric") } @@ -50,13 +49,8 @@ dependencies { implementation("meteordevelopment:discord-ipc:1.1") include("meteordevelopment:discord-ipc:1.1") - // NanoVG (with natives) - implementation(libs.lwjgl.nanovg) { include(this) } - listOf("windows", "linux", "macos", "macos-arm64").forEach { - implementation(variantOf(libs.lwjgl.nanovg) { classifier("natives-$it") }) { - include(this) - } - } + implementation(libs.skija.shared) { include(this) } + implementation(libs.skija.types) { include(this) } // Mixin Extras implementation(libs.mixinextras) { include(this) } @@ -72,7 +66,7 @@ dependencies { } loom { - accessWidenerPath.set(file("src/main/resources/ctjs.accesswidener")) + accessWidenerPath.set(rootProject.file("src/main/resources/ctjs.accesswidener")) } base { @@ -91,12 +85,20 @@ java { tasks { processResources { - val mcVersion = libs.versions.minecraft.get() + val mcVersion = minecraftVersion val flkVersion = libs.versions.fabric.kotlin.get() - val fapiVersion = libs.versions.fabric.api.get() + val fapiVersion = fabricApiVersion val loaderVersion = libs.versions.loader.get() + val versionMixins = if (minecraftVersion == "26.1.2") { + listOf("GuiMixin", "MinecraftScreenMixin", "LevelRendererMixin") + } else { + listOf( + "CommandEncoderMixin", "GpuDeviceMixin", "GuiHudMixin", "GameRendererAccessor", + "GuiScreenMixin", "LevelRendererMixin", "VulkanCommandEncoderMixin", "VulkanDeviceMixin", + ) + } - from("typing-generator/src/main/resources") { + from(rootProject.file("typing-generator/src/main/resources")) { include("provided-types.properties") } @@ -105,6 +107,7 @@ tasks { inputs.property("fabric_kotlin_version", flkVersion) inputs.property("fabric_api_version", fapiVersion) inputs.property("loader_version", loaderVersion) + inputs.property("version_mixins", versionMixins.joinToString(",")) filesMatching("fabric.mod.json") { expand( @@ -115,6 +118,13 @@ tasks { "loader_version" to loaderVersion ) } + + filesMatching("ctjs.mixins.json") { + filter("tokens" to mapOf( + "version_mixins" to versionMixins.joinToString("\",\n \"") + )) + } + } withType().configureEach { @@ -130,7 +140,7 @@ tasks { } jar { - archiveFileName.set(if (providers.gradleProperty("releaseBuild").isPresent) "V5-Loader-26.1.2.jar" else "V5-Loader-DEV.jar") + archiveFileName.set(if (providers.gradleProperty("releaseBuild").isPresent) "V5-Loader-$minecraftVersion.jar" else "V5-Loader-DEV-$minecraftVersion.jar") exclude("typings.d.ts") } @@ -141,6 +151,6 @@ tasks { from(layout.buildDirectory.dir("generated/ksp/main/resources")) { include("typings.d.ts") } - into(layout.projectDirectory.dir("typing-generator/src/main/resources")) + into(rootProject.layout.projectDirectory.dir("typing-generator/src/main/resources")) } } diff --git a/gradle.properties b/gradle.properties index 67e53a9a..bd4551bd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,5 +4,5 @@ org.gradle.parallel=true org.gradle.caching=true # Mod Properties -mod_version = 1.0.0 +mod_version = 5.2.0 archives_base_name = ctjs diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e8e7d181..2dadca0a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,10 +1,8 @@ [versions] # Library versions -minecraft = "26.1.2" -lwjgl = "3.4.1" +skija = "0.143.11" loader = "0.19.3" -fabric-api = "0.153.0+26.1.2" fabric-kotlin = "1.13.9+kotlin.2.3.10" sponge-mixin = "0.17.3+mixin.0.8.7" mixinextras = "0.5.4" @@ -20,19 +18,17 @@ hypixel-modrinth-api = "1.0.2+build.1+mc26.1" # Plugin Versions kotlin = "2.3.10" -loom = "1.17-SNAPSHOT" +loom = "1.18.0-alpha.16" ksp = "2.3.9" [libraries] -minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } - 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" } sponge-mixin = { module = "net.fabricmc:sponge-mixin", version.ref = "sponge-mixin" } mixinextras = { module = "io.github.llamalad7:mixinextras-fabric", version.ref = "mixinextras" } -lwjgl-nanovg = { module = "org.lwjgl:lwjgl-nanovg", version.ref = "lwjgl" } +skija-shared = { module = "io.github.humbleui:skija-shared", version.ref = "skija" } +skija-types = { module = "io.github.humbleui:types", version = "0.1.1" } rhino = { module = "com.github.ChatTriggers:rhino", version.ref = "rhino" } koffee = { module = "com.github.ChatTriggers:koffee", version.ref = "koffee" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7e7d24f6..1e922f40 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-9.6.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle.kts b/settings.gradle.kts index 5b918876..659959f4 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,6 +3,18 @@ pluginManagement { gradlePluginPortal() mavenCentral() maven("https://maven.fabricmc.net") + maven("https://maven.kikugie.dev/releases") + } +} + +plugins { + id("dev.kikugie.stonecutter") version "0.9.7" +} + +stonecutter { + create(rootProject) { + versions("26.1.2", "26.2") + vcsVersion = "26.2" } } diff --git a/src/main/java/com/chattriggers/ctjs/internal/accessors/CommandEncoderAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/accessors/CommandEncoderAccessor.java new file mode 100644 index 00000000..5337e69e --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/accessors/CommandEncoderAccessor.java @@ -0,0 +1,10 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.accessors; + +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.CommandEncoderBackend; + +public interface CommandEncoderAccessor { + CommandEncoderBackend ctjs$getBackend(); +} +//?} diff --git a/src/main/java/com/chattriggers/ctjs/internal/accessors/GpuDeviceAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/accessors/GpuDeviceAccessor.java new file mode 100644 index 00000000..0615b83f --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/accessors/GpuDeviceAccessor.java @@ -0,0 +1,10 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.accessors; + +import com.mojang.blaze3d.systems.GpuDevice; +import com.mojang.blaze3d.systems.GpuDeviceBackend; + +public interface GpuDeviceAccessor { + GpuDeviceBackend ctjs$getBackend(); +} +//?} diff --git a/src/main/java/com/chattriggers/ctjs/internal/accessors/VulkanCommandEncoderAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/accessors/VulkanCommandEncoderAccessor.java new file mode 100644 index 00000000..7973de7b --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/accessors/VulkanCommandEncoderAccessor.java @@ -0,0 +1,10 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.accessors; + +import com.mojang.blaze3d.vulkan.VulkanCommandEncoder; +import org.lwjgl.vulkan.VkCommandBuffer; + +public interface VulkanCommandEncoderAccessor { + VkCommandBuffer ctjs$getCommandBuffer(); +} +//?} diff --git a/src/main/java/com/chattriggers/ctjs/internal/accessors/VulkanDeviceAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/accessors/VulkanDeviceAccessor.java new file mode 100644 index 00000000..0a16b1f6 --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/accessors/VulkanDeviceAccessor.java @@ -0,0 +1,10 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.accessors; + +import com.mojang.blaze3d.vulkan.VulkanPhysicalDevice; +import com.mojang.blaze3d.vulkan.VulkanDevice; + +public interface VulkanDeviceAccessor { + VulkanPhysicalDevice ctjs$getPhysicalDevice(); +} +//?} diff --git a/src/main/java/com/v5/mixins/CameraMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/CameraMixin.java similarity index 53% rename from src/main/java/com/v5/mixins/CameraMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/CameraMixin.java index b2c6df68..234bd829 100644 --- a/src/main/java/com/v5/mixins/CameraMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/CameraMixin.java @@ -1,6 +1,6 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; -import com.v5.storage.V5MixinStorage; +import com.chattriggers.ctjs.api.client.Client; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -25,18 +25,15 @@ public abstract class CameraMixin { @Inject(method = "alignWithEntity", at = @At("TAIL")) private void v5$applyCameraOverride(float partialTick, CallbackInfo ci) { - Object yaw = V5MixinStorage.get("cameraOverrideYaw", null); - Object pitch = V5MixinStorage.get("cameraOverridePitch", null); - if (V5MixinStorage.getBoolean("freelookEnabled", false) - && yaw instanceof Number yawNumber - && pitch instanceof Number pitchNumber) { + Float yaw = Client.getCameraYaw(); + Float pitch = Client.getCameraPitch(); + if (Client.isFreelook() && yaw != null && pitch != null) { LocalPlayer player = Minecraft.getInstance().player; if (player != null) { - float yawRadians = yawNumber.floatValue() * Mth.DEG_TO_RAD; - float pitchRadians = pitchNumber.floatValue() * Mth.DEG_TO_RAD; + float yawRadians = yaw * Mth.DEG_TO_RAD; + float pitchRadians = pitch * Mth.DEG_TO_RAD; float cosPitch = Mth.cos(pitchRadians); - Object storedDistance = V5MixinStorage.get("freelookCameraDistance", 4.0); - double distance = storedDistance instanceof Number number ? Mth.clamp(number.doubleValue(), 1.0, 12.0) : 4.0; + double distance = Client.getFreelookDistance(); Vec3 eyePos = player.getEyePosition(partialTick); this.setPosition(eyePos.add( Mth.sin(yawRadians) * cosPitch * distance, @@ -44,16 +41,12 @@ public abstract class CameraMixin { -Mth.cos(yawRadians) * cosPitch * distance)); } } else { - Object override = V5MixinStorage.get("cameraOverridePos", null); - if (override instanceof Vec3 pos) { - this.setPosition(pos); - } + Vec3 position = Client.getCameraPosition(); + if (position != null) this.setPosition(position); } - if (yaw instanceof Number yawNumber && pitch instanceof Number pitchNumber) { - this.setRotation(yawNumber.floatValue(), pitchNumber.floatValue()); - } + if (yaw != null && pitch != null) this.setRotation(yaw, pitch); - if (V5MixinStorage.getBoolean("freecamEnabled", false)) this.detached = true; + if (Client.isFreecam()) this.detached = true; } } diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatComponentMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatComponentMixin.java index 04baf2b7..796d1117 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatComponentMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatComponentMixin.java @@ -1,5 +1,6 @@ package com.chattriggers.ctjs.internal.mixins; +import com.chattriggers.ctjs.api.client.Client; import com.chattriggers.ctjs.api.message.ChatLib; import net.minecraft.client.gui.components.ChatComponent; import net.minecraft.client.multiplayer.chat.GuiMessage; @@ -11,6 +12,7 @@ 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.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.List; @@ -21,6 +23,16 @@ public class ChatComponentMixin { @Shadow private List allMessages; + @ModifyVariable( + method = "addMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/multiplayer/chat/GuiMessageSource;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag;)V", + at = @At("HEAD"), + ordinal = 0, + argsOnly = true + ) + private Component v5$addMessage(Component original) { + return Client.processName(original); + } + @Inject(method = "clearMessages", at = @At("TAIL")) private void injectClear(boolean clearHistory, CallbackInfo ci) { ChatLib.INSTANCE.onChatHudClearChat$ctjs(); diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/CommandEncoderMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/CommandEncoderMixin.java new file mode 100644 index 00000000..11a3e6cf --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/CommandEncoderMixin.java @@ -0,0 +1,16 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.mixins; + +import com.chattriggers.ctjs.internal.accessors.CommandEncoderAccessor; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.CommandEncoderBackend; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(CommandEncoder.class) +public interface CommandEncoderMixin extends CommandEncoderAccessor { + @Override + @Accessor("backend") + CommandEncoderBackend ctjs$getBackend(); +} +//?} diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ConnectionMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ConnectionMixin.java index aa885bb5..8fb2a3ed 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ConnectionMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/ConnectionMixin.java @@ -1,14 +1,15 @@ package com.chattriggers.ctjs.internal.mixins; +import com.chattriggers.ctjs.api.triggers.PacketEvent; import com.chattriggers.ctjs.internal.engine.CTEvents; import com.chattriggers.ctjs.api.triggers.TriggerType; import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; import net.minecraft.network.Connection; +import net.minecraft.network.PacketListener; import net.minecraft.network.protocol.PacketFlow; -import net.minecraft.network.PacketSendListener; import net.minecraft.network.protocol.Packet; -import org.jetbrains.annotations.Nullable; +import net.minecraft.network.protocol.game.ClientboundBundlePacket; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -34,6 +35,15 @@ private void injectHandlePacket(ChannelHandlerContext channelHandlerContext, Pac CTEvents.PACKET_RECEIVED.invoker().receive(packet, ci); } + @Inject(method = "genericsFtw", at = @At("HEAD")) + private static void triggerPacketEvent(Packet packet, PacketListener listener, CallbackInfo ci) { + if (packet instanceof ClientboundBundlePacket bundlePacket) { + bundlePacket.subPackets().forEach(PacketEvent.RECEIVE.invoker()::trigger); + } else { + PacketEvent.RECEIVE.invoker().trigger(packet); + } + } + @Inject( method = "send(Lnet/minecraft/network/protocol/Packet;Lio/netty/channel/ChannelFutureListener;)V", at = @At("HEAD"), diff --git a/src/main/java/com/v5/mixins/ConnectionProxyMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ConnectionProxyMixin.java similarity index 97% rename from src/main/java/com/v5/mixins/ConnectionProxyMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/ConnectionProxyMixin.java index e535c710..b2f52911 100644 --- a/src/main/java/com/v5/mixins/ConnectionProxyMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/ConnectionProxyMixin.java @@ -1,4 +1,4 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; import com.chattriggers.ctjs.api.client.Proxy; import com.chattriggers.ctjs.api.client.ProxyInfo; diff --git a/src/main/java/com/v5/mixins/CrossCollisionBlockMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/CrossCollisionBlockMixin.java similarity index 94% rename from src/main/java/com/v5/mixins/CrossCollisionBlockMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/CrossCollisionBlockMixin.java index de3ba779..e937e5f2 100644 --- a/src/main/java/com/v5/mixins/CrossCollisionBlockMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/CrossCollisionBlockMixin.java @@ -1,4 +1,4 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; import net.minecraft.world.level.block.CrossCollisionBlock; import net.minecraft.world.level.block.StainedGlassPaneBlock; diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRenderDispatcherMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRenderDispatcherMixin.java index b3dc7831..9eb43f6e 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRenderDispatcherMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRenderDispatcherMixin.java @@ -1,7 +1,7 @@ package com.chattriggers.ctjs.internal.mixins; import com.chattriggers.ctjs.api.client.Client; -import com.chattriggers.ctjs.api.render.Renderer; +import com.chattriggers.ctjs.api.render.Render2D; import com.chattriggers.ctjs.internal.IRenderState; import com.chattriggers.ctjs.internal.engine.CTEvents; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; @@ -21,7 +21,7 @@ public abstract class EntityRenderDispatcherMixin { @Inject(method = "onResourceManagerReload", at = @At("TAIL")) private void injectReload(net.minecraft.server.packs.resources.ResourceManager manager, CallbackInfo ci, @com.llamalad7.mixinextras.sugar.Local net.minecraft.client.renderer.entity.EntityRendererProvider.Context context) { - Renderer.initializePlayerRenderers$ctjs(context); + Render2D.initializePlayerRenderers$ctjs(context); } @ModifyExpressionValue( diff --git a/src/main/java/com/v5/mixins/EntityRendererMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRendererMixin.java similarity index 83% rename from src/main/java/com/v5/mixins/EntityRendererMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRendererMixin.java index 4dd11a15..1c1954eb 100644 --- a/src/main/java/com/v5/mixins/EntityRendererMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRendererMixin.java @@ -1,6 +1,6 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; -import com.v5.storage.ProfileHiderProcessor; +import com.chattriggers.ctjs.api.client.Client; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Mixin; @@ -17,7 +17,7 @@ public class EntityRendererMixin { return; } - Component updated = ProfileHiderProcessor.process(original); + Component updated = Client.processName(original); if (updated != original) { cir.setReturnValue(updated); } diff --git a/src/main/java/com/v5/mixins/FirmamentModAnnouncerMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/FirmamentModAnnouncerMixin.java similarity index 92% rename from src/main/java/com/v5/mixins/FirmamentModAnnouncerMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/FirmamentModAnnouncerMixin.java index e2bcd92f..330c4fde 100644 --- a/src/main/java/com/v5/mixins/FirmamentModAnnouncerMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/FirmamentModAnnouncerMixin.java @@ -1,4 +1,4 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; diff --git a/src/main/java/com/v5/mixins/FramerateLimitTrackerMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/FramerateLimitTrackerMixin.java similarity index 93% rename from src/main/java/com/v5/mixins/FramerateLimitTrackerMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/FramerateLimitTrackerMixin.java index 1b75ad86..6185a791 100644 --- a/src/main/java/com/v5/mixins/FramerateLimitTrackerMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/FramerateLimitTrackerMixin.java @@ -1,4 +1,4 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; import com.mojang.blaze3d.platform.FramerateLimitTracker; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/com/v5/mixins/FrustumMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/FrustumMixin.java similarity index 80% rename from src/main/java/com/v5/mixins/FrustumMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/FrustumMixin.java index 5eff1c18..65aa002e 100644 --- a/src/main/java/com/v5/mixins/FrustumMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/FrustumMixin.java @@ -1,6 +1,6 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; -import com.v5.storage.V5MixinStorage; +import com.chattriggers.ctjs.api.client.Client; import net.minecraft.client.renderer.culling.Frustum; import org.joml.FrustumIntersection; import org.spongepowered.asm.mixin.Mixin; @@ -14,6 +14,6 @@ public class FrustumMixin { private void v5$showEverythingInFreecam(double minX, double minY, double minZ, double maxX, double maxY, double maxZ, CallbackInfoReturnable cir) { - if (V5MixinStorage.getBoolean("freecamEnabled", false)) cir.setReturnValue(FrustumIntersection.INSIDE); + if (Client.isFreecam()) cir.setReturnValue(FrustumIntersection.INSIDE); } } diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/GameRendererAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/GameRendererAccessor.java new file mode 100644 index 00000000..baa9da16 --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/GameRendererAccessor.java @@ -0,0 +1,14 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.mixins; + +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.SubmitNodeStorage; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(GameRenderer.class) +public interface GameRendererAccessor { + @Accessor + SubmitNodeStorage getHandAndScreenSubmitNodeStorage(); +} +//?} diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/GpuDeviceMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/GpuDeviceMixin.java new file mode 100644 index 00000000..a69927e4 --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/GpuDeviceMixin.java @@ -0,0 +1,16 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.mixins; + +import com.chattriggers.ctjs.internal.accessors.GpuDeviceAccessor; +import com.mojang.blaze3d.systems.GpuDevice; +import com.mojang.blaze3d.systems.GpuDeviceBackend; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(GpuDevice.class) +public interface GpuDeviceMixin extends GpuDeviceAccessor { + @Override + @Accessor("backend") + GpuDeviceBackend ctjs$getBackend(); +} +//?} diff --git a/src/main/java/com/v5/mixins/GuiGraphicsExtractorMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiGraphicsExtractorMixin.java similarity index 90% rename from src/main/java/com/v5/mixins/GuiGraphicsExtractorMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/GuiGraphicsExtractorMixin.java index 054ba3fc..3fe72323 100644 --- a/src/main/java/com/v5/mixins/GuiGraphicsExtractorMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiGraphicsExtractorMixin.java @@ -1,6 +1,6 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; -import com.v5.storage.ProfileHiderProcessor; +import com.chattriggers.ctjs.api.client.Client; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -33,6 +33,6 @@ public class GuiGraphicsExtractorMixin { if (currentStyle[0] != null) { component.append(Component.literal(text.toString()).setStyle(currentStyle[0])); } - return ProfileHiderProcessor.process(component).getVisualOrderText(); + return Client.processName(component).getVisualOrderText(); } } diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiHudMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiHudMixin.java new file mode 100644 index 00000000..a4c80854 --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiHudMixin.java @@ -0,0 +1,46 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.mixins; + +import com.chattriggers.ctjs.api.client.Client; +import com.chattriggers.ctjs.api.render.DrawContextHolder; +import com.chattriggers.ctjs.api.render.Render2D; +import com.chattriggers.ctjs.api.world.Scoreboard; +import com.chattriggers.ctjs.internal.engine.CTEvents; +import gg.essential.universal.UMatrixStack; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.GuiGraphicsExtractor; +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(targets = "net.minecraft.client.gui.Hud") +public class GuiHudMixin { + @Inject(method = "extractRenderState", at = @At("HEAD")) + private void captureContext(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + DrawContextHolder.currentContext = context; + if (Client.getCurrentScreen() == null) { + Render2D.INSTANCE.runPreDrawables(context); + } + } + + @Inject(method = "extractScoreboardSidebar", at = @At("HEAD"), cancellable = true) + private void injectRenderScoreboard(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + if (!Scoreboard.getShouldRender()) { + ci.cancel(); + } + } + + @Inject(method = "extractRenderState", at = @At("TAIL")) + private void injectRenderOverlay(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + CTEvents.RENDER_OVERLAY.invoker().render( + context, + new UMatrixStack(context.pose()).toMC(), + tickCounter.getGameTimeDeltaTicks() + ); + if (Client.getCurrentScreen() == null) { + Render2D.INSTANCE.runDrawables(context); + } + } +} +//?} diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiMixin.java index 405174ba..b8b1d4c4 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiMixin.java @@ -1,5 +1,10 @@ -package com.chattriggers.ctjs.internal.mixins; +//? if <26.2 { +/*package com.chattriggers.ctjs.internal.mixins; +import com.chattriggers.ctjs.api.client.Client; + +import com.chattriggers.ctjs.api.render.DrawContextHolder; +import com.chattriggers.ctjs.api.render.Render2D; import com.chattriggers.ctjs.api.world.Scoreboard; import com.chattriggers.ctjs.internal.engine.CTEvents; import gg.essential.universal.UMatrixStack; @@ -14,6 +19,13 @@ @Mixin(Gui.class) public class GuiMixin { + @Inject(method = "extractRenderState", at = @At("HEAD")) + private void captureContext(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { + DrawContextHolder.currentContext = context; + if (Client.getCurrentScreen() == null) + Render2D.INSTANCE.runPreDrawables(context); + } + @Inject(method = "extractScoreboardSidebar", at = @At("HEAD"), cancellable = true) private void injectRenderScoreboard(GuiGraphicsExtractor matrices, DeltaTracker tickCounter, CallbackInfo ci) { if (!Scoreboard.getShouldRender()) @@ -26,5 +38,8 @@ private void injectRenderScoreboard(GuiGraphicsExtractor matrices, DeltaTracker ) private void injectRenderOverlay(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { CTEvents.RENDER_OVERLAY.invoker().render(context, new UMatrixStack(context.pose()).toMC(), tickCounter.getGameTimeDeltaTicks()); + if (Client.getCurrentScreen() == null) + Render2D.INSTANCE.runDrawables(context); } } +*///?} diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiRendererMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiRendererMixin.java new file mode 100644 index 00000000..16b22a2b --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiRendererMixin.java @@ -0,0 +1,18 @@ +package com.chattriggers.ctjs.internal.mixins; + +import com.chattriggers.ctjs.api.render.Render2D; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +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(Screen.class) +public class GuiRendererMixin { + @Inject(method = "extractRenderStateWithTooltipAndSubtitles", at = @At("TAIL")) + private void afterExtract(GuiGraphicsExtractor context, int mouseX, int mouseY, float deltaTicks, CallbackInfo ci) { + Render2D.INSTANCE.runPreDrawables(context); + Render2D.INSTANCE.runDrawables(context); + } +} diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiScreenMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiScreenMixin.java new file mode 100644 index 00000000..16ce93b0 --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/GuiScreenMixin.java @@ -0,0 +1,31 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.mixins; + +import com.chattriggers.ctjs.api.client.Client; +import com.chattriggers.ctjs.api.triggers.TriggerType; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.screens.Overlay; +import net.minecraft.client.gui.screens.Screen; +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(Gui.class) +public class GuiScreenMixin { + @Inject(method = "setScreen", at = @At("HEAD")) + private void injectScreenOpened(Screen screen, CallbackInfo ci) { + if (screen != null) { + Client.automatedAttackHeld = false; + TriggerType.GUI_OPENED.triggerAll(screen, ci); + } + } + + @Inject(method = "setOverlay", at = @At("HEAD")) + private void injectOverlayOpened(Overlay overlay, CallbackInfo ci) { + if (overlay != null) { + Client.unpressKeys(); + } + } +} +//?} diff --git a/src/main/java/com/v5/mixins/ItemInHandRendererMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ItemInHandRendererMixin.java similarity index 88% rename from src/main/java/com/v5/mixins/ItemInHandRendererMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/ItemInHandRendererMixin.java index 03f0b0da..d64860e1 100644 --- a/src/main/java/com/v5/mixins/ItemInHandRendererMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/ItemInHandRendererMixin.java @@ -1,6 +1,6 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; -import com.v5.storage.V5MixinStorage; +import com.chattriggers.ctjs.api.client.Client; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.ItemInHandRenderer; import net.minecraft.world.InteractionHand; @@ -33,7 +33,7 @@ public class ItemInHandRendererMixin { } @Redirect( - method = "renderHandsWithItems", + method = {"renderHandsWithItems", "submitHandsWithItems"}, at = @At( value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;getAttackAnim(F)F")) @@ -43,7 +43,7 @@ public class ItemInHandRendererMixin { } @Redirect( - method = "renderHandsWithItems", + method = {"renderHandsWithItems", "submitHandsWithItems"}, at = @At( value = "FIELD", target = "Lnet/minecraft/client/player/LocalPlayer;swingingArm:Lnet/minecraft/world/InteractionHand;")) @@ -53,7 +53,6 @@ public class ItemInHandRendererMixin { } private LivingEntity v5$getSpectatedEntity() { - Object target = V5MixinStorage.get("freecamSpectatedEntity", null); - return target instanceof LivingEntity entity ? entity : null; + return Client.getSpectatedEntity(); } } diff --git a/src/main/java/com/v5/mixins/JoinMultiplayerScreenMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/JoinMultiplayerScreenMixin.java similarity index 89% rename from src/main/java/com/v5/mixins/JoinMultiplayerScreenMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/JoinMultiplayerScreenMixin.java index b0923e24..4b7ba7ce 100644 --- a/src/main/java/com/v5/mixins/JoinMultiplayerScreenMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/JoinMultiplayerScreenMixin.java @@ -1,6 +1,7 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; import com.chattriggers.ctjs.api.client.ProxyManagerScreen; +import com.chattriggers.ctjs.api.client.Client; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.multiplayer.JoinMultiplayerScreen; @@ -26,7 +27,7 @@ protected JoinMultiplayerScreenMixin(Component text) { private void init(CallbackInfo ci) { this.v5_proxyButton = Button.builder(Component.literal("V5 Proxies"), b -> { if (this.minecraft != null) { - this.minecraft.setScreen(new ProxyManagerScreen(this)); + Client.setCurrentScreen(new ProxyManagerScreen(this)); } }) .bounds(0, 5, 80, 20) diff --git a/src/main/java/com/v5/mixins/KeyboardHandlerMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/KeyboardHandlerMixin.java similarity index 90% rename from src/main/java/com/v5/mixins/KeyboardHandlerMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/KeyboardHandlerMixin.java index 5131ed32..4574564b 100644 --- a/src/main/java/com/v5/mixins/KeyboardHandlerMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/KeyboardHandlerMixin.java @@ -1,8 +1,7 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; import com.chattriggers.ctjs.api.client.Client; import com.mojang.blaze3d.platform.InputConstants; -import com.v5.storage.V5MixinStorage; import net.minecraft.client.KeyboardHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.Options; @@ -22,7 +21,7 @@ public class KeyboardHandlerMixin { } Minecraft client = Minecraft.getInstance(); - if (!V5MixinStorage.getBoolean("freecamEnabled", false) || client.screen != null) { + if (!Client.isFreecam() || Client.getCurrentScreen() != null) { return; } diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/LevelRendererMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/LevelRendererMixin.java index 54273df5..b4f889c9 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/LevelRendererMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/LevelRendererMixin.java @@ -1,15 +1,19 @@ -package com.chattriggers.ctjs.internal.mixins; +//? if <26.2 { +/*package com.chattriggers.ctjs.internal.mixins; +import com.chattriggers.ctjs.api.client.Client; import com.chattriggers.ctjs.internal.listeners.WorldListener; +import com.llamalad7.mixinextras.sugar.Local; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.mojang.blaze3d.buffers.GpuBufferSlice; +import com.mojang.blaze3d.framegraph.FrameGraphBuilder; import com.mojang.blaze3d.resource.GraphicsResourceAllocator; import com.mojang.blaze3d.resource.ResourceHandle; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.DeltaTracker; import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.chunk.ChunkSectionsToRender; +import net.minecraft.client.renderer.culling.Frustum; import net.minecraft.client.renderer.state.level.BlockOutlineRenderState; import net.minecraft.client.renderer.state.level.CameraRenderState; import net.minecraft.client.renderer.state.level.LevelRenderState; @@ -19,23 +23,34 @@ 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.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @Mixin(LevelRenderer.class) public abstract class LevelRendererMixin { private float ctjs$tickDelta = 1.0F; + @ModifyVariable(method = "cullTerrain", at = @At("HEAD"), argsOnly = true) + private boolean v5$useSpectatorCullingInFreecam(boolean spectator) { + return spectator || Client.isFreecam(); + } + + @Inject(method = "addMainPass", at = @At("HEAD"), cancellable = true) + private void v5$renderMain(FrameGraphBuilder frameGraphBuilder, Frustum frustum, Matrix4fc matrix4f, GpuBufferSlice gpuBufferSlice, boolean renderBlockOutline, LevelRenderState worldRenderState, DeltaTracker deltaTracker, ProfilerFiller profiler, ChunkSectionsToRender chunkSectionsToRender, CallbackInfo ci) { + if (Client.isMacroEnabled() && Client.getRenderLimiter() == Client.RenderLimiter.NO_RENDER) { + ci.cancel(); + } + } + @Inject( method = "renderBlockOutline", at = @At( value = "FIELD", target = "Lnet/minecraft/client/renderer/state/level/CameraRenderState;pos:Lnet/minecraft/world/phys/Vec3;" ), - cancellable = true, - locals = LocalCapture.CAPTURE_FAILSOFT + cancellable = true ) - private void onDrawBlockOutline(MultiBufferSource.BufferSource immediate, PoseStack matrices, boolean renderBlockOutline, LevelRenderState renderStates, CallbackInfo ci, BlockOutlineRenderState outlineRenderState) { + private void onDrawBlockOutline(CallbackInfo ci, @Local BlockOutlineRenderState outlineRenderState) { if (WorldListener.INSTANCE.triggerBlockOutline(outlineRenderState.pos())) ci.cancel(); } @@ -55,8 +70,86 @@ private void beforeRender(GraphicsResourceAllocator allocator, DeltaTracker tick ctjs$tickDelta = tickCounter.getGameTimeDeltaTicks(); } + @Inject( + method = "lambda$addMainPass$0", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;finalizeGizmoCollection()V") + ) + private void beforeGizmos(GpuBufferSlice gpuBufferSlice, LevelRenderState worldRenderState, ProfilerFiller profiler, ChunkSectionsToRender chunkSectionsToRender, ResourceHandle handle, ResourceHandle handle2, ResourceHandle handle3, ResourceHandle handle4, ResourceHandle handle5, boolean bl, Matrix4fc matrix4f, CallbackInfo ci) { + WorldListener.INSTANCE.triggerRenderLast(); + } +} +*///?} else { +package com.chattriggers.ctjs.internal.mixins; + +import com.chattriggers.ctjs.api.client.Client; +import com.chattriggers.ctjs.internal.listeners.WorldListener; +import com.mojang.blaze3d.buffers.GpuBufferSlice; +import com.mojang.blaze3d.resource.GraphicsResourceAllocator; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.state.level.BlockOutlineRenderState; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import org.joml.Matrix4fc; +import org.joml.Vector4f; +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(LevelRenderer.class) +public abstract class LevelRendererMixin { + private float ctjs$tickDelta = 1.0F; + + @Inject(method = "addMainPass", at = @At("HEAD"), cancellable = true) + private void v5$renderMain(CallbackInfo ci) { + if (Client.isMacroEnabled() && Client.getRenderLimiter() == Client.RenderLimiter.NO_RENDER) { + ci.cancel(); + } + } + + @Inject(method = "submitHitOutline", at = @At("HEAD"), cancellable = true) + private void onDrawBlockOutline( + PoseStack matrices, + SubmitNodeCollector collector, + RenderType renderType, + BlockOutlineRenderState outline, + int color, + float lineWidth, + boolean translucent, + CallbackInfo ci + ) { + if (WorldListener.INSTANCE.triggerBlockOutline(outline.pos())) { + ci.cancel(); + } + } + + @Inject(method = "render", at = @At("HEAD")) + private void beforeRender( + GraphicsResourceAllocator allocator, + DeltaTracker tickCounter, + boolean renderBlockOutline, + CameraRenderState camera, + Matrix4fc positionMatrix, + GpuBufferSlice fogBuffer, + Vector4f fogColor, + boolean renderSky, + CallbackInfo ci + ) { + ctjs$tickDelta = tickCounter.getGameTimeDeltaTicks(); + } + + @Inject(method = "submitEntities", at = @At("HEAD")) + private void beforeEntities(PoseStack matrices, net.minecraft.client.renderer.state.level.LevelRenderState state, SubmitNodeCollector collector, CallbackInfo ci) { + WorldListener.INSTANCE.setMatrixStack(matrices); + WorldListener.INSTANCE.triggerRenderStart(ctjs$tickDelta); + } + @Inject(method = "lambda$addMainPass$0", at = @At("RETURN")) - private void afterRender(GpuBufferSlice gpuBufferSlice, LevelRenderState worldRenderState, ProfilerFiller profiler, ChunkSectionsToRender chunkSectionsToRender, ResourceHandle handle, ResourceHandle handle2, ResourceHandle handle3, ResourceHandle handle4, ResourceHandle handle5, boolean bl, Matrix4fc matrix4f, CallbackInfo ci) { + private void afterMainPass(CallbackInfo ci) { WorldListener.INSTANCE.triggerRenderLast(); } } +//?} diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftMixin.java index 49516b09..1a3af1a0 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftMixin.java @@ -6,12 +6,19 @@ import com.chattriggers.ctjs.internal.engine.CTEvents; import com.chattriggers.ctjs.api.triggers.TriggerType; import com.chattriggers.ctjs.internal.engine.module.ModuleManager; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import net.minecraft.client.CameraType; +import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; +import net.minecraft.client.Options; import net.minecraft.client.gui.screens.Overlay; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.sounds.SoundSource; import org.jetbrains.annotations.Nullable; +import org.objectweb.asm.Opcodes; +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; @@ -21,10 +28,115 @@ @Mixin(Minecraft.class) public abstract class MinecraftMixin { @Shadow @Nullable public ClientLevel level; + @Shadow @Final public Options options; @Shadow public abstract ServerData getCurrentServer(); @Shadow public abstract boolean hasSingleplayerServer(); + private Integer v5$savedDistance; + private CameraType v5$savedPerspective; + private Integer v5$savedFps; + private Float v5$savedMasterVolume; + + @ModifyExpressionValue( + method = "pauseIfInactive", + at = @At( + value = "FIELD", + target = "Lnet/minecraft/client/Options;pauseOnLostFocus:Z", + opcode = Opcodes.GETFIELD + ) + ) + private boolean v5$pauseIfInactive(boolean original) { + return false; + } + + @ModifyExpressionValue( + method = "handleKeybinds", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/MouseHandler;isMouseGrabbed()Z" + ) + ) + private boolean v5$allowAttackWhileUngrabbed(boolean original) { + return original || Client.isUngrabbed() || Client.automatedAttackHeld; + } + + @Inject(method = "handleKeybinds()V", at = @At("HEAD")) + private void v5$handleInputEvents(CallbackInfo ci) { + if (!Client.isInputLocked()) { + return; + } + + for (KeyMapping key : options.keyHotbarSlots) { + if (key.consumeClick()) { + key.setDown(false); + } + } + } + + @Inject(method = "tick()V", at = @At("HEAD")) + private void v5$tickRenderLimiter(CallbackInfo ci) { + int currentDist = options.renderDistance().get(); + CameraType currentPerspective = options.getCameraType(); + int currentFps = options.framerateLimit().get(); + float currentMasterVolume = options.getFinalSoundSourceVolume(SoundSource.MASTER); + + boolean macroEnabled = Client.isMacroEnabled(); + Client.RenderLimiter renderLimiter = Client.getRenderLimiter(); + boolean forcePerspective = Client.isForcePerspective(); + boolean limitFps = Client.getLimitFps(); + boolean muteGame = Client.getMuteGame(); + + if (macroEnabled && renderLimiter == Client.RenderLimiter.LIMIT_CHUNKS) { + if (v5$savedDistance == null) v5$savedDistance = currentDist; + if (currentDist != 2) { + options.renderDistance().set(2); + } + } else if (v5$savedDistance != null) { + if (currentDist != v5$savedDistance) { + options.renderDistance().set(v5$savedDistance); + } + v5$savedDistance = null; + } + + if (macroEnabled && forcePerspective) { + if (v5$savedPerspective == null) v5$savedPerspective = currentPerspective; + if (currentPerspective != CameraType.THIRD_PERSON_BACK) { + options.setCameraType(CameraType.THIRD_PERSON_BACK); + } + } else if (v5$savedPerspective != null) { + if (currentPerspective != v5$savedPerspective) { + options.setCameraType(v5$savedPerspective); + } + v5$savedPerspective = null; + } + + if (macroEnabled && limitFps) { + if (v5$savedFps == null) v5$savedFps = currentFps; + if (currentFps != 30) { + options.framerateLimit().set(30); + } + } else if (v5$savedFps != null) { + if (currentFps != v5$savedFps) { + int restoreValue = v5$savedFps > 240 ? 260 : v5$savedFps; + options.framerateLimit().set(restoreValue); + } + v5$savedFps = null; + } + + if (macroEnabled && muteGame) { + if (v5$savedMasterVolume == null) v5$savedMasterVolume = currentMasterVolume; + if (Float.compare(currentMasterVolume, 0.0F) != 0) { + options.getSoundSourceOptionInstance(SoundSource.MASTER).set(0.0D); + } + } else if (v5$savedMasterVolume != null) { + if (Float.compare(currentMasterVolume, v5$savedMasterVolume) != 0) { + options.getSoundSourceOptionInstance(SoundSource.MASTER).set((double) v5$savedMasterVolume); + } + v5$savedMasterVolume = null; + } + } + @Inject(method = "setLevel", at = @At("HEAD")) private void injectWorldUnload(ClientLevel world, CallbackInfo ci) { if (world == null) @@ -61,19 +173,6 @@ private void injectDisconnect(Screen disconnectionScreen, boolean transferring, } } - @Inject(method = "setScreen", at = @At("HEAD")) - private void injectScreenOpened(Screen screen, CallbackInfo ci) { - if (screen != null) { - Client.automatedAttackHeld = false; - TriggerType.GUI_OPENED.triggerAll(screen, ci); - } - } - - @Inject(method = "setOverlay", at = @At("HEAD")) - private void injectOverlayOpened(Overlay overlay, CallbackInfo ci) { - if (overlay != null) - Client.unpressKeys(); - } @Inject(method = "run", at = @At("HEAD")) private void injectRun(CallbackInfo ci) { diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftScreenMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftScreenMixin.java new file mode 100644 index 00000000..dd581a06 --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftScreenMixin.java @@ -0,0 +1,30 @@ +//? if <26.2 { +/*package com.chattriggers.ctjs.internal.mixins; + +import com.chattriggers.ctjs.api.client.Client; +import com.chattriggers.ctjs.api.triggers.TriggerType; +import net.minecraft.client.gui.screens.Overlay; +import net.minecraft.client.gui.screens.Screen; +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(targets = "net.minecraft.client.Minecraft") +public class MinecraftScreenMixin { + @Inject(method = "setScreen", at = @At("HEAD")) + private void injectScreenOpened(Screen screen, CallbackInfo ci) { + if (screen != null) { + Client.automatedAttackHeld = false; + TriggerType.GUI_OPENED.triggerAll(screen, ci); + } + } + + @Inject(method = "setOverlay", at = @At("HEAD")) + private void injectOverlayOpened(Overlay overlay, CallbackInfo ci) { + if (overlay != null) { + Client.unpressKeys(); + } + } +} +*///?} diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/MouseHandlerMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/MouseHandlerMixin.java index cbe3409d..7cb5de43 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/MouseHandlerMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/MouseHandlerMixin.java @@ -1,35 +1,117 @@ package com.chattriggers.ctjs.internal.mixins; +import com.chattriggers.ctjs.api.client.Client; import com.chattriggers.ctjs.internal.engine.CTEvents; import com.chattriggers.ctjs.internal.listeners.MouseListener; import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.blaze3d.platform.InputConstants; +import net.minecraft.client.Minecraft; import net.minecraft.client.MouseHandler; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.input.MouseButtonInfo; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.util.Mth; 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.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.lwjgl.glfw.GLFW; @Mixin(MouseHandler.class) public class MouseHandlerMixin { @Shadow private MouseButtonInfo activeButton; - @Inject( - method = "onButton", + private int v5$guiMouseButton = -1; + + private boolean v5$cameraLookEnabled() { + return Client.isFreecam() || Client.isFreelook(); + } + + @Inject(method = "onButton", at = @At("HEAD"), cancellable = true) + private void v5$cancelFreecamClick(long window, MouseButtonInfo button, int action, CallbackInfo ci) { + Minecraft client = Minecraft.getInstance(); + MouseListener.onRawMouseInput(button.button(), action); + if (action == GLFW.GLFW_PRESS && Client.getCurrentScreen() != null) { + v5$guiMouseButton = button.button(); + } else if (action == GLFW.GLFW_RELEASE) { + if (button.button() == v5$guiMouseButton) { + v5$guiMouseButton = -1; + } else if (!v5$cameraLookEnabled() || (button.button() != 0 && button.button() != 1)) { + Client.releaseHeldKey(InputConstants.Type.MOUSE.getOrCreate(button.button())); + } + } + + if (v5$cameraLookEnabled() + && Client.getCurrentScreen() == null + && (button.button() == 0 || button.button() == 1)) { + ci.cancel(); + } + } + + @Redirect( + method = "turnPlayer(D)V", at = @At( - value = "FIELD", - target = "Lnet/minecraft/client/Minecraft;screen:Lnet/minecraft/client/gui/screens/Screen;", - opcode = Opcodes.GETFIELD + value = "INVOKE", + target = "Lnet/minecraft/client/player/LocalPlayer;turn(DD)V" ) ) - private void injectOnMouseButton(long window, MouseButtonInfo input, int action, CallbackInfo ci) { - MouseListener.onRawMouseInput(input.button(), action); + private void v5$turnFreecam(LocalPlayer player, double yawDelta, double pitchDelta) { + if (!v5$cameraLookEnabled()) { + player.turn(yawDelta, pitchDelta); + return; + } + + Float yaw = Client.getCameraYaw(); + Float pitch = Client.getCameraPitch(); + Client.setCameraRotation( + (yaw != null ? yaw : player.getYRot()) + (float) yawDelta * 0.15F, + Mth.clamp((pitch != null ? pitch : player.getXRot()) + (float) pitchDelta * 0.15F, -90.0F, 90.0F) + ); + } + + @Inject(method = "grabMouse()V", at = @At("HEAD"), cancellable = true) + private void v5$lockCursor(CallbackInfo ci) { + if (Client.isUngrabbed()) { + Client.resumeHeldKeys(); + ci.cancel(); + } + } + + @Inject(method = "grabMouse()V", at = @At("TAIL")) + private void v5$restoreHeldKeys(CallbackInfo ci) { + Client.resumeHeldKeys(); } + @Inject(method = "turnPlayer(D)V", at = @At("HEAD"), cancellable = true) + private void v5$updateMouse(CallbackInfo ci) { + if (Client.isUngrabbed()) { + ci.cancel(); + } + } + + @Inject(method = "onScroll(JDD)V", at = @At("HEAD"), cancellable = true) + private void v5$onMouseScroll(long window, double horizontalScroll, double verticalScroll, CallbackInfo ci) { + Minecraft client = Minecraft.getInstance(); + if (Client.isFreelook() && Client.getCurrentScreen() == null) { + Client.setFreelookDistance(Client.getFreelookDistance() - verticalScroll); + ci.cancel(); + return; + } + + if (!Client.isInputLocked()) { + return; + } + + if (Client.getCurrentScreen() == null) { + ci.cancel(); + } + } + + @Inject( method = "onScroll", at = @At( diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerTabOverlayMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerTabOverlayMixin.java index 3109d2d9..6bc2f641 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerTabOverlayMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerTabOverlayMixin.java @@ -1,7 +1,9 @@ package com.chattriggers.ctjs.internal.mixins; +import com.chattriggers.ctjs.api.client.Client; import com.chattriggers.ctjs.api.triggers.TriggerType; import com.chattriggers.ctjs.api.world.TabList; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.PlayerTabOverlay; import net.minecraft.world.scores.Scoreboard; @@ -14,6 +16,11 @@ @Mixin(PlayerTabOverlay.class) public class PlayerTabOverlayMixin { + @ModifyReturnValue(method = "getNameForDisplay", at = @At("RETURN")) + private Component v5$getPlayerName(Component original) { + return Client.processName(original); + } + @Inject(method = "extractRenderState", at = @At("HEAD"), cancellable = true) private void injectRenderPlayerList(GuiGraphicsExtractor context, int scaledWindowWidth, Scoreboard scoreboard, Objective objective, CallbackInfo ci) { TriggerType.RENDER_PLAYER_LIST.triggerAll(ci); diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/SystemReportMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/SystemReportMixin.java index a4199fb1..1d368b7b 100644 --- a/src/main/java/com/chattriggers/ctjs/internal/mixins/SystemReportMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/SystemReportMixin.java @@ -1,32 +1,29 @@ -package com.chattriggers.ctjs.internal.mixins; - +package com.chattriggers.ctjs.internal.mixins; + import com.chattriggers.ctjs.internal.engine.module.Module; import com.chattriggers.ctjs.internal.engine.module.ModuleManager; import net.minecraft.SystemReport; 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.Comparator; -import java.util.function.Supplier; import java.util.stream.Collectors; - -@Mixin(SystemReport.class) -public abstract class SystemReportMixin { - @Shadow - public abstract void setDetail(String string, Supplier supplier); - + +@Mixin(SystemReport.class) +public abstract class SystemReportMixin { + @Inject(method = "", at = @At("RETURN")) private void addModules(CallbackInfo ci) { - setDetail("ChatTriggers Modules", () -> ModuleManager.INSTANCE.getCachedModules().stream() + String modules = ModuleManager.INSTANCE.getCachedModules().stream() .sorted(Comparator.comparing(Module::getName)) .map(module -> { var version = module.getMetadata().getVersion(); return "\n\t\t" + module.getName() + ": " + (version == null ? "No module version specified" : "v" + version); }) - .collect(Collectors.joining())); + .collect(Collectors.joining()); + ((SystemReport) (Object) this).setDetail("ChatTriggers Modules", modules); } } diff --git a/src/main/java/com/v5/mixins/VisGraphMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/VisGraphMixin.java similarity index 78% rename from src/main/java/com/v5/mixins/VisGraphMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/VisGraphMixin.java index 69d21a58..0bafd2bf 100644 --- a/src/main/java/com/v5/mixins/VisGraphMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/VisGraphMixin.java @@ -1,6 +1,6 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; -import com.v5.storage.V5MixinStorage; +import com.chattriggers.ctjs.api.client.Client; import net.minecraft.client.renderer.chunk.VisGraph; import net.minecraft.core.BlockPos; import org.spongepowered.asm.mixin.Mixin; @@ -12,6 +12,6 @@ public class VisGraphMixin { @Inject(method = "setOpaque", at = @At("HEAD"), cancellable = true) private void v5$disableFreecamOcclusion(BlockPos pos, CallbackInfo ci) { - if (V5MixinStorage.getBoolean("freecamEnabled", false)) ci.cancel(); + if (Client.isFreecam()) ci.cancel(); } } diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/VulkanCommandEncoderMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/VulkanCommandEncoderMixin.java new file mode 100644 index 00000000..3b26ab7a --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/VulkanCommandEncoderMixin.java @@ -0,0 +1,16 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.mixins; + +import com.chattriggers.ctjs.internal.accessors.VulkanCommandEncoderAccessor; +import com.mojang.blaze3d.vulkan.VulkanCommandEncoder; +import org.lwjgl.vulkan.VkCommandBuffer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(VulkanCommandEncoder.class) +public interface VulkanCommandEncoderMixin extends VulkanCommandEncoderAccessor { + @Override + @Invoker("commandBuffer") + VkCommandBuffer ctjs$getCommandBuffer(); +} +//?} diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/VulkanDeviceMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/VulkanDeviceMixin.java new file mode 100644 index 00000000..36a17039 --- /dev/null +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/VulkanDeviceMixin.java @@ -0,0 +1,41 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.internal.mixins; + +import com.mojang.blaze3d.shaders.ShaderSource; +import com.mojang.blaze3d.vulkan.VulkanDevice; +import com.mojang.blaze3d.vulkan.VulkanInstance; +import com.mojang.blaze3d.vulkan.VulkanPhysicalDevice; +import com.mojang.blaze3d.vulkan.checkpoints.CheckpointExtension; +import com.chattriggers.ctjs.internal.accessors.VulkanDeviceAccessor; +import org.lwjgl.vulkan.VkDevice; +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(VulkanDevice.class) +public class VulkanDeviceMixin implements VulkanDeviceAccessor { + @Unique + private VulkanPhysicalDevice ctjs$physicalDevice; + + @Inject(method = "", at = @At("RETURN")) + private void ctjs$capturePhysicalDevice( + ShaderSource shaderSource, + VulkanInstance instance, + VulkanPhysicalDevice physicalDevice, + java.util.Set enabledExtensions, + VkDevice device, + long vma, + CheckpointExtension checkpointExtension, + CallbackInfo ci + ) { + ctjs$physicalDevice = physicalDevice; + } + + @Override + public VulkanPhysicalDevice ctjs$getPhysicalDevice() { + return ctjs$physicalDevice; + } +} +//?} diff --git a/src/main/java/com/v5/mixins/YggdrasilServicesKeyInfoMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/YggdrasilServicesKeyInfoMixin.java similarity index 94% rename from src/main/java/com/v5/mixins/YggdrasilServicesKeyInfoMixin.java rename to src/main/java/com/chattriggers/ctjs/internal/mixins/YggdrasilServicesKeyInfoMixin.java index 6833b7af..609eca92 100644 --- a/src/main/java/com/v5/mixins/YggdrasilServicesKeyInfoMixin.java +++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/YggdrasilServicesKeyInfoMixin.java @@ -1,4 +1,4 @@ -package com.v5.mixins; +package com.chattriggers.ctjs.internal.mixins; import com.mojang.authlib.yggdrasil.YggdrasilServicesKeyInfo; import org.slf4j.Logger; @@ -20,4 +20,4 @@ public class YggdrasilServicesKeyInfoMixin { private void redirectLoggerError(Logger instance, String s, Object o, Object o1) { // Do nothing - suppress the log } -} \ No newline at end of file +} 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 58f40667..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.commands.arguments.selector.EntitySelector; -import net.minecraft.world.entity.Entity; -import net.minecraft.advancements.criterion.MinMaxBounds; -import net.minecraft.world.level.entity.EntityTypeTest; -import net.minecraft.world.phys.AABB; -import net.minecraft.world.phys.Vec3; -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 getMaxResults(); - - @Accessor - boolean getIncludesEntities(); - - @Accessor - List> getContextFreePredicates(); - - @Accessor - MinMaxBounds.Doubles getRange(); - - @Accessor - Function getPosition(); - - @Accessor - AABB getAabb(); - - @Accessor - BiConsumer> getOrder(); - - @Accessor - boolean getCurrentEntity(); - - @Accessor - String getPlayerName(); - - @Accessor - UUID getEntityUUID(); - - @Accessor - EntityTypeTest getType(); -} diff --git a/src/main/java/com/v5/mixins/BlockMixin.java b/src/main/java/com/v5/mixins/BlockMixin.java deleted file mode 100644 index 218df85e..00000000 --- a/src/main/java/com/v5/mixins/BlockMixin.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.v5.mixins; - -import com.v5.storage.V5MixinStorage; -import java.util.Set; -import net.minecraft.world.level.block.Block; -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(Block.class) -public class BlockMixin { - private static final Set TARGET_KEYS = - Set.of( - "block.minecraft.melon", - "block.minecraft.pumpkin", - "block.minecraft.carrots", - "block.minecraft.potatoes", - "block.minecraft.wheat", - "block.minecraft.nether_wart", - "block.minecraft.sugar_cane", - "block.minecraft.cactus", - "block.minecraft.cocoa", - "block.minecraft.melon_stem", - "block.minecraft.pumpkin_stem", - "block.minecraft.carved_pumpkin"); - - @Inject(method = "spawnDestroyParticles", at = @At("HEAD"), cancellable = true) - private void v5$spawnBreakParticles(CallbackInfo ci) { - if (!V5MixinStorage.getBoolean("hideParticles", false)) { - return; - } - - String blockKey = ((Block) (Object) this).getDescriptionId(); - if (TARGET_KEYS.contains(blockKey)) { - ci.cancel(); - } - } -} diff --git a/src/main/java/com/v5/mixins/ChatComponentMixin.java b/src/main/java/com/v5/mixins/ChatComponentMixin.java deleted file mode 100644 index 1c942c28..00000000 --- a/src/main/java/com/v5/mixins/ChatComponentMixin.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.v5.mixins; - -import com.v5.storage.ProfileHiderProcessor; -import net.minecraft.client.gui.components.ChatComponent; -import net.minecraft.network.chat.Component; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyVariable; - -@Mixin(ChatComponent.class) -public class ChatComponentMixin { - @ModifyVariable( - method = "addMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/multiplayer/chat/GuiMessageSource;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag;)V", - at = @At("HEAD"), - ordinal = 0, - argsOnly = true) - private Component v5$processMessage(Component original) { - return ProfileHiderProcessor.process(original); - } -} diff --git a/src/main/java/com/v5/mixins/ConnectionMixin.java b/src/main/java/com/v5/mixins/ConnectionMixin.java deleted file mode 100644 index 5c12c7e4..00000000 --- a/src/main/java/com/v5/mixins/ConnectionMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.v5.mixins; - -import com.chattriggers.ctjs.api.triggers.PacketEvent; -import net.minecraft.network.Connection; -import net.minecraft.network.PacketListener; -import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.ClientboundBundlePacket; -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(Connection.class) -public class ConnectionMixin { - - @Inject(method = "genericsFtw", at = @At("HEAD")) - private static void onPacketReceived(Packet packet, PacketListener listener, CallbackInfo ci) { - if (packet instanceof ClientboundBundlePacket bundlePacket) { - for (Packet subPacket : bundlePacket.subPackets()) { - PacketEvent.RECEIVE.invoker().trigger(subPacket); - } - } else { - PacketEvent.RECEIVE.invoker().trigger(packet); - } - } -} diff --git a/src/main/java/com/v5/mixins/DrawContextCapture.java b/src/main/java/com/v5/mixins/DrawContextCapture.java deleted file mode 100644 index 8cdd1364..00000000 --- a/src/main/java/com/v5/mixins/DrawContextCapture.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.v5.mixins; - -import net.minecraft.client.gui.GuiGraphicsExtractor; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.DeltaTracker; -import com.chattriggers.ctjs.api.render.DrawContextHolder; -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(Gui.class) -public class DrawContextCapture { - @Inject(method = "extractRenderState", at = @At("HEAD")) - private void captureContext(GuiGraphicsExtractor context, DeltaTracker tickCounter, CallbackInfo ci) { - DrawContextHolder.setCurrentContext(context); - } -} diff --git a/src/main/java/com/v5/mixins/GameRendererMixin.java b/src/main/java/com/v5/mixins/GameRendererMixin.java deleted file mode 100644 index b47641c2..00000000 --- a/src/main/java/com/v5/mixins/GameRendererMixin.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.v5.mixins; - -import com.mojang.blaze3d.buffers.GpuBufferSlice; -import com.chattriggers.ctjs.api.render.NVGRenderer; -import net.minecraft.client.gui.render.GuiRenderer; -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(GuiRenderer.class) -public class GameRendererMixin { - @Inject(method = "render", at = @At("HEAD")) - private void beforeRender(GpuBufferSlice fogBuffer, CallbackInfo ci) { - NVGRenderer.runPreDrawables(); - } - - @Inject(method = "render", at = @At("TAIL")) - private void onRender(GpuBufferSlice fogBuffer, CallbackInfo ci) { - NVGRenderer.runDrawables(); - } -} diff --git a/src/main/java/com/v5/mixins/LevelRendererMixin.java b/src/main/java/com/v5/mixins/LevelRendererMixin.java deleted file mode 100644 index cd455219..00000000 --- a/src/main/java/com/v5/mixins/LevelRendererMixin.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.v5.mixins; - -import com.mojang.blaze3d.buffers.GpuBufferSlice; -import com.mojang.blaze3d.framegraph.FrameGraphBuilder; -import com.v5.storage.V5MixinStorage; -import net.minecraft.client.DeltaTracker; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.chunk.ChunkSectionsToRender; -import net.minecraft.client.renderer.culling.Frustum; -import net.minecraft.client.renderer.state.level.LevelRenderState; -import net.minecraft.util.profiling.ProfilerFiller; -import org.joml.Matrix4fc; -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.ModifyVariable; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(LevelRenderer.class) -public class LevelRendererMixin { - - @ModifyVariable(method = "cullTerrain", at = @At("HEAD"), argsOnly = true) - private boolean v5$useSpectatorCullingInFreecam(boolean spectator) { - return spectator || V5MixinStorage.getBoolean("freecamEnabled", false); - } - - @Inject(method = "addMainPass", at = @At("HEAD"), cancellable = true) - private void v5$renderMain(FrameGraphBuilder frameGraphBuilder, Frustum frustum, Matrix4fc matrix4f, GpuBufferSlice gpuBufferSlice, boolean renderBlockOutline, LevelRenderState worldRenderState, DeltaTracker deltaTracker, ProfilerFiller profiler, ChunkSectionsToRender chunkSectionsToRender, CallbackInfo ci) { - if (V5MixinStorage.getBoolean("macroEnabled", false) - && "No Render".equals(V5MixinStorage.getString("renderLimiter", "Off"))) { - ci.cancel(); - } - } -} diff --git a/src/main/java/com/v5/mixins/MinecraftMixin.java b/src/main/java/com/v5/mixins/MinecraftMixin.java deleted file mode 100644 index c574372a..00000000 --- a/src/main/java/com/v5/mixins/MinecraftMixin.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.v5.mixins; - -import com.chattriggers.ctjs.api.client.Client; -import com.v5.storage.V5MixinStorage; -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import net.minecraft.client.Minecraft; -import net.minecraft.client.Options; -import net.minecraft.client.KeyMapping; -import net.minecraft.client.CameraType; -import net.minecraft.sounds.SoundSource; -import org.objectweb.asm.Opcodes; -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(Minecraft.class) -public class MinecraftMixin { - - @Shadow @Final public Options options; - - @ModifyExpressionValue( - method = "pauseIfInactive", - at = @At( - value = "FIELD", - target = "Lnet/minecraft/client/Options;pauseOnLostFocus:Z", - opcode = Opcodes.GETFIELD - )) - private boolean v5$pauseIfInactive(boolean original) { - return false; - } - - @ModifyExpressionValue( - method = "handleKeybinds", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/MouseHandler;isMouseGrabbed()Z" - ) - ) - private boolean v5$allowAttackWhileUngrabbed(boolean original) { - return original || V5MixinStorage.getBoolean("ungrabbed", false) || Client.automatedAttackHeld; - } - - @Inject(method = "handleKeybinds()V", at = @At("HEAD")) - private void v5$handleInputEvents(CallbackInfo ci) { - if (!V5MixinStorage.getBoolean("inputLocked", false)) { - return; - } - - for (KeyMapping key : options.keyHotbarSlots) { - if (key.consumeClick()) { - key.setDown(false); - } - } - } - - @Inject(method = "tick()V", at = @At("HEAD")) - private void v5$tickRenderLimiter(CallbackInfo ci) { - int currentDist = options.renderDistance().get(); - CameraType currentPerspective = options.getCameraType(); - int currentFps = options.framerateLimit().get(); - float currentMasterVolume = options.getFinalSoundSourceVolume(SoundSource.MASTER); - - boolean macroEnabled = V5MixinStorage.getBoolean("macroEnabled", false); - String renderLimiter = V5MixinStorage.getString("renderLimiter", "Off"); - boolean forcePerspective = V5MixinStorage.getBoolean("forcePerspective", false); - boolean limitFps = V5MixinStorage.getBoolean("limitFps", false); - boolean muteGame = V5MixinStorage.getBoolean("muteGame", false); - - Object savedDistanceObj = V5MixinStorage.get("savedDistance", null); - if (macroEnabled && "Limit Chunks".equals(renderLimiter)) { - if (savedDistanceObj == null) { - V5MixinStorage.set("savedDistance", currentDist); - } - if (currentDist != 2) { - options.renderDistance().set(2); - } - } else if (savedDistanceObj instanceof Number savedDistanceNum) { - int savedDistance = savedDistanceNum.intValue(); - if (currentDist != savedDistance) { - options.renderDistance().set(savedDistance); - } - V5MixinStorage.set("savedDistance", null); - } - - Object savedPerspectiveObj = V5MixinStorage.get("savedPerspective", null); - if (macroEnabled && forcePerspective) { - if (savedPerspectiveObj == null) { - V5MixinStorage.set("savedPerspective", currentPerspective); - } - if (currentPerspective != CameraType.THIRD_PERSON_BACK) { - options.setCameraType(CameraType.THIRD_PERSON_BACK); - } - } else if (savedPerspectiveObj instanceof CameraType savedPerspective) { - if (currentPerspective != savedPerspective) { - options.setCameraType(savedPerspective); - } - V5MixinStorage.set("savedPerspective", null); - } - - Object savedFpsObj = V5MixinStorage.get("savedFps", null); - if (macroEnabled && limitFps) { - if (savedFpsObj == null) { - V5MixinStorage.set("savedFps", currentFps); - } - if (currentFps != 30) { - options.framerateLimit().set(30); - } - } else if (savedFpsObj instanceof Number savedFpsNum) { - int savedFps = savedFpsNum.intValue(); - if (currentFps != savedFps) { - int restoreValue = savedFps > 240 ? 260 : savedFps; - options.framerateLimit().set(restoreValue); - } - V5MixinStorage.set("savedFps", null); - } - - Object savedMasterVolumeObj = V5MixinStorage.get("savedMasterVolume", null); - if (macroEnabled && muteGame) { - if (savedMasterVolumeObj == null) { - V5MixinStorage.set("savedMasterVolume", currentMasterVolume); - } - if (Float.compare(currentMasterVolume, 0.0F) != 0) { - options.getSoundSourceOptionInstance(SoundSource.MASTER).set(0.0D); - } - } else if (savedMasterVolumeObj instanceof Number savedMasterVolumeNum) { - float savedMasterVolume = savedMasterVolumeNum.floatValue(); - if (Float.compare(currentMasterVolume, savedMasterVolume) != 0) { - options.getSoundSourceOptionInstance(SoundSource.MASTER).set((double) savedMasterVolume); - } - V5MixinStorage.set("savedMasterVolume", null); - } - } -} diff --git a/src/main/java/com/v5/mixins/MouseHandlerMixin.java b/src/main/java/com/v5/mixins/MouseHandlerMixin.java deleted file mode 100644 index 995a8b0a..00000000 --- a/src/main/java/com/v5/mixins/MouseHandlerMixin.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.v5.mixins; - -import com.chattriggers.ctjs.api.client.Client; -import com.mojang.blaze3d.platform.InputConstants; -import com.v5.storage.V5MixinStorage; -import net.minecraft.client.Minecraft; -import net.minecraft.client.MouseHandler; -import net.minecraft.client.input.MouseButtonInfo; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.util.Mth; -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.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.lwjgl.glfw.GLFW; - -@Mixin(MouseHandler.class) -public class MouseHandlerMixin { - private int v5$guiMouseButton = -1; - - private boolean v5$cameraLookEnabled() { - return V5MixinStorage.getBoolean("freecamEnabled", false) - || V5MixinStorage.getBoolean("freelookEnabled", false); - } - - @Inject(method = "onButton", at = @At("HEAD"), cancellable = true) - private void v5$cancelFreecamClick(long window, MouseButtonInfo button, int action, CallbackInfo ci) { - Minecraft client = Minecraft.getInstance(); - if (action == GLFW.GLFW_PRESS && client.screen != null) { - v5$guiMouseButton = button.button(); - } else if (action == GLFW.GLFW_RELEASE) { - if (button.button() == v5$guiMouseButton) { - v5$guiMouseButton = -1; - } else if (!v5$cameraLookEnabled() || (button.button() != 0 && button.button() != 1)) { - Client.releaseHeldKey(InputConstants.Type.MOUSE.getOrCreate(button.button())); - } - } - - if (v5$cameraLookEnabled() - && client.screen == null - && (button.button() == 0 || button.button() == 1)) { - ci.cancel(); - } - } - - @Redirect( - method = "turnPlayer(D)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/player/LocalPlayer;turn(DD)V")) - private void v5$turnFreecam(LocalPlayer player, double yawDelta, double pitchDelta) { - if (!v5$cameraLookEnabled()) { - player.turn(yawDelta, pitchDelta); - return; - } - - Object yaw = V5MixinStorage.get("cameraOverrideYaw", player.getYRot()); - Object pitch = V5MixinStorage.get("cameraOverridePitch", player.getXRot()); - if (yaw instanceof Number yawNumber && pitch instanceof Number pitchNumber) { - V5MixinStorage.set("cameraOverrideYaw", yawNumber.floatValue() + (float) yawDelta * 0.15F); - V5MixinStorage.set( - "cameraOverridePitch", - Mth.clamp(pitchNumber.floatValue() + (float) pitchDelta * 0.15F, -90.0F, 90.0F)); - } - } - - @Inject(method = "grabMouse()V", at = @At("HEAD"), cancellable = true) - private void v5$lockCursor(CallbackInfo ci) { - if (V5MixinStorage.getBoolean("ungrabbed", false)) { - Client.resumeHeldKeys(); - ci.cancel(); - } - } - - @Inject(method = "grabMouse()V", at = @At("TAIL")) - private void v5$restoreHeldKeys(CallbackInfo ci) { - Client.resumeHeldKeys(); - } - - @Inject(method = "turnPlayer(D)V", at = @At("HEAD"), cancellable = true) - private void v5$updateMouse(CallbackInfo ci) { - if (V5MixinStorage.getBoolean("ungrabbed", false)) { - ci.cancel(); - } - } - - @Inject(method = "onScroll(JDD)V", at = @At("HEAD"), cancellable = true) - private void v5$onMouseScroll(long window, double horizontalScroll, double verticalScroll, CallbackInfo ci) { - Minecraft client = Minecraft.getInstance(); - if (V5MixinStorage.getBoolean("freelookEnabled", false) && client.screen == null) { - Object storedDistance = V5MixinStorage.get("freelookCameraDistance", 4.0); - double distance = storedDistance instanceof Number number ? number.doubleValue() : 4.0; - V5MixinStorage.set("freelookCameraDistance", Mth.clamp(distance - verticalScroll, 1.0, 12.0)); - ci.cancel(); - return; - } - - if (!V5MixinStorage.getBoolean("inputLocked", false)) { - return; - } - - if (client != null && client.screen == null) { - ci.cancel(); - } - } -} diff --git a/src/main/java/com/v5/storage/ProfileHiderProcessor.java b/src/main/java/com/v5/storage/ProfileHiderProcessor.java deleted file mode 100644 index 6e9d337c..00000000 --- a/src/main/java/com/v5/storage/ProfileHiderProcessor.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.v5.storage; - -import java.awt.Color; -import java.util.Optional; -import java.util.regex.Pattern; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.Style; - -public final class ProfileHiderProcessor { - private ProfileHiderProcessor() {} - - public static Component process(Component original) { - if (!V5MixinStorage.getBoolean("profileHiderEnabled", false)) { - return original; - } - - String username = Minecraft.getInstance().getUser().getName(); - String replacement = V5MixinStorage.getString("profileHiderReplacement", "Hidden"); - MutableComponent result = Component.empty(); - - original.visit( - (style, content) -> { - String[] parts = content.split(Pattern.quote(username), -1); - for (int i = 0; i < parts.length; i++) { - if (!parts[i].isEmpty()) { - result.append(Component.literal(parts[i]).setStyle(style)); - } - if (i < parts.length - 1) { - result.append(replacement(replacement)); - } - } - return Optional.empty(); - }, - Style.EMPTY); - return result; - } - - private static Component replacement(String value) { - if (value.matches("^#[0-9a-fA-F]{6}.+")) { - return Component.literal(value.substring(7)).withColor(Integer.parseInt(value.substring(1, 7), 16)); - } - if (value.indexOf('&') >= 0 || value.indexOf('§') >= 0) { - return Component.literal(value.replace('&', '§')); - } - - MutableComponent result = Component.empty(); - for (int i = 0; i < value.length(); i++) { - float hue = (System.currentTimeMillis() % 2000) / 2000F + i / 40F; - int color = Color.HSBtoRGB(hue % 1, 0.8F, 1F) & 0xFFFFFF; - result.append(Component.literal(String.valueOf(value.charAt(i))).withColor(color).withStyle(style -> style.withBold(true))); - } - return result; - } -} diff --git a/src/main/java/com/v5/storage/V5MixinStorage.java b/src/main/java/com/v5/storage/V5MixinStorage.java deleted file mode 100644 index 3345d1e2..00000000 --- a/src/main/java/com/v5/storage/V5MixinStorage.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.v5.storage; - -import com.chattriggers.ctjs.internal.engine.JSLoader; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.function.Function; -import org.mozilla.javascript.Callable; -import org.mozilla.javascript.ScriptRuntime; -import org.mozilla.javascript.Undefined; - -public final class V5MixinStorage { - private static final String METHOD_PREFIX = "method_"; - private static final Map STORAGE = getSharedStorage(); - - private V5MixinStorage() {} - - @SuppressWarnings("unchecked") - private static Map getSharedStorage() { - Object existing = System.getProperties().get("V5Mixin.storage"); - if (existing instanceof Map) { - return (Map) existing; - } - - Map storage = new HashMap<>(); - System.getProperties().put("V5Mixin.storage", storage); - return storage; - } - - public static Object get(String key, Object defaultValue) { - return STORAGE.getOrDefault(key, defaultValue); - } - - public static boolean getBoolean(String key, boolean defaultValue) { - Object value = get(key, defaultValue); - if (value == null || value == Undefined.instance) { - return defaultValue; - } - - if (value instanceof Boolean bool) { - return bool; - } - - if (value instanceof Number number) { - return number.doubleValue() != 0.0D; - } - - if (value instanceof CharSequence sequence) { - String normalized = sequence.toString().trim().toLowerCase(Locale.ROOT); - if ("true".equals(normalized)) return true; - if ("false".equals(normalized)) return false; - return defaultValue; - } - - return convertOrDefault(value, ScriptRuntime::toBoolean, defaultValue); - } - - public static String getString(String key, String defaultValue) { - Object value = get(key, defaultValue); - if (value == null || value == Undefined.instance) { - return defaultValue; - } - - if (value instanceof String str) { - return str; - } - - return convertOrDefault(value, ScriptRuntime::toString, defaultValue); - } - - public static void set(String key, Object value) { - STORAGE.put(key, value); - } - - public static void clear() { - Object savedDistance = STORAGE.get("savedDistance"); - Object savedPerspective = STORAGE.get("savedPerspective"); - Object savedFps = STORAGE.get("savedFps"); - Object savedMasterVolume = STORAGE.get("savedMasterVolume"); - STORAGE.clear(); - if (savedDistance != null) STORAGE.put("savedDistance", savedDistance); - if (savedPerspective != null) STORAGE.put("savedPerspective", savedPerspective); - if (savedFps != null) STORAGE.put("savedFps", savedFps); - if (savedMasterVolume != null) STORAGE.put("savedMasterVolume", savedMasterVolume); - } - - public static T applyMethod(String methodName, T original, Class expectedType) { - Object value = STORAGE.get(METHOD_PREFIX + methodName); - if (!(value instanceof Callable callable)) { - return original; - } - - try { - Object result = JSLoader.invokeMixin(callable, new Object[] { original }); - if (result == null || result == Undefined.instance) { - return original; - } - - if (expectedType.isInstance(result)) { - return expectedType.cast(result); - } - } catch (Throwable ignored) { - } - - return original; - } - - private static T convertOrDefault(Object value, Function converter, T defaultValue) { - try { - return converter.apply(value); - } catch (Throwable ignored) { - return defaultValue; - } - } -} diff --git a/src/main/kotlin/com/chattriggers/ctjs/CTJS.kt b/src/main/kotlin/com/chattriggers/ctjs/CTJS.kt index a05ad542..d8774109 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/CTJS.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/CTJS.kt @@ -2,13 +2,15 @@ package com.chattriggers.ctjs import com.chattriggers.ctjs.api.Config import com.chattriggers.ctjs.api.client.Client +import com.chattriggers.ctjs.api.client.screenCompat import com.chattriggers.ctjs.api.client.KeyBind import com.chattriggers.ctjs.api.client.Sound import com.chattriggers.ctjs.api.client.WelcomeScreen 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.render.NVGRenderer +import com.chattriggers.ctjs.api.render.Render2D +import com.chattriggers.ctjs.api.render.skia.createSkijaPIP import com.chattriggers.ctjs.api.triggers.TriggerType import com.chattriggers.ctjs.api.world.Scoreboard import com.chattriggers.ctjs.api.world.World @@ -21,6 +23,8 @@ import com.chattriggers.ctjs.internal.utils.Initializer import kotlinx.serialization.json.Json import net.fabricmc.api.ClientModInitializer import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents +import net.fabricmc.fabric.api.client.rendering.v1.PictureInPictureRendererRegistry import net.fabricmc.loader.api.FabricLoader import net.minecraft.client.gui.screens.TitleScreen import java.io.File @@ -30,32 +34,34 @@ import kotlin.concurrent.thread class CTJS : ClientModInitializer { override fun onInitializeClient() { + PictureInPictureRendererRegistry.register { input -> createSkijaPIP(input, pre = false) } + PictureInPictureRendererRegistry.register { input -> createSkijaPIP(input, pre = true) } Client.referenceSystemTime = System.nanoTime() Initializer.initializers.forEach(Initializer::init) Config.loadData() var autoOpenTriggered = false ClientTickEvents.END_CLIENT_TICK.register { client -> - val currentScreen = client.screen ?: return@register + val currentScreen = client.screenCompat ?: return@register val isMenuScreen = currentScreen is TitleScreen if (autoOpenTriggered || Config.wasWelcomeShown() || !isMenuScreen) return@register autoOpenTriggered = true WelcomeScreen.open() } - - SecureLoader.onInitialize() - - Runtime.getRuntime().addShutdownHook(Thread { + ClientLifecycleEvents.CLIENT_STOPPING.register { _ -> + Render2D.destroy() TriggerType.GAME_UNLOAD.triggerAll() Console.close() - }) + } + + SecureLoader.onInitialize() } companion object { const val MOD_ID = "ctjs" const val WEBSITE_ROOT = "https://www.chattriggers.com" - const val MOD_VERSION = "5.1.1" + const val MOD_VERSION = "5.2.0" const val MODULES_FOLDER = "./config/ChatTriggers/modules" val configLocation = File("./config") @@ -96,12 +102,13 @@ class CTJS : ClientModInitializer { Register.clearCustomTriggers() StaticCommand.unregisterAll() DynamicCommands.unregisterAll() - NVGRenderer.clearCallbacks() + Render2D.clearCallbacks() if (Config.clearConsoleOnLoad) Console.clear() Client.scheduleTask { + Render2D.destroy() images.forEach(Image::destroy) sounds.forEach(Sound::destroy) diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt index 6444345a..968da003 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt @@ -1,8 +1,10 @@ package com.chattriggers.ctjs.api.client +import com.chattriggers.ctjs.CTJS 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.engine.JSLoader import com.chattriggers.ctjs.internal.listeners.ClientListener import com.chattriggers.ctjs.internal.mixins.ChatScreenAccessor import com.chattriggers.ctjs.internal.mixins.AbstractSignEditScreenAccessor @@ -12,6 +14,7 @@ import com.chattriggers.ctjs.internal.mixins.KeyMappingAccessor import com.chattriggers.ctjs.internal.mixins.MinecraftAccessor import com.chattriggers.ctjs.internal.utils.asMixin import com.mojang.blaze3d.platform.InputConstants +import com.mojang.blaze3d.pipeline.RenderTarget import gg.essential.universal.UKeyboard import net.minecraft.client.Minecraft import net.minecraft.client.gui.components.ChatComponent @@ -32,11 +35,40 @@ import com.mojang.realmsclient.RealmsMainScreen import net.minecraft.network.protocol.Packet import net.minecraft.network.protocol.game.ServerGamePacketListener import net.minecraft.network.chat.Component +import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.phys.Vec3 +import org.mozilla.javascript.Callable +import org.mozilla.javascript.Undefined object Client { + enum class RenderLimiter { + OFF, + LIMIT_CHUNKS, + NO_RENDER, + } + internal var referenceSystemTime: Long = 0 private val heldKeys = mutableSetOf() + @JvmStatic @Volatile var isFreecam = false + @JvmStatic @Volatile var isFreelook = false + @JvmStatic @Volatile var isUngrabbed = false + @JvmStatic @Volatile var isInputLocked = false + @JvmStatic @Volatile var isMacroEnabled = false + @JvmStatic @Volatile var isForcePerspective = false + @JvmStatic @Volatile var limitFps = false + @JvmStatic @Volatile var muteGame = false + @JvmStatic @Volatile var renderLimiter = RenderLimiter.OFF + @Volatile private var cameraYaw: Float? = null + @Volatile private var cameraPitch: Float? = null + @JvmStatic @Volatile var cameraPosition: Vec3? = null + @JvmStatic @Volatile var freelookDistance = 4.0 + set(value) { + field = value.coerceIn(1.0, 12.0) + } + @JvmStatic @Volatile var spectatedEntity: LivingEntity? = null + @Volatile private var nameProcessor: Callable? = null + @JvmField internal var automatedAttackHeld = false @@ -46,6 +78,42 @@ object Client { @JvmField val camera = CameraWrapper() + @JvmStatic + fun setCameraRotation(yaw: Float, pitch: Float) { + cameraYaw = yaw + cameraPitch = pitch + } + + @JvmStatic + fun clearCameraRotation() { + cameraYaw = null + cameraPitch = null + } + + @JvmStatic + fun getCameraYaw(): Float? = cameraYaw + + @JvmStatic + fun getCameraPitch(): Float? = cameraPitch + + @JvmStatic + fun setNameProcessor(processor: Callable?) { + nameProcessor = processor + } + + @JvmStatic + fun processName(original: Component): Component { + val processor = nameProcessor ?: return original + if (!CTJS.isLoaded) return original + + return try { + val result = JSLoader.invokeMixin(processor, arrayOf(original)) + if (result != null && result != Undefined.instance && result is Component) result else original + } catch (_: Throwable) { + original + } + } + /** * Gets Minecraft's Minecraft object * @@ -83,13 +151,11 @@ object Client { scheduleTask { World.toMC()?.disconnect(Component.empty()) - getMinecraft().setScreen( - when { - getMinecraft().isLocalServer -> TitleScreen() - getMinecraft().currentServer?.isRealm == true -> RealmsMainScreen(TitleScreen()) - else -> JoinMultiplayerScreen(TitleScreen()) - } - ) + getMinecraft().setScreenCompat(when { + getMinecraft().isLocalServer -> TitleScreen() + getMinecraft().currentServer?.isRealm == true -> RealmsMainScreen(TitleScreen()) + else -> JoinMultiplayerScreen(TitleScreen()) + }) } } @@ -112,19 +178,31 @@ object Client { } } + @JvmStatic + fun getCurrentScreen(): Screen? = getMinecraft().screenCompat + + @JvmStatic + fun setCurrentScreen(screen: Screen?) = getMinecraft().setScreenCompat(screen) + + @JvmStatic + fun getMainRenderTarget(): RenderTarget = MinecraftCompat.mainRenderTarget(getMinecraft()) + + @JvmStatic + fun reloadWorldRenderer() = MinecraftCompat.reloadLevelRenderer(getMinecraft()) + /** * Gets the Minecraft ChatHud object for the chat gui * * @return The GuiNewChat object for the chat gui */ @JvmStatic - fun getChatGui(): ChatComponent? = getMinecraft().gui.chat + fun getChatGui(): ChatComponent? = getMinecraft().gui.chatCompat @JvmStatic - fun isInChat(): Boolean = getMinecraft().screen is ChatScreen + fun isInChat(): Boolean = getMinecraft().screenCompat is ChatScreen @JvmStatic - fun getTabGui(): PlayerTabOverlay? = getMinecraft().gui.tabList + fun getTabGui(): PlayerTabOverlay? = getMinecraft().gui.tabListCompat @JvmStatic fun isInTab(): Boolean = getMinecraft().options.keyPlayerList.isDown @@ -179,7 +257,7 @@ object Client { @JvmStatic fun getCurrentChatMessage(): String { return if (isInChat()) { - val chatGui = getMinecraft().screen as ChatScreen + val chatGui = getMinecraft().screenCompat as ChatScreen chatGui.asMixin().input.value } else "" } @@ -192,14 +270,14 @@ object Client { @JvmStatic fun setCurrentChatMessage(message: String) { if (isInChat()) { - val chatGui = getMinecraft().screen as ChatScreen + val chatGui = getMinecraft().screenCompat as ChatScreen chatGui.asMixin().input.value = message } else currentGui.set(ChatScreen(message, false)) } @JvmStatic fun setSignLine(line: Int, text: String) { - val messages = (getMinecraft().screen as? AbstractSignEditScreen) + val messages = (getMinecraft().screenCompat as? AbstractSignEditScreen) ?.asMixin() ?.messages ?: return if (line in messages.indices) messages[line] = text @@ -221,8 +299,8 @@ object Client { private fun canAutomateInput(minecraft: Minecraft) = minecraft.level != null && minecraft.player != null && - minecraft.screen == null && - minecraft.overlay == null + minecraft.screenCompat == null && + minecraft.overlayCompat == null private fun mutateInput(action: (Minecraft) -> Unit) = getMinecraft().let { it.execute { action(it) } } @@ -323,12 +401,10 @@ object Client { */ @JvmStatic fun showTitle(title: String?, subtitle: String?, fadeIn: Int, time: Int, fadeOut: Int) { - getMinecraft().gui.apply { - setTimes(fadeIn, time, fadeOut) - if (title != null) - setTitle(TextComponent(title)) - if (subtitle != null) - setSubtitle(TextComponent(subtitle)) + getMinecraft().gui.let { gui -> + MinecraftCompat.setTimes(gui, fadeIn, time, fadeOut) + if (title != null) MinecraftCompat.setTitle(gui, TextComponent(title)) + if (subtitle != null) MinecraftCompat.setSubtitle(gui, TextComponent(subtitle)) } } @@ -408,11 +484,11 @@ object Client { * * @return the Minecraft gui */ - fun get(): Screen? = getMinecraft().screen + fun get(): Screen? = getMinecraft().screenCompat fun set(screen: Screen?) { scheduleTask { - getMinecraft().setScreen(screen) + getMinecraft().setScreenCompat(screen) } } @@ -437,10 +513,10 @@ object Client { } class CameraWrapper { - fun getX(): Double = getMinecraft().gameRenderer.mainCamera.position().x + fun getX(): Double = MinecraftCompat.mainCamera(getMinecraft().gameRenderer).position().x - fun getY(): Double = getMinecraft().gameRenderer.mainCamera.position().y + fun getY(): Double = MinecraftCompat.mainCamera(getMinecraft().gameRenderer).position().y - fun getZ(): Double = getMinecraft().gameRenderer.mainCamera.position().z + fun getZ(): Double = MinecraftCompat.mainCamera(getMinecraft().gameRenderer).position().z } } diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/MinecraftCompat.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/MinecraftCompat.kt new file mode 100644 index 00000000..a526116d --- /dev/null +++ b/src/main/kotlin/com/chattriggers/ctjs/api/client/MinecraftCompat.kt @@ -0,0 +1,66 @@ +package com.chattriggers.ctjs.api.client + +//? if >=26.2 { +import com.chattriggers.ctjs.internal.mixins.GameRendererAccessor +import com.chattriggers.ctjs.internal.utils.asMixin +//?} +import com.mojang.blaze3d.pipeline.RenderTarget +import net.minecraft.client.Camera +import net.minecraft.client.Minecraft +import net.minecraft.client.gui.Gui +import net.minecraft.client.gui.components.BossHealthOverlay +import net.minecraft.client.gui.components.ChatComponent +import net.minecraft.client.gui.components.PlayerTabOverlay +import net.minecraft.client.gui.components.toasts.ToastManager +import net.minecraft.client.gui.screens.Overlay +import net.minecraft.client.gui.screens.Screen +import net.minecraft.client.renderer.GameRenderer +import net.minecraft.client.renderer.SubmitNodeStorage +import net.minecraft.client.renderer.state.GameRenderState +import net.minecraft.network.chat.Component + +//? if <26.2 { +/*internal object MinecraftCompat { + fun bossOverlay(gui: Gui): BossHealthOverlay = gui.bossOverlay + fun setTimes(gui: Gui, fadeIn: Int, stay: Int, fadeOut: Int) = gui.setTimes(fadeIn, stay, fadeOut) + fun setTitle(gui: Gui, title: Component) = gui.setTitle(title) + fun setSubtitle(gui: Gui, subtitle: Component) = gui.setSubtitle(subtitle) + fun toastManager(minecraft: Minecraft): ToastManager = minecraft.toastManager + fun mainCamera(renderer: GameRenderer): Camera = renderer.mainCamera + fun mainRenderTarget(minecraft: Minecraft): RenderTarget = minecraft.mainRenderTarget + fun reloadLevelRenderer(minecraft: Minecraft) = minecraft.levelRenderer.allChanged() + fun submitNodeStorage(renderer: GameRenderer): SubmitNodeStorage = renderer.submitNodeStorage + fun gameRenderState(renderer: GameRenderer): GameRenderState = renderer.gameRenderState + fun isSingleplayer(minecraft: Minecraft): Boolean = minecraft.isSingleplayer +} + +internal val Minecraft.screenCompat: Screen? get() = screen +internal val Minecraft.overlayCompat: Overlay? get() = overlay +internal fun Minecraft.setScreenCompat(screen: Screen?) = setScreen(screen) +internal val Gui.chatCompat: ChatComponent get() = chat +internal val Gui.tabListCompat: PlayerTabOverlay get() = tabList +*///?} else { +internal object MinecraftCompat { + fun bossOverlay(gui: Gui): BossHealthOverlay = gui.hud.bossOverlay + fun setTimes(gui: Gui, fadeIn: Int, stay: Int, fadeOut: Int) = gui.hud.setTimes(fadeIn, stay, fadeOut) + fun setTitle(gui: Gui, title: Component) = gui.hud.setTitle(title) + fun setSubtitle(gui: Gui, subtitle: Component) = gui.hud.setSubtitle(subtitle) + fun toastManager(minecraft: Minecraft): ToastManager = minecraft.gui.toastManager() + fun mainCamera(renderer: GameRenderer): Camera = renderer.mainCamera() + fun mainRenderTarget(minecraft: Minecraft): RenderTarget = minecraft.gameRenderer.mainRenderTarget() + fun reloadLevelRenderer(minecraft: Minecraft) { + val level = minecraft.level ?: return + minecraft.levelRenderer.invalidateCompiledGeometry(level, minecraft.options, mainCamera(minecraft.gameRenderer), minecraft.blockColors) + } + fun submitNodeStorage(renderer: GameRenderer): SubmitNodeStorage = + renderer.asMixin().handAndScreenSubmitNodeStorage + fun gameRenderState(renderer: GameRenderer): GameRenderState = renderer.gameRenderState() + fun isSingleplayer(minecraft: Minecraft): Boolean = minecraft.hasSingleplayerServer() +} + +internal val Minecraft.screenCompat: Screen? get() = gui.screen() +internal val Minecraft.overlayCompat: Overlay? get() = gui.overlay() +internal fun Minecraft.setScreenCompat(screen: Screen?) = gui.setScreen(screen) +internal val Gui.chatCompat: ChatComponent get() = hud.chat +internal val Gui.tabListCompat: PlayerTabOverlay get() = hud.tabList +//?} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/Player.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/Player.kt index 86ffa961..d7a42672 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/client/Player.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/client/Player.kt @@ -6,7 +6,7 @@ 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.render.Render2D import com.chattriggers.ctjs.api.world.PotionEffect import com.chattriggers.ctjs.api.world.Scoreboard import com.chattriggers.ctjs.api.world.World @@ -69,13 +69,13 @@ object Player { fun getLastZ(): Double = toMC()?.zOld ?: 0.0 @JvmStatic - fun getRenderX(): Double = getLastX() + (getX() - getLastX()) * Renderer.partialTicks + fun getRenderX(): Double = getLastX() + (getX() - getLastX()) * Render2D.partialTicks @JvmStatic - fun getRenderY(): Double = getLastY() + (getY() - getLastY()) * Renderer.partialTicks + fun getRenderY(): Double = getLastY() + (getY() - getLastY()) * Render2D.partialTicks @JvmStatic - fun getRenderZ(): Double = getLastZ() + (getZ() - getLastZ()) * Renderer.partialTicks + fun getRenderZ(): Double = getLastZ() + (getZ() - getLastZ()) * Render2D.partialTicks /** * Gets the player's x motion. @@ -307,18 +307,18 @@ object Player { * @return the currently opened container */ @JvmStatic - fun getContainer(): Inventory? = (Client.getMinecraft().screen as? AbstractContainerScreen<*>)?.let(::Inventory) + fun getContainer(): Inventory? = (Client.getMinecraft().screenCompat as? AbstractContainerScreen<*>)?.let(::Inventory) /** - * Draws the player in the GUI. Takes the same parameters as [Renderer.drawPlayer] + * Draws the player in the GUI. Takes the same parameters as [Render2D.drawPlayer] * minus `player`. * - * @see Renderer.drawPlayer + * @see Render2D.drawPlayer */ @JvmStatic fun draw(obj: NativeObject) = apply { obj["player"] = this - Renderer.drawPlayer(obj) + Render2D.drawPlayer(obj) } class ArmorWrapper { diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/ProxyScreens.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/ProxyScreens.kt index 2f46fe5a..b5b47cb1 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/client/ProxyScreens.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/client/ProxyScreens.kt @@ -32,19 +32,19 @@ class ProxyManagerScreen(private val parent: Screen) : Screen(Component.literal( val buttonY = height - 28 addButton = addRenderableWidget( Button.builder(Component.literal("Add Proxy")) { - minecraft.setScreen(ProxyEditScreen(this, null)) + minecraft.setScreenCompat(ProxyEditScreen(this, null)) }.bounds(width / 2 - 102, buttonY, 100, 20).build() ) backButton = addRenderableWidget( Button.builder(Component.literal("Back")) { - minecraft.setScreen(parent) + minecraft.setScreenCompat(parent) }.bounds(width / 2 + 2, buttonY, 100, 20).build() ) syncRowButtons() } override fun onClose() { - minecraft.setScreen(parent) + minecraft.setScreenCompat(parent) } override fun extractRenderState(context: GuiGraphicsExtractor, mouseX: Int, mouseY: Int, delta: Float) { @@ -157,7 +157,7 @@ class ProxyManagerScreen(private val parent: Screen) : Screen(Component.literal( ) val edit = addRenderableWidget( Button.builder(Component.literal("Edit")) { - minecraft.setScreen(ProxyEditScreen(this, proxy)) + minecraft.setScreenCompat(ProxyEditScreen(this, proxy)) }.bounds(0, 0, 40, 20).build() ) val delete = addRenderableWidget( @@ -303,13 +303,13 @@ class ProxyEditScreen( ) cancelButton = addRenderableWidget( Button.builder(Component.literal("Cancel")) { - minecraft.setScreen(parent) + minecraft.setScreenCompat(parent) }.bounds(centerX + 5, height - 40, 100, 20).build() ) } override fun onClose() { - minecraft.setScreen(parent) + minecraft.setScreenCompat(parent) } private fun createField(centerX: Int, y: Int, placeholder: String, value: String?): EditBox { @@ -339,7 +339,7 @@ class ProxyEditScreen( } parent.refreshList() - minecraft.setScreen(parent) + minecraft.setScreenCompat(parent) } override fun extractRenderState(context: GuiGraphicsExtractor, mouseX: Int, mouseY: Int, delta: Float) { diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/ScreenHelper.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/ScreenHelper.kt index 743b0eb3..6bc214d9 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/client/ScreenHelper.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/client/ScreenHelper.kt @@ -1,10 +1,8 @@ package com.chattriggers.ctjs.api.client import com.chattriggers.ctjs.api.render.Font -import com.chattriggers.ctjs.api.render.NVGRenderer +import com.chattriggers.ctjs.api.render.Render2D import net.minecraft.util.ARGB -import org.lwjgl.nanovg.NanoVG.NVG_ALIGN_CENTER -import org.lwjgl.nanovg.NanoVG.NVG_ALIGN_MIDDLE object ScreenHelper { @JvmField @@ -41,17 +39,17 @@ object ScreenHelper { val defaultTextColor = if (hovered) argb(255, 255, 255, 255) else argb(252, 224, 232, 242) val textColor = textColorOverride ?: defaultTextColor - NVGRenderer.drawDropShadow(x, y, width, height, 5f, 14f, 1.3f, argb(60, 0, 10, 28)) - NVGRenderer.drawRoundedRect(x, y, width, height, 5f, bg) - NVGRenderer.drawHollowRect(x, y, width, height, 0.65f, border, 5f) - NVGRenderer.text( + Render2D.drawDropShadow(x, y, width, height, 5f, 14f, 1.3f, argb(60, 0, 10, 28)) + Render2D.drawRoundedRect(x, y, width, height, 5f, bg) + Render2D.drawHollowRect(x, y, width, height, 0.65f, border, 5f) + Render2D.text( label, x + width / 2f, y + height / 2f, 8.7f, textColor, smallerFont, - NVG_ALIGN_CENTER or NVG_ALIGN_MIDDLE + Render2D.ALIGN_CENTER or Render2D.ALIGN_MIDDLE ) } diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/WelcomeScreen.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/WelcomeScreen.kt index 5bc8af24..6e00e59b 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/client/WelcomeScreen.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/client/WelcomeScreen.kt @@ -33,7 +33,7 @@ class WelcomeScreen : Screen(Component.literal("Welcome Screen")) { @JvmStatic fun open() { val client = Minecraft.getInstance() - client.execute { client.setScreen(WelcomeScreen()) } + client.execute { client.setScreenCompat(WelcomeScreen()) } } } @@ -197,9 +197,9 @@ class WelcomeScreen : Screen(Component.literal("Welcome Screen")) { (x - width / 2.0) / forcedMultiplier to y / forcedMultiplier private fun confirmOpenUrl(url: String) { - minecraft.setScreen(ConfirmLinkScreen({ confirmed -> + minecraft.setScreenCompat(ConfirmLinkScreen({ confirmed -> if (confirmed) Util.getPlatform().openUri(url) - minecraft.setScreen(this) + minecraft.setScreenCompat(this) }, url, true)) } diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/commands/ColorArgumentCompat.kt b/src/main/kotlin/com/chattriggers/ctjs/api/commands/ColorArgumentCompat.kt new file mode 100644 index 00000000..88dc5b4a --- /dev/null +++ b/src/main/kotlin/com/chattriggers/ctjs/api/commands/ColorArgumentCompat.kt @@ -0,0 +1,34 @@ +package com.chattriggers.ctjs.api.commands + +import com.mojang.brigadier.StringReader +import com.mojang.brigadier.arguments.ArgumentType +import com.mojang.brigadier.context.CommandContext +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType +import com.mojang.brigadier.suggestion.Suggestions +import com.mojang.brigadier.suggestion.SuggestionsBuilder +import net.minecraft.ChatFormatting +import net.minecraft.commands.SharedSuggestionProvider +import net.minecraft.network.chat.Component +import java.util.concurrent.CompletableFuture + +/** Version-neutral replacement for the removed vanilla ColorArgument in 26.2. */ +internal object ColorArgumentCompat : ArgumentType { + private val colors = ChatFormatting.entries.filter { it <= ChatFormatting.WHITE || it == ChatFormatting.RESET } + private val invalidColor = DynamicCommandExceptionType { + Component.translatableEscape("argument.color.invalid", it) + } + + override fun parse(reader: StringReader): ChatFormatting { + val value = reader.readUnquotedString() + return colors.firstOrNull { it.name.equals(value, ignoreCase = true) } + ?: throw invalidColor.createWithContext(reader, value) + } + + override fun listSuggestions( + context: CommandContext, + builder: SuggestionsBuilder, + ): CompletableFuture = + SharedSuggestionProvider.suggest(colors.map { it.name.lowercase() }, builder) + + override fun getExamples(): Collection = listOf("red", "green") +} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt b/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt index 04d35095..8f56fcc4 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt @@ -20,12 +20,10 @@ 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.api.message.ChatLib -import com.chattriggers.ctjs.internal.utils.asMixin import com.mojang.brigadier.CommandDispatcher import com.mojang.brigadier.ImmutableStringReader import com.mojang.brigadier.StringReader @@ -46,7 +44,6 @@ import net.minecraft.commands.CommandSourceStack import net.minecraft.commands.Commands import net.minecraft.commands.SharedSuggestionProvider import net.minecraft.commands.arguments.AngleArgument -import net.minecraft.commands.arguments.ColorArgument import net.minecraft.commands.arguments.CompoundTagArgument import net.minecraft.commands.arguments.EntityArgument import net.minecraft.commands.arguments.GameModeArgument @@ -73,6 +70,8 @@ import net.minecraft.commands.arguments.item.ItemArgument import net.minecraft.commands.arguments.item.ItemInput import net.minecraft.commands.arguments.item.ItemPredicateArgument import net.minecraft.commands.arguments.selector.EntitySelector +import net.minecraft.ChatFormatting +import net.minecraft.world.level.entity.EntityTypeTest import net.minecraft.data.registries.VanillaRegistries import net.minecraft.network.chat.Component import net.minecraft.server.permissions.PermissionSet @@ -86,6 +85,7 @@ import org.mozilla.javascript.Function import org.mozilla.javascript.NativeObject import org.mozilla.javascript.WrappedException import java.util.concurrent.CompletableFuture +import java.util.UUID import java.util.function.Predicate import kotlin.math.min @@ -373,7 +373,7 @@ object DynamicCommands : CommandCollection() { * @see minecraft:color */ @JvmStatic - fun color() = ColorArgument.color() + fun color(): ArgumentType = ColorArgumentCompat /** * @see minecraft:column_pos @@ -771,8 +771,27 @@ object DynamicCommands : CommandCollection() { override fun toString() = "BlockStateArgument" } + private class EntitySelectorAccess(private val impl: EntitySelector) { + private fun field(name: String): Any? = impl.javaClass.getDeclaredField(name).apply { trySetAccessible() }.get(impl) + val maxResults get() = field("maxResults") as Int + val includesEntities get() = field("includesEntities") as Boolean + @Suppress("UNCHECKED_CAST") + val contextFreePredicates get() = field("contextFreePredicates") as List> + val range get() = field("range")!! + @Suppress("UNCHECKED_CAST") + val position get() = field("position") as java.util.function.Function + val aabb get() = field("aabb") as AABB? + @Suppress("UNCHECKED_CAST") + val order get() = field("order") as java.util.function.BiConsumer> + val playerName get() = field("playerName") as String? + val entityUUID get() = field("entityUUID") as UUID? + @Suppress("UNCHECKED_CAST") + val type get() = field("type") as EntityTypeTest + val currentEntity get() = field("currentEntity") as Boolean + } + class EntitySelectorWrapper(private val impl: EntitySelector) { - private val mixed get() = impl.asMixin() + private val mixed get() = EntitySelectorAccess(impl) fun getEntity(): Entity { val entities = getEntities() @@ -876,8 +895,8 @@ object DynamicCommands : CommandCollection() { val box = mixed.aabb!!.move(pos) predicate = predicate.and { box.intersects(it.boundingBox) } } - if (!mixed.range.isAny) - predicate = predicate.and { mixed.range.matchesSqr(it.distanceToSqr(pos)) } + if (!(mixed.range.javaClass.getMethod("isAny").invoke(mixed.range) as Boolean)) + predicate = predicate.and { mixed.range.javaClass.getMethod("matchesSqr", Double::class.javaPrimitiveType).invoke(mixed.range, it.distanceToSqr(pos)) as Boolean } return predicate } } diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/entity/Entity.kt b/src/main/kotlin/com/chattriggers/ctjs/api/entity/Entity.kt index 584424ad..62b13ec1 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/entity/Entity.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/entity/Entity.kt @@ -2,7 +2,7 @@ package com.chattriggers.ctjs.api.entity import com.chattriggers.ctjs.api.CTWrapper import com.chattriggers.ctjs.api.message.TextComponent -import com.chattriggers.ctjs.api.render.Renderer +import com.chattriggers.ctjs.api.render.Render2D import com.chattriggers.ctjs.api.world.Chunk import com.chattriggers.ctjs.api.world.World import com.chattriggers.ctjs.api.world.block.BlockPos @@ -46,7 +46,7 @@ open class Entity(override val mcValue: MCEntity) : CTWrapper { * * @return the entity's pitch */ - fun getPitch() = Mth.wrapDegrees(mcValue.getViewXRot(Renderer.partialTicks)) + fun getPitch() = Mth.wrapDegrees(mcValue.getViewXRot(Render2D.partialTicks)) /** * Gets the yaw, the vertical direction the entity is facing towards. @@ -54,7 +54,7 @@ open class Entity(override val mcValue: MCEntity) : CTWrapper { * * @return the entity's yaw */ - fun getYaw() = Mth.wrapDegrees(mcValue.getViewYRot(Renderer.partialTicks)) + fun getYaw() = Mth.wrapDegrees(mcValue.getViewYRot(Render2D.partialTicks)) /** * Gets the entity's x motion. @@ -211,10 +211,10 @@ open class Entity(override val mcValue: MCEntity) : CTWrapper { fun isInLava() = mcValue.isInLava @JvmOverloads - fun getLookVector(partialTicks: Float = Renderer.partialTicks) = mcValue.getViewVector(partialTicks) + fun getLookVector(partialTicks: Float = Render2D.partialTicks) = mcValue.getViewVector(partialTicks) @JvmOverloads - fun getEyePosition(partialTicks: Float = Renderer.partialTicks) = mcValue.getEyePosition(partialTicks) + fun getEyePosition(partialTicks: Float = Render2D.partialTicks) = mcValue.getEyePosition(partialTicks) fun canBeCollidedWith() = mcValue.canBeCollidedWith(null) @@ -240,7 +240,7 @@ open class Entity(override val mcValue: MCEntity) : CTWrapper { } private fun renderPosition(previous: Double, current: Double) = - previous + (current - previous) * Renderer.partialTicks + previous + (current - previous) * Render2D.partialTicks enum class DimensionType( override val mcValue: ResourceKey, diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/entity/Particle.kt b/src/main/kotlin/com/chattriggers/ctjs/api/entity/Particle.kt index a6133dac..adedb4e2 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/entity/Particle.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/entity/Particle.kt @@ -1,7 +1,7 @@ package com.chattriggers.ctjs.api.entity import com.chattriggers.ctjs.api.CTWrapper -import com.chattriggers.ctjs.api.render.Renderer +import com.chattriggers.ctjs.api.render.Render2D import com.chattriggers.ctjs.internal.mixins.ParticleAccessor import com.chattriggers.ctjs.MCParticle import com.chattriggers.ctjs.internal.utils.asMixin @@ -45,9 +45,9 @@ class Particle(override val mcValue: MCParticle) : CTWrapper { mixed.zo = value } - val renderX get() = lastX + (x - lastX) * Renderer.partialTicks - val renderY get() = lastY + (y - lastY) * Renderer.partialTicks - val renderZ get() = lastZ + (z - lastZ) * Renderer.partialTicks + val renderX get() = lastX + (x - lastX) * Render2D.partialTicks + val renderY get() = lastY + (y - lastY) * Render2D.partialTicks + val renderZ get() = lastZ + (z - lastZ) * Render2D.partialTicks var motionX get() = mixed.xd diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/entity/PlayerMP.kt b/src/main/kotlin/com/chattriggers/ctjs/api/entity/PlayerMP.kt index 36490bbe..33625eed 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/entity/PlayerMP.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/entity/PlayerMP.kt @@ -2,7 +2,7 @@ package com.chattriggers.ctjs.api.entity import com.chattriggers.ctjs.api.client.Client import com.chattriggers.ctjs.api.message.TextComponent -import com.chattriggers.ctjs.api.render.Renderer +import com.chattriggers.ctjs.api.render.Render2D import com.chattriggers.ctjs.internal.NameTagOverridable import com.chattriggers.ctjs.MCTeam import com.chattriggers.ctjs.internal.utils.asMixin @@ -44,14 +44,14 @@ class PlayerMP(override val mcValue: Player) : LivingEntity(mcValue) { } /** - * Draws the player in the GUI. Takes the same parameters as [Renderer.drawPlayer] + * Draws the player in the GUI. Takes the same parameters as [Render2D.drawPlayer] * minus `player`. * - * @see Renderer.drawPlayer + * @see Render2D.drawPlayer */ fun draw(obj: NativeObject) = apply { obj["player"] = this - Renderer.drawPlayer(obj) + Render2D.drawPlayer(obj) } private fun getPlayerName(playerListEntry: PlayerInfo?): TextComponent { diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/entity/Team.kt b/src/main/kotlin/com/chattriggers/ctjs/api/entity/Team.kt index 257d1744..ae878bd2 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/entity/Team.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/entity/Team.kt @@ -81,22 +81,19 @@ class Team(override val mcValue: MCTeam) : CTWrapper { */ fun setSuffix(suffix: String) = setSuffix(TextComponent(suffix)) - fun getColor() = mcValue.color.toString() + fun getColor() = /*? if >=26.2 {*/ mcValue.color.map { ChatFormatting.valueOf(it.name).toString() }.orElse(ChatFormatting.RESET.toString()) /*?} else {*/ /*mcValue.color.toString()*//*?}*/ - /** - * Sets the team color - * @param color a string format of a [Formatting], or a hex value - * @return the team for method chaining - */ + /** Sets the team color using the legacy ChatFormatting name or numeric id. */ fun setColor(color: Any?) = apply { - mcValue.color = when (color) { - is Number -> ChatFormatting.getById(color.toInt()) ?: ChatFormatting.RESET + val formatting = when (color) { + is Number -> "0123456789abcdef".getOrNull(color.toInt())?.let(ChatFormatting::getByCode) ?: ChatFormatting.RESET is CharSequence -> ChatFormatting.entries.find { it.toString() == ChatLib.addColor(color.toString()) } ?: ChatFormatting.RESET null -> ChatFormatting.RESET else -> throw IllegalArgumentException("Could not convert type ${color::class.simpleName} to a Formatting") } + /*? if >=26.2 {*/ mcValue.setColor(java.util.Optional.ofNullable(net.minecraft.world.scores.TeamColor.byName(formatting.name.lowercase()))) /*?} else {*/ /*mcValue.color = formatting*//*?}*/ } /** diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/message/Chat.kt b/src/main/kotlin/com/chattriggers/ctjs/api/message/Chat.kt index b2c8dc3f..f89beee2 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/message/Chat.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/message/Chat.kt @@ -1,5 +1,6 @@ package com.chattriggers.ctjs.api.message +import com.chattriggers.ctjs.api.client.chatCompat import net.minecraft.client.Minecraft import net.minecraft.network.chat.Style import net.minecraft.network.chat.Component @@ -35,6 +36,6 @@ object Chat { finalMessage.append(partText) } - mc.gui.chat.addClientSystemMessage(finalMessage) + mc.gui.chatCompat.addClientSystemMessage(finalMessage) } } diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/message/ChatLib.kt b/src/main/kotlin/com/chattriggers/ctjs/api/message/ChatLib.kt index 46d72a1c..8850c80e 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/message/ChatLib.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/message/ChatLib.kt @@ -1,7 +1,10 @@ package com.chattriggers.ctjs.api.message +import com.chattriggers.ctjs.api.client.MinecraftCompat +import com.chattriggers.ctjs.api.client.chatCompat + import com.chattriggers.ctjs.api.client.Client -import com.chattriggers.ctjs.api.render.Renderer +import com.chattriggers.ctjs.api.render.Render2D import com.chattriggers.ctjs.internal.listeners.ClientListener import com.chattriggers.ctjs.internal.mixins.ChatComponentAccessor import com.chattriggers.ctjs.internal.utils.asMixin @@ -85,7 +88,11 @@ object ChatLib { @JvmStatic @JvmOverloads fun command(text: String, clientSide: Boolean = false) { - if (clientSide) ClientCommandInternals.executeCommand(text) + if (clientSide) { + val method = ClientCommandInternals::class.java.methods.first { it.name == "executeCommand" } + if (method.parameterCount == 1) method.invoke(null, text) + else method.invoke(null, text, Client.getMinecraft().connection?.suggestionsProvider ?: return, null) + } else Client.scheduleTask { Client.getMinecraft().connection?.sendCommand(text) } } @@ -110,7 +117,7 @@ object ChatLib { @JvmOverloads fun getChatBreak(separator: String = "-"): String { if (separator.isEmpty()) return "" - val len = Renderer.getStringWidth(separator) + val len = Render2D.getStringWidth(separator) val times = getChatWidth() / len return separator.repeat(times) } @@ -155,14 +162,14 @@ object ChatLib { */ @JvmStatic fun getCenteredText(text: String): String { - val textWidth = Renderer.getStringWidth(addColor(text)) + val textWidth = Render2D.getStringWidth(addColor(text)) val chatWidth = getChatWidth() if (textWidth >= chatWidth) return text val spaceWidth = (chatWidth - textWidth) / 2f - return " ".repeat((spaceWidth / Renderer.getStringWidth(" ")).roundToInt()) + text + return " ".repeat((spaceWidth / Render2D.getStringWidth(" ")).roundToInt()) + text } /** @@ -245,7 +252,7 @@ object ChatLib { private fun editLines(replacements: Array, matcher: (GuiMessage) -> Boolean) { val mc = Client.getMinecraft() - val indicator = if (mc.isSingleplayer) GuiMessageTag.systemSinglePlayer() else GuiMessageTag.system() + val indicator = if (MinecraftCompat.isSingleplayer(mc)) GuiMessageTag.systemSinglePlayer() else GuiMessageTag.system() var edited = false val accessor = chatHudAccessor ?: return val it = accessor.allMessages.listIterator() @@ -371,9 +378,9 @@ object ChatLib { @JvmOverloads fun addToSentMessageHistory(index: Int = -1, message: String) { if (index == -1) { - Client.getMinecraft().gui.chat.addRecentChat(message) + Client.getMinecraft().gui.chatCompat.addRecentChat(message) } else { - Client.getMinecraft().gui.chat.recentChat.add(index, message) + Client.getMinecraft().gui.chatCompat.recentChat.add(index, message) } } diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Book.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Book.kt index f3becb99..2f2439e0 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Book.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/Book.kt @@ -1,6 +1,7 @@ package com.chattriggers.ctjs.api.render import com.chattriggers.ctjs.api.client.Client +import com.chattriggers.ctjs.api.client.setScreenCompat import com.chattriggers.ctjs.api.message.TextComponent import com.chattriggers.ctjs.internal.mixins.BookViewScreenAccessor import com.chattriggers.ctjs.internal.utils.asMixin @@ -71,7 +72,7 @@ class Book { val newScreen = BookViewScreen(customContents) screen = newScreen Client.scheduleTask { - Client.getMinecraft().setScreen(newScreen) + Client.getMinecraft().setScreenCompat(newScreen) newScreen.setPage(pageIndex) } } diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/DrawContextHolder.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/DrawContextHolder.kt index 502a69a9..77878655 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/DrawContextHolder.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/DrawContextHolder.kt @@ -3,7 +3,7 @@ package com.chattriggers.ctjs.api.render import net.minecraft.client.gui.GuiGraphicsExtractor object DrawContextHolder { - @JvmStatic + @JvmField var currentContext: GuiGraphicsExtractor? = null inline fun withContext(context: GuiGraphicsExtractor, block: () -> T): T { diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Gui.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Gui.kt index 7de89139..32ea263b 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Gui.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/Gui.kt @@ -1,6 +1,7 @@ package com.chattriggers.ctjs.api.render import com.chattriggers.ctjs.api.client.Client +import com.chattriggers.ctjs.api.client.screenCompat import com.chattriggers.ctjs.api.message.TextComponent import com.chattriggers.ctjs.api.triggers.RegularTrigger import com.chattriggers.ctjs.api.triggers.TriggerType @@ -42,7 +43,7 @@ class Gui @JvmOverloads constructor( } - fun isOpen(): Boolean = Client.getMinecraft().screen === this + fun isOpen(): Boolean = Client.getMinecraft().screenCompat === this /** * Registers a method to be run while gui is open. @@ -277,15 +278,14 @@ class Gui @JvmOverloads constructor( @Suppress("UNCHECKED_CAST") val drawContexts = drawContextsField.get(this) as List - Renderer.pushMatrix(UMatrixStack(drawContexts.last().pose())) - - Renderer.partialTicks = partialTicks - - this.mouseX = mouseX - this.mouseY = mouseY - onDraw?.trigger(arrayOf(mouseX, mouseY, partialTicks)) - - Renderer.popMatrix() + DrawContextHolder.withContext(drawContexts.last()) { + Render2D.pushMatrix(UMatrixStack(drawContexts.last().pose())) + Render2D.partialTicks = partialTicks + this.mouseX = mouseX + this.mouseY = mouseY + onDraw?.trigger(arrayOf(mouseX, mouseY, partialTicks)) + Render2D.popMatrix() + } } /** diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/GuiRendererBackend.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/GuiRendererBackend.kt new file mode 100644 index 00000000..05f9e3f7 --- /dev/null +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/GuiRendererBackend.kt @@ -0,0 +1,461 @@ +package com.chattriggers.ctjs.api.render + +import com.chattriggers.ctjs.api.client.screenCompat +import com.chattriggers.ctjs.api.render.skia.SkijaPIP +import io.github.humbleui.skija.* +import io.github.humbleui.skija.Image as SkijaImage +import io.github.humbleui.skija.svg.SVGDOM +import io.github.humbleui.skija.svg.SVGLengthContext +import io.github.humbleui.types.RRect +import io.github.humbleui.types.Rect +import net.minecraft.client.Minecraft +import net.minecraft.client.gui.GuiGraphicsExtractor +import java.awt.Color +import java.awt.image.BufferedImage +import java.io.ByteArrayOutputStream +import java.io.File +import java.io.FileInputStream +import java.io.FileNotFoundException +import java.net.URI +import java.util.concurrent.ConcurrentHashMap +import java.util.concurrent.ConcurrentLinkedQueue +import java.util.concurrent.CopyOnWriteArrayList +import javax.imageio.ImageIO +import javax.imageio.metadata.IIOMetadataNode +import kotlin.math.max +import kotlin.math.roundToInt + +/** Skija-backed 2D renderer used by the JavaScript-facing [Render2D] API. */ +open class GuiRendererBackend { + private val callbacks = CopyOnWriteArrayList() + private val preCallbacks = CopyOnWriteArrayList() + private val images = ConcurrentHashMap() + private val gifs = HashMap() + private val urlImages = HashMap() + private val pendingUrls = ConcurrentHashMap.newKeySet() + private val failedUrls = ConcurrentHashMap.newKeySet() + private val downloadedUrls = ConcurrentLinkedQueue>() + private val typefaces = HashMap() + private val fonts = HashMap() + private val alphaStack = ArrayDeque() + private val scissorDepths = ArrayDeque() + private var canvas: Canvas? = null + private var checkerImage: SkijaImage? = null + private val checkerShaders = HashMap() + private val gradientShaders = HashMap() + private val hueColors = IntArray(7) { 0xff000000.toInt() or (Color.HSBtoRGB(it / 6f, 1f, 1f) and 0xffffff) } + private var alpha = 1f + private var saveDepth = 0 + + @JvmField + val defaultFont = Font("Default", "/assets/v5/font.otf") + + @JvmField val ALIGN_CENTER = 2 + @JvmField val ALIGN_MIDDLE = 16 + + data class GifData(val width: Int, val height: Int, val frameCount: Int, val delays: IntArray) { + override fun equals(other: Any?) = other is GifData && width == other.width && height == other.height && + frameCount == other.frameCount && delays.contentEquals(other.delays) + override fun hashCode() = 31 * (31 * (31 * width + height) + frameCount) + delays.contentHashCode() + } + + private data class CachedImage(val image: SkijaImage, var refs: Int = 1) + private data class CachedGif(val frames: List, val delays: IntArray, val width: Int, val height: Int, var refs: Int = 1) + private data class FontKey(val font: Font, val size: Float) + private data class GradientKey(val x: Float, val y: Float, val width: Float, val height: Float, val color1: Int, val color2: Int, val direction: Gradient, val alpha: Float) + private enum class Gradient { LEFT_TO_RIGHT, TOP_TO_BOTTOM, TL_TO_BR, BL_TO_TR } + + fun registerV5Render(callback: Runnable) = callback.also(callbacks::add) + fun unregisterV5Render(callback: Runnable) { callbacks -= callback } + fun registerV5PreRender(callback: Runnable) = callback.also(preCallbacks::add) + fun unregisterV5PreRender(callback: Runnable) { preCallbacks -= callback } + fun clearCallbacks() { callbacks.clear(); preCallbacks.clear() } + + fun runPreDrawables(context: GuiGraphicsExtractor) { + if (preCallbacks.isNotEmpty()) SkijaPIP.draw(context, Runnable { runCallbacks(preCallbacks) }, pre = true) + } + + fun runDrawables(context: GuiGraphicsExtractor) { + if (callbacks.isEmpty()) return + if (Minecraft.getInstance().screenCompat is Gui) context.blurBeforeThisStratum() + SkijaPIP.draw(context, Runnable { runCallbacks(callbacks) }) + } + + private fun runCallbacks(list: List) = list.forEach { + try { it.run() } catch (error: Exception) { error.printStackTrace() } + } + + internal fun beginSkijaFrame(canvas: Canvas) { + this.canvas = canvas + alpha = 1f + alphaStack.clear() + scissorDepths.clear() + saveDepth = 0 + processDownloads() + } + + internal fun endSkijaFrame() { + canvas?.restoreToCount(1) + canvas = null + alpha = 1f + alphaStack.clear() + scissorDepths.clear() + saveDepth = 0 + } + + internal fun translateSkija(x: Float, y: Float) = canvas?.translate(x, y) != null + internal fun scaleSkija(x: Float, y: Float) = canvas?.scale(x, y) != null + internal fun rotateSkija(degrees: Float) = canvas?.rotate(degrees) != null + + fun blurBackground() = Unit + fun save() { + canvas?.save() ?: return + alphaStack.addLast(alpha) + saveDepth++ + } + fun restore() { + val active = canvas ?: return + while (scissorDepths.lastOrNull() == saveDepth) { + active.restore() + scissorDepths.removeLast() + } + if (alphaStack.isNotEmpty()) { + active.restore() + alpha = alphaStack.removeLast() + saveDepth-- + } + } + fun globalAlpha(value: Float) { alpha = value.coerceIn(0f, 1f) } + fun scissor(x: Float, y: Float, width: Float, height: Float) { + val active = canvas ?: return + active.save() + active.clipRect(Rect.makeXYWH(x, y, width, height), true) + scissorDepths.addLast(saveDepth) + } + fun resetScissor() { + val active = canvas ?: return + while (scissorDepths.lastOrNull() == saveDepth) { + active.restore() + scissorDepths.removeLast() + } + } + fun pushScissor(x: Float, y: Float, width: Float, height: Float) { save(); canvas?.clipRect(Rect.makeXYWH(x, y, width, height), true) } + fun popScissor() = restore() + + fun drawRect(x: Float, y: Float, width: Float, height: Float, color: Int) = paint(color).use { + canvas?.drawRect(Rect.makeXYWH(x, y, width, height), it) + Unit + } + + fun drawRoundedRect(x: Float, y: Float, width: Float, height: Float, radius: Float, color: Int) = paint(color).use { + canvas?.drawRRect(RRect.makeXYWH(x, y, width, height, radius.coerceAtLeast(0f)), it) + Unit + } + + fun drawRoundedRectVaried(x: Float, y: Float, width: Float, height: Float, color: Int, tl: Float, tr: Float, br: Float, bl: Float) = + paint(color).use { + canvas?.drawRRect(RRect.makeComplexXYWH(x, y, width, height, radii(tl, tr, br, bl)), it) + Unit + } + + fun drawCircle(x: Float, y: Float, radius: Float, color: Int) = paint(color).use { canvas?.drawCircle(x, y, radius, it); Unit } + + @JvmOverloads + fun drawHollowRect(x: Float, y: Float, width: Float, height: Float, thickness: Float, color: Int, radius: Float = 0f) = + paint(color, PaintMode.STROKE).use { + it.strokeWidth = thickness + if (radius > 0f) canvas?.drawRRect(RRect.makeXYWH(x, y, width, height, radius), it) + else canvas?.drawRect(Rect.makeXYWH(x, y, width, height), it) + Unit + } + + fun drawLine(x1: Float, y1: Float, x2: Float, y2: Float, thickness: Float, color: Int) = paint(color, PaintMode.STROKE).use { + it.strokeWidth = thickness + canvas?.drawLine(x1, y1, x2, y2, it) + Unit + } + + fun drawDropShadow(x: Float, y: Float, width: Float, height: Float, radius: Float, blur: Float, spread: Float, color: Int) = + MaskFilter.makeBlur(FilterBlurMode.NORMAL, blur / 2f).use { filter -> + paint(color).setMaskFilter(filter).use { + canvas?.drawRRect(RRect.makeXYWH(x - spread, y - spread, width + spread * 2, height + spread * 2, radius + spread), it) + Unit + } + } + + @JvmOverloads + fun drawGradientRect(x: Float, y: Float, width: Float, height: Float, color1: Int, color2: Int, direction: Any, radius: Float = 0f) = + gradientShader(x, y, width, height, color1, color2, direction).let { shader -> + Paint().setAntiAlias(true).setShader(shader).use { + if (radius > 0f) canvas?.drawRRect(RRect.makeXYWH(x, y, width, height, radius), it) + else canvas?.drawRect(Rect.makeXYWH(x, y, width, height), it) + Unit + } + } + + @JvmOverloads + fun drawHollowGradientRect(x: Float, y: Float, width: Float, height: Float, thickness: Float, color1: Int, color2: Int, direction: Any, radius: Float = 0f) = + gradientShader(x, y, width, height, color1, color2, direction).let { shader -> + Paint().setAntiAlias(true).setShader(shader).setMode(PaintMode.STROKE).setStrokeWidth(thickness).use { + if (radius > 0f) canvas?.drawRRect(RRect.makeXYWH(x, y, width, height, radius), it) + else canvas?.drawRect(Rect.makeXYWH(x, y, width, height), it) + Unit + } + } + + @JvmOverloads + fun drawCheckerboard(x: Float, y: Float, width: Float, height: Float, radius: Float, size: Float = 4f) { + val active = canvas ?: return + val step = size.coerceAtLeast(0.1f) + active.save() + active.clipRRect(RRect.makeXYWH(x, y, width, height, radius), true) + checkerShader(step).let { shader -> + Paint().setShader(shader).setAlphaf(alpha).use { + active.drawRect(Rect.makeXYWH(x, y, width, height), it) + } + } + active.restore() + } + + fun drawHueBar(x: Float, y: Float, width: Float, height: Float, radius: Float) { + val colors = if (alpha == 1f) hueColors else IntArray(7) { applyAlpha(hueColors[it]) } + Shader.makeLinearGradient(x, y, x + width, y, colors).use { shader -> + Paint().setAntiAlias(true).setShader(shader).use { paint -> + canvas?.drawRRect(RRect.makeXYWH(x, y, width, height, radius), paint) + } + } + } + + fun getDefaultFont() = defaultFont + + @JvmOverloads + fun text(text: String, x: Float, y: Float, size: Float, color: Int, font: Font? = defaultFont, align: Int) { + val skijaFont = skijaFont(font ?: defaultFont, size) + val metrics = skijaFont.metrics + val baseline = when { + align and 32 != 0 -> y - metrics.descent + align and 16 != 0 -> y - (metrics.ascent + metrics.descent) / 2f + align and 8 != 0 -> y - metrics.ascent + else -> y + } + if (align and 6 == 0) { + paint(color).use { canvas?.drawString(text, x, baseline, skijaFont, it) } + return + } + TextLine.make(text, skijaFont).use { line -> + val drawX = when { + align and 4 != 0 -> x - line.width + align and 2 != 0 -> x - line.width / 2f + else -> x + } + paint(color).use { canvas?.drawTextLine(line, drawX, baseline, it) } + } + } + + @JvmOverloads + fun textWidth(text: String, size: Float, font: Font? = defaultFont) = + skijaFont(font ?: defaultFont, size).measureTextWidth(text) + + fun loadImage(path: String): String { + if (path.isUrl()) return path + synchronized(images) { + images[path]?.let { it.refs++; return path } + images[path] = CachedImage(createImage(readImage(path), path)) + } + return path + } + + fun unloadImage(path: String) = synchronized(images) { + images[path]?.let { if (--it.refs <= 0) { it.image.close(); images.remove(path) } } + } + + fun isImageLoaded(path: String) = images.containsKey(path) + + @JvmOverloads + fun drawImage(path: String, x: Float, y: Float, width: Float, height: Float, radius: Float = 0f, imageAlpha: Float = 1f) { + if (path.isUrl()) return drawImageFromUrl(path, x, y, width, height, radius, imageAlpha) + val image = images[path] ?: runCatching { loadImage(path) }.getOrNull()?.let(images::get) ?: return + drawImage(image.image, x, y, width, height, radius, imageAlpha) + } + + @JvmOverloads + fun drawImageFromUrl(url: String, x: Float, y: Float, width: Float, height: Float, radius: Float = 0f, imageAlpha: Float = 1f) { + if (url == "none" || url in failedUrls) return + urlImages[url]?.let { return drawImage(it, x, y, width, height, radius, imageAlpha) } + if (pendingUrls.add(url)) Thread({ + val bytes = runCatching { + URI(url).toURL().openConnection().apply { + connectTimeout = 5000; readTimeout = 5000; setRequestProperty("User-Agent", "V5-Loader") + }.getInputStream().use { it.readBytes() } + }.getOrNull() + downloadedUrls += url to bytes + }, "V5 image ${url.hashCode()}").apply { isDaemon = true }.start() + } + + fun loadGif(path: String): GifData? { + synchronized(gifs) { + gifs[path]?.let { it.refs++; return GifData(it.width, it.height, it.frames.size, it.delays) } + } + val decoded = decodeGif(path) ?: return null + synchronized(gifs) { gifs[path] = decoded } + return GifData(decoded.width, decoded.height, decoded.frames.size, decoded.delays) + } + + fun unloadGif(path: String) = synchronized(gifs) { + gifs[path]?.let { if (--it.refs <= 0) { it.frames.forEach(SkijaImage::close); gifs.remove(path) } } + } + + @JvmOverloads + fun drawGif(path: String, x: Float, y: Float, width: Float, height: Float, frameIndex: Int, radius: Float = 0f, imageAlpha: Float = 1f) { + val frames = synchronized(gifs) { gifs[path]?.frames } ?: return + if (frames.isNotEmpty()) drawImage(frames[Math.floorMod(frameIndex, frames.size)], x, y, width, height, radius, imageAlpha) + } + + fun clearImageCache() { + synchronized(images) { images.values.forEach { it.image.close() }; images.clear() } + synchronized(gifs) { gifs.values.flatMap { it.frames }.forEach(SkijaImage::close); gifs.clear() } + urlImages.values.forEach(SkijaImage::close); urlImages.clear(); pendingUrls.clear(); failedUrls.clear(); downloadedUrls.clear() + } + + fun getCacheStats() = "Images: ${images.size}, GIFs: ${gifs.size}, URLs: ${urlImages.size}" + + fun destroy() { + clearImageCache() + checkerImage?.close(); checkerImage = null + checkerShaders.values.forEach(Shader::close); checkerShaders.clear() + gradientShaders.values.forEach(Shader::close); gradientShaders.clear() + fonts.values.forEach(io.github.humbleui.skija.Font::close); fonts.clear() + typefaces.values.forEach(Typeface::close); typefaces.clear() + } + + private fun drawImage(image: SkijaImage, x: Float, y: Float, width: Float, height: Float, radius: Float, imageAlpha: Float) { + Paint().setAntiAlias(true).setAlphaf(alpha * imageAlpha.coerceIn(0f, 1f)).use { paint -> + val active = canvas ?: return + if (radius > 0f) { + active.save() + active.clipRRect(RRect.makeXYWH(x, y, width, height, radius), true) + } + active.drawImageRect( + image, Rect.makeWH(image.width.toFloat(), image.height.toFloat()), Rect.makeXYWH(x, y, width, height), + SamplingMode.LINEAR, paint, true, + ) + if (radius > 0f) active.restore() + } + } + + private fun checkerImage() = checkerImage ?: Surface.makeRaster( + ImageInfo(2, 2, ColorType.N32, ColorAlphaType.PREMUL, ColorSpace.getSRGB()), + ).use { surface -> + Paint().setColor(0xff404040.toInt()).use { surface.canvas.drawRect(Rect.makeWH(2f, 2f), it) } + Paint().setColor(0xff737373.toInt()).use { + surface.canvas.drawRect(Rect.makeXYWH(1f, 0f, 1f, 1f), it) + surface.canvas.drawRect(Rect.makeXYWH(0f, 1f, 1f, 1f), it) + } + surface.makeImageSnapshot().also { checkerImage = it } + } + + private fun checkerShader(size: Float) = checkerShaders.getOrPut(size) { + checkerImage().makeShader(FilterTileMode.REPEAT, FilterTileMode.REPEAT, SamplingMode.DEFAULT, Matrix33.makeScale(size)) + } + + private fun processDownloads() { + repeat(5) { + val (url, bytes) = downloadedUrls.poll() ?: return + if (bytes == null) failedUrls += url else runCatching { createImage(bytes, url) } + .onSuccess { urlImages[url] = it }.onFailure { failedUrls += url } + pendingUrls -= url + } + } + + private fun createImage(bytes: ByteArray, name: String): SkijaImage { + if (!name.substringBefore('?').endsWith(".svg", true)) return SkijaImage.makeDeferredFromEncodedBytes(bytes) + Data.makeFromBytes(bytes).use { data -> + SVGDOM(data).use { dom -> + val root = dom.root ?: error("Invalid SVG: $name") + val size = root.getIntrinsicSize(SVGLengthContext(256f, 256f, 96f)) + val width = max(1, size.x.roundToInt()) + val height = max(1, size.y.roundToInt()) + Surface.makeRaster(ImageInfo(width, height, ColorType.N32, ColorAlphaType.PREMUL, ColorSpace.getSRGB())).use { surface -> + surface.canvas.clear(0) + dom.setContainerSize(width.toFloat(), height.toFloat()) + dom.render(surface.canvas) + return surface.makeImageSnapshot() + } + } + } + } + + private fun decodeGif(path: String): CachedGif? = runCatching { + FileInputStream(path).use { stream -> + val reader = ImageIO.getImageReadersByFormatName("gif").next() + reader.input = ImageIO.createImageInputStream(stream) + val count = reader.getNumImages(true) + val first = reader.read(0) + val master = BufferedImage(first.width, first.height, BufferedImage.TYPE_INT_ARGB) + val graphics = master.createGraphics().apply { background = Color(0, 0, 0, 0) } + val frames = ArrayList(count) + val delays = IntArray(count) + repeat(count) { index -> + val frame = reader.read(index) + val tree = reader.getImageMetadata(index).getAsTree(reader.getImageMetadata(index).nativeMetadataFormatName) as IIOMetadataNode + val control = tree.getElementsByTagName("GraphicControlExtension").item(0) as IIOMetadataNode + val descriptor = tree.getElementsByTagName("ImageDescriptor").item(0) as IIOMetadataNode + val x = descriptor.getAttribute("imageLeftPosition").toInt() + val y = descriptor.getAttribute("imageTopPosition").toInt() + delays[index] = (control.getAttribute("delayTime").toInt() * 10).coerceAtLeast(10) + graphics.drawImage(frame, x, y, null) + frames += bufferedImage(master) + if (control.getAttribute("disposalMethod") == "restoreToBackgroundColor") graphics.clearRect(x, y, frame.width, frame.height) + } + graphics.dispose(); reader.dispose() + CachedGif(frames, delays, first.width, first.height) + } + }.onFailure { println("[V5] Failed to load GIF $path: ${it.message}") }.getOrNull() + + private fun bufferedImage(image: BufferedImage): SkijaImage { + val output = ByteArrayOutputStream() + ImageIO.write(image, "png", output) + return SkijaImage.makeDeferredFromEncodedBytes(output.toByteArray()) + } + + private fun skijaFont(font: Font, size: Float) = fonts.getOrPut(FontKey(font, size)) { + io.github.humbleui.skija.Font(typefaces.getOrPut(font) { + FontMgr.getDefault().makeFromData(Data.makeFromBytes(font.buffer().let { buffer -> ByteArray(buffer.remaining()).also(buffer::get) })) + ?: error("Failed to load font ${font.name}") + }, size) + .setSubpixel(true) + .setEdging(FontEdging.SUBPIXEL_ANTI_ALIAS) + .setHinting(FontHinting.SLIGHT) + } + + private fun paint(color: Int, mode: PaintMode = PaintMode.FILL) = Paint() + .setAntiAlias(true).setMode(mode).setColor(applyAlpha(color)) + + private fun gradientShader(x: Float, y: Float, width: Float, height: Float, color1: Int, color2: Int, direction: Any): Shader { + val resolved = resolveGradient(direction) + val key = GradientKey(x, y, width, height, color1, color2, resolved, alpha) + gradientShaders[key]?.let { return it } + val (endX, endY) = when (resolved) { + Gradient.TOP_TO_BOTTOM -> x to y + height + Gradient.TL_TO_BR -> x + width to y + height + Gradient.BL_TO_TR -> x + width to y - height + Gradient.LEFT_TO_RIGHT -> x + width to y + } + return Shader.makeLinearGradient(x, y, endX, endY, intArrayOf(applyAlpha(color1), applyAlpha(color2))).also { gradientShaders[key] = it } + } + + private fun resolveGradient(direction: Any) = when { + direction.toString().contains("TopToBottom") -> Gradient.TOP_TO_BOTTOM + direction.toString().contains("TopLeftToBottomRight") -> Gradient.TL_TO_BR + direction.toString().contains("BottomLeftToTopRight") -> Gradient.BL_TO_TR + else -> Gradient.LEFT_TO_RIGHT + } + + private fun radii(tl: Float, tr: Float, br: Float, bl: Float) = floatArrayOf(tl, tl, tr, tr, br, br, bl, bl) + private fun applyAlpha(color: Int) = (color and 0xffffff) or ((((color ushr 24) and 255) * alpha).roundToInt().coerceIn(0, 255) shl 24) + private fun String.isUrl() = startsWith("http://", true) || startsWith("https://", true) + private fun readImage(path: String): ByteArray = when { + File(path).isFile -> FileInputStream(path) + else -> GuiRendererBackend::class.java.getResourceAsStream(path) ?: throw FileNotFoundException(path) + }.use { it.readBytes() } +} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Image.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Image.kt index 50265a44..7494d63b 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Image.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/Image.kt @@ -80,7 +80,7 @@ class Image(var image: BufferedImage?) { } if (texture != null) - Renderer.drawImage(this, x, y, drawWidth, drawHeight) + Render2D.drawImage(this, x, y, drawWidth, drawHeight) } private data class Texture(val texture: DynamicTexture, val buffer: ByteBuffer) diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/LegacyPipelineBuilder.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/LegacyPipelineBuilder.kt deleted file mode 100644 index fce0e5c9..00000000 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/LegacyPipelineBuilder.kt +++ /dev/null @@ -1,92 +0,0 @@ -package com.chattriggers.ctjs.api.render - -import com.mojang.blaze3d.pipeline.ColorTargetState -import com.mojang.blaze3d.pipeline.BlendFunction -import com.mojang.blaze3d.pipeline.DepthStencilState -import com.mojang.blaze3d.pipeline.RenderPipeline -import com.mojang.blaze3d.platform.CompareOp -import com.mojang.blaze3d.platform.DestFactor -import com.mojang.blaze3d.platform.SourceFactor -import net.minecraft.client.renderer.rendertype.RenderType - -object LegacyPipelineBuilder { - private val pipelineList = mutableMapOf() - private var cull: Boolean? = null - private var depth: Boolean? = null - private var blend: Boolean? = null - private var drawMode = Renderer.DrawMode.QUADS - private var vertexFormat = Renderer.VertexFormat.POSITION_COLOR - private var snippet = Renderer.RenderSnippet.POSITION_COLOR_SNIPPET - - fun begin( - drawMode: Renderer.DrawMode = Renderer.DrawMode.QUADS, - vertexFormat: Renderer.VertexFormat = Renderer.VertexFormat.POSITION_COLOR, - snippet: Renderer.RenderSnippet = Renderer.RenderSnippet.POSITION_COLOR_SNIPPET - ) = apply { - this.drawMode = drawMode - this.vertexFormat = vertexFormat - this.snippet = snippet - } - - fun enableBlend() = apply { - blend = true - } - - fun disableBlend() = apply { - blend = false - } - - fun enableCull() = apply { - cull = true - } - - fun disableCull() = apply { - cull = false - } - - fun enableDepth() = apply { - depth = true - } - - fun disableDepth() = apply { - depth = false - } - - fun build(): RenderPipeline { - val key = state() - return pipelineList.getOrPut(key) { - val basePipeline = RenderPipeline.builder(snippet.mcSnippet) - .withLocation("ctjs/custom/pipeline${hashCode()}") - .withVertexFormat(vertexFormat.toMC(), drawMode.toUC().mcMode) - if (blend == true) basePipeline.withColorTargetState(ColorTargetState(BlendFunction(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ONE, DestFactor.ZERO))) - - cull?.let(basePipeline::withCull) - - if (depth == true) { - basePipeline - .withDepthStencilState(DepthStencilState(CompareOp.LESS_THAN_OR_EQUAL, true)) - } - else if (depth == false) { - basePipeline - .withDepthStencilState(DepthStencilState(CompareOp.ALWAYS_PASS, false)) - } - - basePipeline.build() - } - } - - fun layer(): RenderType { - throw Error("LegacyPipelineBuilder#layer currently not supported") - } - - fun state(): String { - return "LegacyPipelineBuilder[" + - "cull=$cull, " + - "depth=$depth, " + - "blend=$blend, " + - "drawMode=${drawMode.name}, " + - "vertexFormat=${vertexFormat.name}, " + - "snippet=${snippet.name}" + - "]" - } -} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/NVGRenderer.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/NVGRenderer.kt deleted file mode 100644 index 0c523e35..00000000 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/NVGRenderer.kt +++ /dev/null @@ -1,875 +0,0 @@ -package com.chattriggers.ctjs.api.render - -import com.mojang.blaze3d.opengl.GlStateManager -import com.mojang.blaze3d.opengl.GlTexture -import com.mojang.blaze3d.opengl.DirectStateAccess -import com.mojang.blaze3d.systems.GpuDevice -import com.mojang.blaze3d.systems.RenderSystem -import net.minecraft.client.Minecraft -import org.lwjgl.nanovg.NVGColor -import org.lwjgl.nanovg.NVGPaint -import org.lwjgl.nanovg.NanoVG.* -import org.lwjgl.nanovg.NanoVGGL3.* -import org.lwjgl.nanovg.NanoSVG.* -import org.lwjgl.opengl.GL20C -import org.lwjgl.opengl.GL30 -import org.lwjgl.opengl.GL33C -import org.lwjgl.stb.STBImage.stbi_load_from_memory -import org.lwjgl.stb.STBImage.stbi_image_free -import org.lwjgl.system.MemoryUtil -import java.nio.ByteBuffer -import java.awt.Color -import java.awt.image.BufferedImage -import javax.imageio.ImageIO -import javax.imageio.metadata.IIOMetadataNode -import java.util.concurrent.CopyOnWriteArrayList -import java.util.concurrent.ConcurrentHashMap -import java.io.File -import java.io.FileNotFoundException -import java.io.FileInputStream -import java.net.URI - -object NVGRenderer { - - private val mc = Minecraft.getInstance() - private val nvgColor = NVGColor.malloc() - private val nvgColor2 = NVGColor.malloc() - private val nvgPaint = NVGPaint.malloc() - - private var checkTexId = 0 - private var hueTexId = 0 - - val defaultFont by lazy { - try { - val stream = NVGRenderer::class.java.getResourceAsStream("/assets/v5/font.otf") - ?: throw Exception("Could not find /assets/v5/font.otf in classpath") - Font("Default", stream) - } catch (e: Exception) { - println("[V5] Failed to load font: ${e.message}") - null - } - } - - private val fontMap = HashMap() - private val fontBounds = FloatArray(4) - - private val imageCache = HashMap() - - private val gifCache = ConcurrentHashMap() - private val glTextureCache = ConcurrentHashMap() - - private val urlCache = ConcurrentHashMap() - private val pendingDownloads = ConcurrentHashMap.newKeySet() - - private data class DecodedImage( - val url: String, - val pixels: ByteBuffer?, - val width: Int, - val height: Int - ) - private val downloadQueue = java.util.concurrent.LinkedBlockingQueue() - private const val MAX_DOWNLOADS_PER_FRAME = 5 - - private val preRenderCallbacks = CopyOnWriteArrayList() - private val renderCallbacks = CopyOnWriteArrayList() - - private var drawing = false - @JvmField var vg = -1L - private var framebufferWarningPrinted = false - - private val gpuBackendField by lazy { - GpuDevice::class.java.getDeclaredField("backend").apply { isAccessible = true } - } - private val directStateAccessMethod by lazy { - Class.forName("com.mojang.blaze3d.opengl.GlDevice") - .getDeclaredMethod("directStateAccess") - .apply { isAccessible = true } - } - - data class GifData( - val width: Int, - val height: Int, - val frameCount: Int, - val delays: IntArray - ) { - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other !is GifData) return false - return width == other.width && height == other.height && - frameCount == other.frameCount && delays.contentEquals(other.delays) - } - override fun hashCode(): Int = 31 * (31 * (31 * width + height) + frameCount) + delays.contentHashCode() - } - - private data class CachedGif( - var frameIds: IntArray?, - var rawFrames: ArrayList?, - val delays: IntArray, - val width: Int, - val height: Int, - var refCount: Int - ) - - private data class CachedImage( - val nvgId: Int, - var refCount: Int, - ) - - private data class NVGFont(val id: Int, val buffer: ByteBuffer) - - @JvmStatic - fun registerV5Render(runnable: Runnable) { - renderCallbacks.add(runnable) - } - - @JvmStatic - fun unregisterV5Render(runnable: Runnable) { - renderCallbacks.remove(runnable) - } - - @JvmStatic - fun registerV5PreRender(runnable: Runnable) { - preRenderCallbacks.add(runnable) - } - - @JvmStatic - fun unregisterV5PreRender(runnable: Runnable) { - preRenderCallbacks.remove(runnable) - } - - fun clearCallbacks() { - renderCallbacks.clear() - preRenderCallbacks.clear() - } - - @JvmStatic - fun runPreDrawables() { - runCallbacks(preRenderCallbacks) - } - - @JvmStatic - fun runDrawables() { - processDownloadQueue() - runCallbacks(renderCallbacks) - } - - private fun runCallbacks(callbacks: List) { - callbacks.forEach { runnable -> - try { - runnable.run() - } catch (e: Exception) { - e.printStackTrace() - } - } - } - - private fun isGameReady(): Boolean { - return mc.window.handle() != 0L - } - - private fun ensureInitialized() { - if (vg != -1L) return - vg = nvgCreate(NVG_ANTIALIAS or NVG_STENCIL_STROKES) - if (vg == -1L) throw RuntimeException("Failed to initialize NanoVG") - } - - private fun mainFramebufferId(): Int { - val target = mc.mainRenderTarget - val colorTexture = target.colorTexture as? GlTexture ?: return GL33C.glGetInteger(GL30.GL_FRAMEBUFFER_BINDING) - return try { - val backend = gpuBackendField.get(RenderSystem.getDevice()) - val directStateAccess = directStateAccessMethod.invoke(backend) as DirectStateAccess - colorTexture.getFbo(directStateAccess, target.depthTexture) - } catch (e: Exception) { - if (!framebufferWarningPrinted) { - framebufferWarningPrinted = true - println("[V5] Failed to bind NanoVG to main framebuffer: ${e.message}") - } - GL33C.glGetInteger(GL30.GL_FRAMEBUFFER_BINDING) - } - } - - @JvmStatic - fun beginFrame(width: Float, height: Float) { - if (!isGameReady()) return - ensureInitialized() - if (drawing) return - - val framebuffer = mc.mainRenderTarget - val prevFramebuffer = GL33C.glGetInteger(GL30.GL_FRAMEBUFFER_BINDING) - val prevViewport = IntArray(4) - GL33C.glGetIntegerv(GL33C.GL_VIEWPORT, prevViewport) - val prevProgram = GL33C.glGetInteger(GL20C.GL_CURRENT_PROGRAM) - - GlStateManager._glBindFramebuffer(GL30.GL_FRAMEBUFFER, mainFramebufferId()) - GlStateManager._viewport(0, 0, framebuffer.width, framebuffer.height) - GlStateManager._activeTexture(GL30.GL_TEXTURE0) - - GL33C.glBindSampler(0, 0) - val pixelRatio = if (width > 0) framebuffer.width.toFloat() / width else 1.0f - - nvgBeginFrame(vg, width, height, pixelRatio) - nvgTextAlign(vg, NVG_ALIGN_LEFT or NVG_ALIGN_TOP) - drawing = true - - savedFramebuffer = prevFramebuffer - savedViewport = prevViewport - savedProgram = prevProgram - } - - private var savedFramebuffer = 0 - private var savedViewport = IntArray(4) - private var savedProgram = 0 - - @JvmStatic - fun endFrame() { - if (!drawing || vg == -1L) return - - nvgEndFrame(vg) - GL33C.glBindSampler(0, 0) - GlStateManager._disableCull() - GlStateManager._disableDepthTest() - GlStateManager._enableBlend() - GlStateManager._blendFuncSeparate(770, 771, 1, 0) - GlStateManager._glUseProgram(savedProgram) - - GlStateManager._glBindFramebuffer(GL30.GL_FRAMEBUFFER, savedFramebuffer) - GlStateManager._viewport(savedViewport[0], savedViewport[1], savedViewport[2], savedViewport[3]) - - GlStateManager._activeTexture(GL30.GL_TEXTURE0) - GlStateManager._bindTexture(0) - - drawing = false - } - - private fun applyColor(color: Int, target: NVGColor = nvgColor) { - nvgRGBA( - ((color shr 16) and 0xFF).toByte(), - ((color shr 8) and 0xFF).toByte(), - (color and 0xFF).toByte(), - ((color shr 24) and 0xFF).toByte(), - target - ) - } - - private fun applyGradient(x: Float, y: Float, w: Float, h: Float, color1: Int, color2: Int, direction: Any) { - applyColor(color1, nvgColor) - applyColor(color2, nvgColor2) - val dir = direction.toString() - when { - dir.contains("LeftToRight") -> nvgLinearGradient(vg, x, y, x + w, y, nvgColor, nvgColor2, nvgPaint) - dir.contains("TopToBottom") -> nvgLinearGradient(vg, x, y, x, y + h, nvgColor, nvgColor2, nvgPaint) - dir.contains("TopLeftToBottomRight") -> nvgLinearGradient(vg, x, y, x + w, y + h, nvgColor, nvgColor2, nvgPaint) - dir.contains("BottomLeftToTopRight") -> nvgLinearGradient(vg, x, y + h, x + w, y, nvgColor, nvgColor2, nvgPaint) - else -> nvgLinearGradient(vg, x, y, x + w, y, nvgColor, nvgColor2, nvgPaint) - } - } - - @JvmStatic - @JvmOverloads - fun drawCheckerboard(x: Float, y: Float, w: Float, h: Float, radius: Float, size: Float = 4f) { - if (!drawing) return - - if (checkTexId == 0) { - val buf = MemoryUtil.memAlloc(16) - val c1 = 64.toByte() - val c2 = 115.toByte() - val a = 255.toByte() - buf.put(c1).put(c1).put(c1).put(a).put(c2).put(c2).put(c2).put(a) - buf.put(c2).put(c2).put(c2).put(a).put(c1).put(c1).put(c1).put(a) - buf.flip() - checkTexId = nvgCreateImageRGBA(vg, 2, 2, NVG_IMAGE_REPEATX or NVG_IMAGE_REPEATY or NVG_IMAGE_NEAREST, buf) - MemoryUtil.memFree(buf) - } - - nvgImagePattern(vg, x, y, size * 2, size * 2, 0f, checkTexId, 1f, nvgPaint) - nvgBeginPath(vg) - nvgRoundedRect(vg, x, y, w, h, radius) - nvgFillPaint(vg, nvgPaint) - nvgFill(vg) - } - - @JvmStatic - fun drawHueBar(x: Float, y: Float, w: Float, h: Float, radius: Float) { - if (!drawing) return - - if (hueTexId == 0) { - val width = 128 - val buf = MemoryUtil.memAlloc(width * 4) - for (i in 0 until width) { - val rgb = Color.HSBtoRGB(i.toFloat() / width, 1f, 1f) - buf.put((rgb shr 16 and 0xFF).toByte()) - buf.put((rgb shr 8 and 0xFF).toByte()) - buf.put((rgb and 0xFF).toByte()) - buf.put(255.toByte()) - } - buf.flip() - hueTexId = nvgCreateImageRGBA(vg, width, 1, 0, buf) - MemoryUtil.memFree(buf) - } - - nvgImagePattern(vg, x, y, w, 1f, 0f, hueTexId, 1f, nvgPaint) - nvgBeginPath(vg) - nvgRoundedRect(vg, x, y, w, h, radius) - nvgFillPaint(vg, nvgPaint) - nvgFill(vg) - } - - @JvmStatic - @JvmOverloads - fun drawGradientRect(x: Float, y: Float, w: Float, h: Float, color1: Int, color2: Int, direction: Any, radius: Float = 0f) { - if (!drawing) return - nvgBeginPath(vg) - if (radius > 0) nvgRoundedRect(vg, x, y, w, h, radius) else nvgRect(vg, x, y, w, h) - applyGradient(x, y, w, h, color1, color2, direction) - nvgFillPaint(vg, nvgPaint) - nvgFill(vg) - } - - @JvmStatic - @JvmOverloads - fun drawHollowGradientRect(x: Float, y: Float, w: Float, h: Float, thickness: Float, color1: Int, color2: Int, direction: Any, radius: Float = 0f) { - if (!drawing) return - nvgBeginPath(vg) - if (radius > 0) nvgRoundedRect(vg, x, y, w, h, radius) else nvgRect(vg, x, y, w, h) - nvgStrokeWidth(vg, thickness) - applyGradient(x, y, w, h, color1, color2, direction) - nvgStrokePaint(vg, nvgPaint) - nvgStroke(vg) - } - - @JvmStatic - fun linearGradient(sx: Float, sy: Float, ex: Float, ey: Float, color1: Int, color2: Int) { - applyColor(color1, nvgColor) - applyColor(color2, nvgColor2) - nvgLinearGradient(vg, sx, sy, ex, ey, nvgColor, nvgColor2, nvgPaint) - } - - @JvmStatic - fun setGlobalCompositeOperation(op: Int) { - if (vg != -1L) nvgGlobalCompositeOperation(vg, op) - } - - @JvmStatic fun save() { if (vg != -1L) nvgSave(vg) } - @JvmStatic fun restore() { if (vg != -1L) nvgRestore(vg) } - @JvmStatic fun translate(x: Float, y: Float) { if (vg != -1L) nvgTranslate(vg, x, y) } - @JvmStatic fun rotate(angle: Float) { if (vg != -1L) nvgRotate(vg, Math.toRadians(angle.toDouble()).toFloat()) } - @JvmStatic fun scale(x: Float, y: Float) { if (vg != -1L) nvgScale(vg, x, y) } - @JvmStatic fun globalAlpha(alpha: Float) { if (vg != -1L) nvgGlobalAlpha(vg, alpha.coerceIn(0f, 1f)) } - - @JvmStatic - fun drawRect(x: Float, y: Float, w: Float, h: Float, color: Int) { - if (!drawing) return - nvgBeginPath(vg) - nvgRect(vg, x, y, w, h) - applyColor(color) - nvgFillColor(vg, nvgColor) - nvgFill(vg) - } - - @JvmStatic - fun drawRoundedRect(x: Float, y: Float, w: Float, h: Float, radius: Float, color: Int) { - if (!drawing) return - nvgBeginPath(vg) - nvgRoundedRect(vg, x, y, w, h, radius) - applyColor(color) - nvgFillColor(vg, nvgColor) - nvgFill(vg) - } - - @JvmStatic - fun drawRoundedRectVaried(x: Float, y: Float, w: Float, h: Float, color: Int, tl: Float, tr: Float, br: Float, bl: Float) { - if (!drawing) return - nvgBeginPath(vg) - nvgRoundedRectVarying(vg, x, y, w, h, tl, tr, br, bl) - applyColor(color) - nvgFillColor(vg, nvgColor) - nvgFill(vg) - } - - @JvmStatic - fun drawCircle(x: Float, y: Float, radius: Float, color: Int) { - if (!drawing) return - nvgBeginPath(vg) - nvgCircle(vg, x, y, radius) - applyColor(color) - nvgFillColor(vg, nvgColor) - nvgFill(vg) - } - - @JvmStatic - fun drawDropShadow(x: Float, y: Float, w: Float, h: Float, radius: Float, blur: Float, spread: Float, color: Int) { - if (!drawing) return - applyColor(color, nvgColor) - applyColor(0, nvgColor2) - - nvgBoxGradient(vg, x - spread, y - spread, w + 2 * spread, h + 2 * spread, radius + spread, blur, nvgColor, nvgColor2, nvgPaint) - - nvgBeginPath(vg) - nvgRect(vg, x - spread - blur, y - spread - blur, w + 2 * spread + 2 * blur, h + 2 * spread + 2 * blur) - nvgFillPaint(vg, nvgPaint) - nvgFill(vg) - } - - @JvmStatic - @JvmOverloads - fun drawHollowRect(x: Float, y: Float, w: Float, h: Float, thickness: Float, color: Int, radius: Float = 0f) { - if (!drawing) return - nvgBeginPath(vg) - if (radius > 0) nvgRoundedRect(vg, x, y, w, h, radius) else nvgRect(vg, x, y, w, h) - nvgStrokeWidth(vg, thickness) - nvgPathWinding(vg, NVG_HOLE) - applyColor(color) - nvgStrokeColor(vg, nvgColor) - nvgStroke(vg) - } - - @JvmStatic - fun drawLine(x1: Float, y1: Float, x2: Float, y2: Float, thickness: Float, color: Int) { - if (!drawing) return - nvgBeginPath(vg) - nvgMoveTo(vg, x1, y1) - nvgLineTo(vg, x2, y2) - nvgStrokeWidth(vg, thickness) - applyColor(color) - nvgStrokeColor(vg, nvgColor) - nvgStroke(vg) - } - - @JvmStatic - fun loadImage(path: String): String { - ensureInitialized() - - synchronized(imageCache) { - imageCache[path]?.let { - it.refCount++ - return path - } - } - - val bytes = readImage(path) - val nvgId = if (path.endsWith(".svg", true)) loadSVGImage(bytes, path) else loadRasterImage(bytes, path) - - synchronized(imageCache) { - imageCache[path] = CachedImage(nvgId, 1) - } - - return path - } - - @JvmStatic - fun unloadImage(path: String) { - synchronized(imageCache) { - val cached = imageCache[path] ?: return - if (--cached.refCount <= 0) { - nvgDeleteImage(vg, cached.nvgId) - imageCache.remove(path) - } - } - } - - @JvmStatic - fun isImageLoaded(path: String): Boolean = synchronized(imageCache) { imageCache.containsKey(path) } - - private fun readImage(path: String): ByteArray { - val trimmed = path.trim() - val stream = when { - trimmed.startsWith("http://") || trimmed.startsWith("https://") -> URI.create(trimmed).toURL().openStream() - File(trimmed).isFile -> FileInputStream(trimmed) - else -> NVGRenderer::class.java.getResourceAsStream(trimmed) - ?: throw FileNotFoundException("Cannot find image: $trimmed") - } - return stream.use { it.readBytes() } - } - - private fun loadRasterImage(bytes: ByteArray, identifier: String): Int { - val w = IntArray(1) - val h = IntArray(1) - val channels = IntArray(1) - val buffer = MemoryUtil.memAlloc(bytes.size).put(bytes).flip() as ByteBuffer - try { - val pixels = stbi_load_from_memory(buffer, w, h, channels, 4) - ?: throw RuntimeException("Failed to load image: $identifier") - val nvgId = nvgCreateImageRGBA(vg, w[0], h[0], 0, pixels) - stbi_image_free(pixels) - return nvgId - } finally { - MemoryUtil.memFree(buffer) - } - } - - private fun loadSVGImage(bytes: ByteArray, identifier: String): Int { - val svg = nsvgParse(String(bytes), "px", 96f) - ?: throw RuntimeException("Failed to parse SVG: $identifier") - - val width = svg.width().toInt() - val height = svg.height().toInt() - - if (width <= 0 || height <= 0) { - nsvgDelete(svg) - throw RuntimeException("Invalid SVG dimensions: $identifier") - } - - val buffer = MemoryUtil.memAlloc(width * height * 4) - try { - val rasterizer = nsvgCreateRasterizer() - nsvgRasterize(rasterizer, svg, 0f, 0f, 1f, buffer, width, height, width * 4) - val nvgId = nvgCreateImageRGBA(vg, width, height, 0, buffer) - nsvgDeleteRasterizer(rasterizer) - return nvgId - } finally { - nsvgDelete(svg) - MemoryUtil.memFree(buffer) - } - } - - @JvmStatic - fun loadGif(path: String): GifData? { - gifCache[path]?.let { cached -> - synchronized(cached) { cached.refCount++ } - val count = cached.frameIds?.size ?: cached.rawFrames?.size ?: 0 - return GifData(cached.width, cached.height, count, cached.delays) - } - - val file = File(path) - if (!file.exists()) return null - - try { - FileInputStream(file).use { stream -> - val readers = ImageIO.getImageReadersByFormatName("gif") - if (!readers.hasNext()) return null - val reader = readers.next() - reader.input = ImageIO.createImageInputStream(stream) - - val numFrames = reader.getNumImages(true) - val rawFrames = ArrayList(numFrames) - val delays = IntArray(numFrames) - - val firstFrame = reader.read(0) - val width = firstFrame.width - val height = firstFrame.height - - val masterImage = BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB) - val masterGraphics = masterImage.createGraphics() - masterGraphics.background = Color(0, 0, 0, 0) - - for (i in 0 until numFrames) { - val frameImage = reader.read(i) - val metadata = reader.getImageMetadata(i) - val tree = metadata.getAsTree(metadata.nativeMetadataFormatName) as IIOMetadataNode - - val gce = tree.getElementsByTagName("GraphicControlExtension").item(0) as IIOMetadataNode - delays[i] = (gce.getAttribute("delayTime").toInt() * 10).coerceAtLeast(10) - val disposal = gce.getAttribute("disposalMethod") - - val imgDesc = tree.getElementsByTagName("ImageDescriptor").item(0) as IIOMetadataNode - val fx = imgDesc.getAttribute("imageLeftPosition").toInt() - val fy = imgDesc.getAttribute("imageTopPosition").toInt() - - masterGraphics.drawImage(frameImage, fx, fy, null) - rawFrames.add(bufferedImageToByteBuffer(masterImage)) - - if (disposal == "restoreToBackgroundColor") { - masterGraphics.clearRect(fx, fy, frameImage.width, frameImage.height) - } - } - masterGraphics.dispose() - reader.dispose() - - gifCache[path] = CachedGif(null, rawFrames, delays, width, height, 1) - return GifData(width, height, numFrames, delays) - } - } catch (e: Exception) { - println("[V5] Failed to load GIF $path: ${e.message}") - return null - } - } - - @JvmStatic - fun unloadGif(path: String) { - val cached = gifCache[path] ?: return - val shouldFree = synchronized(cached) { --cached.refCount <= 0 } - - if (shouldFree) { - cached.frameIds?.forEach { nvgDeleteImage(vg, it) } - cached.rawFrames?.forEach { MemoryUtil.memFree(it) } - gifCache.remove(path) - } - } - - @JvmStatic - @JvmOverloads - fun drawGif(path: String, x: Float, y: Float, w: Float, h: Float, frameIndex: Int, radius: Float = 0f, alpha: Float = 1f) { - if (!drawing) return - val cached = gifCache[path] ?: return - - if (cached.frameIds == null) { - val raw = cached.rawFrames ?: return - cached.frameIds = IntArray(raw.size) { i -> - val id = nvgCreateImageRGBA(vg, cached.width, cached.height, 0, raw[i]) - MemoryUtil.memFree(raw[i]) - id - } - cached.rawFrames = null - } - - val frames = cached.frameIds!! - if (frames.isEmpty()) return - - nvgImagePattern(vg, x, y, w, h, 0f, frames[frameIndex % frames.size], alpha, nvgPaint) - nvgBeginPath(vg) - if (radius > 0) nvgRoundedRect(vg, x, y, w, h, radius) else nvgRect(vg, x, y, w, h) - nvgFillPaint(vg, nvgPaint) - nvgFill(vg) - } - - private fun bufferedImageToByteBuffer(image: BufferedImage): ByteBuffer { - val pixels = IntArray(image.width * image.height) - image.getRGB(0, 0, image.width, image.height, pixels, 0, image.width) - - val buffer = MemoryUtil.memAlloc(pixels.size * 4) - for (pixel in pixels) { - buffer.put((pixel shr 16 and 0xFF).toByte()) // R - buffer.put((pixel shr 8 and 0xFF).toByte()) // G - buffer.put((pixel and 0xFF).toByte()) // B - buffer.put((pixel shr 24 and 0xFF).toByte()) // A - } - buffer.flip() - return buffer - } - - @JvmStatic - @JvmOverloads - fun drawImage(path: String, x: Float, y: Float, w: Float, h: Float, radius: Float = 0f, alpha: Float = 1f) { - if (!drawing) return - - val cached = synchronized(imageCache) { imageCache[path] } - - if (cached == null) { - try { - loadImage(path) - drawImage(path, x, y, w, h, radius, alpha) - } catch (e: Exception) { - println("[V5] Failed to load image: $path - ${e.message}") - } - return - } - - nvgImagePattern(vg, x, y, w, h, 0f, cached.nvgId, alpha, nvgPaint) - nvgBeginPath(vg) - if (radius > 0) nvgRoundedRect(vg, x, y, w, h, radius) else nvgRect(vg, x, y, w, h) - nvgFillPaint(vg, nvgPaint) - nvgFill(vg) - } - - private fun processDownloadQueue() { - var processed = 0 - while (processed < MAX_DOWNLOADS_PER_FRAME) { - val decoded = downloadQueue.poll() ?: break - - if (decoded.pixels != null && vg != -1L) { - val nvgId = nvgCreateImageRGBA(vg, decoded.width, decoded.height, 0, decoded.pixels) - stbi_image_free(decoded.pixels) - urlCache[decoded.url] = nvgId - } else { - urlCache[decoded.url] = 0 - } - pendingDownloads.remove(decoded.url) - processed++ - } - } - - @JvmStatic - @JvmOverloads - fun drawImageFromUrl(url: String, x: Float, y: Float, w: Float, h: Float, radius: Float = 0f, alpha: Float = 1f) { - if (!drawing || url == "none") return - - urlCache[url]?.let { cachedId -> - if (cachedId > 0) { - nvgImagePattern(vg, x, y, w, h, 0f, cachedId, alpha, nvgPaint) - nvgBeginPath(vg) - if (radius > 0) nvgRoundedRect(vg, x, y, w, h, radius) else nvgRect(vg, x, y, w, h) - nvgFillPaint(vg, nvgPaint) - nvgFill(vg) - } - return - } - - if (pendingDownloads.add(url)) { - Thread({ - try { - val connection = URI.create(url).toURL().openConnection().apply { - connectTimeout = 5000 - readTimeout = 5000 - setRequestProperty("User-Agent", "Mozilla/5.0") - } - val bytes = connection.getInputStream().use { it.readBytes() } - - val buffer = MemoryUtil.memAlloc(bytes.size).put(bytes).flip() as ByteBuffer - val wArr = IntArray(1) - val hArr = IntArray(1) - val cArr = IntArray(1) - - val pixels = stbi_load_from_memory(buffer, wArr, hArr, cArr, 4) - MemoryUtil.memFree(buffer) - - if (pixels != null) { - downloadQueue.add(DecodedImage(url, pixels, wArr[0], hArr[0])) - } else { - downloadQueue.add(DecodedImage(url, null, 0, 0)) - } - } catch (e: Exception) { - downloadQueue.add(DecodedImage(url, null, 0, 0)) - } - }, "V5-ImageDownload-${url.hashCode()}").start() - } - } - - @JvmStatic - @JvmOverloads - fun drawGLTexture(glTextureId: Int, texW: Int, texH: Int, x: Float, y: Float, w: Float, h: Float, radius: Float = 0f, alpha: Float = 1f) { - if (!drawing) return - ensureInitialized() - - val nvgId = glTextureCache.getOrPut(glTextureId) { - nvglCreateImageFromHandle(vg, glTextureId, texW, texH, NVG_IMAGE_NODELETE) - } - if (nvgId == 0) return - - nvgImagePattern(vg, x, y, w, h, 0f, nvgId, alpha, nvgPaint) - nvgBeginPath(vg) - if (radius > 0) nvgRoundedRect(vg, x, y, w, h, radius) else nvgRect(vg, x, y, w, h) - nvgFillPaint(vg, nvgPaint) - nvgFill(vg) - } - - @JvmStatic - @JvmOverloads - fun drawGLTextureRegion(glTextureId: Int, textureWidth: Int, textureHeight: Int, subX: Int, subY: Int, subW: Int, subH: Int, x: Float, y: Float, w: Float, h: Float, radius: Float = 0f, alpha: Float = 1f) { - if (!drawing) return - ensureInitialized() - - val nvgId = glTextureCache.getOrPut(glTextureId) { - nvglCreateImageFromHandle(vg, glTextureId, textureWidth, textureHeight, NVG_IMAGE_NODELETE) - } - if (nvgId == 0) return - - val sw = subW.toFloat() / textureWidth - val sh = subH.toFloat() / textureHeight - val iw = w / sw - val ih = h / sh - val ix = x - iw * (subX.toFloat() / textureWidth) - val iy = y - ih * (subY.toFloat() / textureHeight) - - nvgImagePattern(vg, ix, iy, iw, ih, 0f, nvgId, alpha, nvgPaint) - nvgBeginPath(vg) - if (radius > 0) nvgRoundedRect(vg, x, y, w, h, radius) else nvgRect(vg, x, y, w, h) - nvgFillPaint(vg, nvgPaint) - nvgFill(vg) - } - - @JvmStatic - fun invalidateGLTexture(glTextureId: Int) { - glTextureCache.remove(glTextureId)?.takeIf { it != 0 }?.let { nvgDeleteImage(vg, it) } - } - - @JvmStatic - fun clearImageCache() { - if (vg == -1L) return - - synchronized(imageCache) { - imageCache.values.forEach { nvgDeleteImage(vg, it.nvgId) } - imageCache.clear() - } - - gifCache.values.forEach { gif -> - gif.frameIds?.forEach { nvgDeleteImage(vg, it) } - gif.rawFrames?.forEach { MemoryUtil.memFree(it) } - } - gifCache.clear() - - glTextureCache.values.filter { it != 0 }.forEach { nvgDeleteImage(vg, it) } - glTextureCache.clear() - - urlCache.values.filter { it > 0 }.forEach { nvgDeleteImage(vg, it) } - urlCache.clear() - pendingDownloads.clear() - - if (checkTexId != 0) { - nvgDeleteImage(vg, checkTexId) - checkTexId = 0 - } - if (hueTexId != 0) { - nvgDeleteImage(vg, hueTexId) - hueTexId = 0 - } - } - - @JvmStatic - fun getCacheStats(): String { - return "Images: ${imageCache.size}, GIFs: ${gifCache.size}, GL: ${glTextureCache.size}, URLs: ${urlCache.size}" - } - - @JvmStatic - fun scissor(x: Float, y: Float, w: Float, h: Float) { - if (vg != -1L) nvgIntersectScissor(vg, x, y, w, h) - } - - @JvmStatic - fun pushScissor(x: Float, y: Float, w: Float, h: Float) { - if (vg != -1L) { - nvgSave(vg) - nvgIntersectScissor(vg, x, y, w, h) - } - } - - @JvmStatic - fun popScissor() { - if (vg != -1L) nvgRestore(vg) - } - - @JvmStatic - fun resetScissor() { - if (vg != -1L) nvgResetScissor(vg) - } - - @JvmStatic - @JvmOverloads - fun text(text: String, x: Float, y: Float, size: Float, color: Int, font: Font? = defaultFont, align: Int) { - if (font == null || !drawing) return - nvgFontSize(vg, size) - nvgFontFaceId(vg, getFontID(font)) - nvgTextAlign(vg, align) - applyColor(color) - nvgFillColor(vg, nvgColor) - nvgText(vg, x, y, text) - } - - @JvmStatic - @JvmOverloads - fun textWidth(text: String, size: Float, font: Font? = defaultFont): Float { - if (font == null || vg == -1L) return 0f - nvgFontSize(vg, size) - nvgFontFaceId(vg, getFontID(font)) - return nvgTextBounds(vg, 0f, 0f, text, fontBounds) - } - - private fun getFontID(font: Font): Int { - return fontMap.getOrPut(font) { - val buffer = font.buffer() - NVGFont(nvgCreateFontMem(vg, font.name, buffer, false), buffer) - }.id - } - - @JvmStatic - fun destroy() { - clearImageCache() - - fontMap.clear() - - if (vg != -1L) { - nvgDelete(vg) - vg = -1L - } - } -} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Rectangle.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Rectangle.kt index e3a58195..055a04fb 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Rectangle.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/Rectangle.kt @@ -15,7 +15,7 @@ class Rectangle( fun getColor(): Long = color - fun setColor(color: Long) = apply { this.color = Renderer.fixAlpha(color) } + fun setColor(color: Long) = apply { this.color = Render2D.fixAlpha(color) } fun getX(): Float = x @@ -82,7 +82,7 @@ class Rectangle( fun draw() = apply { shadow.draw() outline.draw() - Renderer.drawRect(color, x, y, width, height) + Render2D.drawRect(x, y, width, height, color.toInt()) } private class Shadow( @@ -93,20 +93,8 @@ class Rectangle( ) { fun draw() { if (!on) return - Renderer.drawRect( - color, - rect.x + offset.x, - rect.y + rect.height, - rect.width, - offset.y - ) - Renderer.drawRect( - color, - rect.x + rect.width, - rect.y + offset.y, - offset.x, - rect.height - offset.y - ) + Render2D.drawRect(rect.x + offset.x, rect.y + rect.height, rect.width, offset.y, color.toInt()) + Render2D.drawRect(rect.x + rect.width, rect.y + offset.y, offset.x, rect.height - offset.y, color.toInt()) } } @@ -118,12 +106,12 @@ class Rectangle( ) { fun draw() { if (!on) return - Renderer.drawRect( - color, + Render2D.drawRect( rect.x - thickness, rect.y - thickness, rect.width + thickness * 2, - rect.height + thickness * 2 + rect.height + thickness * 2, + color.toInt(), ) } } diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Render2D.kt similarity index 55% rename from src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer.kt rename to src/main/kotlin/com/chattriggers/ctjs/api/render/Render2D.kt index c07b319f..e113d43b 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/Render2D.kt @@ -1,7 +1,7 @@ package com.chattriggers.ctjs.api.render -import com.chattriggers.ctjs.MCVertexFormat import com.chattriggers.ctjs.api.client.Client +import com.chattriggers.ctjs.api.client.MinecraftCompat import com.chattriggers.ctjs.api.client.Player import com.chattriggers.ctjs.api.entity.PlayerMP import com.chattriggers.ctjs.api.message.ChatLib @@ -10,15 +10,9 @@ import com.chattriggers.ctjs.engine.LogType import com.chattriggers.ctjs.engine.printToConsole import com.chattriggers.ctjs.internal.utils.getOrDefault import com.chattriggers.ctjs.internal.utils.toRadians -import com.mojang.blaze3d.opengl.GlStateManager -import com.mojang.blaze3d.opengl.GlTexture -import com.mojang.blaze3d.pipeline.RenderPipeline.Snippet -import gg.essential.universal.UGraphics import gg.essential.universal.UMatrixStack import net.minecraft.client.gui.Font -import net.minecraft.client.renderer.RenderPipelines import net.minecraft.client.player.AbstractClientPlayer -import com.mojang.blaze3d.vertex.DefaultVertexFormat import net.minecraft.client.renderer.entity.EntityRendererProvider import com.mojang.blaze3d.vertex.PoseStack import org.joml.Matrix4f @@ -27,15 +21,10 @@ import org.mozilla.javascript.NativeObject import kotlin.collections.ArrayDeque import kotlin.math.PI import kotlin.math.atan -import kotlin.math.atan2 -import kotlin.math.cos -import kotlin.math.max -import kotlin.math.min import kotlin.math.roundToInt import kotlin.math.sin -import org.lwjgl.opengl.GL13.GL_TEXTURE0 -object Renderer { +object Render2D : GuiRendererBackend() { private val NEWLINE_REGEX = """\n|\r\n?""".toRegex() // The currently-active matrix stack @@ -167,37 +156,6 @@ object Renderer { return intArrayOf(red, green, blue) } - @JvmStatic - fun disableCull() = apply { LegacyPipelineBuilder.disableCull() } - - @JvmStatic - fun enableCull() = apply { LegacyPipelineBuilder.enableCull() } - - @JvmStatic - fun disableLighting() = apply { UGraphics.disableLighting() } - - @JvmStatic - fun enableLighting() = apply { UGraphics.enableLighting() } - - @JvmStatic - fun disableDepth() = apply { LegacyPipelineBuilder.disableDepth() } - - @JvmStatic - fun enableDepth() = apply { LegacyPipelineBuilder.enableDepth() } - - @JvmStatic - fun disableBlend() = apply { LegacyPipelineBuilder.disableBlend() } - - @JvmStatic - fun enableBlend() = apply { LegacyPipelineBuilder.enableBlend() } - - @JvmStatic - @JvmOverloads - fun bindTexture(texture: Image, textureIndex: Int = 0) = apply { - GlStateManager._activeTexture(GL_TEXTURE0 + textureIndex) - GlStateManager._bindTexture((texture.getTexture()?.getTexture() as? GlTexture)?.glId() ?: 0) - } - @JvmStatic fun deleteTexture(texture: Image) = apply { texture.destroy() @@ -224,24 +182,25 @@ object Renderer { @JvmStatic @JvmOverloads fun translate(x: Float, y: Float, z: Float = 0.0F) = apply { - matrixStack.translate(x, y, z) - DrawContextHolder.currentContext?.pose()?.translate(x, y) + if (translateSkija(x, y)) return@apply + DrawContextHolder.currentContext?.pose()?.translate(x, y) ?: matrixStack.translate(x, y, z) } @JvmStatic @JvmOverloads fun scale(scaleX: Float, scaleY: Float = scaleX, scaleZ: Float = 1f) = apply { - matrixStack.scale(scaleX, scaleY, scaleZ) - DrawContextHolder.currentContext?.pose()?.scale(scaleX, scaleY) + if (scaleSkija(scaleX, scaleY)) return@apply + DrawContextHolder.currentContext?.pose()?.scale(scaleX, scaleY) ?: matrixStack.scale(scaleX, scaleY, scaleZ) } @JvmStatic @JvmOverloads fun rotate(angle: Float, x: Float = 0f, y: Float = 0f, z: Float = 1f) = apply { - matrixStack.rotate(angle, x, y, z) if (x == 0f && y == 0f && z != 0f) { - DrawContextHolder.currentContext?.pose()?.rotate(angle * z) - } + if (rotateSkija(angle * z)) return@apply + DrawContextHolder.currentContext?.pose()?.rotate(Math.toRadians((angle * z).toDouble()).toFloat()) + ?: matrixStack.rotate(angle, x, y, z) + } else matrixStack.rotate(angle, x, y, z) } @JvmStatic @@ -257,135 +216,6 @@ object Renderer { else color } - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer] to allow for method chaining - * @see DrawMode - */ - @JvmStatic - @JvmOverloads - fun begin( - drawMode: DrawMode = Renderer.DrawMode.QUADS, - vertexFormat: VertexFormat = Renderer.VertexFormat.POSITION, - snippet: Renderer.RenderSnippet = Renderer.RenderSnippet.POSITION_COLOR_SNIPPET - ) = apply { - Renderer3d.begin(drawMode, vertexFormat, snippet) - } - - /** - * Sets a new vertex in the world renderer. - * - * @param x the x position - * @param y the y position - * @param z the z position - * @return [Renderer] to allow for method chaining - */ - @JvmStatic - @JvmOverloads - fun pos(x: Float, y: Float, z: Float = 0f) = apply { - val camera = Client.getMinecraft().gameRenderer.mainCamera.position() - Renderer3d.pos(x + camera.x.toFloat(), y + camera.y.toFloat(), z + camera.z.toFloat()) - } - - /** - * Sets the texture location on the last defined vertex. - * - * @param u the u position in the texture - * @param v the v position in the texture - * @return [Renderer] to allow for method chaining - */ - @JvmStatic - fun tex(u: Float, v: Float) = apply { - Renderer3d.tex(u, v) - } - - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 1 - * @param g the green value of the color, between 0 and 1 - * @param b the blue value of the color, between 0 and 1 - * @param a the alpha value of the color, between 0 and 1 - * @return [Renderer] to allow for method chaining - */ - @JvmStatic - @JvmOverloads - fun color(r: Float, g: Float, b: Float, a: Float = 1f) = apply { - Renderer3d.color(r, g, b, a) - } - - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 255 - * @param g the green value of the color, between 0 and 255 - * @param b the blue value of the color, between 0 and 255 - * @param a the alpha value of the color, between 0 and 255 - * @return [Renderer] to allow for method chaining - */ - @JvmStatic - @JvmOverloads - fun color(r: Int, g: Int, b: Int, a: Int = 255) = apply { - Renderer3d.color(r, g, b, a) - } - - /** - * Sets the color for the last defined vertex. - * - * @param color the color value, can use [getColor] to get this - * @return [Renderer] to allow for method chaining - */ - @JvmStatic - fun color(color: Long) = apply { - Renderer3d.color(color) - } - - /** - * Sets the normal of the vertex. This is mostly used with [VertexFormat.LINES] - * - * @param x the x position of the normal vector - * @param y the y position of the normal vector - * @param z the z position of the normal vector - * @return [Renderer] to allow for method chaining - */ - @JvmStatic - fun normal(x: Float, y: Float, z: Float) = apply { - Renderer3d.normal(x, y, z) - } - - /** - * Sets the overlay location on the last defined vertex. - * - * @param u the u position in the overlay - * @param v the v position in the overlay - * @return [Renderer] to allow for method chaining - */ - @JvmStatic - fun overlay(u: Int, v: Int) = apply { - Renderer3d.overlay(u, v) - } - - /** - * Sets the light location on the last defined vertex. - * - * @param u the u position in the light - * @param v the v position in the light - * @return [Renderer] to allow for method chaining - */ - @JvmStatic - fun light(u: Int, v: Int) = apply { - Renderer3d.light(u, v) - } - - /** - * Finalizes vertices and draws the world renderer. - */ - @JvmStatic - fun draw() = Renderer3d.draw() - /** * Gets a fixed render position from x, y, and z inputs adjusted with partial ticks * @param x the X coordinate @@ -402,80 +232,6 @@ object Renderer { ) } - @JvmStatic - fun drawRect(color: Long, x: Float, y: Float, width: Float, height: Float) = apply { - DrawContextHolder.currentContext?.let { context -> - val x1 = x.roundToInt() - val y1 = y.roundToInt() - context.fill(x1, y1, (x + width).roundToInt(), (y + height).roundToInt(), color.toInt()) - return@apply - } - - val left = min(x, x + width) - val right = max(x, x + width) - val top = min(y, y + height) - val bottom = max(y, y + height) - - begin(vertexFormat = VertexFormat.POSITION_COLOR) - pos(left, bottom, 0f).color(color) - pos(right, bottom, 0f).color(color) - pos(right, top, 0f).color(color) - pos(left, top, 0f).color(color) - draw() - } - - @JvmStatic - fun drawLine( - color: Long, - x1: Float, - y1: Float, - x2: Float, - y2: Float, - thickness: Float, - ) { - val theta = -atan2(y2 - y1, x2 - x1) - val i = sin(theta) * (thickness / 2) - val j = cos(theta) * (thickness / 2) - - begin(vertexFormat = VertexFormat.POSITION_COLOR) - pos(x1 + i, y1 + j, 0f).color(color) - pos(x2 + i, y2 + j, 0f).color(color) - pos(x2 - i, y2 - j, 0f).color(color) - pos(x1 - i, y1 - j, 0f).color(color) - draw() - } - - @JvmStatic - fun drawCircle( - color: Long, - x: Float, - y: Float, - radius: Float, - steps: Int, - ) { - val theta = 2 * PI / steps - val cos = cos(theta).toFloat() - val sin = sin(theta).toFloat() - - var xHolder: Float - var circleX = 1f - var circleY = 0f - - begin(DrawMode.TRIANGLE_STRIP, VertexFormat.POSITION_COLOR) - - for (i in 0..steps) { - pos(x, y, 0f).color(color) - pos(circleX * radius + x, circleY * radius + y, 0f).color(color) - xHolder = circleX - circleX = cos * circleX - sin * circleY - circleY = sin * xHolder + cos * circleY - - pos(circleX * radius + x, circleY * radius + y, 0f).color(color) - } - - draw() - } - @JvmStatic @JvmOverloads fun drawString( @@ -494,25 +250,6 @@ object Renderer { } return } - - val immediate = Client.getMinecraft().renderBuffers().bufferSource() - splitText(text).lines.forEach { - fr.drawInBatch( - it, - x, - newY, - color.toInt(), - shadow, - matrixStack.toMC().last().pose(), - immediate, - Font.DisplayMode.NORMAL, - 0, - 0xf000f0, - ) - - newY += fr.lineHeight - } - immediate.endBatch() } @JvmStatic @@ -533,17 +270,13 @@ object Renderer { @JvmStatic fun drawImage(image: Image, x: Float, y: Float, width: Float, height: Float) { - scale(1f, 1f, 50f) - - // FIXME: icba to do this -// RenderSystem.setShaderTexture(0, image.getTexture()?.glTextureView) - - begin(DrawMode.QUADS, VertexFormat.POSITION_TEXTURE_COLOR, snippet = RenderSnippet.POSITION_TEX_COLOR_SNIPPET) - pos(x, y + height, 0f).tex(0f, 1f).color(WHITE) - pos(x + width, y + height, 0f).tex(1f, 1f).color(WHITE) - pos(x + width, y, 0f).tex(1f, 0f).color(WHITE) - pos(x, y, 0f).tex(0f, 0f).color(WHITE) - draw() + val texture = image.getTexture() ?: return + DrawContextHolder.currentContext?.blit( + texture.textureView, + texture.sampler, + x.roundToInt(), y.roundToInt(), width.roundToInt(), height.roundToInt(), + 0f, 0f, 1f, 1f, + ) } /** @@ -647,8 +380,6 @@ object Renderer { entityRenderDispatcher.camera?.rotation()?.set(pitchModelRotation) } - // entityRenderDispatcher.setRenderShadows(false) - val vertexConsumers = Client.getMinecraft().renderBuffers().bufferSource() // val light = 0xf000f0 @@ -680,13 +411,12 @@ object Renderer { entityRenderer.submit( playerEntityRenderState, matrixStack.toMC(), - Client.getMinecraft().gameRenderer.submitNodeStorage, - Client.getMinecraft().gameRenderer.gameRenderState.levelRenderState.cameraRenderState + MinecraftCompat.submitNodeStorage(Client.getMinecraft().gameRenderer), + MinecraftCompat.gameRenderState(Client.getMinecraft().gameRenderer).levelRenderState.cameraRenderState, ) matrixStack.pop() - vertexConsumers.endBatch() // entityRenderDispatcher.setRenderShadows(true) matrixStack.pop() // TODO: find out a way to get Diffuse instance and call setType @@ -702,8 +432,8 @@ object Renderer { matrixStack.pop() } - internal fun withMatrix(stack: PoseStack?, partialTicks: Float = Renderer.partialTicks, block: () -> Unit) { - Renderer.partialTicks = partialTicks + internal fun withMatrix(stack: PoseStack?, partialTicks: Float = Render2D.partialTicks, block: () -> Unit) { + Render2D.partialTicks = partialTicks matrixPushCounter = 0 try { @@ -717,64 +447,12 @@ object Renderer { } if (matrixPushCounter > 0) { - "Warning: Render function missing a call to Renderer.popMatrix()".printToConsole(LogType.WARN) + "Warning: Render function missing a call to Render2D.popMatrix()".printToConsole(LogType.WARN) } else if (matrixPushCounter < 0) { - "Warning: Render function has too many calls to Renderer.popMatrix()".printToConsole(LogType.WARN) + "Warning: Render function has too many calls to Render2D.popMatrix()".printToConsole(LogType.WARN) } } - enum class DrawMode(private val ucValue: UGraphics.DrawMode) { - LINES(UGraphics.DrawMode.LINES), - LINE_STRIP(UGraphics.DrawMode.LINE_STRIP), - TRIANGLES(UGraphics.DrawMode.TRIANGLES), - TRIANGLE_STRIP(UGraphics.DrawMode.TRIANGLE_STRIP), - TRIANGLE_FAN(UGraphics.DrawMode.TRIANGLE_FAN), - QUADS(UGraphics.DrawMode.QUADS); - - fun toUC() = ucValue - - companion object { - @JvmStatic - fun fromUC(ucValue: UGraphics.DrawMode) = entries.first { it.ucValue == ucValue } - } - } - - enum class VertexFormat(private val mcValue: MCVertexFormat) { - LINES(DefaultVertexFormat.POSITION_COLOR_NORMAL), - POSITION(DefaultVertexFormat.POSITION), - POSITION_COLOR(DefaultVertexFormat.POSITION_COLOR), - POSITION_TEXTURE(DefaultVertexFormat.POSITION_TEX), - POSITION_TEXTURE_COLOR(DefaultVertexFormat.POSITION_TEX_COLOR), - POSITION_COLOR_TEXTURE_LIGHT(DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP), - POSITION_TEXTURE_LIGHT_COLOR(DefaultVertexFormat.POSITION_TEX_LIGHTMAP_COLOR), - POSITION_TEXTURE_COLOR_LIGHT(DefaultVertexFormat.PARTICLE), - POSITION_TEXTURE_COLOR_NORMAL(DefaultVertexFormat.POSITION_TEX_COLOR_NORMAL); - - fun toMC() = mcValue - - companion object { - @JvmStatic - fun fromMC(ucValue: MCVertexFormat) = entries.first { it.mcValue == ucValue } - } - } - - enum class RenderSnippet(val mcSnippet: Snippet) { - TERRAIN_SNIPPET(RenderPipelines.TERRAIN_SNIPPET), - ENTITY_SNIPPET(RenderPipelines.ENTITY_SNIPPET), - RENDERTYPE_BEACON_BEAM_SNIPPET(RenderPipelines.BEACON_BEAM_SNIPPET), - TEXT_SNIPPET(RenderPipelines.TEXT_SNIPPET), - RENDERTYPE_END_PORTAL_SNIPPET(RenderPipelines.END_PORTAL_SNIPPET), - RENDERTYPE_CLOUDS_SNIPPET(RenderPipelines.CLOUDS_SNIPPET), - RENDERTYPE_LINES_SNIPPET(RenderPipelines.LINES_SNIPPET), - POSITION_COLOR_SNIPPET(RenderPipelines.DEBUG_FILLED_SNIPPET), - PARTICLE_SNIPPET(RenderPipelines.PARTICLE_SNIPPET), - WEATHER_SNIPPET(RenderPipelines.WEATHER_SNIPPET), - GUI_SNIPPET(RenderPipelines.GUI_SNIPPET), - POSITION_TEX_COLOR_SNIPPET(RenderPipelines.GUI_TEXTURED_SNIPPET), - RENDERTYPE_OUTLINE_SNIPPET(RenderPipelines.OUTLINE_SNIPPET), - POST_EFFECT_PROCESSOR_SNIPPET(RenderPipelines.POST_PROCESSING_SNIPPET), - } - class ScreenWrapper { fun getWidth(): Int = Client.getMinecraft().window.guiScaledWidth diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Render3D.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Render3D.kt new file mode 100644 index 00000000..de0a133d --- /dev/null +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/Render3D.kt @@ -0,0 +1,213 @@ +package com.chattriggers.ctjs.api.render +import com.chattriggers.ctjs.api.client.MinecraftCompat + +import net.minecraft.client.Minecraft +import net.minecraft.gizmos.GizmoStyle +import net.minecraft.gizmos.Gizmos +import net.minecraft.gizmos.TextGizmo +import net.minecraft.util.ARGB +import net.minecraft.world.entity.Entity +import net.minecraft.world.phys.AABB +import net.minecraft.world.phys.Vec3 + +object Render3D { + private val client = Minecraft.getInstance() + + data class Color(val r: Int, val g: Int, val b: Int, val a: Int) { + val packed = ARGB.color(a, r, g, b) + } + + @JvmStatic + @JvmOverloads + fun drawFilledBox(pos: Vec3, color: Color, depth: Boolean = false) = + drawFilledBox(AABB(pos.x, pos.y, pos.z, pos.x + 1, pos.y + 1, pos.z + 1), color, depth) + + @JvmStatic + @JvmOverloads + fun drawFilledBox(box: AABB, color: Color, depth: Boolean = false) { + Gizmos.cuboid(box, GizmoStyle.fill(color.packed)).depth(depth) + } + + @JvmStatic + @JvmOverloads + fun drawFilledBoxes(positions: Array, color: Color, depth: Boolean = false) { + val style = GizmoStyle.fill(color.packed) + positions.forEach { pos -> + Gizmos.cuboid(AABB(pos.x, pos.y, pos.z, pos.x + 1, pos.y + 1, pos.z + 1), style).depth(depth) + } + } + + @JvmStatic + @JvmOverloads + fun drawFilledAABBs(boxes: Array, color: Color, depth: Boolean = false) { + val style = GizmoStyle.fill(color.packed) + boxes.forEach { box -> Gizmos.cuboid(box, style).depth(depth) } + } + + @JvmStatic + @JvmOverloads + fun drawWireFrameBox(pos: Vec3, color: Color, thickness: Float = 5f, depth: Boolean = false) = + drawWireFrameBox(AABB(pos.x, pos.y, pos.z, pos.x + 1, pos.y + 1, pos.z + 1), color, thickness, depth) + + @JvmStatic + @JvmOverloads + fun drawWireFrameBox(box: AABB, color: Color, thickness: Float = 5f, depth: Boolean = false) { + Gizmos.cuboid(box, GizmoStyle.stroke(color.packed, thickness)).depth(depth) + } + + @JvmStatic + @JvmOverloads + fun drawWireFrameBoxes(positions: Array, color: Color, thickness: Float = 5f, depth: Boolean = false) { + val style = GizmoStyle.stroke(color.packed, thickness) + positions.forEach { pos -> + Gizmos.cuboid(AABB(pos.x, pos.y, pos.z, pos.x + 1, pos.y + 1, pos.z + 1), style).depth(depth) + } + } + + @JvmStatic + @JvmOverloads + fun drawWireFrameAABBs(boxes: Array, color: Color, thickness: Float = 5f, depth: Boolean = false) { + val style = GizmoStyle.stroke(color.packed, thickness) + boxes.forEach { box -> Gizmos.cuboid(box, style).depth(depth) } + } + + @JvmStatic + @JvmOverloads + fun drawBox(box: AABB, color: Color, thickness: Float = 2f, depth: Boolean = false) { + Gizmos.cuboid(box, GizmoStyle.strokeAndFill(color.packed, thickness, color.packed)).depth(depth) + } + + @JvmStatic + @JvmOverloads + fun drawBoxes(boxes: Array, color: Color, thickness: Float = 2f, depth: Boolean = false) { + val style = GizmoStyle.strokeAndFill(color.packed, thickness, color.packed) + boxes.forEach { box -> Gizmos.cuboid(box, style).depth(depth) } + } + + @JvmStatic + @JvmOverloads + fun drawStyledBox(pos: Vec3, color1: Color, color2: Color, wireThickness: Float = 5f, depth: Boolean = false) { + val box = AABB(pos.x, pos.y, pos.z, pos.x + 1, pos.y + 1, pos.z + 1) + Gizmos.cuboid(box, GizmoStyle.strokeAndFill(color2.packed, wireThickness, color1.packed)).depth(depth) + } + + @JvmStatic + @JvmOverloads + fun drawStyledBoxes(positions: Array, color1: Color, color2: Color, wireThickness: Float = 5f, depth: Boolean = false) { + val style = GizmoStyle.strokeAndFill(color2.packed, wireThickness, color1.packed) + positions.forEach { pos -> + Gizmos.cuboid(AABB(pos.x, pos.y, pos.z, pos.x + 1, pos.y + 1, pos.z + 1), style).depth(depth) + } + } + + @JvmStatic + @JvmOverloads + fun drawSizedBox(pos: Vec3, width: Double, height: Double, length: Double, color: Color, filled: Boolean = true, thickness: Float = 1f, depth: Boolean = false) { + val box = AABB(pos.x - width / 2, pos.y, pos.z - length / 2, pos.x + width / 2, pos.y + height, pos.z + length / 2) + Gizmos.cuboid(box, if (filled) GizmoStyle.fill(color.packed) else GizmoStyle.stroke(color.packed, thickness)).depth(depth) + } + + @JvmStatic + @JvmOverloads + fun drawSizedBoxes(positions: Array, width: Double, height: Double, length: Double, color: Color, filled: Boolean = true, thickness: Float = 1f, depth: Boolean = false) { + val style = if (filled) GizmoStyle.fill(color.packed) else GizmoStyle.stroke(color.packed, thickness) + positions.forEach { pos -> + val box = AABB(pos.x - width / 2, pos.y, pos.z - length / 2, pos.x + width / 2, pos.y + height, pos.z + length / 2) + Gizmos.cuboid(box, style).depth(depth) + } + } + + @JvmStatic + @JvmOverloads + fun drawHitbox(entity: Entity, color: Color, thickness: Float = 2f, depth: Boolean = false) { + val partialTicks = client.deltaTracker.getGameTimeDeltaPartialTick(true) + val box = entity.boundingBox.move( + entity.xOld + (entity.x - entity.xOld) * partialTicks - entity.x, + entity.yOld + (entity.y - entity.yOld) * partialTicks - entity.y, + entity.zOld + (entity.z - entity.zOld) * partialTicks - entity.z, + ) + drawBox(box, color, thickness, depth) + } + + @JvmStatic + @JvmOverloads + fun drawHitboxes(entities: Array, color: Color, thickness: Float = 2f, depth: Boolean = false) { + val partialTicks = client.deltaTracker.getGameTimeDeltaPartialTick(true) + val style = GizmoStyle.strokeAndFill(color.packed, thickness, color.packed) + entities.forEach { entity -> + val box = entity.boundingBox.move( + entity.xOld + (entity.x - entity.xOld) * partialTicks - entity.x, + entity.yOld + (entity.y - entity.yOld) * partialTicks - entity.y, + entity.zOld + (entity.z - entity.zOld) * partialTicks - entity.z, + ) + Gizmos.cuboid(box, style).depth(depth) + } + } + + @JvmStatic + @JvmOverloads + fun drawLine(start: Vec3, end: Vec3, color: Color, thickness: Float = 3f, depth: Boolean = false) { + Gizmos.line(start, end, color.packed, thickness).depth(depth) + } + + @JvmStatic + @JvmOverloads + fun drawLines(points: Array, color: Color, thickness: Float = 3f, depth: Boolean = false) { + for (i in 0 until points.lastIndex) { + Gizmos.line(points[i], points[i + 1], color.packed, thickness).depth(depth) + } + } + + @JvmStatic + @JvmOverloads + fun drawLines(points: Array, colors: Array, thickness: Float = 3f, depth: Boolean = false) { + for (i in 0 until minOf(points.lastIndex, colors.lastIndex + 1)) { + Gizmos.line(points[i], points[i + 1], colors[i].packed, thickness).depth(depth) + } + } + + @JvmStatic + @JvmOverloads + fun drawTracer(targetPos: Vec3, color: Color, thickness: Float = 2f, depth: Boolean = false) { + val camera = MinecraftCompat.mainCamera(client.gameRenderer) + val start = camera.position().add(Vec3.directionFromRotation(camera.xRot(), camera.yRot()).scale(0.1)) + drawLine(start, targetPos, color, thickness, depth) + } + + @JvmStatic + @JvmOverloads + fun drawTracers(targetPositions: Array, color: Color, thickness: Float = 2f, depth: Boolean = false) { + val camera = MinecraftCompat.mainCamera(client.gameRenderer) + val start = camera.position().add(Vec3.directionFromRotation(camera.xRot(), camera.yRot()).scale(0.1)) + targetPositions.forEach { targetPos -> Gizmos.line(start, targetPos, color.packed, thickness).depth(depth) } + } + + @JvmStatic + @JvmOverloads + fun drawText(text: String, pos: Vec3, scale: Float = 1f, backgroundBox: Boolean = false, increase: Boolean = false, seeThrough: Boolean = false, translate: Boolean = true) { + val camera = MinecraftCompat.mainCamera(client.gameRenderer) + val distanceScale = if (increase) (pos.distanceTo(camera.position()).toFloat() / 120f).coerceAtLeast(0.01f) else 1f + val style = TextGizmo.Style.whiteAndCentered().withScale(TextGizmo.Style.DEFAULT_SCALE * scale * distanceScale) + Gizmos.billboardText(text, if (translate) pos else camera.position(), style).apply { + if (seeThrough) setAlwaysOnTop() + } + } + + @JvmStatic + @JvmOverloads + fun drawTexts(texts: Array, positions: Array, scale: Float = 1f, backgroundBox: Boolean = false, increase: Boolean = false, seeThrough: Boolean = false, translate: Boolean = true) { + val camera = MinecraftCompat.mainCamera(client.gameRenderer) + for (i in 0 until minOf(texts.size, positions.size)) { + val pos = positions[i] + val distanceScale = if (increase) (pos.distanceTo(camera.position()).toFloat() / 120f).coerceAtLeast(0.01f) else 1f + val style = TextGizmo.Style.whiteAndCentered().withScale(TextGizmo.Style.DEFAULT_SCALE * scale * distanceScale) + Gizmos.billboardText(texts[i], if (translate) pos else camera.position(), style).apply { + if (seeThrough) setAlwaysOnTop() + } + } + } + + private fun net.minecraft.gizmos.GizmoProperties.depth(depth: Boolean) = apply { + if (!depth) setAlwaysOnTop() + } +} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/RenderLayers.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/RenderLayers.kt deleted file mode 100644 index ea23be66..00000000 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/RenderLayers.kt +++ /dev/null @@ -1,93 +0,0 @@ -package com.chattriggers.ctjs.api.render - -import com.mojang.blaze3d.pipeline.ColorTargetState -import com.mojang.blaze3d.pipeline.BlendFunction -import com.mojang.blaze3d.pipeline.DepthStencilState -import com.mojang.blaze3d.pipeline.RenderPipeline -import com.mojang.blaze3d.platform.CompareOp -import com.mojang.blaze3d.vertex.DefaultVertexFormat -import com.mojang.blaze3d.vertex.VertexFormat.Mode -import net.minecraft.client.renderer.rendertype.LayeringTransform -import net.minecraft.client.renderer.rendertype.RenderSetup -import net.minecraft.client.renderer.rendertype.RenderType -import net.minecraft.client.renderer.RenderPipelines as MinecraftRenderPipelines - -object RenderPipelines { - @JvmField - val LINE_LIST: RenderPipeline = MinecraftRenderPipelines.register( - RenderPipeline.builder(MinecraftRenderPipelines.LINES_SNIPPET) - .withLocation("pipeline/ctjs_lines") - .withVertexFormat(DefaultVertexFormat.POSITION_COLOR_NORMAL_LINE_WIDTH, Mode.LINES) - .withCull(false) - .withColorTargetState(ColorTargetState(BlendFunction.TRANSLUCENT)) - .withDepthStencilState(DepthStencilState(CompareOp.LESS_THAN_OR_EQUAL, true)) - .build() - ) - - @JvmField - val LINE_LIST_ESP: RenderPipeline = MinecraftRenderPipelines.register( - RenderPipeline.builder(MinecraftRenderPipelines.LINES_SNIPPET) - .withLocation("pipeline/ctjs_lines_esp") - .withVertexFormat(DefaultVertexFormat.POSITION_COLOR_NORMAL_LINE_WIDTH, Mode.LINES) - .withCull(false) - .withColorTargetState(ColorTargetState(BlendFunction.TRANSLUCENT)) - .withDepthStencilState(DepthStencilState(CompareOp.ALWAYS_PASS, false)) - .build() - ) - - @JvmField - val TRIANGLE_STRIP: RenderPipeline = MinecraftRenderPipelines.register( - RenderPipeline.builder(MinecraftRenderPipelines.DEBUG_FILLED_SNIPPET) - .withLocation("pipeline/ctjs_debug_filled_box") - .withCull(false) - .withVertexFormat(DefaultVertexFormat.POSITION_COLOR, Mode.QUADS) - .withDepthStencilState(DepthStencilState(CompareOp.LESS_THAN_OR_EQUAL, true)) - .withColorTargetState(ColorTargetState(BlendFunction.TRANSLUCENT)) - .build() - ) - - @JvmField - val TRIANGLE_STRIP_ESP: RenderPipeline = MinecraftRenderPipelines.register( - RenderPipeline.builder(MinecraftRenderPipelines.DEBUG_FILLED_SNIPPET) - .withLocation("pipeline/ctjs_debug_filled_box_esp") - .withCull(false) - .withVertexFormat(DefaultVertexFormat.POSITION_COLOR, Mode.QUADS) - .withDepthStencilState(DepthStencilState(CompareOp.ALWAYS_PASS, false)) - .withColorTargetState(ColorTargetState(BlendFunction.TRANSLUCENT)) - .build() - ) -} - -object RenderLayers { - @JvmField - val LINE_LIST: RenderType = RenderType.create( - "line-list", - RenderSetup.builder(RenderPipelines.LINE_LIST) - .setLayeringTransform(LayeringTransform.VIEW_OFFSET_Z_LAYERING) - .createRenderSetup() - ) - - @JvmField - val LINE_LIST_ESP: RenderType = RenderType.create( - "line-list-esp", - RenderSetup.builder(RenderPipelines.LINE_LIST_ESP) - .createRenderSetup() - ) - - @JvmField - val TRIANGLE_STRIP: RenderType = RenderType.create( - "triangle_strip", - RenderSetup.builder(RenderPipelines.TRIANGLE_STRIP) - .setLayeringTransform(LayeringTransform.VIEW_OFFSET_Z_LAYERING) - .sortOnUpload() - .createRenderSetup() - ) - - @JvmField - val TRIANGLE_STRIP_ESP: RenderType = RenderType.create( - "triangle_strip_esp", - RenderSetup.builder(RenderPipelines.TRIANGLE_STRIP_ESP) - .sortOnUpload() - .createRenderSetup() - ) -} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/RenderUtils.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/RenderUtils.kt deleted file mode 100644 index 17204051..00000000 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/RenderUtils.kt +++ /dev/null @@ -1,260 +0,0 @@ -package com.chattriggers.ctjs.api.render - -import com.chattriggers.ctjs.internal.engine.CTEvents -import net.minecraft.client.Minecraft -import net.minecraft.client.gui.Font -import net.minecraft.client.renderer.rendertype.RenderType -import com.mojang.blaze3d.vertex.VertexConsumer -import net.minecraft.client.renderer.MultiBufferSource -import com.mojang.blaze3d.vertex.ByteBufferBuilder -import com.mojang.blaze3d.vertex.PoseStack -import net.minecraft.world.entity.Entity -import net.minecraft.world.phys.AABB -import net.minecraft.util.ARGB -import net.minecraft.world.phys.Vec3 -import org.joml.Quaternionf -import kotlin.math.max -import kotlin.math.min - -object RenderUtils { - private val client = Minecraft.getInstance() - private val bufferSource = MultiBufferSource.immediate(ByteBufferBuilder(2 * 1024 * 1024)) - private val boxes = mutableListOf() - private val lines = mutableListOf() - private val texts = mutableListOf() - - private data class BoxCommand(val box: AABB, val color: Color, val filled: Boolean, val depth: Boolean, val thickness: Float) - private data class LineCommand(val start: Vec3, val end: Vec3, val color: Color, val thickness: Float, val depth: Boolean) - private data class BatchKey(val layer: RenderType, val thickness: Float?) - private data class TextCommand( - val text: String, - val pos: Vec3, - val scale: Float, - val backgroundBox: Boolean, - val increase: Boolean, - val seeThrough: Boolean, - val translate: Boolean, - ) - - data class Color(val r: Int, val g: Int, val b: Int, val a: Int) { - val rf = r / 255f - val gf = g / 255f - val bf = b / 255f - val af = a / 255f - val packed = ARGB.color(a, r, g, b) - } - - init { - CTEvents.POST_RENDER_WORLD.register { matrices, _ -> render(matrices) } - } - - private fun render(matrices: PoseStack) { - if (boxes.isEmpty() && lines.isEmpty() && texts.isEmpty()) return - - val pendingBoxes = boxes.toList().also { boxes.clear() } - val pendingLines = lines.toList().also { lines.clear() } - val pendingTexts = texts.toList().also { texts.clear() } - val camera = client.gameRenderer.mainCamera - - matrices.pushPose() - matrices.translate(-camera.position().x, -camera.position().y, -camera.position().z) - renderBoxes(matrices, pendingBoxes) - renderLines(matrices, pendingLines) - matrices.popPose() - renderTexts(matrices, pendingTexts, camera.position(), camera.rotation()) - - bufferSource.endBatch() - } - - private fun renderBoxes(matrices: PoseStack, commands: List) { - val batches = commands.groupBy { command -> - val layer = when { - command.filled && command.depth -> RenderLayers.TRIANGLE_STRIP - command.filled -> RenderLayers.TRIANGLE_STRIP_ESP - command.depth -> RenderLayers.LINE_LIST - else -> RenderLayers.LINE_LIST_ESP - } - BatchKey(layer, command.thickness.takeUnless { command.filled }?.coerceAtLeast(0.1f)) - } - - for ((key, batch) in batches) { - val buffer = bufferSource.getBuffer(key.layer) - - for ((box, color, filled) in batch) { - if (filled) { - writeFilledBox(matrices.last(), buffer, box, color.packed) - } else { - writeBox(matrices.last(), buffer, box, color.packed, key.thickness ?: 1f) - } - } - bufferSource.endBatch() - } - } - - private fun renderLines(matrices: PoseStack, commands: List) { - val batches = commands.groupBy { command -> - val layer = if (command.depth) RenderLayers.LINE_LIST else RenderLayers.LINE_LIST_ESP - BatchKey(layer, command.thickness.coerceAtLeast(0.1f)) - } - - for ((key, batch) in batches) { - val buffer = bufferSource.getBuffer(key.layer) - for ((start, end, color) in batch) { - writeLine(matrices.last(), buffer, start, end, color.packed, requireNotNull(key.thickness)) - } - bufferSource.endBatch() - } - } - - private fun writeFilledBox(entry: PoseStack.Pose, buffer: VertexConsumer, box: AABB, argb: Int) { - val minX = min(box.minX, box.maxX).toFloat() - val minY = min(box.minY, box.maxY).toFloat() - val minZ = min(box.minZ, box.maxZ).toFloat() - val maxX = max(box.minX, box.maxX).toFloat() - val maxY = max(box.minY, box.maxY).toFloat() - val maxZ = max(box.minZ, box.maxZ).toFloat() - - quad(buffer, entry, minX, minY, minZ, maxX, minY, minZ, maxX, maxY, minZ, minX, maxY, minZ, argb) - quad(buffer, entry, minX, minY, maxZ, minX, maxY, maxZ, maxX, maxY, maxZ, maxX, minY, maxZ, argb) - quad(buffer, entry, minX, minY, minZ, minX, maxY, minZ, minX, maxY, maxZ, minX, minY, maxZ, argb) - quad(buffer, entry, maxX, minY, minZ, maxX, minY, maxZ, maxX, maxY, maxZ, maxX, maxY, minZ, argb) - quad(buffer, entry, minX, maxY, minZ, maxX, maxY, minZ, maxX, maxY, maxZ, minX, maxY, maxZ, argb) - quad(buffer, entry, minX, minY, minZ, minX, minY, maxZ, maxX, minY, maxZ, maxX, minY, minZ, argb) - } - - private fun quad( - buffer: VertexConsumer, - entry: PoseStack.Pose, - x1: Float, y1: Float, z1: Float, - x2: Float, y2: Float, z2: Float, - x3: Float, y3: Float, z3: Float, - x4: Float, y4: Float, z4: Float, - argb: Int, - ) { - buffer.addVertex(entry, x1, y1, z1).setColor(argb) - buffer.addVertex(entry, x2, y2, z2).setColor(argb) - buffer.addVertex(entry, x3, y3, z3).setColor(argb) - buffer.addVertex(entry, x4, y4, z4).setColor(argb) - } - - private fun writeBox(entry: PoseStack.Pose, buffer: VertexConsumer, box: AABB, argb: Int, lineWidth: Float) { - val min = Vec3(box.minX, box.minY, box.minZ) - val max = Vec3(box.maxX, box.maxY, box.maxZ) - val corners = arrayOf( - Vec3(min.x, min.y, min.z), Vec3(max.x, min.y, min.z), - Vec3(max.x, min.y, max.z), Vec3(min.x, min.y, max.z), - Vec3(min.x, max.y, min.z), Vec3(max.x, max.y, min.z), - Vec3(max.x, max.y, max.z), Vec3(min.x, max.y, max.z), - ) - val edges = intArrayOf(0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7) - for (i in edges.indices step 2) { - writeLine(entry, buffer, corners[edges[i]], corners[edges[i + 1]], argb, lineWidth) - } - } - - private fun writeLine(entry: PoseStack.Pose, buffer: VertexConsumer, start: Vec3, end: Vec3, argb: Int, lineWidth: Float) { - val normal = end.subtract(start).normalize() - - buffer.addVertex(entry, start.x.toFloat(), start.y.toFloat(), start.z.toFloat()).setColor(argb).setNormal(entry, normal.x.toFloat(), normal.y.toFloat(), normal.z.toFloat()).setLineWidth(lineWidth) - buffer.addVertex(entry, end.x.toFloat(), end.y.toFloat(), end.z.toFloat()).setColor(argb).setNormal(entry, normal.x.toFloat(), normal.y.toFloat(), normal.z.toFloat()).setLineWidth(lineWidth) - } - - private fun renderTexts(matrices: PoseStack, commands: List, cameraPos: Vec3, cameraRotation: Quaternionf) { - for ((text, pos, scale, backgroundBox, increase, seeThrough, translate) in commands) { - val relative = pos.subtract(cameraPos) - matrices.pushPose() - if (translate) matrices.translate(relative.x, relative.y, relative.z) - matrices.mulPose(cameraRotation) - - val renderScale = if (increase) { - scale * (relative.length().toFloat() / 120f).coerceAtLeast(0.01f) - } else { - scale * 0.025f - } - matrices.scale(renderScale, -renderScale, renderScale) - - client.font.drawInBatch( - text, - -client.font.width(text) / 2f, - 0f, - -1, - backgroundBox, - matrices.last().pose(), - bufferSource, - if (seeThrough) Font.DisplayMode.SEE_THROUGH else Font.DisplayMode.NORMAL, - 0, - 15728880, - ) - matrices.popPose() - } - } - - @JvmStatic - @JvmOverloads - fun drawFilledBox(pos: Vec3, color: Color, depth: Boolean = false) = - drawFilledBox(AABB(pos.x, pos.y, pos.z, pos.x + 1, pos.y + 1, pos.z + 1), color, depth) - - @JvmStatic - @JvmOverloads - fun drawFilledBox(box: AABB, color: Color, depth: Boolean = false) { - boxes += BoxCommand(box, color, true, depth, 1f) - } - - @JvmStatic - @JvmOverloads - fun drawWireFrameBox(pos: Vec3, color: Color, thickness: Float = 5f, depth: Boolean = false) = - drawWireFrameBox(AABB(pos.x, pos.y, pos.z, pos.x + 1, pos.y + 1, pos.z + 1), color, thickness, depth) - - @JvmStatic - @JvmOverloads - fun drawWireFrameBox(box: AABB, color: Color, thickness: Float = 5f, depth: Boolean = false) { - boxes += BoxCommand(box, color, false, depth, thickness) - } - - @JvmStatic - @JvmOverloads - fun drawBox(box: AABB, color: Color, thickness: Float = 2f, depth: Boolean = false) { - drawFilledBox(box, color, depth) - drawWireFrameBox(box, color, thickness, depth) - } - - @JvmStatic - @JvmOverloads - fun drawStyledBox(pos: Vec3, color1: Color, color2: Color, wireThickness: Float = 5f, depth: Boolean = false) { - val box = AABB(pos.x, pos.y, pos.z, pos.x + 1, pos.y + 1, pos.z + 1) - drawFilledBox(box, color1, depth) - drawWireFrameBox(box, color2, wireThickness, depth) - } - - @JvmStatic - @JvmOverloads - fun drawSizedBox(pos: Vec3, width: Double, height: Double, length: Double, color: Color, filled: Boolean = true, thickness: Float = 1f, depth: Boolean = false) { - val box = AABB(pos.x - width / 2, pos.y, pos.z - length / 2, pos.x + width / 2, pos.y + height, pos.z + length / 2) - boxes += BoxCommand(box, color, filled, depth, thickness) - } - - @JvmStatic - @JvmOverloads - fun drawHitbox(entity: Entity, color: Color, thickness: Float = 2f, depth: Boolean = false) = - drawBox(entity.boundingBox, color, thickness, depth) - - @JvmStatic - @JvmOverloads - fun drawLine(start: Vec3, end: Vec3, color: Color, thickness: Float = 3f, depth: Boolean = false) { - lines += LineCommand(start, end, color, thickness, depth) - } - - @JvmStatic - @JvmOverloads - fun drawTracer(targetPos: Vec3, color: Color, thickness: Float = 2f, depth: Boolean = false) { - val camera = client.gameRenderer.mainCamera - val start = camera.position().add(Vec3.directionFromRotation(camera.xRot(), camera.yRot()).scale(0.1)) - drawLine(start, targetPos, color, thickness, depth) - } - - @JvmStatic - @JvmOverloads - fun drawText(text: String, pos: Vec3, scale: Float = 1f, backgroundBox: Boolean = false, increase: Boolean = false, seeThrough: Boolean = false, translate: Boolean = true) { - texts += TextCommand(text, pos, scale, backgroundBox, increase, seeThrough, translate) - } -} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer3d.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer3d.kt deleted file mode 100644 index b29221d6..00000000 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Renderer3d.kt +++ /dev/null @@ -1,339 +0,0 @@ -package com.chattriggers.ctjs.api.render - -import com.chattriggers.ctjs.api.client.Client -import com.chattriggers.ctjs.api.vec.Vec3f -import com.chattriggers.ctjs.internal.utils.get -import com.mojang.blaze3d.systems.RenderSystem -import gg.essential.universal.UGraphics -import net.minecraft.client.gui.Font -import net.minecraft.util.LightCoordsUtil -import com.mojang.blaze3d.vertex.Tesselator -import org.joml.Vector3f -import org.mozilla.javascript.NativeObject - -object Renderer3d { - private var firstVertex = true - private var began = false - - private val tessellator = Tesselator.getInstance() - private val worldRenderer = UGraphics.getFromTessellator() - - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer3d] to allow for method chaining - * @see Renderer.DrawMode - */ - @JvmStatic - @JvmOverloads - fun begin( - drawMode: Renderer.DrawMode = Renderer.DrawMode.QUADS, - vertexFormat: Renderer.VertexFormat = Renderer.VertexFormat.POSITION, - snippet: Renderer.RenderSnippet = Renderer.RenderSnippet.POSITION_COLOR_SNIPPET - ) = apply { - Renderer.pushMatrix() - .enableBlend() - .disableCull() - worldRenderer.beginRenderLayer(LegacyPipelineBuilder.begin(drawMode, vertexFormat, snippet).layer()) - - firstVertex = true - began = true - } - - /** - * Sets a new vertex in the world renderer. - * - * @param x the x position - * @param y the y position - * @param z the z position - * @return [Renderer3d] to allow for method chaining - */ - @JvmStatic - fun pos(x: Float, y: Float, z: Float) = apply { - if (!began) - begin() - if (!firstVertex) - worldRenderer.endVertex() - val camera = Client.getMinecraft().gameRenderer.mainCamera.position() - worldRenderer.pos(Renderer.matrixStack, x.toDouble() - camera.x, y.toDouble() - camera.y, z.toDouble() - camera.z) - firstVertex = false - } - - /** - * Sets the texture location on the last defined vertex. - * - * @param u the u position in the texture - * @param v the v position in the texture - * @return [Renderer3d] to allow for method chaining - */ - @JvmStatic - fun tex(u: Float, v: Float) = apply { - worldRenderer.tex(u.toDouble(), v.toDouble()) - } - - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 1 - * @param g the green value of the color, between 0 and 1 - * @param b the blue value of the color, between 0 and 1 - * @param a the alpha value of the color, between 0 and 1 - * @return [Renderer3d] to allow for method chaining - */ - @JvmStatic - @JvmOverloads - fun color(r: Float, g: Float, b: Float, a: Float = 1f) = apply { - worldRenderer.color(r, g, b, a) - } - - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 255 - * @param g the green value of the color, between 0 and 255 - * @param b the blue value of the color, between 0 and 255 - * @param a the alpha value of the color, between 0 and 255 - * @return [Renderer3d] to allow for method chaining - */ - @JvmStatic - @JvmOverloads - fun color(r: Int, g: Int, b: Int, a: Int = 255) = apply { - worldRenderer.color(r, g, b, a) - } - - /** - * Sets the color for the last defined vertex. - * - * @param color the color value, can use [Renderer.getColor] to get this - * @return [Renderer3d] to allow for method chaining - */ - @JvmStatic - fun color(color: Long) = apply { - color( - ((color ushr 16) and 0xFF).toInt(), - ((color ushr 8) and 0xFF).toInt(), - (color and 0xFF).toInt(), - ((color ushr 24) and 0xFF).toInt(), - ) - } - - /** - * Sets the normal of the vertex. This is mostly used with [Renderer.VertexFormat.LINES] - * - * @param x the x position of the normal vector - * @param y the y position of the normal vector - * @param z the z position of the normal vector - * @return [Renderer3d] to allow for method chaining - */ - @JvmStatic - fun normal(x: Float, y: Float, z: Float) = apply { - worldRenderer.norm(Renderer.matrixStack, x, y, z) - } - - /** - * Sets the overlay location on the last defined vertex. - * - * @param u the u position in the overlay - * @param v the v position in the overlay - * @return [Renderer3d] to allow for method chaining - */ - @JvmStatic - fun overlay(u: Int, v: Int) = apply { - worldRenderer.overlay(u, v) - } - - /** - * Sets the light location on the last defined vertex. - * - * @param u the u position in the light - * @param v the v position in the light - * @return [Renderer3d] to allow for method chaining - */ - @JvmStatic - fun light(u: Int, v: Int) = apply { - worldRenderer.light(u, v) - } - - /** - * Finalizes vertices and draws the world renderer. - */ - @JvmStatic - fun draw() { - if (!began) - return - began = false - - worldRenderer.endVertex() - - worldRenderer.drawDirect() - Renderer.disableBlend() - .enableCull() - .popMatrix() - } - - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - @JvmStatic - @JvmOverloads - fun drawString( - text: String, - x: Float, - y: Float, - z: Float, - color: Long = Renderer.WHITE, - renderBlackBox: Boolean = true, - scale: Float = 1f, - increase: Boolean = false, - centered: Boolean = true, - renderThroughBlocks: Boolean = true, - ) { - val (lines, width, height) = Renderer.splitText(text) - - val fontRenderer = Renderer.getFontRenderer() - val camera = Client.getMinecraft().gameRenderer.mainCamera - val renderPos = Vec3f( - x - camera.position().x.toFloat(), - y - camera.position().y.toFloat(), - z - camera.position().z.toFloat(), - ) - - val lScale = scale * if (increase) { - renderPos.magnitude() / 120f //mobs only render ~120 blocks away - } else { - 0.025f - } - - Renderer.pushMatrix() - Renderer.translate(renderPos.x, renderPos.y, renderPos.z) - Renderer.multiply(camera.rotation()) - Renderer.scale(lScale, -lScale, lScale) - - val opacity = (Client.getMinecraft().options.getBackgroundOpacity(0.25f) * 255).toInt() shl 24 - - val xShift = -width / 2 - val yShift = -height / 2 - - val vertexConsumers = Client.getMinecraft().renderBuffers().bufferSource() - var yOffset = 0 - val textLayer = if (renderThroughBlocks) Font.DisplayMode.SEE_THROUGH else Font.DisplayMode.NORMAL - - for (line in lines) { - val centerShift = if (centered) { - xShift + (fontRenderer.width(line) / 2f) - } else 0f - - Renderer.pushMatrix() - val matrix = Renderer.matrixStack.toMC().last().pose() - - if (renderBlackBox) { - fontRenderer.drawInBatch( - line, - xShift - centerShift, - yShift + yOffset, - 0x20FFFFFF, - false, - matrix, - vertexConsumers, - textLayer, - opacity, - LightCoordsUtil.FULL_BRIGHT - ) - Renderer.translate(0f, 0f, -0.03f) - } - - fontRenderer.drawInBatch( - line, - xShift - centerShift, - yShift + yOffset, - color.toInt(), - false, - matrix, - vertexConsumers, - textLayer, - 0, - LightCoordsUtil.FULL_BRIGHT - ) - vertexConsumers.endBatch() - Renderer.popMatrix() - - yOffset += fontRenderer.lineHeight + 1 - } - - Renderer.popMatrix() - } - - /** - * A variant of drawString that takes an object instead of positional parameters - */ - @JvmStatic - fun drawString(obj: NativeObject) { - drawString( - obj.get("text") ?: error("Expected \"text\" property in object passed to Renderer3d.drawString"), - obj.get("x")?.toFloat() - ?: error("Expected \"x\" property in object passed to Renderer3d.drawString"), - obj.get("y")?.toFloat() - ?: error("Expected \"y\" property in object passed to Renderer3d.drawString"), - obj.get("z")?.toFloat() - ?: error("Expected \"z\" property in object passed to Renderer3d.drawString"), - obj.get("color")?.toLong() ?: Renderer.WHITE, - obj.get("renderBlackBox") ?: true, - obj.get("scale")?.toFloat() ?: 1f, - obj.get("increase") ?: false, - obj.get("centered") ?: true, - obj.get("renderThroughBlocks") ?: true, - ) - } - - /** - * Draws a line in the world from (x1, y1, z1) to (x2, y2, z2) - * - * @param color the color of the line - * @param x1 the starting x coordinate - * @param y1 the starting y coordinate - * @param z1 the starting z coordinate - * @param x2 the ending x coordinate - * @param y2 the ending y coordinate - * @param z2 the ending z coordinate - */ - @JvmStatic - fun drawLine( - color: Long, - x1: Float, - y1: Float, - z1: Float, - x2: Float, - y2: Float, - z2: Float, - ) { - Renderer.pushMatrix() - .disableDepth() - .disableCull() - - val normalVec = Vector3f(x2 - x1, y2 - y1, z2 - z1).normalize() - - begin(Renderer.DrawMode.LINES, Renderer.VertexFormat.LINES, Renderer.RenderSnippet.RENDERTYPE_LINES_SNIPPET) - pos(x1, y1, z1).color(color).normal(normalVec.x, normalVec.y, normalVec.z) - pos(x2, y2, z2).color(color).normal(normalVec.x, normalVec.y, normalVec.z) - draw() - - Renderer - .enableCull() - .enableDepth() - .popMatrix() - } -} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Shape.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Shape.kt deleted file mode 100644 index bba12c00..00000000 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Shape.kt +++ /dev/null @@ -1,125 +0,0 @@ -package com.chattriggers.ctjs.api.render - -import com.chattriggers.ctjs.api.vec.Vec2f -import kotlin.math.PI -import kotlin.math.atan2 -import kotlin.math.cos -import kotlin.math.sin - -class Shape(private var color: Long) { - private val vertexes = mutableListOf() - private val reversedVertexes = vertexes.asReversed() - private var drawMode = Renderer.DrawMode.QUADS - private var area = 0f - - fun copy(): Shape = clone() - - fun clone(): Shape { - val clone = Shape(color) - clone.vertexes.addAll(vertexes) - clone.setDrawMode(drawMode) - return clone - } - - fun getColor(): Long = color - - fun setColor(color: Long) = apply { this.color = Renderer.fixAlpha(color) } - - fun getDrawMode(): Renderer.DrawMode = drawMode - - /** - * Sets the GL draw mode of the shape - */ - fun setDrawMode(drawMode: Renderer.DrawMode) = apply { this.drawMode = drawMode } - - fun getVertexes(): List = vertexes - - fun addVertex(x: Float, y: Float) = apply { - vertexes.add(Vec2f(x, y)) - updateArea() - } - - fun insertVertex(index: Int, x: Float, y: Float) = apply { - vertexes.add(index, Vec2f(x, y)) - updateArea() - } - - fun removeVertex(index: Int) = apply { - vertexes.removeAt(index) - updateArea() - } - - fun clearVertices() = apply { - vertexes.clear() - area = 0f - } - - /** - * Sets the shape as a line pointing from [x1, y1] to [x2, y2] with a thickness - */ - fun setLine(x1: Float, y1: Float, x2: Float, y2: Float, thickness: Float) = apply { - vertexes.clear() - - val theta = -atan2(y2 - y1, x2 - x1) - val i = sin(theta) * (thickness / 2) - val j = cos(theta) * (thickness / 2) - - vertexes.add(Vec2f(x1 + i, y1 + j)) - vertexes.add(Vec2f(x2 + i, y2 + j)) - vertexes.add(Vec2f(x2 - i, y2 - j)) - vertexes.add(Vec2f(x1 - i, y1 - j)) - updateArea() - - drawMode = Renderer.DrawMode.QUADS - } - - /** - * Sets the shape as a circle with a center at [x, y] - * with radius and number of steps around the circle - */ - fun setCircle(x: Float, y: Float, radius: Float, steps: Int) = apply { - vertexes.clear() - - val theta = 2 * PI / steps - val cos = cos(theta).toFloat() - val sin = sin(theta).toFloat() - - var xHolder: Float - var circleX = 1f - var circleY = 0f - - for (i in 0..steps) { - vertexes.add(Vec2f(x, y)) - vertexes.add(Vec2f(circleX * radius + x, circleY * radius + y)) - xHolder = circleX - circleX = cos * circleX - sin * circleY - circleY = sin * xHolder + cos * circleY - vertexes.add(Vec2f(circleX * radius + x, circleY * radius + y)) - } - - updateArea() - drawMode = Renderer.DrawMode.TRIANGLE_STRIP - } - - fun draw() = apply { - Renderer.apply { - begin(drawMode, Renderer.VertexFormat.POSITION_COLOR) - - if (area < 0) { - vertexes.forEach { pos(it.x, it.y).color(color) } - } else { - reversedVertexes.forEach { pos(it.x, it.y).color(color) } - } - - draw() - } - } - - private fun updateArea() { - area = vertexes.indices.sumOf { i -> - val p1 = vertexes[i] - val p2 = vertexes[(i + 1) % vertexes.size] - (p1.x * p2.y - p2.x * p1.y).toDouble() - }.toFloat() / 2 - } -} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Text.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Text.kt index 8530c165..7653f35a 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Text.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/Text.kt @@ -58,7 +58,7 @@ class Text { fun getColor(): Long = color - fun setColor(color: Long) = apply { this.color = Renderer.fixAlpha(color) } + fun setColor(color: Long) = apply { this.color = Render2D.fixAlpha(color) } fun getFormatted(): Boolean = formatted @@ -152,7 +152,7 @@ class Text { ctx.pose().pushMatrix() ctx.pose().scale(scale, scale) - var longestLine = lines.maxOf { Renderer.getStringWidth(it) * scale } + var longestLine = lines.maxOf { Render2D.getStringWidth(it) * scale } if (maxWidth != 0) longestLine = longestLine.coerceAtMost(maxWidth.toFloat()) width = longestLine.toInt() @@ -178,7 +178,7 @@ class Text { } for (i in 0 until minOf(maxLines, lines.size)) { - ctx.text(Renderer.getFontRenderer(), lines[i], xHolder, yHolder, color.toInt(), shadow) + ctx.text(Render2D.getFontRenderer(), lines[i], xHolder, yHolder, color.toInt(), shadow) yHolder += 10 } ctx.pose().popMatrix() @@ -194,7 +194,7 @@ class Text { string.split("\n").forEach { line -> if (maxWidth > 0) { lines.addAll( - Renderer.getFontRenderer().splitter.splitLines(line, maxWidth, Style.EMPTY).map { it.string } + Render2D.getFontRenderer().splitter.splitLines(line, maxWidth, Style.EMPTY).map { it.string } ) } else { lines.add(line) diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/Toast.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/Toast.kt index 35544699..7e524ac9 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/render/Toast.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/Toast.kt @@ -1,5 +1,7 @@ package com.chattriggers.ctjs.api.render +import com.chattriggers.ctjs.api.client.MinecraftCompat + import com.chattriggers.ctjs.api.client.Client import com.chattriggers.ctjs.api.message.TextComponent import com.chattriggers.ctjs.engine.printTraceToConsole @@ -94,7 +96,7 @@ class Toast(config: NativeObject) : MCToast { fun show() = apply { startTime = null - Client.getMinecraft().toastManager.addToast(this) + MinecraftCompat.toastManager(Client.getMinecraft()).addToast(this) } override fun getWantedVisibility(): MCToast.Visibility = visibility @@ -110,7 +112,7 @@ class Toast(config: NativeObject) : MCToast { val render = customRenderFunction if (render != null) { DrawContextHolder.withContext(context) { - Renderer.withMatrix(UMatrixStack(context.pose()).toMC()) { + Render2D.withMatrix(UMatrixStack(context.pose()).toMC()) { try { JSLoader.invoke(render, emptyArray(), thisObj = requireNotNull(jsReceiver)) } catch (e: Throwable) { diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaBootstrap.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaBootstrap.kt new file mode 100644 index 00000000..1e1409d8 --- /dev/null +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaBootstrap.kt @@ -0,0 +1,38 @@ +package com.chattriggers.ctjs.api.render.skia + +import net.fabricmc.loader.api.FabricLoader +import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint +import net.fabricmc.loader.impl.launch.FabricLauncherBase +import java.net.URI +import java.nio.file.Files +import java.nio.file.StandardCopyOption + +class SkijaBootstrap : PreLaunchEntrypoint { + override fun onPreLaunch() { + val artifact = when { + System.getProperty("os.name").contains("win", true) -> "skija-windows-x64" + System.getProperty("os.name").contains("mac", true) && System.getProperty("os.arch").contains("aarch64", true) -> "skija-macos-arm64" + System.getProperty("os.name").contains("mac", true) -> "skija-macos-x64" + System.getProperty("os.arch").contains("aarch64", true) -> "skija-linux-arm64" + else -> "skija-linux-x64" + } + val cache = FabricLoader.getInstance().gameDir.resolve("config/ChatTriggers/cache") + val file = cache.resolve("$artifact-$VERSION.jar") + if (!Files.exists(file)) { + Files.createDirectories(cache) + val temporary = Files.createTempFile(cache, "skija-", ".tmp") + try { + URI("https://repo1.maven.org/maven2/io/github/humbleui/$artifact/$VERSION/${file.fileName}") + .toURL().openStream().use { Files.copy(it, temporary, StandardCopyOption.REPLACE_EXISTING) } + Files.move(temporary, file, StandardCopyOption.REPLACE_EXISTING) + } finally { + Files.deleteIfExists(temporary) + } + } + FabricLauncherBase.getLauncher().addToClassPath(file) + } + + private companion object { + const val VERSION = "0.143.11" + } +} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaPIP.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaPIP.kt new file mode 100644 index 00000000..dae97fbc --- /dev/null +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaPIP.kt @@ -0,0 +1,70 @@ +package com.chattriggers.ctjs.api.render.skia + +import com.chattriggers.ctjs.api.render.Render2D +import com.mojang.blaze3d.systems.RenderSystem +import net.minecraft.client.gui.GuiGraphicsExtractor +import net.minecraft.client.gui.navigation.ScreenRectangle +import net.minecraft.client.renderer.state.gui.pip.PictureInPictureRenderState +import org.joml.Matrix3x2f + +internal object SkijaPIP { + @JvmStatic + fun draw(graphics: GuiGraphicsExtractor, callback: Runnable, pre: Boolean = false) { + val width = graphics.guiWidth() + val height = graphics.guiHeight() + val pose = Matrix3x2f(graphics.pose()) + val screen = ScreenRectangle(0, 0, width, height).transformMaxBounds(pose) + val scissor = graphics.scissorStack.peek() + val bounds = scissor?.intersection(screen) ?: screen + if (bounds.width <= 0 || bounds.height <= 0) return + val scale = net.minecraft.client.Minecraft.getInstance().window.guiScale.toFloat() + graphics.guiRenderState.addPicturesInPictureState( + if (pre) PreState(width, height, scale, pose, scissor, bounds, callback) + else State(width, height, scale, pose, scissor, bounds, callback), + ) + } + + @JvmStatic + fun render(surface: SkijaSurface, state: State) { + val color = RenderSystem.outputColorTextureOverride ?: return + surface.render(color.getWidth(0), color.getHeight(0), color.texture()) { canvas -> + canvas.resetMatrix() + canvas.scale(state.guiScale, state.guiScale) + Render2D.beginSkijaFrame(canvas) + try { + state.callback.run() + } finally { + Render2D.endSkijaFrame() + } + } + } + + open class State( + private val width: Int, + private val height: Int, + val guiScale: Float, + private val poseMatrix: Matrix3x2f, + private val scissor: ScreenRectangle?, + private val area: ScreenRectangle, + val callback: Runnable, + ) : PictureInPictureRenderState { + override fun x0() = 0 + override fun y0() = 0 + override fun x1() = width + override fun y1() = height + override fun scale() = 1f + override fun pose() = poseMatrix + override fun scissorArea() = scissor + override fun bounds() = area + } + + class PreState( + width: Int, + height: Int, + guiScale: Float, + poseMatrix: Matrix3x2f, + scissor: ScreenRectangle?, + area: ScreenRectangle, + callback: Runnable, + ) : State(width, height, guiScale, poseMatrix, scissor, area, callback) +} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaPIPFactory.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaPIPFactory.kt new file mode 100644 index 00000000..843c27d7 --- /dev/null +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaPIPFactory.kt @@ -0,0 +1,59 @@ +package com.chattriggers.ctjs.api.render.skia + +import com.mojang.blaze3d.vertex.PoseStack +import net.minecraft.client.gui.render.pip.PictureInPictureRenderer +//? if <26.2 { +/*import net.minecraft.client.renderer.MultiBufferSource +*///?} else { +import net.minecraft.client.renderer.SubmitNodeCollector +//?} + +//? if <26.2 { +/*internal fun createSkijaPIP(factoryInput: Any?, pre: Boolean): PictureInPictureRenderer<*> { + val buffers = factoryInput!!.javaClass.getMethod("bufferSource").invoke(factoryInput) as MultiBufferSource.BufferSource + return if (pre) SkijaPrePIPRenderer(buffers) else SkijaPIPRenderer(buffers) +} + +private open class SkijaPIPRenderer(buffers: MultiBufferSource.BufferSource) : + PictureInPictureRenderer(buffers) { + private val surface = SkijaSurface() + + override fun getTranslateY(height: Int, guiScale: Int) = height / 2f + override fun getRenderStateClass() = SkijaPIP.State::class.java + override fun getTextureLabel() = "V5 Skija" + override fun renderToTexture(state: SkijaPIP.State, poseStack: PoseStack) = SkijaPIP.render(surface, state) + + override fun close() { + surface.close() + super.close() + } +} + +private class SkijaPrePIPRenderer(buffers: MultiBufferSource.BufferSource) : SkijaPIPRenderer(buffers) { + @Suppress("UNCHECKED_CAST") + override fun getRenderStateClass() = SkijaPIP.PreState::class.java as Class +} +*///?} else { +internal fun createSkijaPIP(factoryInput: Any?, pre: Boolean): PictureInPictureRenderer<*> = + if (pre) SkijaPrePIPRenderer() else SkijaPIPRenderer() + +private open class SkijaPIPRenderer : PictureInPictureRenderer() { + private val surface = SkijaSurface() + + override fun getTranslateY(height: Int, guiScale: Int) = height / 2f + override fun getRenderStateClass() = SkijaPIP.State::class.java + override fun getTextureLabel() = "V5 Skija" + override fun renderToTexture(state: SkijaPIP.State, poseStack: PoseStack, collector: SubmitNodeCollector) = + SkijaPIP.render(surface, state) + + override fun close() { + surface.close() + super.close() + } +} + +private class SkijaPrePIPRenderer : SkijaPIPRenderer() { + @Suppress("UNCHECKED_CAST") + override fun getRenderStateClass() = SkijaPIP.PreState::class.java as Class +} +//?} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaSurface.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaSurface.kt new file mode 100644 index 00000000..5a2e1b19 --- /dev/null +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaSurface.kt @@ -0,0 +1,202 @@ +package com.chattriggers.ctjs.api.render.skia + +import com.mojang.blaze3d.opengl.GlStateManager +import com.mojang.blaze3d.opengl.GlTexture +import com.mojang.blaze3d.textures.GpuTexture +import io.github.humbleui.skija.BackendRenderTarget +import io.github.humbleui.skija.ColorSpace +import io.github.humbleui.skija.ColorType +import io.github.humbleui.skija.DirectContext +import io.github.humbleui.skija.Surface +import io.github.humbleui.skija.SurfaceOrigin +import org.lwjgl.opengl.GL11C +import org.lwjgl.opengl.GL12C +import org.lwjgl.opengl.GL13C +import org.lwjgl.opengl.GL14C +import org.lwjgl.opengl.GL15C +import org.lwjgl.opengl.GL20C +import org.lwjgl.opengl.GL21C +import org.lwjgl.opengl.GL30C +import org.lwjgl.opengl.GL31C +import org.lwjgl.opengl.GL33C + +internal class SkijaSurface : AutoCloseable { + //? if >=26.2 { + private val vulkan = SkijaVulkanSurface() + //?} + private var context: DirectContext? = null + private var renderTarget: BackendRenderTarget? = null + private var surface: Surface? = null + private var fbo = 0 + private var depthStencil = 0 + private var width = 0 + private var height = 0 + private var textureId = 0 + + fun render(width: Int, height: Int, texture: GpuTexture, draw: (io.github.humbleui.skija.Canvas) -> Unit) { + //? if >=26.2 { + if (vulkan.render(width, height, texture, draw)) return + //?} + val colorTexture = texture as? GlTexture ?: return + val state = GlState.capture() + try { + bindTarget(colorTexture.glId(), width, height) + GlStateManager._viewport(0, 0, width, height) + GL33C.glBindSampler(0, 0) + GL15C.glBindBuffer(GL21C.GL_PIXEL_UNPACK_BUFFER, 0) + GL11C.glPixelStorei(GL11C.GL_UNPACK_ALIGNMENT, 1) + GL11C.glPixelStorei(GL12C.GL_UNPACK_ROW_LENGTH, 0) + GL11C.glPixelStorei(GL12C.GL_UNPACK_SKIP_PIXELS, 0) + GL11C.glPixelStorei(GL12C.GL_UNPACK_SKIP_ROWS, 0) + + val directContext = context ?: DirectContext.makeGL().also { context = it } + directContext.resetGLAll() + val skijaSurface = surface(width, height, colorTexture.glId(), directContext) + draw(skijaSurface.canvas) + directContext.flushAndSubmit(skijaSurface, false) + } finally { + context?.resetGLAll() + state.restore() + } + } + + private fun bindTarget(colorTexture: Int, width: Int, height: Int) { + if (fbo == 0) fbo = GlStateManager.glGenFramebuffers() + GlStateManager._glBindFramebuffer(GL30C.GL_FRAMEBUFFER, fbo) + GlStateManager._glFramebufferTexture2D(GL30C.GL_FRAMEBUFFER, GL30C.GL_COLOR_ATTACHMENT0, GL11C.GL_TEXTURE_2D, colorTexture, 0) + if (depthStencil != 0 && this.width == width && this.height == height) return + if (depthStencil != 0) GL30C.glDeleteRenderbuffers(depthStencil) + depthStencil = GL30C.glGenRenderbuffers() + GL30C.glBindRenderbuffer(GL30C.GL_RENDERBUFFER, depthStencil) + GL30C.glRenderbufferStorage(GL30C.GL_RENDERBUFFER, GL30C.GL_DEPTH24_STENCIL8, width, height) + GL30C.glBindRenderbuffer(GL30C.GL_RENDERBUFFER, 0) + GL30C.glFramebufferRenderbuffer(GL30C.GL_FRAMEBUFFER, GL30C.GL_DEPTH_STENCIL_ATTACHMENT, GL30C.GL_RENDERBUFFER, depthStencil) + this.width = width + this.height = height + } + + private fun surface(width: Int, height: Int, texture: Int, context: DirectContext): Surface { + surface?.takeIf { it.width == width && it.height == height && textureId == texture }?.let { return it } + surface?.close() + renderTarget?.close() + renderTarget = BackendRenderTarget.makeGL(width, height, 0, 8, fbo, GL30C.GL_RGBA8) + return Surface.wrapBackendRenderTarget(context, renderTarget!!, SurfaceOrigin.BOTTOM_LEFT, ColorType.RGBA_8888, ColorSpace.getSRGB()) + .also { surface = it; textureId = texture } + } + + override fun close() { + //? if >=26.2 { + vulkan.close() + //?} + surface?.close() + renderTarget?.close() + if (depthStencil != 0) GL30C.glDeleteRenderbuffers(depthStencil) + if (fbo != 0) GlStateManager._glDeleteFramebuffers(fbo) + context?.close() + surface = null + renderTarget = null + context = null + depthStencil = 0 + fbo = 0 + } +} + +private data class GlState( + val readFramebuffer: Int, + val drawFramebuffer: Int, + val viewport: IntArray, + val activeTexture: Int, + val texture: Int, + val sampler: Int, + val program: Int, + val vertexArray: Int, + val arrayBuffer: Int, + val scissorBox: IntArray, + val blendSrcRgb: Int, + val blendDstRgb: Int, + val blendSrcAlpha: Int, + val blendDstAlpha: Int, + val blendEquationRgb: Int, + val blendEquationAlpha: Int, + val blend: Boolean, + val cull: Boolean, + val depth: Boolean, + val stencil: Boolean, + val scissor: Boolean, + val primitiveRestart: Boolean, + val depthMask: Boolean, + val unpackBuffer: Int, + val unpackAlignment: Int, + val unpackRowLength: Int, + val unpackSkipPixels: Int, + val unpackSkipRows: Int, +) { + fun restore() { + GL20C.glUseProgram(program) + GL13C.glActiveTexture(GL13C.GL_TEXTURE0) + GL11C.glBindTexture(GL11C.GL_TEXTURE_2D, texture) + GL33C.glBindSampler(0, sampler) + GL13C.glActiveTexture(activeTexture) + GL30C.glBindVertexArray(vertexArray) + GL15C.glBindBuffer(GL15C.GL_ARRAY_BUFFER, arrayBuffer) + GL20C.glBlendEquationSeparate(blendEquationRgb, blendEquationAlpha) + GL14C.glBlendFuncSeparate(blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha) + setEnabled(GL11C.GL_BLEND, blend) + setEnabled(GL11C.GL_CULL_FACE, cull) + setEnabled(GL11C.GL_DEPTH_TEST, depth) + setEnabled(GL11C.GL_STENCIL_TEST, stencil) + setEnabled(GL11C.GL_SCISSOR_TEST, scissor) + setEnabled(GL31C.GL_PRIMITIVE_RESTART, primitiveRestart) + GL11C.glDepthMask(depthMask) + GL30C.glBindFramebuffer(GL30C.GL_READ_FRAMEBUFFER, readFramebuffer) + GL30C.glBindFramebuffer(GL30C.GL_DRAW_FRAMEBUFFER, drawFramebuffer) + GL11C.glViewport(viewport[0], viewport[1], viewport[2], viewport[3]) + GL11C.glScissor(scissorBox[0], scissorBox[1], scissorBox[2], scissorBox[3]) + GL15C.glBindBuffer(GL21C.GL_PIXEL_UNPACK_BUFFER, unpackBuffer) + GL11C.glPixelStorei(GL11C.GL_UNPACK_ALIGNMENT, unpackAlignment) + GL11C.glPixelStorei(GL12C.GL_UNPACK_ROW_LENGTH, unpackRowLength) + GL11C.glPixelStorei(GL12C.GL_UNPACK_SKIP_PIXELS, unpackSkipPixels) + GL11C.glPixelStorei(GL12C.GL_UNPACK_SKIP_ROWS, unpackSkipRows) + } + + companion object { + fun capture(): GlState { + val activeTexture = GL11C.glGetInteger(GL13C.GL_ACTIVE_TEXTURE) + GL13C.glActiveTexture(GL13C.GL_TEXTURE0) + return GlState( + GL11C.glGetInteger(GL30C.GL_READ_FRAMEBUFFER_BINDING), + GL11C.glGetInteger(GL30C.GL_DRAW_FRAMEBUFFER_BINDING), + ints(GL11C.GL_VIEWPORT, 4), + activeTexture, + GL11C.glGetInteger(GL11C.GL_TEXTURE_BINDING_2D), + GL11C.glGetInteger(GL33C.GL_SAMPLER_BINDING), + GL11C.glGetInteger(GL20C.GL_CURRENT_PROGRAM), + GL11C.glGetInteger(GL30C.GL_VERTEX_ARRAY_BINDING), + GL11C.glGetInteger(GL15C.GL_ARRAY_BUFFER_BINDING), + ints(GL11C.GL_SCISSOR_BOX, 4), + GL11C.glGetInteger(GL14C.GL_BLEND_SRC_RGB), + GL11C.glGetInteger(GL14C.GL_BLEND_DST_RGB), + GL11C.glGetInteger(GL14C.GL_BLEND_SRC_ALPHA), + GL11C.glGetInteger(GL14C.GL_BLEND_DST_ALPHA), + GL11C.glGetInteger(GL20C.GL_BLEND_EQUATION_RGB), + GL11C.glGetInteger(GL20C.GL_BLEND_EQUATION_ALPHA), + GL11C.glIsEnabled(GL11C.GL_BLEND), + GL11C.glIsEnabled(GL11C.GL_CULL_FACE), + GL11C.glIsEnabled(GL11C.GL_DEPTH_TEST), + GL11C.glIsEnabled(GL11C.GL_STENCIL_TEST), + GL11C.glIsEnabled(GL11C.GL_SCISSOR_TEST), + GL11C.glIsEnabled(GL31C.GL_PRIMITIVE_RESTART), + GL11C.glGetBoolean(GL11C.GL_DEPTH_WRITEMASK), + GL11C.glGetInteger(GL21C.GL_PIXEL_UNPACK_BUFFER_BINDING), + GL11C.glGetInteger(GL11C.GL_UNPACK_ALIGNMENT), + GL11C.glGetInteger(GL12C.GL_UNPACK_ROW_LENGTH), + GL11C.glGetInteger(GL12C.GL_UNPACK_SKIP_PIXELS), + GL11C.glGetInteger(GL12C.GL_UNPACK_SKIP_ROWS), + ) + } + + private fun ints(name: Int, size: Int) = IntArray(size).also { GL11C.glGetIntegerv(name, it) } + private fun setEnabled(capability: Int, enabled: Boolean) = + if (enabled) GL11C.glEnable(capability) else GL11C.glDisable(capability) + } +} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaVulkanSurface.kt b/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaVulkanSurface.kt new file mode 100644 index 00000000..31dc8cd5 --- /dev/null +++ b/src/main/kotlin/com/chattriggers/ctjs/api/render/skia/SkijaVulkanSurface.kt @@ -0,0 +1,145 @@ +//? if >=26.2 { +package com.chattriggers.ctjs.api.render.skia + +import com.chattriggers.ctjs.internal.accessors.GpuDeviceAccessor +import com.chattriggers.ctjs.internal.accessors.CommandEncoderAccessor +import com.chattriggers.ctjs.internal.accessors.VulkanCommandEncoderAccessor +import com.chattriggers.ctjs.internal.accessors.VulkanDeviceAccessor +import com.mojang.blaze3d.GpuFormat +import com.mojang.blaze3d.systems.CommandEncoder +import com.mojang.blaze3d.systems.GpuDevice +import com.mojang.blaze3d.systems.RenderSystem +import com.mojang.blaze3d.textures.GpuTexture +import com.mojang.blaze3d.vulkan.VulkanCommandEncoder +import com.mojang.blaze3d.vulkan.VulkanConst +import com.mojang.blaze3d.vulkan.VulkanDevice +import com.mojang.blaze3d.vulkan.VulkanGpuTexture +import io.github.humbleui.skija.BackendRenderTarget +import io.github.humbleui.skija.ColorSpace +import io.github.humbleui.skija.ColorType +import io.github.humbleui.skija.DirectContext +import io.github.humbleui.skija.Surface +import io.github.humbleui.skija.SurfaceOrigin +import org.lwjgl.system.MemoryStack +import org.lwjgl.vulkan.VK10 +import org.lwjgl.vulkan.VK12 +import org.lwjgl.vulkan.VkImageMemoryBarrier +import org.slf4j.LoggerFactory + +internal class SkijaVulkanSurface : AutoCloseable { + private val logger = LoggerFactory.getLogger(SkijaVulkanSurface::class.java) + private var device: VulkanDevice? = null + private var context: DirectContext? = null + private var target: BackendRenderTarget? = null + private var surface: Surface? = null + private var image = 0L + private var width = 0 + private var height = 0 + private var format: GpuFormat? = null + + fun render(width: Int, height: Int, texture: GpuTexture, draw: (io.github.humbleui.skija.Canvas) -> Unit): Boolean { + val vulkanTexture = texture as? VulkanGpuTexture ?: return false + if (vulkanTexture.isClosed || vulkanTexture.getFormat() != GpuFormat.RGBA8_UNORM || + vulkanTexture.usage() and GpuTexture.USAGE_RENDER_ATTACHMENT == 0 || + vulkanTexture.usage() and GpuTexture.USAGE_TEXTURE_BINDING == 0 + ) { + logger.warn("Skipping Skija Vulkan target with unsupported format or usage: {}", texture.getLabel()) + return true + } + + val gpuDevice = RenderSystem.tryGetDevice() ?: return true + val backend = (gpuDevice as GpuDeviceAccessor).`ctjs$getBackend`() + val vulkanDevice = backend as? VulkanDevice ?: run { + logger.warn("GpuTexture is Vulkan but RenderSystem device backend is {}", backend.javaClass.name) + return true + } + val physical = (vulkanDevice as VulkanDeviceAccessor).`ctjs$getPhysicalDevice`() + if (physical == null) { + logger.error("Vulkan physical device accessor returned null") + return true + } + + try { + ensureResources(vulkanDevice, physical, vulkanTexture, width, height) + transition(gpuDevice, vulkanTexture.vkImage(), VK12.VK_IMAGE_LAYOUT_GENERAL, VK12.VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + VK10.VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK10.VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, + VK10.VK_ACCESS_MEMORY_READ_BIT or VK10.VK_ACCESS_MEMORY_WRITE_BIT, VK10.VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT) + draw(surface!!.canvas) + context!!.flushAndSubmit(false) + transition(gpuDevice, vulkanTexture.vkImage(), VK12.VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK12.VK_IMAGE_LAYOUT_GENERAL, + VK10.VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK10.VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, + VK10.VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK10.VK_ACCESS_MEMORY_READ_BIT or VK10.VK_ACCESS_MEMORY_WRITE_BIT) + } catch (exception: Throwable) { + logger.error("Skija Vulkan rendering failed", exception) + closeResources() + } + return true + } + + private fun ensureResources(vk: VulkanDevice, physical: com.mojang.blaze3d.vulkan.VulkanPhysicalDevice, + texture: VulkanGpuTexture, width: Int, height: Int) { + if (device !== vk) { + closeResources() + val instance = vk.instance() + val instanceProc = org.lwjgl.vulkan.VK.getFunctionProvider().getFunctionAddress("vkGetInstanceProcAddr") + val deviceProc = vk.vkDevice().capabilities.vkGetDeviceProcAddr + context = DirectContext.makeVulkan( + instance.vkInstance().address(), physical.vkPhysicalDevice().address(), vk.vkDevice().address(), + vk.graphicsQueue().vkQueue().address(), vk.graphicsQueue().queueFamilyIndex(), instanceProc, deviceProc, VK12.VK_API_VERSION_1_2 + ) + device = vk + } + if (image == texture.vkImage() && this.width == width && this.height == height && format == texture.getFormat()) return + closeTarget() + val imageUsage = VulkanConst.textureUsageToVk(texture.usage(), texture.getFormat()) or + VK10.VK_IMAGE_USAGE_TRANSFER_SRC_BIT or VK10.VK_IMAGE_USAGE_TRANSFER_DST_BIT + target = BackendRenderTarget.makeVulkan(width, height, texture.vkImage(), VK10.VK_IMAGE_TILING_OPTIMAL, + VK12.VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VulkanConst.toVk(texture.getFormat()), + imageUsage, 1, 1) + surface = Surface.wrapBackendRenderTarget(context!!, target!!, SurfaceOrigin.BOTTOM_LEFT, ColorType.RGBA_8888, ColorSpace.getSRGB()) + image = texture.vkImage() + this.width = width + this.height = height + format = texture.getFormat() + } + + private fun transition(gpu: GpuDevice, image: Long, oldLayout: Int, newLayout: Int, srcStage: Int, dstStage: Int, srcAccess: Int, dstAccess: Int) { + val encoder = gpu.createCommandEncoder() + val vkEncoder = ((encoder as CommandEncoderAccessor).`ctjs$getBackend`() as? VulkanCommandEncoder) + ?: error("Minecraft did not provide a Vulkan command encoder") + val commandBuffer = (vkEncoder as VulkanCommandEncoderAccessor).`ctjs$getCommandBuffer`() + MemoryStack.stackPush().use { stack -> + val barrier = VkImageMemoryBarrier.calloc(1, stack) + .sType(VK10.VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER) + .oldLayout(oldLayout) + .newLayout(newLayout) + .srcAccessMask(srcAccess) + .dstAccessMask(dstAccess) + .srcQueueFamilyIndex(VK10.VK_QUEUE_FAMILY_IGNORED) + .dstQueueFamilyIndex(VK10.VK_QUEUE_FAMILY_IGNORED) + .image(image) + barrier.subresourceRange() + .aspectMask(VK10.VK_IMAGE_ASPECT_COLOR_BIT) + .baseMipLevel(0) + .levelCount(1) + .baseArrayLayer(0) + .layerCount(1) + VK12.vkCmdPipelineBarrier(commandBuffer, srcStage, dstStage, 0, null, null, barrier) + } + vkEncoder.submit() + } + + private fun closeTarget() { + surface?.close(); target?.close() + surface = null; target = null; image = 0L + } + + private fun closeResources() { + closeTarget() + context?.close() + context = null; device = null + } + + override fun close() = closeResources() +} +//?} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/world/BossBars.kt b/src/main/kotlin/com/chattriggers/ctjs/api/world/BossBars.kt index 469bbd17..b4b63e72 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/world/BossBars.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/world/BossBars.kt @@ -1,284 +1,286 @@ -package com.chattriggers.ctjs.api.world - -import com.chattriggers.ctjs.api.CTWrapper -import com.chattriggers.ctjs.api.client.Client -import com.chattriggers.ctjs.api.message.ChatLib -import com.chattriggers.ctjs.api.message.TextComponent -import com.chattriggers.ctjs.internal.mixins.BossHealthOverlayAccessor -import com.chattriggers.ctjs.MCBossBarColor -import com.chattriggers.ctjs.MCBossBarStyle +package com.chattriggers.ctjs.api.world + +import com.chattriggers.ctjs.api.client.MinecraftCompat + +import com.chattriggers.ctjs.api.CTWrapper +import com.chattriggers.ctjs.api.client.Client +import com.chattriggers.ctjs.api.message.ChatLib +import com.chattriggers.ctjs.api.message.TextComponent +import com.chattriggers.ctjs.internal.mixins.BossHealthOverlayAccessor +import com.chattriggers.ctjs.MCBossBarColor +import com.chattriggers.ctjs.MCBossBarStyle import com.chattriggers.ctjs.internal.utils.asMixin import com.chattriggers.ctjs.internal.utils.getOrDefault import com.chattriggers.ctjs.internal.utils.getOption import net.minecraft.client.gui.components.LerpingBossEvent import org.mozilla.javascript.NativeObject import java.util.UUID - -object BossBars { - @JvmStatic - fun toMC() = Client.getMinecraft().gui.bossOverlay - - /** - * Gets the list of currently shown [BossBar]s - * - * @return the currently displayed [BossBar]s - */ - @JvmStatic - fun getBossBars(): List { - return toMC().asMixin().events.values.map(::BossBar) - } - - /** - * Gets all [BossBar]s with a given name - * - * @param name the name to match - * @return the [BossBar]s - */ - @JvmStatic - fun getBossBarsByName(name: String): List { - return getBossBars().filter { it.getName() == name } - } - - /** - * Adds a new [BossBar] to be displayed - * - * Takes a parameter with the following options: - * - name: The name to appear above the BossBar. Defaults to an empty string - * - percent: The percent full the BossBar is. Defaults to 1 (full health) - * - color: The color of the BossBar. Can be any [Color], but defaults to white - * - sections: The number of notches/sections to appear on the BossBar. Can be any [Style], but - * defaults to 1 entire section - * - darkenSky: Whether the BossBar should darken the screen of the player. Defaults to false - * - dragonMusic: Whether the BossBar should play dragon music while in the End. Defaults to false - * - thickenFog: Whether the BossBar should thicken the fog around the player. Defaults to false - * - * @param obj An options bag - * - * @return the [BossBar] for further modification - */ - @JvmStatic - fun addBossBar(obj: NativeObject): BossBar { - val name = obj.getOption("name", "") + +object BossBars { + @JvmStatic + fun toMC() = MinecraftCompat.bossOverlay(Client.getMinecraft().gui) + + /** + * Gets the list of currently shown [BossBar]s + * + * @return the currently displayed [BossBar]s + */ + @JvmStatic + fun getBossBars(): List { + return toMC().asMixin().events.values.map(::BossBar) + } + + /** + * Gets all [BossBar]s with a given name + * + * @param name the name to match + * @return the [BossBar]s + */ + @JvmStatic + fun getBossBarsByName(name: String): List { + return getBossBars().filter { it.getName() == name } + } + + /** + * Adds a new [BossBar] to be displayed + * + * Takes a parameter with the following options: + * - name: The name to appear above the BossBar. Defaults to an empty string + * - percent: The percent full the BossBar is. Defaults to 1 (full health) + * - color: The color of the BossBar. Can be any [Color], but defaults to white + * - sections: The number of notches/sections to appear on the BossBar. Can be any [Style], but + * defaults to 1 entire section + * - darkenSky: Whether the BossBar should darken the screen of the player. Defaults to false + * - dragonMusic: Whether the BossBar should play dragon music while in the End. Defaults to false + * - thickenFog: Whether the BossBar should thicken the fog around the player. Defaults to false + * + * @param obj An options bag + * + * @return the [BossBar] for further modification + */ + @JvmStatic + fun addBossBar(obj: NativeObject): BossBar { + val name = obj.getOption("name", "") val percent = obj.getOrDefault("percent", 1f).toFloat().coerceIn(0f..1f) - val color = Color.from(obj.getOption("color", Color.WHITE)) - val style = Style.from(obj.getOption("sections", Style.ONE)) - val shouldDarkenSky = obj.getOption("darkenSky", false) - val dragonMusic = obj.getOption("dragonMusic", false) - val shouldThickenFog = obj.getOption("thickenFog", false) - - val uuid = UUID.randomUUID() - - val bossBar = LerpingBossEvent( - uuid, - TextComponent(name), - percent, - color.toMC(), - style.toMC(), - shouldDarkenSky, - dragonMusic, - shouldThickenFog - ) - - toMC().asMixin().events[uuid] = bossBar - - return BossBar(bossBar) - } - - /** - * Clears all [BossBar]s on screen - */ - @JvmStatic - fun clearBossBars() { - toMC().reset() - } - - /** - * Removes all [BossBar]s with the given name - * - * @param name the name to match - */ - @JvmStatic - fun removeBossBarsByName(name: String) { - toMC().asMixin().events.values.removeIf { - TextComponent(it.name).formattedText == ChatLib.addColor(name) - } - } - - /** - * Removes the given [BossBar] - * - * @param bossBar the BossBar to remove - */ - @JvmStatic - fun removeBossBar(bossBar: BossBar) { - toMC().asMixin().events.remove(bossBar.getUUID()) - } - - class BossBar(override val mcValue: LerpingBossEvent) : CTWrapper { - /** - * Gets the UUID of this BossBar - * - * @return the uuid - */ - fun getUUID(): UUID { - return mcValue.id - } - - /** - * Gets the name of this BossBar - * - * @return the name - */ - fun getName(): String { - return TextComponent(mcValue.name).formattedText - } - - /** - * Sets the name of this BossBar - * - * @param name the name to set - */ - fun setName(name: String) = apply { - mcValue.name = TextComponent(name) - } - - /** - * Gets how full this BossBar is - * - * @return how full the BossBar is - */ - fun getPercent(): Float = mcValue.progress - - /** - * Sets how full this BossBar is - * - * @param percent how full to set this BossBar. Must be between 0 and 1 - */ - fun setPercent(percent: Float) = apply { - mcValue.setProgress(percent.coerceIn(0f..1f)) - } - - /** - * Gets the [Color] of this BossBar - */ - fun getColor(): Color = Color.fromMC(mcValue.color) - - /** - * Sets the [Color] of this BossBar - * - * @param color the color to set. Can be [Color], [MCBossBarColor], or a string - */ - fun setColor(color: Any) = apply { - mcValue.color = Color.from(color).toMC() - } - - /** - * Gets the style of this BossBar. e.g. how many notches are displayed - */ - fun getStyle(): Style = Style.fromMC(mcValue.overlay) - - /** - * Sets the style of this BossBar - * - * @param style the style to set. Can be [Style], [MCBossBarStyle], a string, - * or a number of how many notches to put - */ - fun setStyle(style: Any) = apply { - mcValue.setOverlay(Style.from(style).toMC()) - } - - /** - * Gets whether this BossBar darkens the sky - */ - fun shouldDarkenSky(): Boolean = mcValue.shouldDarkenScreen() - - /** - * Sets whether this BossBar should darken the sky - * - * @param darken whether to darken the sky - */ - fun setShouldDarkenSky(darken: Boolean) = apply { - mcValue.setDarkenScreen(darken) - } - - /** - * Gets whether this BossBar will play dragon music. - * This will do nothing when the player is not in the end dimension - */ - fun hasDragonMusic(): Boolean = mcValue.shouldPlayBossMusic() - - /** - * Sets whether this BossBar will play dragon music - * - * @param music whether to play dragon music - */ - fun setHasDragonMusic(music: Boolean) = apply { - mcValue.setPlayBossMusic(music) - } - - /** - * Gets whether this BossBar should thicken the fog around the player - */ - fun shouldThickenFog(): Boolean = mcValue.shouldCreateWorldFog() - - /** - * Sets whether this BossBar should thicken the fog around the player - * - * @param fog whether to thicken the fog - */ - fun setShouldThickenFog(fog: Boolean) = apply { - mcValue.setCreateWorldFog(fog) - } - - override fun toString(): String { - return "BossBar{name=${getName()}, percent=${getPercent()}, color=${getColor()}, " + - "style=${getStyle()}, shouldDarkenSky=${shouldDarkenSky()}, " + - "hasDragonMusic=${hasDragonMusic()}, shouldThickenFog=${shouldThickenFog()}}" - } - } - - enum class Color(override val mcValue: MCBossBarColor) : CTWrapper { - PINK(MCBossBarColor.PINK), - BLUE(MCBossBarColor.BLUE), - RED(MCBossBarColor.RED), - GREEN(MCBossBarColor.GREEN), - YELLOW(MCBossBarColor.YELLOW), - PURPLE(MCBossBarColor.PURPLE), - WHITE(MCBossBarColor.WHITE); - - companion object { - @JvmStatic - fun fromMC(mcValue: MCBossBarColor) = entries.first { it.mcValue == mcValue } - - @JvmStatic - fun from(value: Any) = when (value) { - is CharSequence -> valueOf(value.toString()) - is MCBossBarColor -> fromMC(value) - is Color -> value - else -> throw IllegalArgumentException("Cannot create BossBars.Color from $value") - } - } - } - - enum class Style(override val mcValue: MCBossBarStyle, val sections: Int) : CTWrapper { - ONE(MCBossBarStyle.PROGRESS, 1), - SIX(MCBossBarStyle.NOTCHED_6, 6), - TEN(MCBossBarStyle.NOTCHED_10, 10), - TWELVE(MCBossBarStyle.NOTCHED_12, 12), - TWENTY(MCBossBarStyle.NOTCHED_20, 20); - - companion object { - @JvmStatic - fun fromMC(mcValue: MCBossBarStyle) = entries.first { it.mcValue == mcValue } - - @JvmStatic - fun from(value: Any) = when (value) { - is CharSequence -> valueOf(value.toString()) - is MCBossBarStyle -> fromMC(value) - is Style -> value - is Number -> entries.first { it.sections == value } - else -> throw IllegalArgumentException("Cannot create BossBars.Style from $value") - } - } - } -} + val color = Color.from(obj.getOption("color", Color.WHITE)) + val style = Style.from(obj.getOption("sections", Style.ONE)) + val shouldDarkenSky = obj.getOption("darkenSky", false) + val dragonMusic = obj.getOption("dragonMusic", false) + val shouldThickenFog = obj.getOption("thickenFog", false) + + val uuid = UUID.randomUUID() + + val bossBar = LerpingBossEvent( + uuid, + TextComponent(name), + percent, + color.toMC(), + style.toMC(), + shouldDarkenSky, + dragonMusic, + shouldThickenFog + ) + + toMC().asMixin().events[uuid] = bossBar + + return BossBar(bossBar) + } + + /** + * Clears all [BossBar]s on screen + */ + @JvmStatic + fun clearBossBars() { + toMC().reset() + } + + /** + * Removes all [BossBar]s with the given name + * + * @param name the name to match + */ + @JvmStatic + fun removeBossBarsByName(name: String) { + toMC().asMixin().events.values.removeIf { + TextComponent(it.name).formattedText == ChatLib.addColor(name) + } + } + + /** + * Removes the given [BossBar] + * + * @param bossBar the BossBar to remove + */ + @JvmStatic + fun removeBossBar(bossBar: BossBar) { + toMC().asMixin().events.remove(bossBar.getUUID()) + } + + class BossBar(override val mcValue: LerpingBossEvent) : CTWrapper { + /** + * Gets the UUID of this BossBar + * + * @return the uuid + */ + fun getUUID(): UUID { + return mcValue.id + } + + /** + * Gets the name of this BossBar + * + * @return the name + */ + fun getName(): String { + return TextComponent(mcValue.name).formattedText + } + + /** + * Sets the name of this BossBar + * + * @param name the name to set + */ + fun setName(name: String) = apply { + mcValue.name = TextComponent(name) + } + + /** + * Gets how full this BossBar is + * + * @return how full the BossBar is + */ + fun getPercent(): Float = mcValue.progress + + /** + * Sets how full this BossBar is + * + * @param percent how full to set this BossBar. Must be between 0 and 1 + */ + fun setPercent(percent: Float) = apply { + mcValue.setProgress(percent.coerceIn(0f..1f)) + } + + /** + * Gets the [Color] of this BossBar + */ + fun getColor(): Color = Color.fromMC(mcValue.color) + + /** + * Sets the [Color] of this BossBar + * + * @param color the color to set. Can be [Color], [MCBossBarColor], or a string + */ + fun setColor(color: Any) = apply { + mcValue.color = Color.from(color).toMC() + } + + /** + * Gets the style of this BossBar. e.g. how many notches are displayed + */ + fun getStyle(): Style = Style.fromMC(mcValue.overlay) + + /** + * Sets the style of this BossBar + * + * @param style the style to set. Can be [Style], [MCBossBarStyle], a string, + * or a number of how many notches to put + */ + fun setStyle(style: Any) = apply { + mcValue.setOverlay(Style.from(style).toMC()) + } + + /** + * Gets whether this BossBar darkens the sky + */ + fun shouldDarkenSky(): Boolean = mcValue.shouldDarkenScreen() + + /** + * Sets whether this BossBar should darken the sky + * + * @param darken whether to darken the sky + */ + fun setShouldDarkenSky(darken: Boolean) = apply { + mcValue.setDarkenScreen(darken) + } + + /** + * Gets whether this BossBar will play dragon music. + * This will do nothing when the player is not in the end dimension + */ + fun hasDragonMusic(): Boolean = mcValue.shouldPlayBossMusic() + + /** + * Sets whether this BossBar will play dragon music + * + * @param music whether to play dragon music + */ + fun setHasDragonMusic(music: Boolean) = apply { + mcValue.setPlayBossMusic(music) + } + + /** + * Gets whether this BossBar should thicken the fog around the player + */ + fun shouldThickenFog(): Boolean = mcValue.shouldCreateWorldFog() + + /** + * Sets whether this BossBar should thicken the fog around the player + * + * @param fog whether to thicken the fog + */ + fun setShouldThickenFog(fog: Boolean) = apply { + mcValue.setCreateWorldFog(fog) + } + + override fun toString(): String { + return "BossBar{name=${getName()}, percent=${getPercent()}, color=${getColor()}, " + + "style=${getStyle()}, shouldDarkenSky=${shouldDarkenSky()}, " + + "hasDragonMusic=${hasDragonMusic()}, shouldThickenFog=${shouldThickenFog()}}" + } + } + + enum class Color(override val mcValue: MCBossBarColor) : CTWrapper { + PINK(MCBossBarColor.PINK), + BLUE(MCBossBarColor.BLUE), + RED(MCBossBarColor.RED), + GREEN(MCBossBarColor.GREEN), + YELLOW(MCBossBarColor.YELLOW), + PURPLE(MCBossBarColor.PURPLE), + WHITE(MCBossBarColor.WHITE); + + companion object { + @JvmStatic + fun fromMC(mcValue: MCBossBarColor) = entries.first { it.mcValue == mcValue } + + @JvmStatic + fun from(value: Any) = when (value) { + is CharSequence -> valueOf(value.toString()) + is MCBossBarColor -> fromMC(value) + is Color -> value + else -> throw IllegalArgumentException("Cannot create BossBars.Color from $value") + } + } + } + + enum class Style(override val mcValue: MCBossBarStyle, val sections: Int) : CTWrapper { + ONE(MCBossBarStyle.PROGRESS, 1), + SIX(MCBossBarStyle.NOTCHED_6, 6), + TEN(MCBossBarStyle.NOTCHED_10, 10), + TWELVE(MCBossBarStyle.NOTCHED_12, 12), + TWENTY(MCBossBarStyle.NOTCHED_20, 20); + + companion object { + @JvmStatic + fun fromMC(mcValue: MCBossBarStyle) = entries.first { it.mcValue == mcValue } + + @JvmStatic + fun from(value: Any) = when (value) { + is CharSequence -> valueOf(value.toString()) + is MCBossBarStyle -> fromMC(value) + is Style -> value + is Number -> entries.first { it.sections == value } + else -> throw IllegalArgumentException("Cannot create BossBars.Style from $value") + } + } + } +} diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/world/PotionEffectType.kt b/src/main/kotlin/com/chattriggers/ctjs/api/world/PotionEffectType.kt index 9d2878e1..e9547cba 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/world/PotionEffectType.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/world/PotionEffectType.kt @@ -14,7 +14,7 @@ class PotionEffectType(val type: MobEffect) { /** * Whether this effect is instant (e.g. instant health) */ - val isInstant get() = type.isInstantenous + val isInstant get() = type./*? if >=26.2 {*/isInstantaneous/*?} else {*//*isInstantenous*//*?}*/ /** * The raw key used for this effect type diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/world/pathfinding/CachedWorld.kt b/src/main/kotlin/com/chattriggers/ctjs/api/world/pathfinding/CachedWorld.kt index ec93cc9b..de0f5087 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/api/world/pathfinding/CachedWorld.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/api/world/pathfinding/CachedWorld.kt @@ -101,6 +101,7 @@ object CachedWorld { val key = chunkKey(pos.x shr 4, pos.z shr 4) val chunk = chunks[key]?.takeIf { it.ready } ?: return val flags = NativeStateEncoder.flagsForState(state).toShort() + if (chunk.getFlags(pos.x and 15, pos.y, pos.z and 15) == flags) return chunk.setFlags(pos.x and 15, pos.y, pos.z and 15, flags) queueNativeUpdate(pos.x, pos.y, pos.z, flags.toInt() and 0xFFFF) if (cacheKey == key) { diff --git a/src/main/kotlin/com/chattriggers/ctjs/internal/engine/module/Module.kt b/src/main/kotlin/com/chattriggers/ctjs/internal/engine/module/Module.kt index 11c11e30..44026b3e 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/internal/engine/module/Module.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/internal/engine/module/Module.kt @@ -1,7 +1,7 @@ package com.chattriggers.ctjs.internal.engine.module import com.chattriggers.ctjs.api.message.ChatLib -import com.chattriggers.ctjs.api.render.Renderer +import com.chattriggers.ctjs.api.render.Render2D import com.chattriggers.ctjs.api.render.Text import com.chattriggers.ctjs.internal.utils.ModVersion import net.minecraft.client.gui.GuiGraphicsExtractor @@ -26,7 +26,7 @@ class Module(val name: String, var metadata: ModuleMetadata, val folder: File) { ctx.fill(x, y, x + width, y + 13, 0xaa000000.toInt()) ctx.text( - Renderer.getFontRenderer(), + Render2D.getFontRenderer(), metadata.name ?: name, x + 3, y + 3, -1 ) @@ -35,7 +35,7 @@ class Module(val name: String, var metadata: ModuleMetadata, val folder: File) { ctx.pose().pushMatrix() ctx.pose().translate(x + width - 5f, y + 8f) ctx.pose().rotate(Math.PI.toFloat()) - ctx.text(Renderer.getFontRenderer(), "^", 0, 0, -1, false) + ctx.text(Render2D.getFontRenderer(), "^", 0, 0, -1, false) ctx.pose().popMatrix() 16 } else { @@ -43,23 +43,23 @@ class Module(val name: String, var metadata: ModuleMetadata, val folder: File) { val descriptionHeight = gui.description.getHeight().toInt() ctx.fill(x, y + 13, x + width, y + descriptionHeight + 25, 0x50000000) - ctx.text(Renderer.getFontRenderer(), "^", x + width - 10, y + 5, -1, false) + ctx.text(Render2D.getFontRenderer(), "^", x + width - 10, y + 5, -1, false) gui.description.draw(ctx, x + 3, y + 15) if (metadata.version != null) { val versionText = ChatLib.addColor("&8v${metadata.version}") ctx.text( - Renderer.getFontRenderer(), + Render2D.getFontRenderer(), versionText, - x + width - Renderer.getStringWidth(versionText), + x + width - Render2D.getStringWidth(versionText), y + descriptionHeight + 15, -1 ) } ctx.text( - Renderer.getFontRenderer(), + Render2D.getFontRenderer(), ChatLib.addColor( if (metadata.isRequired && requiredBy.isNotEmpty()) { "&8required by $requiredBy" diff --git a/src/main/kotlin/com/chattriggers/ctjs/internal/engine/module/ModulesGui.kt b/src/main/kotlin/com/chattriggers/ctjs/internal/engine/module/ModulesGui.kt index 6104b603..91910bf9 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/internal/engine/module/ModulesGui.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/internal/engine/module/ModulesGui.kt @@ -2,7 +2,7 @@ package com.chattriggers.ctjs.internal.engine.module import com.chattriggers.ctjs.api.client.Player import com.chattriggers.ctjs.api.message.ChatLib -import com.chattriggers.ctjs.api.render.Renderer +import com.chattriggers.ctjs.api.render.Render2D import com.chattriggers.ctjs.api.render.Text import net.minecraft.client.input.MouseButtonEvent import net.minecraft.client.gui.GuiGraphicsExtractor @@ -19,20 +19,20 @@ object ModulesGui : Screen(net.minecraft.network.chat.Component.literal("Modules override fun extractRenderState(ctx: GuiGraphicsExtractor, mouseX: Int, mouseY: Int, deltaTicks: Float) { ctx.pose().pushMatrix() - val middle = Renderer.screen.getWidth() / 2 - val width = (Renderer.screen.getWidth() - 100).coerceAtMost(500) + val middle = Render2D.screen.getWidth() / 2 + val width = (Render2D.screen.getWidth() - 100).coerceAtMost(500) ctx.fill(0, 0, ctx.guiWidth(), ctx.guiHeight(), 0x50000000) - if (-window.scroll > window.height - Renderer.screen.getHeight() + 20) - window.scroll = -window.height + Renderer.screen.getHeight() - 20 + if (-window.scroll > window.height - Render2D.screen.getHeight() + 20) + window.scroll = -window.height + Render2D.screen.getHeight() - 20 if (-window.scroll < 0) window.scroll = 0f if (-window.scroll > 0) { - val rx = Renderer.screen.getWidth() - 20 - val ry = Renderer.screen.getHeight() - 20 + val rx = Render2D.screen.getWidth() - 20 + val ry = Render2D.screen.getHeight() - 20 ctx.fill(rx, ry, rx + 20, ry + 20, 0xaa000000.toInt()) - ctx.text(Renderer.getFontRenderer(), "^", Renderer.screen.getWidth() - 12, Renderer.screen.getHeight() - 12, -1, false) + ctx.text(Render2D.getFontRenderer(), "^", Render2D.screen.getWidth() - 12, Render2D.screen.getHeight() - 12, -1, false) } val ox = middle - width / 2 @@ -57,10 +57,10 @@ object ModulesGui : Screen(net.minecraft.network.chat.Component.literal("Modules val mouseX = click.x val mouseY = click.y - val width = (Renderer.screen.getWidth() - 100f).coerceAtMost(500f) - val right = Renderer.screen.getWidth() / 2f + width / 2f + val width = (Render2D.screen.getWidth() - 100f).coerceAtMost(500f) + val right = Render2D.screen.getWidth() / 2f + width / 2f - if (mouseX > Renderer.screen.getWidth() - 20 && mouseY > Renderer.screen.getHeight() - 20) { + if (mouseX > Render2D.screen.getWidth() - 20 && mouseY > Render2D.screen.getHeight() - 20) { window.scroll = 0f return false } diff --git a/src/main/kotlin/com/chattriggers/ctjs/internal/launch/CTJSPreLaunch.kt b/src/main/kotlin/com/chattriggers/ctjs/internal/launch/CTJSPreLaunch.kt index fb50f422..27de03c3 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/internal/launch/CTJSPreLaunch.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/internal/launch/CTJSPreLaunch.kt @@ -7,8 +7,6 @@ import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint class CTJSPreLaunch : PreLaunchEntrypoint { override fun onPreLaunch() { - if (LegacyLoaderMigration.stageCachedLoaderIfNeeded()) return - val prevHandler = Thread.getDefaultUncaughtExceptionHandler() Thread.setDefaultUncaughtExceptionHandler { thread, exception -> "Uncaught exception in thread \"${thread.name}\"".printToConsole(LogType.ERROR) diff --git a/src/main/kotlin/com/chattriggers/ctjs/internal/launch/CTMixinPlugin.kt b/src/main/kotlin/com/chattriggers/ctjs/internal/launch/CTMixinPlugin.kt index 79d4f06d..3d0fc936 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/internal/launch/CTMixinPlugin.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/internal/launch/CTMixinPlugin.kt @@ -25,7 +25,7 @@ class CTMixinPlugin : IMixinConfigPlugin { override fun getRefMapperConfig(): String? = null - override fun shouldApplyMixin(targetClassName: String?, mixinClassName: String?): Boolean = true + override fun shouldApplyMixin(targetClassName: String?, mixinClassName: String?) = true override fun acceptTargets(myTargets: MutableSet?, otherTargets: MutableSet?) {} diff --git a/src/main/kotlin/com/chattriggers/ctjs/internal/launch/LegacyLoaderMigration.kt b/src/main/kotlin/com/chattriggers/ctjs/internal/launch/LegacyLoaderMigration.kt deleted file mode 100644 index 70438acb..00000000 --- a/src/main/kotlin/com/chattriggers/ctjs/internal/launch/LegacyLoaderMigration.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.chattriggers.ctjs.internal.launch - -import java.io.File - -internal object LegacyLoaderMigration { - private val legacyLoaderName = Regex("V5ModLoader.*\\.jar", RegexOption.IGNORE_CASE) - - fun stageCachedLoaderIfNeeded(): Boolean { - val gameDir = System.getProperty("v5.game_dir")?.takeIf(String::isNotBlank)?.let(::File) ?: return false - val legacyLoaders = File(gameDir, "mods").listFiles() - ?.filter { it.isFile && legacyLoaderName.matches(it.name) } - .orEmpty() - if (legacyLoaders.isEmpty()) return false - - val cachedLoader = runCatching { - File(CTJSPreLaunch::class.java.protectionDomain.codeSource.location.toURI()).canonicalFile - }.getOrNull()?.takeIf { it.isFile && it.parentFile?.name == "cache" } ?: return false - - val bytes = runCatching { cachedLoader.readBytes() }.getOrNull() ?: return false - try { - ModLoaderUpdater.stageUpdateAndRelaunch(gameDir, bytes, legacyLoaders + cachedLoader) - println("[V5] Migrating legacy V5ModLoader to V5-Loader. Closing Minecraft now.") - } finally { - bytes.fill(0) - } - Runtime.getRuntime().halt(0) - return true - } -} diff --git a/src/main/kotlin/com/chattriggers/ctjs/internal/listeners/ClientListener.kt b/src/main/kotlin/com/chattriggers/ctjs/internal/listeners/ClientListener.kt index 2e506fc6..59b876ed 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/internal/listeners/ClientListener.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/internal/listeners/ClientListener.kt @@ -7,7 +7,7 @@ import com.chattriggers.ctjs.api.entity.PlayerInteraction import com.chattriggers.ctjs.api.inventory.Item import com.chattriggers.ctjs.api.message.TextComponent import com.chattriggers.ctjs.api.render.DrawContextHolder -import com.chattriggers.ctjs.api.render.Renderer +import com.chattriggers.ctjs.api.render.Render2D import com.chattriggers.ctjs.api.triggers.CancellableEvent import com.chattriggers.ctjs.api.triggers.ChatTrigger import com.chattriggers.ctjs.api.triggers.TriggerType @@ -94,21 +94,21 @@ object ClientListener : Initializer { } ScreenEvents.BEFORE_INIT.register { _, screen, _, _ -> - // TODO: Why does Renderer.drawString not work in here? + // TODO: Why does Render2D.drawString not work in here? ScreenEvents.beforeExtract(screen).register { _, stack, mouseX, mouseY, partialTicks -> if (!JSLoader.hasTriggers(TriggerType.GUI_RENDER)) return@register DrawContextHolder.withContext(stack) { - Renderer.withMatrix(UMatrixStack(stack.pose()).toMC(), partialTicks) { + Render2D.withMatrix(UMatrixStack(stack.pose()).toMC(), partialTicks) { TriggerType.GUI_RENDER.triggerAll(mouseX, mouseY, screen) } } } - // TODO: Why does Renderer.drawString not work in here? + // TODO: Why does Render2D.drawString not work in here? ScreenEvents.afterExtract(screen).register { _, stack, mouseX, mouseY, partialTicks -> if (!JSLoader.hasTriggers(TriggerType.POST_GUI_RENDER)) return@register DrawContextHolder.withContext(stack) { - Renderer.withMatrix(UMatrixStack(stack.pose()).toMC(), partialTicks) { + Render2D.withMatrix(UMatrixStack(stack.pose()).toMC(), partialTicks) { TriggerType.POST_GUI_RENDER.triggerAll(mouseX, mouseY, screen, partialTicks) } } @@ -144,7 +144,7 @@ object ClientListener : Initializer { CTEvents.RENDER_OVERLAY.register { ctx, stack, partialTicks -> if (!JSLoader.hasTriggers(TriggerType.RENDER_OVERLAY)) return@register DrawContextHolder.withContext(ctx) { - Renderer.withMatrix(stack, partialTicks) { + Render2D.withMatrix(stack, partialTicks) { TriggerType.RENDER_OVERLAY.triggerAll(ctx) } } @@ -152,14 +152,14 @@ object ClientListener : Initializer { CTEvents.RENDER_ENTITY.register { stack, entity, partialTicks, ci -> if (!JSLoader.hasTriggers(TriggerType.RENDER_ENTITY)) return@register - Renderer.withMatrix(stack, partialTicks) { + Render2D.withMatrix(stack, partialTicks) { TriggerType.RENDER_ENTITY.triggerAll(Entity.fromMC(entity), partialTicks, ci) } } CTEvents.RENDER_BLOCK_ENTITY.register { stack, blockEntity, partialTicks, ci -> if (!JSLoader.hasTriggers(TriggerType.RENDER_BLOCK_ENTITY)) return@register - Renderer.withMatrix(stack, partialTicks) { + Render2D.withMatrix(stack, partialTicks) { TriggerType.RENDER_BLOCK_ENTITY.triggerAll(BlockEntity(blockEntity), partialTicks, ci) } } diff --git a/src/main/kotlin/com/chattriggers/ctjs/internal/listeners/WorldListener.kt b/src/main/kotlin/com/chattriggers/ctjs/internal/listeners/WorldListener.kt index 215d6ebb..32b5e56a 100644 --- a/src/main/kotlin/com/chattriggers/ctjs/internal/listeners/WorldListener.kt +++ b/src/main/kotlin/com/chattriggers/ctjs/internal/listeners/WorldListener.kt @@ -1,7 +1,7 @@ package com.chattriggers.ctjs.internal.listeners import com.chattriggers.ctjs.MCBlockPos -import com.chattriggers.ctjs.api.render.Renderer +import com.chattriggers.ctjs.api.render.Render2D import com.chattriggers.ctjs.internal.engine.CTEvents import com.chattriggers.ctjs.api.triggers.CancellableEvent import com.chattriggers.ctjs.api.triggers.TriggerType @@ -24,14 +24,14 @@ object WorldListener { fun triggerRenderStart(ticks: Float) { deltaTicks = ticks if (matrixStack == null || !JSLoader.hasTriggers(TriggerType.PRE_RENDER_WORLD)) return - Renderer.withMatrix(matrixStack, ticks) { + Render2D.withMatrix(matrixStack, ticks) { TriggerType.PRE_RENDER_WORLD.triggerAll(ticks) } } fun triggerRenderLast() { val stack = matrixStack ?: return - if (JSLoader.hasTriggers(TriggerType.POST_RENDER_WORLD)) Renderer.withMatrix(stack, deltaTicks) { + if (JSLoader.hasTriggers(TriggerType.POST_RENDER_WORLD)) Render2D.withMatrix(stack, deltaTicks) { TriggerType.POST_RENDER_WORLD.triggerAll(deltaTicks) } CTEvents.POST_RENDER_WORLD.invoker().render(stack, deltaTicks) diff --git a/src/main/kotlin/com/v5/loader/internal/V5Loader.kt b/src/main/kotlin/com/v5/loader/internal/V5Loader.kt index 98aba0aa..b392a406 100644 --- a/src/main/kotlin/com/v5/loader/internal/V5Loader.kt +++ b/src/main/kotlin/com/v5/loader/internal/V5Loader.kt @@ -21,8 +21,7 @@ import kotlin.io.path.writeText internal object V5Loader { private const val MOD_ID = "ctjs" - private const val DEVELOPER_JAR_NAME = "V5-Loader-DEV.jar" - private val legacyModLoaderName = Regex("V5ModLoader.*\\.jar", RegexOption.IGNORE_CASE) + private const val DEVELOPER_JAR_PREFIX = "V5-Loader-DEV-" private val secretLock = Any() private var initialized = false private var sessionToken = "" @@ -34,7 +33,6 @@ internal object V5Loader { val fabricLoader = FabricLoader.getInstance() val gameDirPath = fabricLoader.gameDir.toAbsolutePath().toString() - System.setProperty("v5.game_dir", gameDirPath) System.setProperty("v5.minecraft_version", fabricLoader.rawGameVersion) val sessionFilePath = buildSessionFilePath(gameDirPath) val minecraftVersion = resolveMinecraftVersion() @@ -68,13 +66,10 @@ internal object V5Loader { private fun checkSelfUpdate(token: String, minecraftVersion: String, gameDir: File) { val activeJar = resolveActiveJar() - if (activeJar.name == DEVELOPER_JAR_NAME) { + if (activeJar.name.startsWith(DEVELOPER_JAR_PREFIX) && activeJar.extension.equals("jar", ignoreCase = true)) { println("[V5] Developer jar detected; skipping integrity check.") return } - val legacyModLoaders = File(gameDir, "mods").listFiles() - ?.filter { it.isFile && legacyModLoaderName.matches(it.name) } - .orEmpty() val hash = V5Crypto.calculateFileSha256(activeJar.absolutePath) if (hash.isEmpty()) throw IllegalStateException("[V5] Failed to hash active loader jar: ${activeJar.absolutePath}") @@ -83,12 +78,8 @@ internal object V5Loader { ?: throw IllegalStateException("[V5] Loader integrity check failed.") when (integrity) { - "valid" -> if (legacyModLoaders.isEmpty()) { - println("[V5] V5-Loader integrity verified.") - } else { - stageSelfUpdate(token, minecraftVersion, gameDir, activeJar, legacyModLoaders) - } - "outdated" -> stageSelfUpdate(token, minecraftVersion, gameDir, activeJar, legacyModLoaders) + "valid" -> println("[V5] V5-Loader integrity verified.") + "outdated" -> stageSelfUpdate(token, minecraftVersion, gameDir, activeJar) "invalid" -> throw IllegalStateException("[V5] V5-Loader integrity is invalid; refusing to run a modified jar.") else -> throw IllegalStateException("[V5] Unknown V5-Loader integrity state: $integrity") } @@ -98,8 +89,7 @@ internal object V5Loader { token: String, minecraftVersion: String, gameDir: File, - activeJar: File, - legacyModLoaders: List + activeJar: File ): Nothing { val bytes = V5Http.httpsGetBytes( V5Http.BACKEND_HOST, @@ -108,7 +98,7 @@ internal object V5Loader { ) ?: throw IllegalStateException("[V5] Failed to download updated V5-Loader.jar.") try { - ModLoaderUpdater.stageUpdateAndRelaunch(gameDir, bytes, listOf(activeJar) + legacyModLoaders) + ModLoaderUpdater.stageUpdateAndRelaunch(gameDir, bytes, listOf(activeJar)) println("[V5] V5-Loader update staged. Closing Minecraft now so the helper can swap jars.") } finally { bytes.fill(0) diff --git a/src/main/resources/assets/ctjs/js/moduleProvidedLibs.js b/src/main/resources/assets/ctjs/js/moduleProvidedLibs.js index 3c2fac41..09c95223 100644 --- a/src/main/resources/assets/ctjs/js/moduleProvidedLibs.js +++ b/src/main/resources/assets/ctjs/js/moduleProvidedLibs.js @@ -38,9 +38,8 @@ global.Priority = Java.class("com.chattriggers.ctjs.api.triggers.Trigger").Priority; global.Console = Java.type("com.chattriggers.ctjs.engine.Console").INSTANCE; + global.Render2D = Java.class("com.chattriggers.ctjs.api.render.Render2D").INSTANCE; const JSErrorReporter = Java.type("com.chattriggers.ctjs.internal.engine.JSErrorReporter").INSTANCE; - global.NVG = Java.class("com.chattriggers.ctjs.api.render.NVGRenderer").INSTANCE; - global.cancel = event => { if (event instanceof CancellableEvent) { event.setCanceled(true); @@ -80,7 +79,7 @@ return easeOut(this, to, speed, jump); }; - global.easeColor = (start, finish, speed, jump) => Renderer.getColor( + global.easeColor = (start, finish, speed, jump) => Render2D.getColor( easeOut((start >> 16) & 0xFF, (finish >> 16) & 0xFF, speed, jump), easeOut((start >> 8) & 0xFF, (finish >> 8) & 0xFF, speed, jump), easeOut(start & 0xFF, finish & 0xFF, speed, jump), diff --git a/src/main/resources/assets/v5/natives/linux/x86_64/V5PathJNI.so b/src/main/resources/assets/v5/natives/linux/x86_64/V5PathJNI.so index 2ceca39f..07238203 100644 Binary files a/src/main/resources/assets/v5/natives/linux/x86_64/V5PathJNI.so and b/src/main/resources/assets/v5/natives/linux/x86_64/V5PathJNI.so differ diff --git a/src/main/resources/assets/v5/natives/macos/arm64/V5PathJNI.dylib b/src/main/resources/assets/v5/natives/macos/arm64/V5PathJNI.dylib index 35ccdc05..e63f90b5 100755 Binary files a/src/main/resources/assets/v5/natives/macos/arm64/V5PathJNI.dylib and b/src/main/resources/assets/v5/natives/macos/arm64/V5PathJNI.dylib differ diff --git a/src/main/resources/assets/v5/natives/macos/x86_64/V5PathJNI.dylib b/src/main/resources/assets/v5/natives/macos/x86_64/V5PathJNI.dylib index 5d156977..c71a6a33 100644 Binary files a/src/main/resources/assets/v5/natives/macos/x86_64/V5PathJNI.dylib and b/src/main/resources/assets/v5/natives/macos/x86_64/V5PathJNI.dylib differ diff --git a/src/main/resources/assets/v5/natives/windows/x86_64/V5PathJNI.dll b/src/main/resources/assets/v5/natives/windows/x86_64/V5PathJNI.dll index 218616e3..dd17c6ff 100644 Binary files a/src/main/resources/assets/v5/natives/windows/x86_64/V5PathJNI.dll and b/src/main/resources/assets/v5/natives/windows/x86_64/V5PathJNI.dll differ diff --git a/src/main/resources/ctjs.mixins.json b/src/main/resources/ctjs.mixins.json index 8745973f..1e4487a9 100644 --- a/src/main/resources/ctjs.mixins.json +++ b/src/main/resources/ctjs.mixins.json @@ -9,6 +9,7 @@ "BlockEntityRenderStateMixin", "BookViewScreenAccessor", "BossHealthOverlayAccessor", + "CameraMixin", "ChatComponentAccessor", "ChatComponentMixin", "ChatScreenAccessor", @@ -20,16 +21,27 @@ "MultiPlayerGameModeMixin", "ClientPacketListenerAccessor", "ClientLevelAccessor", + "ConnectionProxyMixin", "CreativeModeInventoryScreenMixin", + "CrossCollisionBlockMixin", + "EntityRendererMixin", "EntityRenderDispatcherMixin", "EntityRenderStateMixin", + "FirmamentModAnnouncerMixin", + "FramerateLimitTrackerMixin", + "FrustumMixin", "OptionsAccessor", "OptionsMixin", "AbstractContainerScreenAccessor", "AbstractContainerScreenMixin", - "GuiMixin", + "@version_mixins@", + "GuiGraphicsExtractorMixin", + "GuiRendererMixin", + "ItemInHandRendererMixin", + "JoinMultiplayerScreenMixin", "KeyMappingAccessor", "KeyMappingAccessor$Category", + "KeyboardHandlerMixin", "MinecraftAccessor", "MinecraftMixin", "MouseHandlerMixin", @@ -39,7 +51,8 @@ "PlayerTabOverlayAccessor", "PlayerTabOverlayMixin", "RenderTickCounterMixin", - "LevelRendererMixin", + "VisGraphMixin", + "YggdrasilServicesKeyInfoMixin", "commands.ClientSuggestionProviderMixin", "commands.ClientPacketListenerMixin", "sound.SoundAccessor", @@ -67,7 +80,6 @@ "commands.CommandContextAccessor", "commands.CommandDispatcherMixin", "commands.CommandNodeAccessor", - "commands.EntitySelectorAccessor", "stdio.BootstrapMixin", "stdio.LoggedPrintStreamMixin" ] diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2e573bd0..efc8cc1a 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -16,6 +16,7 @@ "environment": "client", "entrypoints": { "preLaunch": [ + "com.chattriggers.ctjs.api.render.skia.SkijaBootstrap", { "value": "com.v5.loader.V5PreLaunch", "adapter": "kotlin" @@ -27,7 +28,7 @@ "com.chattriggers.ctjs.api.world.pathfinding.Swift" ] }, - "mixins": ["ctjs.mixins.json", "v5.mixins.json"], + "mixins": ["ctjs.mixins.json"], "depends": { "minecraft": "=$minecraft_version", "fabricloader": ">=$loader_version", diff --git a/src/main/resources/v5.mixins.json b/src/main/resources/v5.mixins.json deleted file mode 100644 index 5072efc7..00000000 --- a/src/main/resources/v5.mixins.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "required": true, - "minVersion": "0.8", - "package": "com.v5.mixins", - "compatibilityLevel": "JAVA_25", - "client": [ - "BlockMixin", - "CameraMixin", - "ChatComponentMixin", - "ConnectionProxyMixin", - "CrossCollisionBlockMixin", - "DrawContextCapture", - "EntityRendererMixin", - "FirmamentModAnnouncerMixin", - "FramerateLimitTrackerMixin", - "FrustumMixin", - "GameRendererMixin", - "GuiGraphicsExtractorMixin", - "ItemInHandRendererMixin", - "KeyboardHandlerMixin", - "MinecraftMixin", - "MouseHandlerMixin", - "JoinMultiplayerScreenMixin", - "LevelRendererMixin", - "VisGraphMixin", - "YggdrasilServicesKeyInfoMixin" - ], - "mixins": [ - "ConnectionMixin" - ], - "injectors": { - "defaultRequire": 1 - } -} diff --git a/stonecutter.gradle.kts b/stonecutter.gradle.kts new file mode 100644 index 00000000..a40f8f85 --- /dev/null +++ b/stonecutter.gradle.kts @@ -0,0 +1,6 @@ +plugins { + id("dev.kikugie.stonecutter") + alias(libs.plugins.kotlin) apply false +} + +stonecutter active "26.2" diff --git a/stonecutter.properties.toml b/stonecutter.properties.toml new file mode 100644 index 00000000..fc0c21a7 --- /dev/null +++ b/stonecutter.properties.toml @@ -0,0 +1,5 @@ +["26.1.2"] +deps.fabric_api = "0.153.0+26.1.2" + +["26.2"] +deps.fabric_api = "0.153.0+26.2" diff --git a/typing-generator/build.gradle.kts b/typing-generator/build.gradle.kts index 34ec3c30..3e46849c 100644 --- a/typing-generator/build.gradle.kts +++ b/typing-generator/build.gradle.kts @@ -3,9 +3,7 @@ plugins { } kotlin { - kotlin { - jvmToolchain(21) - } + jvmToolchain(21) } buildscript { diff --git a/typing-generator/src/main/kotlin/com/chattriggers/ctjs/typing/prologue.kt b/typing-generator/src/main/kotlin/com/chattriggers/ctjs/typing/prologue.kt index 14996d9d..79a69e4b 100644 --- a/typing-generator/src/main/kotlin/com/chattriggers/ctjs/typing/prologue.kt +++ b/typing-generator/src/main/kotlin/com/chattriggers/ctjs/typing/prologue.kt @@ -6,23 +6,6 @@ val manualRoots = setOf( "java.util.HashMap", "gg.essential.universal.UKeyboard", "net.minecraft.util.Hand", - "org.lwjgl.opengl.GL11", - "org.lwjgl.opengl.GL12", - "org.lwjgl.opengl.GL13", - "org.lwjgl.opengl.GL14", - "org.lwjgl.opengl.GL15", - "org.lwjgl.opengl.GL20", - "org.lwjgl.opengl.GL21", - "org.lwjgl.opengl.GL30", - "org.lwjgl.opengl.GL31", - "org.lwjgl.opengl.GL32", - "org.lwjgl.opengl.GL33", - "org.lwjgl.opengl.GL40", - "org.lwjgl.opengl.GL41", - "org.lwjgl.opengl.GL42", - "org.lwjgl.opengl.GL43", - "org.lwjgl.opengl.GL44", - "org.lwjgl.opengl.GL45", "org.spongepowered.asm.mixin.injection.callback.CallbackInfo", ) diff --git a/typing-generator/src/main/resources/provided-types.properties b/typing-generator/src/main/resources/provided-types.properties index 6ab6aa16..a044612e 100644 --- a/typing-generator/src/main/resources/provided-types.properties +++ b/typing-generator/src/main/resources/provided-types.properties @@ -36,13 +36,11 @@ Display=com.chattriggers.ctjs.api.render.Display Gui=com.chattriggers.ctjs.api.render.Gui Image=com.chattriggers.ctjs.api.render.Image Rectangle=com.chattriggers.ctjs.api.render.Rectangle -Renderer=com.chattriggers.ctjs.api.render.Renderer -Renderer3d=com.chattriggers.ctjs.api.render.Renderer3d -Shape=com.chattriggers.ctjs.api.render.Shape +Render2D=com.chattriggers.ctjs.api.render.Render2D Text=com.chattriggers.ctjs.api.render.Text Toast=com.chattriggers.ctjs.api.render.Toast -RenderUtils=com.chattriggers.ctjs.api.render.RenderUtils -RenderColor=com.chattriggers.ctjs.api.render.RenderUtils$Color +Render3D=com.chattriggers.ctjs.api.render.Render3D +RenderColor=com.chattriggers.ctjs.api.render.Render3D$Color CancellableEvent=com.chattriggers.ctjs.api.triggers.CancellableEvent Vec2f=com.chattriggers.ctjs.api.vec.Vec2f Vec3f=com.chattriggers.ctjs.api.vec.Vec3f @@ -63,7 +61,6 @@ Config=com.chattriggers.ctjs.api.Config V5Auth=com.chattriggers.ctjs.api.V5Auth DiscordRPC=com.chattriggers.ctjs.api.client.DiscordRPC GradientChat=com.chattriggers.ctjs.api.message.Chat -NVG=com.chattriggers.ctjs.api.render.NVGRenderer StructureFinder=com.chattriggers.ctjs.api.world.StructureFinder PathManager=com.chattriggers.ctjs.api.world.pathfinding.PathManager TriggerRegister=com.chattriggers.ctjs.engine.Register @@ -71,20 +68,3 @@ Thread=com.chattriggers.ctjs.engine.WrappedThread Priority=com.chattriggers.ctjs.api.triggers.Trigger$Priority ChatTriggers=com.chattriggers.ctjs.CTJS Console=com.chattriggers.ctjs.engine.Console -GL11=org.lwjgl.opengl.GL11 -GL12=org.lwjgl.opengl.GL12 -GL13=org.lwjgl.opengl.GL13 -GL14=org.lwjgl.opengl.GL14 -GL15=org.lwjgl.opengl.GL15 -GL20=org.lwjgl.opengl.GL20 -GL21=org.lwjgl.opengl.GL21 -GL30=org.lwjgl.opengl.GL30 -GL31=org.lwjgl.opengl.GL31 -GL32=org.lwjgl.opengl.GL32 -GL33=org.lwjgl.opengl.GL33 -GL40=org.lwjgl.opengl.GL40 -GL41=org.lwjgl.opengl.GL41 -GL42=org.lwjgl.opengl.GL42 -GL43=org.lwjgl.opengl.GL43 -GL44=org.lwjgl.opengl.GL44 -GL45=org.lwjgl.opengl.GL45 diff --git a/typing-generator/src/main/resources/typings.d.ts b/typing-generator/src/main/resources/typings.d.ts index 06fac4d6..7a609a93 100644 --- a/typing-generator/src/main/resources/typings.d.ts +++ b/typing-generator/src/main/resources/typings.d.ts @@ -160,20 +160,16 @@ declare global { interface Image extends com.chattriggers.ctjs.api.render.Image {} const Rectangle: typeof com.chattriggers.ctjs.api.render.Rectangle; interface Rectangle extends com.chattriggers.ctjs.api.render.Rectangle {} - const Renderer: typeof com.chattriggers.ctjs.api.render.Renderer; - interface Renderer extends com.chattriggers.ctjs.api.render.Renderer {} - const Renderer3d: typeof com.chattriggers.ctjs.api.render.Renderer3d; - interface Renderer3d extends com.chattriggers.ctjs.api.render.Renderer3d {} - const Shape: typeof com.chattriggers.ctjs.api.render.Shape; - interface Shape extends com.chattriggers.ctjs.api.render.Shape {} + const Render2D: typeof com.chattriggers.ctjs.api.render.Render2D; + interface Render2D extends com.chattriggers.ctjs.api.render.Render2D {} const Text: typeof com.chattriggers.ctjs.api.render.Text; interface Text extends com.chattriggers.ctjs.api.render.Text {} const Toast: typeof com.chattriggers.ctjs.api.render.Toast; interface Toast extends com.chattriggers.ctjs.api.render.Toast {} - const RenderUtils: typeof com.chattriggers.ctjs.api.render.RenderUtils; - interface RenderUtils extends com.chattriggers.ctjs.api.render.RenderUtils {} - const RenderColor: typeof com.chattriggers.ctjs.api.render.RenderUtils.Color; - interface RenderColor extends com.chattriggers.ctjs.api.render.RenderUtils.Color {} + const Render3D: typeof com.chattriggers.ctjs.api.render.Render3D; + interface Render3D extends com.chattriggers.ctjs.api.render.Render3D {} + const RenderColor: typeof com.chattriggers.ctjs.api.render.Render3D.Color; + interface RenderColor extends com.chattriggers.ctjs.api.render.Render3D.Color {} const CancellableEvent: typeof com.chattriggers.ctjs.api.triggers.CancellableEvent; interface CancellableEvent extends com.chattriggers.ctjs.api.triggers.CancellableEvent {} const Vec2f: typeof com.chattriggers.ctjs.api.vec.Vec2f; @@ -214,8 +210,6 @@ declare global { interface DiscordRPC extends com.chattriggers.ctjs.api.client.DiscordRPC {} const GradientChat: typeof com.chattriggers.ctjs.api.message.Chat; interface GradientChat extends com.chattriggers.ctjs.api.message.Chat {} - const NVG: typeof com.chattriggers.ctjs.api.render.NVGRenderer; - interface NVG extends com.chattriggers.ctjs.api.render.NVGRenderer {} const StructureFinder: typeof com.chattriggers.ctjs.api.world.StructureFinder; interface StructureFinder extends com.chattriggers.ctjs.api.world.StructureFinder {} const PathManager: typeof com.chattriggers.ctjs.api.world.pathfinding.PathManager; @@ -230,40 +224,6 @@ declare global { interface ChatTriggers extends com.chattriggers.ctjs.CTJS {} const Console: typeof com.chattriggers.ctjs.engine.Console; interface Console extends com.chattriggers.ctjs.engine.Console {} - const GL11: typeof org.lwjgl.opengl.GL11; - interface GL11 extends org.lwjgl.opengl.GL11 {} - const GL12: typeof org.lwjgl.opengl.GL12; - interface GL12 extends org.lwjgl.opengl.GL12 {} - const GL13: typeof org.lwjgl.opengl.GL13; - interface GL13 extends org.lwjgl.opengl.GL13 {} - const GL14: typeof org.lwjgl.opengl.GL14; - interface GL14 extends org.lwjgl.opengl.GL14 {} - const GL15: typeof org.lwjgl.opengl.GL15; - interface GL15 extends org.lwjgl.opengl.GL15 {} - const GL20: typeof org.lwjgl.opengl.GL20; - interface GL20 extends org.lwjgl.opengl.GL20 {} - const GL21: typeof org.lwjgl.opengl.GL21; - interface GL21 extends org.lwjgl.opengl.GL21 {} - const GL30: typeof org.lwjgl.opengl.GL30; - interface GL30 extends org.lwjgl.opengl.GL30 {} - const GL31: typeof org.lwjgl.opengl.GL31; - interface GL31 extends org.lwjgl.opengl.GL31 {} - const GL32: typeof org.lwjgl.opengl.GL32; - interface GL32 extends org.lwjgl.opengl.GL32 {} - const GL33: typeof org.lwjgl.opengl.GL33; - interface GL33 extends org.lwjgl.opengl.GL33 {} - const GL40: typeof org.lwjgl.opengl.GL40; - interface GL40 extends org.lwjgl.opengl.GL40 {} - const GL41: typeof org.lwjgl.opengl.GL41; - interface GL41 extends org.lwjgl.opengl.GL41 {} - const GL42: typeof org.lwjgl.opengl.GL42; - interface GL42 extends org.lwjgl.opengl.GL42 {} - const GL43: typeof org.lwjgl.opengl.GL43; - interface GL43 extends org.lwjgl.opengl.GL43 {} - const GL44: typeof org.lwjgl.opengl.GL44; - interface GL44 extends org.lwjgl.opengl.GL44 {} - const GL45: typeof org.lwjgl.opengl.GL45; - interface GL45 extends org.lwjgl.opengl.GL45 {} /** @@ -3648,11 +3608,14 @@ declare global { } const Reader: { nullReader(): java.io.Reader; + of(p0: kotlin.CharSequence): java.io.Reader; } interface Reader extends java.lang.Readable, java.io.Closeable { read(): number; read(p0: Array): number; read(p0: Array, p1: number, p2: number): number; + readAllLines(): Array; + readAllAsString(): string; skip(p0: number): number; ready(): boolean; markSupported(): boolean; @@ -3797,6 +3760,7 @@ declare global { reduce(p0: T, p1: unknown): T; reduce(p0: unknown): java.util.Optional; reduce(p0: U, p1: unknown, p2: unknown): U; + gather(p0: java.util.stream.Gatherer): java.util.stream.Stream; collect(p0: unknown, p1: unknown, p2: unknown): R; collect(p0: java.util.stream.Collector): R; toList(): Array; @@ -3981,6 +3945,40 @@ declare global { add(p0: number): java.util.stream.IntStream$Builder; build(): java.util.stream.IntStream; } + const Gatherer: { + defaultInitializer(): unknown; + defaultCombiner(): unknown; + defaultFinisher(): unknown; + ofSequential(p0: java.util.stream.Gatherer$Integrator): java.util.stream.Gatherer; + ofSequential(p0: java.util.stream.Gatherer$Integrator, p1: unknown): java.util.stream.Gatherer; + ofSequential(p0: unknown, p1: java.util.stream.Gatherer$Integrator): java.util.stream.Gatherer; + ofSequential(p0: unknown, p1: java.util.stream.Gatherer$Integrator, p2: unknown): java.util.stream.Gatherer; + of(p0: java.util.stream.Gatherer$Integrator): java.util.stream.Gatherer; + of(p0: java.util.stream.Gatherer$Integrator, p1: unknown): java.util.stream.Gatherer; + of(p0: unknown, p1: java.util.stream.Gatherer$Integrator, p2: unknown, p3: unknown): java.util.stream.Gatherer; + } + interface Gatherer { + initializer(): unknown; + integrator(): java.util.stream.Gatherer$Integrator; + combiner(): unknown; + finisher(): unknown; + andThen(p0: java.util.stream.Gatherer): java.util.stream.Gatherer; + } + const Gatherer$Integrator: { + of(p0: java.util.stream.Gatherer$Integrator): java.util.stream.Gatherer$Integrator; + ofGreedy(p0: unknown): unknown; + } + interface Gatherer$Integrator { + integrate(p0: A, p1: T, p2: java.util.stream.Gatherer$Downstream): boolean; + (p0: A, p1: T, p2: java.util.stream.Gatherer$Downstream): boolean; + } + interface Gatherer$Downstream { + push(p0: T): boolean; + isRejecting(): boolean; + (p0: T): boolean; + } + interface Gatherer$Integrator$Greedy extends java.util.stream.Gatherer$Integrator { + } const Collector: { Characteristics: typeof java.util.stream.Collector$Characteristics; of(p0: unknown, p1: unknown, p2: unknown, p3: java.util.stream.Collector$Characteristics): java.util.stream.Collector; @@ -4232,19 +4230,6 @@ declare global { interface Delayed extends kotlin.Comparable { getDelay(p0: java.util.concurrent.TimeUnit): number; } - const CopyOnWriteArrayList: { - new(): java.util.concurrent.CopyOnWriteArrayList; - new(p0: Array): java.util.concurrent.CopyOnWriteArrayList; - new(p0: Array): java.util.concurrent.CopyOnWriteArrayList; - } - interface CopyOnWriteArrayList extends Array, java.util.RandomAccess, kotlin.Cloneable, java.io.Serializable { - indexOf(p0: E, p1: number): number; - lastIndexOf(p0: E, p1: number): number; - toArray(): Array; - toArray(p0: Array): Array; - addIfAbsent(p0: E): boolean; - addAllAbsent(p0: Array): number; - } const ConcurrentHashMap: { KeySetView: typeof java.util.concurrent.ConcurrentHashMap$KeySetView; new(): java.util.concurrent.ConcurrentHashMap; @@ -4298,6 +4283,19 @@ declare global { interface ConcurrentHashMap$KeySetView extends Set, java.io.Serializable { getMappedValue(): V; } + const CopyOnWriteArrayList: { + new(): java.util.concurrent.CopyOnWriteArrayList; + new(p0: Array): java.util.concurrent.CopyOnWriteArrayList; + new(p0: Array): java.util.concurrent.CopyOnWriteArrayList; + } + interface CopyOnWriteArrayList extends Array, java.util.RandomAccess, kotlin.Cloneable, java.io.Serializable { + indexOf(p0: E, p1: number): number; + lastIndexOf(p0: E, p1: number): number; + toArray(): Array; + toArray(p0: Array): Array; + addIfAbsent(p0: E): boolean; + addAllAbsent(p0: Array): number; + } } namespace random { const RandomGenerator: { @@ -4310,6 +4308,7 @@ declare global { doubles(p0: number, p1: number): java.util.stream.DoubleStream; doubles(p0: number): java.util.stream.DoubleStream; doubles(p0: number, p1: number, p2: number): java.util.stream.DoubleStream; + equiDoubles(p0: number, p1: number, p2: boolean, p3: boolean): java.util.stream.DoubleStream; ints(): java.util.stream.IntStream; ints(p0: number, p1: number): java.util.stream.IntStream; ints(p0: number): java.util.stream.IntStream; @@ -4439,6 +4438,82 @@ declare global { isDirectory(): boolean; } } + namespace regex { + const Pattern: { + UNIX_LINES: number; + CASE_INSENSITIVE: number; + COMMENTS: number; + MULTILINE: number; + LITERAL: number; + DOTALL: number; + UNICODE_CASE: number; + CANON_EQ: number; + UNICODE_CHARACTER_CLASS: number; + compile(p0: string): java.util.regex.Pattern; + compile(p0: string, p1: number): java.util.regex.Pattern; + matches(p0: string, p1: kotlin.CharSequence): boolean; + quote(p0: string): string; + } + interface Pattern extends java.io.Serializable { + pattern(): string; + flags(): number; + namedGroups(): Map; + matcher(p0: kotlin.CharSequence): java.util.regex.Matcher; + split(p0: kotlin.CharSequence, p1: number): Array; + split(p0: kotlin.CharSequence): Array; + splitWithDelimiters(p0: kotlin.CharSequence, p1: number): Array; + next(): number; + asPredicate(): unknown; + asMatchPredicate(): unknown; + splitAsStream(p0: kotlin.CharSequence): java.util.stream.Stream; + } + const Matcher: { + quoteReplacement(p0: string): string; + } + interface Matcher extends java.util.regex.MatchResult { + hitEnd(): boolean; + requireEnd(): boolean; + pattern(): java.util.regex.Pattern; + toMatchResult(): java.util.regex.MatchResult; + usePattern(p0: java.util.regex.Pattern): java.util.regex.Matcher; + reset(): java.util.regex.Matcher; + reset(p0: kotlin.CharSequence): java.util.regex.Matcher; + matches(): boolean; + find(): boolean; + find(p0: number): boolean; + lookingAt(): boolean; + appendReplacement(p0: java.lang.StringBuffer, p1: string): java.util.regex.Matcher; + appendReplacement(p0: java.lang.StringBuilder, p1: string): java.util.regex.Matcher; + appendTail(p0: java.lang.StringBuffer): java.lang.StringBuffer; + appendTail(p0: java.lang.StringBuilder): java.lang.StringBuilder; + replaceAll(p0: string): string; + replaceAll(p0: unknown): string; + results(): java.util.stream.Stream; + replaceFirst(p0: string): string; + replaceFirst(p0: unknown): string; + region(p0: number, p1: number): java.util.regex.Matcher; + regionStart(): number; + regionEnd(): number; + hasTransparentBounds(): boolean; + useTransparentBounds(p0: boolean): java.util.regex.Matcher; + hasAnchoringBounds(): boolean; + useAnchoringBounds(p0: boolean): java.util.regex.Matcher; + } + interface MatchResult { + start(): number; + start(p0: number): number; + start(p0: string): number; + end(): number; + end(p0: number): number; + end(p0: string): number; + group(): string; + group(p0: number): string; + group(p0: string): string; + groupCount(): number; + namedGroups(): Map; + hasMatch(): boolean; + } + } const ArrayList: { new(p0: number): java.util.ArrayList; new(): java.util.ArrayList; @@ -4799,10 +4874,42 @@ declare global { nextElement(): E; asIterator(): kotlin.collections.MutableIterator; } + interface SortedMap extends java.util.SequencedMap { + comparator(): java.util.Comparator; + subMap(p0: K, p1: K): java.util.SortedMap; + headMap(p0: K): java.util.SortedMap; + tailMap(p0: K): java.util.SortedMap; + firstKey(): K; + lastKey(): K; + } + interface SequencedMap extends Map { + reversed(): java.util.SequencedMap; + firstEntry(): kotlin.collections.MutableMap$MutableEntry; + lastEntry(): kotlin.collections.MutableMap$MutableEntry; + pollFirstEntry(): kotlin.collections.MutableMap$MutableEntry; + pollLastEntry(): kotlin.collections.MutableMap$MutableEntry; + putFirst(p0: K, p1: V): V; + putLast(p0: K, p1: V): V; + sequencedKeySet(): java.util.SequencedSet; + sequencedValues(): java.util.SequencedCollection; + sequencedEntrySet(): java.util.SequencedSet>; + } + interface SequencedSet extends java.util.SequencedCollection, Set { + } + interface SequencedCollection extends Array { + reversed(): java.util.SequencedCollection; + addFirst(p0: E): void; + addLast(p0: E): void; + getFirst(): E; + getLast(): E; + removeFirst(): E; + removeLast(): E; + } const Currency: { getInstance(p0: string): java.util.Currency; getInstance(p0: java.util.Locale): java.util.Currency; getAvailableCurrencies(): Set; + availableCurrencies(): java.util.stream.Stream; } interface Currency extends java.io.Serializable { getCurrencyCode(): string; @@ -4855,37 +4962,6 @@ declare global { interface Random extends java.util.random.RandomGenerator, java.io.Serializable { setSeed(p0: number): void; } - interface SortedMap extends java.util.SequencedMap { - comparator(): java.util.Comparator; - subMap(p0: K, p1: K): java.util.SortedMap; - headMap(p0: K): java.util.SortedMap; - tailMap(p0: K): java.util.SortedMap; - firstKey(): K; - lastKey(): K; - } - interface SequencedMap extends Map { - reversed(): java.util.SequencedMap; - firstEntry(): kotlin.collections.MutableMap$MutableEntry; - lastEntry(): kotlin.collections.MutableMap$MutableEntry; - pollFirstEntry(): kotlin.collections.MutableMap$MutableEntry; - pollLastEntry(): kotlin.collections.MutableMap$MutableEntry; - putFirst(p0: K, p1: V): V; - putLast(p0: K, p1: V): V; - sequencedKeySet(): java.util.SequencedSet; - sequencedValues(): java.util.SequencedCollection; - sequencedEntrySet(): java.util.SequencedSet>; - } - interface SequencedSet extends java.util.SequencedCollection, Set { - } - interface SequencedCollection extends Array { - reversed(): java.util.SequencedCollection; - addFirst(p0: E): void; - addLast(p0: E): void; - getFirst(): E; - getLast(): E; - removeFirst(): E; - removeLast(): E; - } const BitSet: { new(): java.util.BitSet; new(p0: number): java.util.BitSet; @@ -5072,6 +5148,8 @@ declare global { getTimeZone(p0: java.time.ZoneId): java.util.TimeZone; getAvailableIDs(p0: number): Array; getAvailableIDs(): Array; + availableIDs(p0: number): java.util.stream.Stream; + availableIDs(): java.util.stream.Stream; getDefault(): java.util.TimeZone; setDefault(p0: java.util.TimeZone): void; } @@ -5112,8 +5190,6 @@ declare global { setWeekDefinition(p0: number, p1: number): java.util.Calendar$Builder; build(): java.util.Calendar; } - interface EventListener { - } const Properties: { new(): java.util.Properties; new(p0: number): java.util.Properties; @@ -5158,6 +5234,8 @@ declare global { put(p0: K, p1: V): V; remove(p0: any): V; } + interface EventListener { + } const EnumMap: { new(p0: java.lang.Class): java.util.EnumMap; new(p0: java.util.EnumMap): java.util.EnumMap; @@ -5873,26 +5951,28 @@ declare global { prefixAllocator(p0: java.lang.foreign.MemorySegment): java.lang.foreign.SegmentAllocator; } interface SegmentAllocator { - allocateUtf8String(p0: string): java.lang.foreign.MemorySegment; - allocate(p0: java.lang.foreign.ValueLayout$OfByte, p1: number): java.lang.foreign.MemorySegment; - allocate(p0: java.lang.foreign.ValueLayout$OfChar, p1: number): java.lang.foreign.MemorySegment; - allocate(p0: java.lang.foreign.ValueLayout$OfShort, p1: number): java.lang.foreign.MemorySegment; - allocate(p0: java.lang.foreign.ValueLayout$OfInt, p1: number): java.lang.foreign.MemorySegment; - allocate(p0: java.lang.foreign.ValueLayout$OfFloat, p1: number): java.lang.foreign.MemorySegment; - allocate(p0: java.lang.foreign.ValueLayout$OfLong, p1: number): java.lang.foreign.MemorySegment; - allocate(p0: java.lang.foreign.ValueLayout$OfDouble, p1: number): java.lang.foreign.MemorySegment; - allocate(p0: java.lang.foreign.AddressLayout, p1: java.lang.foreign.MemorySegment): java.lang.foreign.MemorySegment; + allocateFrom(p0: string): java.lang.foreign.MemorySegment; + allocateFrom(p0: string, p1: java.nio.charset.Charset): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfByte, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfChar, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfShort, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfInt, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfFloat, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfLong, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfDouble, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.AddressLayout, p1: java.lang.foreign.MemorySegment): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout, p1: java.lang.foreign.MemorySegment, p2: java.lang.foreign.ValueLayout, p3: number, p4: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfByte, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfShort, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfChar, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfInt, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfFloat, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfLong, p1: number): java.lang.foreign.MemorySegment; + allocateFrom(p0: java.lang.foreign.ValueLayout$OfDouble, p1: number): java.lang.foreign.MemorySegment; allocate(p0: java.lang.foreign.MemoryLayout): java.lang.foreign.MemorySegment; + allocate(p0: java.lang.foreign.MemoryLayout, p1: number): java.lang.foreign.MemorySegment; allocate(p0: number): java.lang.foreign.MemorySegment; allocate(p0: number, p1: number): java.lang.foreign.MemorySegment; - allocateArray(p0: java.lang.foreign.ValueLayout$OfByte, p1: number): java.lang.foreign.MemorySegment; - allocateArray(p0: java.lang.foreign.ValueLayout$OfShort, p1: number): java.lang.foreign.MemorySegment; - allocateArray(p0: java.lang.foreign.ValueLayout$OfChar, p1: number): java.lang.foreign.MemorySegment; - allocateArray(p0: java.lang.foreign.ValueLayout$OfInt, p1: number): java.lang.foreign.MemorySegment; - allocateArray(p0: java.lang.foreign.ValueLayout$OfFloat, p1: number): java.lang.foreign.MemorySegment; - allocateArray(p0: java.lang.foreign.ValueLayout$OfLong, p1: number): java.lang.foreign.MemorySegment; - allocateArray(p0: java.lang.foreign.ValueLayout$OfDouble, p1: number): java.lang.foreign.MemorySegment; - allocateArray(p0: java.lang.foreign.MemoryLayout, p1: number): java.lang.foreign.MemorySegment; (p0: number, p1: number): java.lang.foreign.MemorySegment; } const MemorySegment: { @@ -5920,6 +6000,7 @@ declare global { scope(): java.lang.foreign.MemorySegment$Scope; isAccessibleBy(p0: java.lang.Thread): boolean; byteSize(): number; + maxByteAlignment(): number; asSlice(p0: number, p1: number): java.lang.foreign.MemorySegment; asSlice(p0: number, p1: number, p2: number): java.lang.foreign.MemorySegment; asSlice(p0: number, p1: java.lang.foreign.MemoryLayout): java.lang.foreign.MemorySegment; @@ -5932,7 +6013,6 @@ declare global { isNative(): boolean; isMapped(): boolean; asOverlappingSlice(p0: java.lang.foreign.MemorySegment): java.util.Optional; - segmentOffset(p0: java.lang.foreign.MemorySegment): number; fill(p0: number): java.lang.foreign.MemorySegment; copyFrom(p0: java.lang.foreign.MemorySegment): java.lang.foreign.MemorySegment; mismatch(p0: java.lang.foreign.MemorySegment): number; @@ -5948,8 +6028,10 @@ declare global { toArray(p0: java.lang.foreign.ValueLayout$OfFloat): kotlin.FloatArray; toArray(p0: java.lang.foreign.ValueLayout$OfLong): Array; toArray(p0: java.lang.foreign.ValueLayout$OfDouble): kotlin.DoubleArray; - getUtf8String(p0: number): string; - setUtf8String(p0: number, p1: string): void; + getString(p0: number): string; + getString(p0: number, p1: java.nio.charset.Charset): string; + setString(p0: number, p1: string): void; + setString(p0: number, p1: string, p2: java.nio.charset.Charset): void; get(p0: java.lang.foreign.ValueLayout$OfByte, p1: number): number; get(p0: java.lang.foreign.ValueLayout$OfBoolean, p1: number): boolean; get(p0: java.lang.foreign.ValueLayout$OfChar, p1: number): number; @@ -5990,7 +6072,6 @@ declare global { const MemoryLayout: { paddingLayout(p0: number): java.lang.foreign.PaddingLayout; sequenceLayout(p0: number, p1: java.lang.foreign.MemoryLayout): java.lang.foreign.SequenceLayout; - sequenceLayout(p0: java.lang.foreign.MemoryLayout): java.lang.foreign.SequenceLayout; structLayout(p0: java.lang.foreign.MemoryLayout): java.lang.foreign.StructLayout; unionLayout(p0: java.lang.foreign.MemoryLayout): java.lang.foreign.UnionLayout; } @@ -6001,9 +6082,12 @@ declare global { withoutName(): java.lang.foreign.MemoryLayout; byteAlignment(): number; withByteAlignment(p0: number): java.lang.foreign.MemoryLayout; + scale(p0: number, p1: number): number; + scaleHandle(): java.lang.invoke.MethodHandle; byteOffset(p0: java.lang.foreign.MemoryLayout$PathElement): number; byteOffsetHandle(p0: java.lang.foreign.MemoryLayout$PathElement): java.lang.invoke.MethodHandle; varHandle(p0: java.lang.foreign.MemoryLayout$PathElement): java.lang.invoke.VarHandle; + arrayElementVarHandle(p0: java.lang.foreign.MemoryLayout$PathElement): java.lang.invoke.VarHandle; sliceHandle(p0: java.lang.foreign.MemoryLayout$PathElement): java.lang.invoke.MethodHandle; select(p0: java.lang.foreign.MemoryLayout$PathElement): java.lang.foreign.MemoryLayout; } @@ -6059,8 +6143,8 @@ declare global { interface ValueLayout extends java.lang.foreign.MemoryLayout { order(): java.nio.ByteOrder; withOrder(p0: java.nio.ByteOrder): java.lang.foreign.ValueLayout; - arrayElementVarHandle(p0: number): java.lang.invoke.VarHandle; carrier(): java.lang.Class; + varHandle(): java.lang.invoke.VarHandle; } interface AddressLayout extends java.lang.foreign.ValueLayout { withTargetLayout(p0: java.lang.foreign.MemoryLayout): java.lang.foreign.AddressLayout; @@ -6138,14 +6222,11 @@ declare global { interrupt(): void; isInterrupted(): boolean; isAlive(): boolean; - suspend(): void; - resume(): void; setPriority(p0: number): void; getPriority(): number; setName(p0: string): void; getName(): string; getThreadGroup(): java.lang.ThreadGroup; - countStackFrames(): number; join(p0: number): void; join(p0: number, p1: number): void; join(): void; @@ -6182,10 +6263,7 @@ declare global { enumerate(p0: Array): number; enumerate(p0: Array, p1: boolean): number; activeGroupCount(): number; - stop(): void; interrupt(): void; - suspend(): void; - resume(): void; destroy(): void; list(): void; } @@ -6221,6 +6299,7 @@ declare global { forName(p0: string): java.lang.Class; forName(p0: string, p1: boolean, p2: java.lang.ClassLoader): java.lang.Class; forName(p0: java.lang.Module, p1: string): java.lang.Class; + forPrimitiveName(p0: string): java.lang.Class; } interface Class extends java.io.Serializable, java.lang.reflect.GenericDeclaration, java.lang.reflect.Type, java.lang.reflect.AnnotatedElement, java.lang.invoke.TypeDescriptor$OfField>, java.lang.constant.Constable { toGenericString(): string; @@ -6249,7 +6328,6 @@ declare global { getEnclosingClass(): java.lang.Class; getSimpleName(): string; getCanonicalName(): string; - isUnnamedClass(): boolean; isAnonymousClass(): boolean; isLocalClass(): boolean; isMemberClass(): boolean; @@ -6519,6 +6597,8 @@ declare global { normalize(): java.nio.file.Path; resolve(p0: java.nio.file.Path): java.nio.file.Path; resolve(p0: string): java.nio.file.Path; + resolve(p0: java.nio.file.Path, p1: java.nio.file.Path): java.nio.file.Path; + resolve(p0: string, p1: string): java.nio.file.Path; resolveSibling(p0: java.nio.file.Path): java.nio.file.Path; resolveSibling(p0: string): java.nio.file.Path; relativize(p0: java.nio.file.Path): java.nio.file.Path; @@ -7511,6 +7591,7 @@ declare global { minusSeconds(p0: number): java.time.Instant; minusMillis(p0: number): java.time.Instant; minusNanos(p0: number): java.time.Instant; + until(p0: java.time.Instant): java.time.Duration; atOffset(p0: java.time.ZoneOffset): java.time.OffsetDateTime; atZone(p0: java.time.ZoneId): java.time.ZonedDateTime; toEpochMilli(): number; @@ -8129,6 +8210,7 @@ declare global { getByName(p0: string): java.net.InetAddress; getAllByName(p0: string): Array; getLoopbackAddress(): java.net.InetAddress; + ofLiteral(p0: string): java.net.InetAddress; getLocalHost(): java.net.InetAddress; } interface InetAddress extends java.io.Serializable { @@ -8195,6 +8277,22 @@ declare global { namespace spec { interface AlgorithmParameterSpec { } + const PKCS8EncodedKeySpec: { + new(p0: Array): java.security.spec.PKCS8EncodedKeySpec; + new(p0: Array, p1: string): java.security.spec.PKCS8EncodedKeySpec; + } + interface PKCS8EncodedKeySpec extends java.security.spec.EncodedKeySpec, java.security.DEREncodable { + } + const EncodedKeySpec: { + new(p0: Array): java.security.spec.EncodedKeySpec; + } + interface EncodedKeySpec extends java.security.spec.KeySpec { + getAlgorithm(): string; + getEncoded(): Array; + getFormat(): string; + } + interface KeySpec { + } } namespace cert { interface Certificate extends java.io.Serializable { @@ -8277,7 +8375,10 @@ declare global { const PublicKey: { serialVersionUID: number; } - interface PublicKey extends java.security.Key { + interface PublicKey extends java.security.AsymmetricKey { + } + interface AsymmetricKey extends java.security.Key, java.security.DEREncodable { + getParams(): java.security.spec.AlgorithmParameterSpec; } const Key: { serialVersionUID: number; @@ -8287,17 +8388,7 @@ declare global { getFormat(): string; getEncoded(): Array; } - const KeyPair: { - new(p0: java.security.PublicKey, p1: java.security.PrivateKey): java.security.KeyPair; - } - interface KeyPair extends java.io.Serializable { - getPublic(): java.security.PublicKey; - getPrivate(): java.security.PrivateKey; - } - const PrivateKey: { - serialVersionUID: number; - } - interface PrivateKey extends java.security.Key, javax.security.auth.Destroyable { + interface DEREncodable { } const Provider: { Service: typeof java.security.Provider$Service; @@ -8373,6 +8464,151 @@ declare global { } interface SecureRandomSpi extends java.io.Serializable { } + interface AlgorithmConstraints { + permits(p0: Set, p1: string, p2: java.security.AlgorithmParameters): boolean; + permits(p0: Set, p1: java.security.Key): boolean; + permits(p0: Set, p1: string, p2: java.security.Key, p3: java.security.AlgorithmParameters): boolean; + } + const KeyStore: { + Builder: typeof java.security.KeyStore$Builder; + TrustedCertificateEntry: typeof java.security.KeyStore$TrustedCertificateEntry; + SecretKeyEntry: typeof java.security.KeyStore$SecretKeyEntry; + PrivateKeyEntry: typeof java.security.KeyStore$PrivateKeyEntry; + CallbackHandlerProtection: typeof java.security.KeyStore$CallbackHandlerProtection; + PasswordProtection: typeof java.security.KeyStore$PasswordProtection; + getInstance(p0: string): java.security.KeyStore; + getInstance(p0: string, p1: string): java.security.KeyStore; + getInstance(p0: string, p1: java.security.Provider): java.security.KeyStore; + getInstance(p0: java.io.File, p1: Array): java.security.KeyStore; + getInstance(p0: java.io.File, p1: java.security.KeyStore$LoadStoreParameter): java.security.KeyStore; + getDefaultType(): string; + } + interface KeyStore { + getProvider(): java.security.Provider; + getType(): string; + getAttributes(p0: string): Set; + getKey(p0: string, p1: Array): java.security.Key; + getCertificateChain(p0: string): Array; + getCertificate(p0: string): java.security.cert.Certificate; + getCreationDate(p0: string): java.util.Date; + setKeyEntry(p0: string, p1: java.security.Key, p2: Array, p3: Array): void; + setKeyEntry(p0: string, p1: Array, p2: Array): void; + setCertificateEntry(p0: string, p1: java.security.cert.Certificate): void; + deleteEntry(p0: string): void; + aliases(): java.util.Enumeration; + containsAlias(p0: string): boolean; + size(): number; + isKeyEntry(p0: string): boolean; + isCertificateEntry(p0: string): boolean; + getCertificateAlias(p0: java.security.cert.Certificate): string; + store(p0: java.io.OutputStream, p1: Array): void; + store(p0: java.security.KeyStore$LoadStoreParameter): void; + load(p0: java.io.InputStream, p1: Array): void; + load(p0: java.security.KeyStore$LoadStoreParameter): void; + getEntry(p0: string, p1: java.security.KeyStore$ProtectionParameter): java.security.KeyStore$Entry; + setEntry(p0: string, p1: java.security.KeyStore$Entry, p2: java.security.KeyStore$ProtectionParameter): void; + entryInstanceOf(p0: string, p1: java.lang.Class): boolean; + } + interface KeyStore$LoadStoreParameter { + getProtectionParameter(): java.security.KeyStore$ProtectionParameter; + } + interface KeyStore$ProtectionParameter { + } + interface KeyStore$Entry { + getAttributes(): Set; + } + interface KeyStore$Entry$Attribute { + getName(): string; + getValue(): string; + } + const KeyStoreSpi: { + new(): java.security.KeyStoreSpi; + } + interface KeyStoreSpi { + engineGetKey(p0: string, p1: Array): java.security.Key; + engineGetCertificateChain(p0: string): Array; + engineGetCertificate(p0: string): java.security.cert.Certificate; + engineGetCreationDate(p0: string): java.util.Date; + engineSetKeyEntry(p0: string, p1: java.security.Key, p2: Array, p3: Array): void; + engineSetKeyEntry(p0: string, p1: Array, p2: Array): void; + engineSetCertificateEntry(p0: string, p1: java.security.cert.Certificate): void; + engineDeleteEntry(p0: string): void; + engineAliases(): java.util.Enumeration; + engineContainsAlias(p0: string): boolean; + engineSize(): number; + engineIsKeyEntry(p0: string): boolean; + engineIsCertificateEntry(p0: string): boolean; + engineGetCertificateAlias(p0: java.security.cert.Certificate): string; + engineStore(p0: java.io.OutputStream, p1: Array): void; + engineStore(p0: java.security.KeyStore$LoadStoreParameter): void; + engineLoad(p0: java.io.InputStream, p1: Array): void; + engineLoad(p0: java.security.KeyStore$LoadStoreParameter): void; + engineGetAttributes(p0: string): Set; + engineGetEntry(p0: string, p1: java.security.KeyStore$ProtectionParameter): java.security.KeyStore$Entry; + engineSetEntry(p0: string, p1: java.security.KeyStore$Entry, p2: java.security.KeyStore$ProtectionParameter): void; + engineEntryInstanceOf(p0: string, p1: java.lang.Class): boolean; + engineProbe(p0: java.io.InputStream): boolean; + } + const KeyStore$Builder: { + newInstance(p0: java.security.KeyStore, p1: java.security.KeyStore$ProtectionParameter): java.security.KeyStore$Builder; + newInstance(p0: string, p1: java.security.Provider, p2: java.io.File, p3: java.security.KeyStore$ProtectionParameter): java.security.KeyStore$Builder; + newInstance(p0: java.io.File, p1: java.security.KeyStore$ProtectionParameter): java.security.KeyStore$Builder; + newInstance(p0: string, p1: java.security.Provider, p2: java.security.KeyStore$ProtectionParameter): java.security.KeyStore$Builder; + } + interface KeyStore$Builder { + getKeyStore(): java.security.KeyStore; + getProtectionParameter(p0: string): java.security.KeyStore$ProtectionParameter; + } + const KeyStore$TrustedCertificateEntry: { + new(p0: java.security.cert.Certificate): java.security.KeyStore$TrustedCertificateEntry; + new(p0: java.security.cert.Certificate, p1: Set): java.security.KeyStore$TrustedCertificateEntry; + } + interface KeyStore$TrustedCertificateEntry extends java.security.KeyStore$Entry { + getTrustedCertificate(): java.security.cert.Certificate; + } + const KeyStore$SecretKeyEntry: { + new(p0: javax.crypto.SecretKey): java.security.KeyStore$SecretKeyEntry; + new(p0: javax.crypto.SecretKey, p1: Set): java.security.KeyStore$SecretKeyEntry; + } + interface KeyStore$SecretKeyEntry extends java.security.KeyStore$Entry { + getSecretKey(): javax.crypto.SecretKey; + } + const KeyStore$PrivateKeyEntry: { + new(p0: java.security.PrivateKey, p1: Array): java.security.KeyStore$PrivateKeyEntry; + new(p0: java.security.PrivateKey, p1: Array, p2: Set): java.security.KeyStore$PrivateKeyEntry; + } + interface KeyStore$PrivateKeyEntry extends java.security.KeyStore$Entry { + getPrivateKey(): java.security.PrivateKey; + getCertificateChain(): Array; + getCertificate(): java.security.cert.Certificate; + } + const PrivateKey: { + serialVersionUID: number; + } + interface PrivateKey extends java.security.AsymmetricKey, javax.security.auth.Destroyable { + } + const KeyStore$CallbackHandlerProtection: { + new(p0: javax.security.auth.callback.CallbackHandler): java.security.KeyStore$CallbackHandlerProtection; + } + interface KeyStore$CallbackHandlerProtection extends java.security.KeyStore$ProtectionParameter { + getCallbackHandler(): javax.security.auth.callback.CallbackHandler; + } + const KeyStore$PasswordProtection: { + new(p0: Array): java.security.KeyStore$PasswordProtection; + new(p0: Array, p1: string, p2: java.security.spec.AlgorithmParameterSpec): java.security.KeyStore$PasswordProtection; + } + interface KeyStore$PasswordProtection extends java.security.KeyStore$ProtectionParameter, javax.security.auth.Destroyable { + getProtectionAlgorithm(): string; + getProtectionParameters(): java.security.spec.AlgorithmParameterSpec; + getPassword(): Array; + } + const KeyPair: { + new(p0: java.security.PublicKey, p1: java.security.PrivateKey): java.security.KeyPair; + } + interface KeyPair extends java.io.Serializable, java.security.DEREncodable { + getPublic(): java.security.PublicKey; + getPrivate(): java.security.PrivateKey; + } } namespace text { const NumberFormat: { @@ -8403,6 +8639,8 @@ declare global { parse(p0: string): number; isParseIntegerOnly(): boolean; setParseIntegerOnly(p0: boolean): void; + isStrict(): boolean; + setStrict(p0: boolean): void; isGroupingUsed(): boolean; setGroupingUsed(p0: boolean): void; getMaximumIntegerDigits(): number; @@ -8846,7 +9084,6 @@ declare global { sqrt(): java.math.BigInteger; sqrtAndRemainder(): Array; gcd(p0: java.math.BigInteger): java.math.BigInteger; - bitLength(): number; abs(): java.math.BigInteger; negate(): java.math.BigInteger; mod(p0: java.math.BigInteger): java.math.BigInteger; @@ -8864,6 +9101,7 @@ declare global { clearBit(p0: number): java.math.BigInteger; flipBit(p0: number): java.math.BigInteger; getLowestSetBit(): number; + bitLength(): number; bitCount(): number; isProbablePrime(p0: number): boolean; min(p0: java.math.BigInteger): java.math.BigInteger; @@ -9110,6 +9348,46 @@ declare global { } } namespace reflect { + interface KClass extends kotlin.reflect.KDeclarationContainer, kotlin.reflect.KAnnotatedElement, kotlin.reflect.KClassifier { + getSimpleName(): string | null | undefined; + getQualifiedName(): string | null | undefined; + getConstructors(): Array>; + getNestedClasses(): Array>; + getObjectInstance(): T; + getTypeParameters(): Array; + getSupertypes(): Array; + getSealedSubclasses(): Array>; + getVisibility(): kotlin.reflect.KVisibility | null | undefined; + isFinal(): boolean; + isOpen(): boolean; + isAbstract(): boolean; + isSealed(): boolean; + isData(): boolean; + isInner(): boolean; + isCompanion(): boolean; + isFun(): boolean; + isValue(): boolean; + isInstance(value: any | null | undefined): boolean; + } + interface KDeclarationContainer { + getMembers(): Array>; + } + interface KAnnotatedElement { + getAnnotations(): Array; + } + interface KClassifier { + } + const KVisibility: { + PUBLIC: kotlin.reflect.KVisibility; + PROTECTED: kotlin.reflect.KVisibility; + INTERNAL: kotlin.reflect.KVisibility; + PRIVATE: kotlin.reflect.KVisibility; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): kotlin.reflect.KVisibility; + } + interface KVisibility extends kotlin.Enum { + } interface KProperty extends kotlin.reflect.KCallable { isLateinit(): boolean; isConst(): boolean; @@ -9128,27 +9406,11 @@ declare global { call(args: any | null | undefined): R; callBy(args: Map): R; } - interface KAnnotatedElement { - getAnnotations(): Array; - } interface KType extends kotlin.reflect.KAnnotatedElement { getClassifier(): kotlin.reflect.KClassifier | null | undefined; getArguments(): Array; isMarkedNullable(): boolean; } - interface KClassifier { - } - const KVisibility: { - PUBLIC: kotlin.reflect.KVisibility; - PROTECTED: kotlin.reflect.KVisibility; - INTERNAL: kotlin.reflect.KVisibility; - PRIVATE: kotlin.reflect.KVisibility; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): kotlin.reflect.KVisibility; - } - interface KVisibility extends kotlin.Enum { - } interface KProperty$Getter extends kotlin.reflect.KProperty$Accessor, kotlin.reflect.KFunction { } interface KProperty$Accessor { @@ -9160,30 +9422,6 @@ declare global { isOperator(): boolean; isInfix(): boolean; } - interface KClass extends kotlin.reflect.KDeclarationContainer, kotlin.reflect.KAnnotatedElement, kotlin.reflect.KClassifier { - getSimpleName(): string | null | undefined; - getQualifiedName(): string | null | undefined; - getConstructors(): Array>; - getNestedClasses(): Array>; - getObjectInstance(): T; - getTypeParameters(): Array; - getSupertypes(): Array; - getSealedSubclasses(): Array>; - getVisibility(): kotlin.reflect.KVisibility | null | undefined; - isFinal(): boolean; - isOpen(): boolean; - isAbstract(): boolean; - isSealed(): boolean; - isData(): boolean; - isInner(): boolean; - isCompanion(): boolean; - isFun(): boolean; - isValue(): boolean; - isInstance(value: any | null | undefined): boolean; - } - interface KDeclarationContainer { - getMembers(): Array>; - } interface KMutableProperty0 extends kotlin.reflect.KProperty0, kotlin.reflect.KMutableProperty { set(value: V): void; } @@ -10104,23 +10342,6 @@ declare global { getCurrentScreen(): net.minecraft.client.gui.screens.Screen | null | undefined; displayScreen(screen: net.minecraft.client.gui.screens.Screen | null | undefined): void; } - const UGraphics$DrawMode: { - LINES: gg.essential.universal.UGraphics$DrawMode; - LINE_STRIP: gg.essential.universal.UGraphics$DrawMode; - TRIANGLES: gg.essential.universal.UGraphics$DrawMode; - TRIANGLE_STRIP: gg.essential.universal.UGraphics$DrawMode; - TRIANGLE_FAN: gg.essential.universal.UGraphics$DrawMode; - QUADS: gg.essential.universal.UGraphics$DrawMode; - entries: kotlin.enums.EnumEntries; - fromGl(p0: number): gg.essential.universal.UGraphics$DrawMode; - fromRenderLayer(p0: net.minecraft.client.renderer.rendertype.RenderType): gg.essential.universal.UGraphics$DrawMode; - values(): Array; - valueOf(value: string): gg.essential.universal.UGraphics$DrawMode; - } - interface UGraphics$DrawMode extends kotlin.Enum { - glMode: number; - mcMode: com.mojang.blaze3d.vertex.VertexFormat$Mode; - } } namespace vigilance { namespace data { @@ -10997,20 +11218,18 @@ declare global { interface AbstractContainerScreen extends net.minecraft.client.gui.screens.Screen, net.minecraft.client.gui.screens.inventory.MenuAccess { extractContents(graphics: net.minecraft.client.gui.GuiGraphicsExtractor, mouseX: number, mouseY: number, a: number): void; extractCarriedItem(graphics: net.minecraft.client.gui.GuiGraphicsExtractor, mouseX: number, mouseY: number): void; - extractSnapbackItem(graphics: net.minecraft.client.gui.GuiGraphicsExtractor): void; - clearDraggingState(): void; } interface MenuAccess { getMenu(): T; } } - namespace options { - const OptionsSubScreen: { - new(lastScreen: net.minecraft.client.gui.screens.Screen, options: net.minecraft.client.Options, title: net.minecraft.network.chat.Component): net.minecraft.client.gui.screens.options.OptionsSubScreen; - } - interface OptionsSubScreen extends net.minecraft.client.gui.screens.Screen { - layout: net.minecraft.client.gui.layouts.HeaderAndFooterLayout; - resetOption(option: net.minecraft.client.OptionInstance): void; + namespace dialog { + interface DialogConnectionAccess { + disconnect(message: net.minecraft.network.chat.Component): void; + runCommand(command: string, activeScreen: net.minecraft.client.gui.screens.Screen | null | undefined): void; + openDialog(dialog: net.minecraft.core.Holder, activeScreen: net.minecraft.client.gui.screens.Screen | null | undefined): void; + sendCustomAction(id: net.minecraft.resources.Identifier, payload: java.util.Optional): void; + serverLinks(): net.minecraft.server.ServerLinks; } } namespace worldselection { @@ -11140,9 +11359,16 @@ declare global { } namespace social { const PlayerSocialManager: { - new(minecraft: net.minecraft.client.Minecraft, service: com.mojang.authlib.minecraft.UserApiService): net.minecraft.client.gui.screens.social.PlayerSocialManager; + PlayerData: typeof net.minecraft.client.gui.screens.social.PlayerSocialManager$PlayerData; + new(minecraft: net.minecraft.client.Minecraft, service: com.mojang.authlib.minecraft.UserApiService, friendsService: com.mojang.authlib.yggdrasil.FriendsService, remoteFriendListUpdateHandler: net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler): net.minecraft.client.gui.screens.social.PlayerSocialManager; } interface PlayerSocialManager { + addFriendListUpdateListener(listener: java.lang.Runnable): void; + removeFriendListUpdateListener(listener: java.lang.Runnable): void; + getFriends(): Array; + getIncomingRequests(): Array; + getOutgoingRequests(): Array; + getFriendListState(): net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; hidePlayer(id: java.util.UUID): void; showPlayer(id: java.util.UUID): void; shouldHideMessageFrom(id: java.util.UUID): boolean; @@ -11153,16 +11379,63 @@ declare global { getHiddenPlayers(): Set; getDiscoveredUUID(name: string): java.util.UUID; addPlayer(info: net.minecraft.client.multiplayer.PlayerInfo): void; + sendFriendRequest(name: string): java.util.concurrent.CompletableFuture; removePlayer(id: java.util.UUID): void; + removeFriend(id: java.util.UUID): java.util.concurrent.CompletableFuture; + acceptIncomingFriendRequest(id: java.util.UUID): java.util.concurrent.CompletableFuture; + declineIncomingFriendRequest(id: java.util.UUID): java.util.concurrent.CompletableFuture; + revokeOutgoingFriendRequest(id: java.util.UUID): java.util.concurrent.CompletableFuture; + updateFriendSettings(friendsListEnabled: boolean, allowInvites: boolean): java.util.concurrent.CompletableFuture; + isFriendListEnabled(): boolean; + setFriendListEnabled(friendListEnabled: boolean): void; + isAllowFriendRequests(): boolean; + setAllowFriendRequests(allowFriendRequests: boolean): void; + getPresenceHandler(): net.minecraft.client.gui.screens.social.PresenceHandler; + isFriend(uuid: java.util.UUID): boolean; + } + const RemoteFriendListUpdateHandler$State: { + LOADING: net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + UPGRADE_NEEDED: net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + CONNECTION_ISSUE: net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + USER_MAY_LACK_ACTIVE_PROFILE: net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + UNAUTHORIZED: net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + TEMPORARY_UNAVAILABLE: net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + GENERIC_ERROR: net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + SUCCESS: net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + } + interface RemoteFriendListUpdateHandler$State extends kotlin.Enum { + } + const PresenceHandler: { + new(minecraft: net.minecraft.client.Minecraft, friendsService: com.mojang.authlib.yggdrasil.FriendsService): net.minecraft.client.gui.screens.social.PresenceHandler; + } + interface PresenceHandler { + tick(): void; + tryUpdatePresence(): void; + getLatestPresence(): com.mojang.authlib.yggdrasil.response.PresenceResponse; + } + const RemoteFriendListUpdateHandler: { + State: typeof net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + new(friendsService: com.mojang.authlib.yggdrasil.FriendsService, minecraft: net.minecraft.client.Minecraft): net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler; + } + interface RemoteFriendListUpdateHandler { + getLatestFriendData(): com.mojang.authlib.yggdrasil.response.FriendData; + getState(): net.minecraft.client.gui.screens.social.RemoteFriendListUpdateHandler$State; + addUpdateListener(listener: java.lang.Runnable): void; + removeUpdateListener(listener: java.lang.Runnable): void; + forceUpdate(): java.util.concurrent.CompletableFuture; + start(): void; + stop(): void; + close(): void; } - } - namespace dialog { - interface DialogConnectionAccess { - disconnect(message: net.minecraft.network.chat.Component): void; - runCommand(command: string, activeScreen: net.minecraft.client.gui.screens.Screen | null | undefined): void; - openDialog(dialog: net.minecraft.core.Holder, activeScreen: net.minecraft.client.gui.screens.Screen | null | undefined): void; - sendCustomAction(id: net.minecraft.resources.Identifier, payload: java.util.Optional): void; - serverLinks(): net.minecraft.server.ServerLinks; + const PlayerSocialManager$PlayerData: { + new(id: java.util.UUID, name: string): net.minecraft.client.gui.screens.social.PlayerSocialManager$PlayerData; + } + interface PlayerSocialManager$PlayerData extends java.lang.Record { + id(): java.util.UUID; + name(): string; } } const Screen: { @@ -11227,7 +11500,7 @@ declare global { new(): net.minecraft.client.gui.screens.Overlay; } interface Overlay extends net.minecraft.client.gui.components.Renderable { - isPauseScreen(): boolean; + isPausing(): boolean; tick(): void; } const Screen$NarratableSearchResult: { @@ -11300,49 +11573,6 @@ declare global { profilerPieChartKeyPress(key: number): void; } } - namespace debug { - const DebugScreenEntryList: { - new(workingDirectory: java.io.File, dataFixer: com.mojang.datafixers.DataFixer): net.minecraft.client.gui.components.debug.DebugScreenEntryList; - } - interface DebugScreenEntryList { - isOverlayVisible(): boolean; - load(): void; - loadProfile(profile: net.minecraft.client.gui.components.debug.DebugScreenProfile): void; - getStatus(location: net.minecraft.resources.Identifier): net.minecraft.client.gui.components.debug.DebugScreenEntryStatus; - isCurrentlyEnabled(location: net.minecraft.resources.Identifier): boolean; - setStatus(location: net.minecraft.resources.Identifier, status: net.minecraft.client.gui.components.debug.DebugScreenEntryStatus): void; - toggleStatus(location: net.minecraft.resources.Identifier): boolean; - getCurrentlyEnabled(): Array; - toggleDebugOverlay(): void; - setOverlayVisible(visible: boolean): void; - rebuildCurrentList(): void; - getCurrentlyEnabledVersion(): number; - isUsingProfile(profile: net.minecraft.client.gui.components.debug.DebugScreenProfile): boolean; - save(): void; - } - const DebugScreenProfile: { - DEFAULT: net.minecraft.client.gui.components.debug.DebugScreenProfile; - PERFORMANCE: net.minecraft.client.gui.components.debug.DebugScreenProfile; - CODEC: net.minecraft.util.StringRepresentable$EnumCodec; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.client.gui.components.debug.DebugScreenProfile; - } - interface DebugScreenProfile extends kotlin.Enum, net.minecraft.util.StringRepresentable { - translationKey(): string; - } - const DebugScreenEntryStatus: { - ALWAYS_ON: net.minecraft.client.gui.components.debug.DebugScreenEntryStatus; - IN_OVERLAY: net.minecraft.client.gui.components.debug.DebugScreenEntryStatus; - NEVER: net.minecraft.client.gui.components.debug.DebugScreenEntryStatus; - CODEC: com.mojang.serialization.Codec; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.client.gui.components.debug.DebugScreenEntryStatus; - } - interface DebugScreenEntryStatus extends kotlin.Enum, net.minecraft.util.StringRepresentable { - } - } namespace toasts { const ToastManager: { new(minecraft: net.minecraft.client.Minecraft, options: net.minecraft.client.Options): net.minecraft.client.gui.components.toasts.ToastManager; @@ -11389,6 +11619,49 @@ declare global { playSound(manager: net.minecraft.client.sounds.SoundManager): void; } } + namespace debug { + const DebugScreenEntryList: { + new(workingDirectory: java.io.File, dataFixer: com.mojang.datafixers.DataFixer): net.minecraft.client.gui.components.debug.DebugScreenEntryList; + } + interface DebugScreenEntryList { + isOverlayVisible(): boolean; + load(): void; + loadProfile(profile: net.minecraft.client.gui.components.debug.DebugScreenProfile): void; + getStatus(location: net.minecraft.resources.Identifier): net.minecraft.client.gui.components.debug.DebugScreenEntryStatus; + isCurrentlyEnabled(location: net.minecraft.resources.Identifier): boolean; + setStatus(location: net.minecraft.resources.Identifier, status: net.minecraft.client.gui.components.debug.DebugScreenEntryStatus): void; + toggleStatus(location: net.minecraft.resources.Identifier): boolean; + getCurrentlyEnabled(): Array; + toggleDebugOverlay(): void; + setOverlayVisible(visible: boolean): void; + rebuildCurrentList(): void; + getCurrentlyEnabledVersion(): number; + isUsingProfile(profile: net.minecraft.client.gui.components.debug.DebugScreenProfile): boolean; + save(): void; + } + const DebugScreenProfile: { + DEFAULT: net.minecraft.client.gui.components.debug.DebugScreenProfile; + PERFORMANCE: net.minecraft.client.gui.components.debug.DebugScreenProfile; + CODEC: net.minecraft.util.StringRepresentable$EnumCodec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.gui.components.debug.DebugScreenProfile; + } + interface DebugScreenProfile extends kotlin.Enum, net.minecraft.util.StringRepresentable { + translationKey(): string; + } + const DebugScreenEntryStatus: { + ALWAYS_ON: net.minecraft.client.gui.components.debug.DebugScreenEntryStatus; + IN_OVERLAY: net.minecraft.client.gui.components.debug.DebugScreenEntryStatus; + NEVER: net.minecraft.client.gui.components.debug.DebugScreenEntryStatus; + CODEC: com.mojang.serialization.Codec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.gui.components.debug.DebugScreenEntryStatus; + } + interface DebugScreenEntryStatus extends kotlin.Enum, net.minecraft.util.StringRepresentable { + } + } interface TabOrderedElement { getTabOrderGroup(): number; } @@ -11434,11 +11707,10 @@ declare global { component(): java.util.Optional; toCharSequence(minecraft: net.minecraft.client.Minecraft): Array; } - const AbstractWidget$WithInactiveMessage: { - new(x: number, y: number, width: number, height: number, message: net.minecraft.network.chat.Component): net.minecraft.client.gui.components.AbstractWidget$WithInactiveMessage; - defaultInactiveMessage(activeMessage: net.minecraft.network.chat.Component): net.minecraft.network.chat.Component; + const ChatComponent$State: { + new(messages: Array, history: Array, delayedMessageDeletions: Array): net.minecraft.client.gui.components.ChatComponent$State; } - interface AbstractWidget$WithInactiveMessage extends net.minecraft.client.gui.components.AbstractWidget { + interface ChatComponent$State { } const CycleButton$ValueListSupplier: { create(values: Array): net.minecraft.client.gui.components.CycleButton$ValueListSupplier; @@ -11456,94 +11728,15 @@ declare global { } interface AbstractSliderButton extends net.minecraft.client.gui.components.AbstractWidget$WithInactiveMessage { } + const AbstractWidget$WithInactiveMessage: { + new(x: number, y: number, width: number, height: number, message: net.minecraft.network.chat.Component): net.minecraft.client.gui.components.AbstractWidget$WithInactiveMessage; + defaultInactiveMessage(activeMessage: net.minecraft.network.chat.Component): net.minecraft.network.chat.Component; + } + interface AbstractWidget$WithInactiveMessage extends net.minecraft.client.gui.components.AbstractWidget { + } interface ResettableOptionWidget { resetValue(): void; } - const OptionsList: { - OptionInstanceWidget: typeof net.minecraft.client.gui.components.OptionsList$OptionInstanceWidget; - new(minecraft: net.minecraft.client.Minecraft, width: number, screen: net.minecraft.client.gui.screens.options.OptionsSubScreen): net.minecraft.client.gui.components.OptionsList; - } - interface OptionsList extends net.minecraft.client.gui.components.ContainerObjectSelectionList { - addBig(option: net.minecraft.client.OptionInstance): void; - addSmall(options: net.minecraft.client.OptionInstance): void; - addSmall(widgets: Array): void; - addSmall(firstOption: net.minecraft.client.gui.components.AbstractWidget, secondOption: net.minecraft.client.gui.components.AbstractWidget | null | undefined): void; - addSmall(firstOption: net.minecraft.client.gui.components.AbstractWidget, firstOptionInstance: net.minecraft.client.OptionInstance, secondOption: net.minecraft.client.gui.components.AbstractWidget | null | undefined): void; - addHeader(text: net.minecraft.network.chat.Component): void; - findOption(option: net.minecraft.client.OptionInstance): net.minecraft.client.gui.components.AbstractWidget | null | undefined; - applyUnsavedChanges(): void; - resetOption(option: net.minecraft.client.OptionInstance): void; - } - const ContainerObjectSelectionList: { - Entry: typeof net.minecraft.client.gui.components.ContainerObjectSelectionList$Entry; - new(minecraft: net.minecraft.client.Minecraft, width: number, height: number, y: number, itemHeight: number): net.minecraft.client.gui.components.ContainerObjectSelectionList; - } - interface ContainerObjectSelectionList extends net.minecraft.client.gui.components.AbstractSelectionList { - } - const AbstractSelectionList: { - new(minecraft: net.minecraft.client.Minecraft, width: number, height: number, y: number, defaultEntryHeight: number): net.minecraft.client.gui.components.AbstractSelectionList; - } - interface AbstractSelectionList extends net.minecraft.client.gui.components.AbstractContainerWidget { - getSelected(): E; - setSelected(selected: E): void; - replaceEntries(newChildren: Array): void; - getNextY(): number; - updateSize(width: number, layout: net.minecraft.client.gui.layouts.HeaderAndFooterLayout): void; - updateSizeAndPosition(width: number, height: number, y: number): void; - updateSizeAndPosition(width: number, height: number, x: number, y: number): void; - getRowLeft(): number; - getRowRight(): number; - getRowTop(row: number): number; - getRowBottom(row: number): number; - getRowWidth(): number; - } - const AbstractContainerWidget: { - new(x: number, y: number, width: number, height: number, message: net.minecraft.network.chat.Component, scrollbarSettings: net.minecraft.client.gui.components.AbstractScrollArea$ScrollbarSettings): net.minecraft.client.gui.components.AbstractContainerWidget; - } - interface AbstractContainerWidget extends net.minecraft.client.gui.components.AbstractScrollArea, net.minecraft.client.gui.components.events.ContainerEventHandler { - } - const AbstractScrollArea: { - ScrollbarSettings: typeof net.minecraft.client.gui.components.AbstractScrollArea$ScrollbarSettings; - SCROLLBAR_WIDTH: number; - new(x: number, y: number, width: number, height: number, message: net.minecraft.network.chat.Component, scrollbarSettings: net.minecraft.client.gui.components.AbstractScrollArea$ScrollbarSettings): net.minecraft.client.gui.components.AbstractScrollArea; - defaultSettings(scrollRate: number): net.minecraft.client.gui.components.AbstractScrollArea$ScrollbarSettings; - } - interface AbstractScrollArea extends net.minecraft.client.gui.components.AbstractWidget { - scrollAmount(): number; - setScrollAmount(scrollAmount: number): void; - updateScrolling(event: net.minecraft.client.input.MouseButtonEvent): boolean; - refreshScrollAmount(): void; - maxScrollAmount(): number; - scrollbarWidth(): number; - scrollBarY(): number; - } - const AbstractScrollArea$ScrollbarSettings: { - new(scrollerSprite: net.minecraft.resources.Identifier, disabledScrollerSprite: net.minecraft.resources.Identifier | null | undefined, backgroundSprite: net.minecraft.resources.Identifier, scrollbarWidth: number, scrollbarMinHeight: number, scrollRate: number, resizingScrollbar: boolean): net.minecraft.client.gui.components.AbstractScrollArea$ScrollbarSettings; - } - interface AbstractScrollArea$ScrollbarSettings extends java.lang.Record { - scrollerSprite(): net.minecraft.resources.Identifier; - disabledScrollerSprite(): net.minecraft.resources.Identifier | null | undefined; - backgroundSprite(): net.minecraft.resources.Identifier; - scrollbarWidth(): number; - scrollbarMinHeight(): number; - scrollRate(): number; - resizingScrollbar(): boolean; - } - const ContainerObjectSelectionList$Entry: { - new(): net.minecraft.client.gui.components.ContainerObjectSelectionList$Entry; - } - interface ContainerObjectSelectionList$Entry extends net.minecraft.client.gui.components.events.ContainerEventHandler { - focusPathAtIndex(navigationEvent: net.minecraft.client.gui.navigation.FocusNavigationEvent, currentIndex: number): net.minecraft.client.gui.ComponentPath | null | undefined; - narratables(): Array; - } - const OptionsList$OptionInstanceWidget: { - new(widget: net.minecraft.client.gui.components.AbstractWidget): net.minecraft.client.gui.components.OptionsList$OptionInstanceWidget; - new(widget: net.minecraft.client.gui.components.AbstractWidget, optionInstance: net.minecraft.client.OptionInstance | null | undefined): net.minecraft.client.gui.components.OptionsList$OptionInstanceWidget; - } - interface OptionsList$OptionInstanceWidget extends java.lang.Record { - widget(): net.minecraft.client.gui.components.AbstractWidget; - optionInstance(): net.minecraft.client.OptionInstance | null | undefined; - } const ChatComponent: { DisplayMode: typeof net.minecraft.client.gui.components.ChatComponent$DisplayMode; Draft: typeof net.minecraft.client.gui.components.ChatComponent$Draft; @@ -11619,6 +11812,7 @@ declare global { DEFAULT_TEXT_COLOR: number; DEFAULT_HINT_STYLE: net.minecraft.network.chat.Style; SEARCH_HINT_STYLE: net.minecraft.network.chat.Style; + new(font: net.minecraft.client.gui.Font, narration: net.minecraft.network.chat.Component): net.minecraft.client.gui.components.EditBox; new(font: net.minecraft.client.gui.Font, width: number, height: number, narration: net.minecraft.network.chat.Component): net.minecraft.client.gui.components.EditBox; new(font: net.minecraft.client.gui.Font, x: number, y: number, width: number, height: number, narration: net.minecraft.network.chat.Component): net.minecraft.client.gui.components.EditBox; new(font: net.minecraft.client.gui.Font, x: number, y: number, width: number, height: number, oldBox: net.minecraft.client.gui.components.EditBox | null | undefined, narration: net.minecraft.network.chat.Component): net.minecraft.client.gui.components.EditBox; @@ -11663,11 +11857,6 @@ declare global { format(text: string, offset: number): net.minecraft.util.FormattedCharSequence | null | undefined; (text: string, offset: number): net.minecraft.util.FormattedCharSequence | null | undefined; } - const ChatComponent$State: { - new(messages: Array, history: Array, delayedMessageDeletions: Array): net.minecraft.client.gui.components.ChatComponent$State; - } - interface ChatComponent$State { - } interface ChatComponent$ChatGraphicsAccess { updatePose(updater: unknown): void; fill(x0: number, y0: number, x1: number, y1: number, color: number): void; @@ -11677,7 +11866,7 @@ declare global { } const PlayerTabOverlay: { MAX_ROWS_PER_COL: number; - new(minecraft: net.minecraft.client.Minecraft, gui: net.minecraft.client.gui.Gui): net.minecraft.client.gui.components.PlayerTabOverlay; + new(minecraft: net.minecraft.client.Minecraft, hud: net.minecraft.client.gui.Hud): net.minecraft.client.gui.components.PlayerTabOverlay; } interface PlayerTabOverlay { getNameForDisplay(info: net.minecraft.client.multiplayer.PlayerInfo): net.minecraft.network.chat.Component; @@ -11720,7 +11909,6 @@ declare global { getProfilerPieChart(): net.minecraft.client.gui.components.debugchart.ProfilerPieChart; logRemoteSample(sample: Array, type: net.minecraft.util.debugchart.RemoteDebugSampleType): void; reset(): void; - render3dCrosshair(cameraState: net.minecraft.client.renderer.state.level.CameraRenderState, guiScale: number): void; } const SplashRenderer: { CHRISTMAS: net.minecraft.client.gui.components.SplashRenderer; @@ -11935,7 +12123,7 @@ declare global { } const GlyphRenderTypes: { new(normal: net.minecraft.client.renderer.rendertype.RenderType, seeThrough: net.minecraft.client.renderer.rendertype.RenderType, polygonOffset: net.minecraft.client.renderer.rendertype.RenderType, guiPipeline: com.mojang.blaze3d.pipeline.RenderPipeline): net.minecraft.client.gui.font.GlyphRenderTypes; - createForIntensityTexture(name: net.minecraft.resources.Identifier): net.minecraft.client.gui.font.GlyphRenderTypes; + createForGrayscaleTexture(name: net.minecraft.resources.Identifier): net.minecraft.client.gui.font.GlyphRenderTypes; createForColorTexture(name: net.minecraft.resources.Identifier): net.minecraft.client.gui.font.GlyphRenderTypes; } interface GlyphRenderTypes extends java.lang.Record { @@ -12008,31 +12196,6 @@ declare global { setPosition(x: number, y: number): void; visitWidgets(widgetVisitor: unknown): void; } - const HeaderAndFooterLayout: { - MAGIC_PADDING: number; - DEFAULT_HEADER_AND_FOOTER_HEIGHT: number; - new(screen: net.minecraft.client.gui.screens.Screen): net.minecraft.client.gui.layouts.HeaderAndFooterLayout; - new(screen: net.minecraft.client.gui.screens.Screen, headerAndFooterHeight: number): net.minecraft.client.gui.layouts.HeaderAndFooterLayout; - new(screen: net.minecraft.client.gui.screens.Screen, headerHeight: number, footerHeight: number): net.minecraft.client.gui.layouts.HeaderAndFooterLayout; - } - interface HeaderAndFooterLayout extends net.minecraft.client.gui.layouts.Layout { - getFooterHeight(): number; - setFooterHeight(footerHeight: number): void; - setHeaderHeight(headerHeight: number): void; - getHeaderHeight(): number; - getContentHeight(): number; - addToHeader(child: T): T; - addToHeader(child: T, layoutSettingsAdjustments: unknown): T; - addTitleHeader(component: net.minecraft.network.chat.Component, font: net.minecraft.client.gui.Font): void; - addToFooter(child: T): T; - addToFooter(child: T, layoutSettingsAdjustments: unknown): T; - addToContents(child: T): T; - addToContents(child: T, layoutSettingsAdjustments: unknown): T; - } - interface Layout extends net.minecraft.client.gui.layouts.LayoutElement { - visitChildren(layoutElementVisitor: unknown): void; - arrangeElements(): void; - } } namespace narration { const NarratableEntry: { @@ -12135,6 +12298,7 @@ declare global { interface ComponentPath { component(): net.minecraft.client.gui.components.events.GuiEventListener; applyFocus(focused: boolean): void; + leafComponent(): net.minecraft.client.gui.components.events.GuiEventListener; } const ComponentPath$Leaf: { new(component: net.minecraft.client.gui.components.events.GuiEventListener): net.minecraft.client.gui.ComponentPath$Leaf; @@ -12206,11 +12370,10 @@ declare global { itemDecorations(font: net.minecraft.client.gui.Font, itemStack: net.minecraft.world.item.ItemStack, x: number, y: number): void; itemDecorations(font: net.minecraft.client.gui.Font, itemStack: net.minecraft.world.item.ItemStack, x: number, y: number, countText: string | null | undefined): void; map(mapRenderState: net.minecraft.client.renderer.state.MapRenderState): void; - entity(renderState: net.minecraft.client.renderer.entity.state.EntityRenderState, scale: number, translation: org.joml.Vector3f, rotation: org.joml.Quaternionf, overrideCameraAngle: org.joml.Quaternionf | null | undefined, x0: number, y0: number, x1: number, y1: number): void; - skin(playerModel: net.minecraft.client.model.player.PlayerModel, texture: net.minecraft.resources.Identifier, scale: number, rotationX: number, rotationY: number, pivotY: number, x0: number, y0: number, x1: number, y1: number): void; + entity(renderState: net.minecraft.client.renderer.entity.state.EntityRenderState, scale: number, translation: org.joml.Vector3fc, rotation: org.joml.Quaternionfc, overrideCameraAngle: org.joml.Quaternionfc | null | undefined, x0: number, y0: number, x1: number, y1: number): void; + skin(playerModel: net.minecraft.client.model.Model$Simple, texture: net.minecraft.resources.Identifier, scale: number, rotationX: number, rotationY: number, pivotY: number, x0: number, y0: number, x1: number, y1: number): void; book(bookModel: net.minecraft.client.model.object.book.BookModel, texture: net.minecraft.resources.Identifier, scale: number, open: number, flip: number, x0: number, y0: number, x1: number, y1: number): void; bannerPattern(flag: net.minecraft.client.model.object.banner.BannerFlagModel, baseColor: net.minecraft.world.item.DyeColor, resultBannerPatterns: net.minecraft.world.level.block.entity.BannerPatternLayers, x0: number, y0: number, x1: number, y1: number): void; - sign(signModel: net.minecraft.client.model.Model$Simple, scale: number, woodType: net.minecraft.world.level.block.state.properties.WoodType, x0: number, y0: number, x1: number, y1: number): void; profilerChart(chartData: Array, x0: number, y0: number, x1: number, y1: number): void; setTooltipForNextFrame(component: net.minecraft.network.chat.Component, x: number, y: number): void; setTooltipForNextFrame(formattedCharSequences: Array, x: number, y: number): void; @@ -12235,8 +12398,8 @@ declare global { textRenderer(hoveredTextEffects: net.minecraft.client.gui.GuiGraphicsExtractor$HoveredTextEffects, additionalHoverStyleConsumer: unknown): net.minecraft.client.gui.ActiveTextCollector; } interface GuiGraphicsExtractor$ScissorStack { - push(rectangle: net.minecraft.client.gui.navigation.ScreenRectangle): net.minecraft.client.gui.navigation.ScreenRectangle; - pop(): net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined; + push(rectangle: net.minecraft.client.gui.navigation.ScreenRectangle): void; + pop(): void; peek(): net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined; containsPoint(x: number, y: number): boolean; } @@ -12250,6 +12413,16 @@ declare global { } interface Font$DisplayMode extends kotlin.Enum { } + interface Font$PreparedText { + visit(visitor: net.minecraft.client.gui.Font$GlyphVisitor): void; + bounds(): net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined; + } + interface Font$GlyphVisitor { + acceptGlyph(glyph: net.minecraft.client.gui.font.TextRenderable$Styled): void; + acceptEffect(effect: net.minecraft.client.gui.font.TextRenderable): void; + acceptRenderable(renderable: net.minecraft.client.gui.font.TextRenderable): void; + acceptEmptyArea(empty: net.minecraft.client.gui.font.EmptyArea): void; + } const Font: { DisplayMode: typeof net.minecraft.client.gui.Font$DisplayMode; SHADOW_DEPTH: number; @@ -12258,10 +12431,7 @@ declare global { interface Font { lineHeight: number; bidirectionalShaping(text: string): string; - drawInBatch(str: string, x: number, y: number, color: number, dropShadow: boolean, pose: org.joml.Matrix4fc, bufferSource: net.minecraft.client.renderer.MultiBufferSource, displayMode: net.minecraft.client.gui.Font$DisplayMode, backgroundColor: number, packedLightCoords: number): void; - drawInBatch(str: net.minecraft.network.chat.Component, x: number, y: number, color: number, dropShadow: boolean, pose: org.joml.Matrix4fc, bufferSource: net.minecraft.client.renderer.MultiBufferSource, displayMode: net.minecraft.client.gui.Font$DisplayMode, backgroundColor: number, packedLightCoords: number): void; - drawInBatch(str: net.minecraft.util.FormattedCharSequence, x: number, y: number, color: number, dropShadow: boolean, pose: org.joml.Matrix4fc, bufferSource: net.minecraft.client.renderer.MultiBufferSource, displayMode: net.minecraft.client.gui.Font$DisplayMode, backgroundColor: number, packedLightCoords: number): void; - drawInBatch8xOutline(str: net.minecraft.util.FormattedCharSequence, x: number, y: number, color: number, outlineColor: number, pose: org.joml.Matrix4fc, bufferSource: net.minecraft.client.renderer.MultiBufferSource, packedLightCoords: number): void; + prepare8xTextOutline(str: net.minecraft.util.FormattedCharSequence, x: number, y: number, outlineColor: number): net.minecraft.client.gui.Font$PreparedText; prepareText(text: string, x: number, y: number, originalColor: number, drawShadow: boolean, backgroundColor: number): net.minecraft.client.gui.Font$PreparedText; prepareText(text: net.minecraft.util.FormattedCharSequence, x: number, y: number, originalColor: number, drawShadow: boolean, includeEmpty: boolean, backgroundColor: number): net.minecraft.client.gui.Font$PreparedText; width(str: string): number; @@ -12276,18 +12446,6 @@ declare global { isBidirectional(): boolean; getSplitter(): net.minecraft.client.StringSplitter; } - interface Font$PreparedText { - visit(visitor: net.minecraft.client.gui.Font$GlyphVisitor): void; - bounds(): net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined; - } - const Font$GlyphVisitor: { - forMultiBufferSource(bufferSource: net.minecraft.client.renderer.MultiBufferSource, pose: org.joml.Matrix4fc, displayMode: net.minecraft.client.gui.Font$DisplayMode, lightCoords: number): net.minecraft.client.gui.Font$GlyphVisitor; - } - interface Font$GlyphVisitor { - acceptGlyph(glyph: net.minecraft.client.gui.font.TextRenderable$Styled): void; - acceptEffect(effect: net.minecraft.client.gui.font.TextRenderable): void; - acceptEmptyArea(empty: net.minecraft.client.gui.font.EmptyArea): void; - } interface Font$Provider { glyphs(font: net.minecraft.network.chat.FontDescription): net.minecraft.client.gui.GlyphSource; effect(): net.minecraft.client.gui.font.glyphs.EffectGlyph; @@ -12296,6 +12454,66 @@ declare global { getGlyph(codepoint: number): net.minecraft.client.gui.font.glyphs.BakedGlyph; getRandomGlyph(random: net.minecraft.util.RandomSource, width: number): net.minecraft.client.gui.font.glyphs.BakedGlyph; } + const Gui: { + SAVING_LEVEL: net.minecraft.network.chat.Component; + new(minecraft: net.minecraft.client.Minecraft, hud: net.minecraft.client.gui.Hud, guiRenderState: net.minecraft.client.renderer.state.gui.GuiRenderState): net.minecraft.client.gui.Gui; + } + interface Gui { + hud: net.minecraft.client.gui.Hud; + screen(): net.minecraft.client.gui.screens.Screen | null | undefined; + overlay(): net.minecraft.client.gui.screens.Overlay | null | undefined; + splashManager(): net.minecraft.client.resources.SplashManager; + toastManager(): net.minecraft.client.gui.components.toasts.ToastManager; + chatListener(): net.minecraft.client.multiplayer.chat.ChatListener; + registerReloadListeners(resourceManager: net.minecraft.server.packs.resources.ReloadableResourceManager): void; + tick(): void; + update(): void; + extractRenderState(deltaTracker: net.minecraft.client.DeltaTracker, shouldRenderLevel: boolean, resourcesLoaded: boolean): void; + setScreen(screen: net.minecraft.client.gui.screens.Screen | null | undefined): void; + setOverlay(overlay: net.minecraft.client.gui.screens.Overlay | null | undefined): void; + isPausing(): boolean; + addSocialInteractionsToast(): void; + setPauseScreen(suppressPauseMenuIfWeReallyArePausing: boolean, canGameReallyBePaused: boolean): void; + handleKeybinds(): void; + openChatScreen(chatMethod: net.minecraft.client.gui.components.ChatComponent$ChatMethod): void; + openChatAndAddText(chatMethod: net.minecraft.client.gui.components.ChatComponent$ChatMethod, text: string): void; + buildInitialScreens(cookie: net.minecraft.client.GameLoadCookie | null | undefined): java.lang.Runnable; + canInterruptScreen(): boolean; + setClientLevelTeardownInProgress(clientLevelTeardownInProgress: boolean): void; + } + const Hud: { + NAUSEA_LOCATION: net.minecraft.resources.Identifier; + new(minecraft: net.minecraft.client.Minecraft): net.minecraft.client.gui.Hud; + getMobEffectSprite(effect: net.minecraft.core.Holder): net.minecraft.resources.Identifier; + } + interface Hud { + vignetteBrightness: number; + isHidden(): boolean; + registerReloadListeners(resourceManager: net.minecraft.server.packs.resources.ReloadableResourceManager): void; + toggle(): void; + resetTitleTimes(): void; + extractRenderState(graphics: net.minecraft.client.gui.GuiGraphicsExtractor, deltaTracker: net.minecraft.client.DeltaTracker): void; + extractDebugOverlay(graphics: net.minecraft.client.gui.GuiGraphicsExtractor): void; + extractDeferredSubtitles(): void; + tick(pause: boolean): void; + setNowPlaying(string: net.minecraft.network.chat.Component): void; + setOverlayMessage(string: net.minecraft.network.chat.Component, animate: boolean): void; + setTimes(fadeInTime: number, stayTime: number, fadeOutTime: number): void; + setSubtitle(subtitle: net.minecraft.network.chat.Component): void; + setTitle(title: net.minecraft.network.chat.Component): void; + clearTitles(): void; + getChat(): net.minecraft.client.gui.components.ChatComponent; + getWaypointStyles(): net.minecraft.client.resources.WaypointStyleManager; + getGuiTicks(): number; + getFont(): net.minecraft.client.gui.Font; + getSpectatorGui(): net.minecraft.client.gui.components.spectator.SpectatorGui; + getTabList(): net.minecraft.client.gui.components.PlayerTabOverlay; + onDisconnected(): void; + getBossOverlay(): net.minecraft.client.gui.components.BossHealthOverlay; + getDebugOverlay(): net.minecraft.client.gui.components.DebugScreenOverlay; + clearCache(): void; + extractSavingIndicator(graphics: net.minecraft.client.gui.GuiGraphicsExtractor, deltaTracker: net.minecraft.client.DeltaTracker): void; + } const ActiveTextCollector: { Parameters: typeof net.minecraft.client.gui.ActiveTextCollector$Parameters; ClickableStyleFinder: typeof net.minecraft.client.gui.ActiveTextCollector$ClickableStyleFinder; @@ -12351,35 +12569,6 @@ declare global { includeInsertions(flag: boolean): net.minecraft.client.gui.ActiveTextCollector$ClickableStyleFinder; result(): net.minecraft.network.chat.Style | null | undefined; } - const Gui: { - NAUSEA_LOCATION: net.minecraft.resources.Identifier; - new(minecraft: net.minecraft.client.Minecraft): net.minecraft.client.gui.Gui; - getMobEffectSprite(effect: net.minecraft.core.Holder): net.minecraft.resources.Identifier; - } - interface Gui { - vignetteBrightness: number; - resetTitleTimes(): void; - extractRenderState(graphics: net.minecraft.client.gui.GuiGraphicsExtractor, deltaTracker: net.minecraft.client.DeltaTracker): void; - extractDebugOverlay(graphics: net.minecraft.client.gui.GuiGraphicsExtractor): void; - extractDeferredSubtitles(): void; - tick(pause: boolean): void; - setNowPlaying(string: net.minecraft.network.chat.Component): void; - setOverlayMessage(string: net.minecraft.network.chat.Component, animate: boolean): void; - setTimes(fadeInTime: number, stayTime: number, fadeOutTime: number): void; - setSubtitle(subtitle: net.minecraft.network.chat.Component): void; - setTitle(title: net.minecraft.network.chat.Component): void; - clearTitles(): void; - getChat(): net.minecraft.client.gui.components.ChatComponent; - getGuiTicks(): number; - getFont(): net.minecraft.client.gui.Font; - getSpectatorGui(): net.minecraft.client.gui.components.spectator.SpectatorGui; - getTabList(): net.minecraft.client.gui.components.PlayerTabOverlay; - onDisconnected(): void; - getBossOverlay(): net.minecraft.client.gui.components.BossHealthOverlay; - getDebugOverlay(): net.minecraft.client.gui.components.DebugScreenOverlay; - clearCache(): void; - extractSavingIndicator(graphics: net.minecraft.client.gui.GuiGraphicsExtractor, deltaTracker: net.minecraft.client.DeltaTracker): void; - } const GuiGraphicsExtractor$HoveredTextEffects: { NONE: net.minecraft.client.gui.GuiGraphicsExtractor$HoveredTextEffects; TOOLTIP_ONLY: net.minecraft.client.gui.GuiGraphicsExtractor$HoveredTextEffects; @@ -12405,7 +12594,7 @@ declare global { namespace gui { namespace pip { const PictureInPictureRenderState: { - IDENTITY_POSE: org.joml.Matrix3x2f; + IDENTITY_POSE: org.joml.Matrix3x2fc; getBounds(x0: number, y0: number, x1: number, y1: number, scissorArea: net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined): net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined; } interface PictureInPictureRenderState extends net.minecraft.client.renderer.state.gui.ScreenArea { @@ -12414,7 +12603,7 @@ declare global { y0(): number; y1(): number; scale(): number; - pose(): org.joml.Matrix3x2f; + pose(): org.joml.Matrix3x2fc; scissorArea(): net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined; } } @@ -12424,7 +12613,8 @@ declare global { } interface GuiRenderState extends net.fabricmc.fabric.api.client.rendering.v1.FabricRenderState { panoramaRenderState: net.minecraft.client.renderer.state.gui.PanoramaRenderState | null | undefined; - clearColorOverride: number; + clearColorOverride: org.joml.Vector4f; + isHudHidden: boolean; nextStratum(): void; blurBeforeThisStratum(): void; up(): void; @@ -12466,14 +12656,7 @@ declare global { new(font: net.minecraft.client.gui.Font, text: net.minecraft.util.FormattedCharSequence, pose: org.joml.Matrix3x2fc, x: number, y: number, color: number, backgroundColor: number, dropShadow: boolean, includeEmpty: boolean, scissor: net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined): net.minecraft.client.renderer.state.gui.GuiTextRenderState; } interface GuiTextRenderState extends net.minecraft.client.renderer.state.gui.ScreenArea { - font: net.minecraft.client.gui.Font; - text: net.minecraft.util.FormattedCharSequence; pose: org.joml.Matrix3x2fc; - x: number; - y: number; - color: number; - backgroundColor: number; - dropShadow: boolean; scissor: net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined; ensurePrepared(): net.minecraft.client.gui.Font$PreparedText; } @@ -12485,10 +12668,10 @@ declare global { } const BlitRenderState: { new(pipeline: com.mojang.blaze3d.pipeline.RenderPipeline, textureSetup: net.minecraft.client.gui.render.TextureSetup, pose: org.joml.Matrix3x2f, x0: number, y0: number, x1: number, y1: number, u0: number, u1: number, v0: number, v1: number, color: number, scissorArea: net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined): net.minecraft.client.renderer.state.gui.BlitRenderState; - new(pipeline: com.mojang.blaze3d.pipeline.RenderPipeline, textureSetup: net.minecraft.client.gui.render.TextureSetup, pose: org.joml.Matrix3x2f, x0: number, y0: number, x1: number, y1: number, u0: number, u1: number, v0: number, v1: number, color: number, scissorArea: net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined, bounds: net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined): net.minecraft.client.renderer.state.gui.BlitRenderState; + new(pipeline: com.mojang.blaze3d.pipeline.RenderPipeline, textureSetup: net.minecraft.client.gui.render.TextureSetup, pose: org.joml.Matrix3x2fc, x0: number, y0: number, x1: number, y1: number, u0: number, u1: number, v0: number, v1: number, color: number, scissorArea: net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined, bounds: net.minecraft.client.gui.navigation.ScreenRectangle | null | undefined): net.minecraft.client.renderer.state.gui.BlitRenderState; } interface BlitRenderState extends java.lang.Record, net.minecraft.client.renderer.state.gui.GuiElementRenderState { - pose(): org.joml.Matrix3x2f; + pose(): org.joml.Matrix3x2fc; x0(): number; y0(): number; x1(): number; @@ -12521,6 +12704,8 @@ declare global { yRot: number; initialized: boolean; isPanoramicMode: boolean; + isFrustumCaptured: boolean; + smartCull: boolean; orientation: org.joml.Quaternionf; cullFrustum: net.minecraft.client.renderer.culling.Frustum; fogType: net.minecraft.world.level.material.FogType; @@ -12547,22 +12732,31 @@ declare global { backwardsInterpolatedWalkDistance: number; bob: number; } - const QuadParticleRenderState$PreparedBuffers: { - new(indexCount: number, dynamicTransforms: com.mojang.blaze3d.buffers.GpuBufferSlice, layers: Map): net.minecraft.client.renderer.state.level.QuadParticleRenderState$PreparedBuffers; + const QuadParticleRenderState: { + new(): net.minecraft.client.renderer.state.level.QuadParticleRenderState; + } + interface QuadParticleRenderState extends net.minecraft.client.renderer.state.level.ParticleGroupRenderState { + add(layer: net.minecraft.client.particle.SingleQuadParticle$Layer, x: number, y: number, z: number, xRot: number, yRot: number, zRot: number, wRot: number, scale: number, u0: number, u1: number, v0: number, v1: number, color: number, lightCoords: number): void; + isEmpty(): boolean; + buildLayer(layer: net.minecraft.client.particle.SingleQuadParticle$Layer, bufferBuilder: com.mojang.blaze3d.vertex.VertexConsumer): void; + layers(): Set; + } + interface ParticleGroupRenderState { + submit(submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, camera: net.minecraft.client.renderer.state.level.CameraRenderState): void; + clear(): void; } - interface QuadParticleRenderState$PreparedBuffers extends java.lang.Record { - indexCount(): number; - dynamicTransforms(): com.mojang.blaze3d.buffers.GpuBufferSlice; - layers(): Map; + interface QuadParticleRenderState$ParticleConsumer { + consume(x: number, y: number, z: number, xRot: number, yRot: number, zRot: number, wRot: number, scale: number, u0: number, u1: number, v0: number, v1: number, color: number, lightCoords: number): void; + (x: number, y: number, z: number, xRot: number, yRot: number, zRot: number, wRot: number, scale: number, u0: number, u1: number, v0: number, v1: number, color: number, lightCoords: number): void; } const LevelRenderState: { new(): net.minecraft.client.renderer.state.level.LevelRenderState; } interface LevelRenderState extends net.fabricmc.fabric.api.client.rendering.v1.FabricRenderState { cameraRenderState: net.minecraft.client.renderer.state.level.CameraRenderState; + sectionUpdateRenderStates: Array; entityRenderStates: Array; blockEntityRenderStates: Array; - haveGlowingEntities: boolean; blockOutlineRenderState: net.minecraft.client.renderer.state.level.BlockOutlineRenderState | null | undefined; blockBreakingRenderStates: Array; weatherRenderState: net.minecraft.client.renderer.state.level.WeatherRenderState; @@ -12573,7 +12767,12 @@ declare global { lastEntityRenderStateCount: number; cloudColor: number; cloudHeight: number; - chunkSectionsToRender: net.minecraft.client.renderer.chunk.ChunkSectionsToRender | null | undefined; + render3dCrosshair: boolean; + playerCompiledSectionCallback: java.lang.Runnable | null | undefined; + chunkLoadingRenderState: net.minecraft.client.renderer.state.level.ChunkLoadingRenderState; + shouldResetChunkLayerSampler: boolean; + shouldShowEntityOutlines: boolean; + shouldResetSkyRenderer: boolean; reset(): void; } const BlockOutlineRenderState: { @@ -12593,8 +12792,8 @@ declare global { new(): net.minecraft.client.renderer.state.level.WeatherRenderState; } interface WeatherRenderState extends net.fabricmc.fabric.api.client.rendering.v1.FabricRenderState { - rainColumns: Array; - snowColumns: Array; + rainColumns: Array; + snowColumns: Array; intensity: number; radius: number; reset(): void; @@ -12646,11 +12845,18 @@ declare global { particles: Array; reset(): void; add(state: net.minecraft.client.renderer.state.level.ParticleGroupRenderState): void; - submit(submitNodeStorage: net.minecraft.client.renderer.SubmitNodeStorage, camera: net.minecraft.client.renderer.state.level.CameraRenderState): void; - } - interface ParticleGroupRenderState { submit(submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, camera: net.minecraft.client.renderer.state.level.CameraRenderState): void; - clear(): void; + } + const ChunkLoadingRenderState: { + new(): net.minecraft.client.renderer.state.level.ChunkLoadingRenderState; + } + interface ChunkLoadingRenderState { + addedEmptySections: it.unimi.dsi.fastutil.longs.LongOpenHashSet; + removedEmptySections: it.unimi.dsi.fastutil.longs.LongOpenHashSet; + addedLoadedChunks: it.unimi.dsi.fastutil.longs.LongOpenHashSet; + removedLoadedChunks: it.unimi.dsi.fastutil.longs.LongOpenHashSet; + loadedExpectedChunks: it.unimi.dsi.fastutil.longs.LongOpenHashSet; + reset(): void; } } const MapRenderState: { @@ -12682,6 +12888,7 @@ declare global { optionsRenderState: net.minecraft.client.renderer.state.OptionsRenderState; windowRenderState: net.minecraft.client.renderer.state.WindowRenderState; framerateLimit: number; + useShaderTransparency(): boolean; } const LightmapRenderState: { new(): net.minecraft.client.renderer.state.LightmapRenderState; @@ -12712,7 +12919,6 @@ declare global { maxAnisotropyValue: number; textureFiltering: net.minecraft.client.TextureFilteringMethod; bobView: boolean; - hideGui: boolean; screenEffectScale: number; glintSpeed: number; glintStrength: number; @@ -12722,6 +12928,9 @@ declare global { cloudStatus: net.minecraft.client.CloudStatus; cameraType: net.minecraft.client.CameraType; renderDistance: number; + chunkSectionFadeInTime: number; + prioritizeChunkUpdates: net.minecraft.client.PrioritizeChunkUpdates; + fov: number; getBackgroundOpacity(defaultOpacity: number): number; } const WindowRenderState: { @@ -12733,7 +12942,6 @@ declare global { guiScale: number; appropriateLineWidth: number; isMinimized: boolean; - isResized: boolean; } } namespace item { @@ -12791,6 +12999,12 @@ declare global { } interface ItemStackRenderState$FoilType extends kotlin.Enum { } + const ItemModel: { + BakingContext: typeof net.minecraft.client.renderer.item.ItemModel$BakingContext; + } + interface ItemModel { + update(output: net.minecraft.client.renderer.item.ItemStackRenderState, item: net.minecraft.world.item.ItemStack, resolver: net.minecraft.client.renderer.item.ItemModelResolver, displayContext: net.minecraft.world.item.ItemDisplayContext, level: net.minecraft.client.multiplayer.ClientLevel | null | undefined, owner: net.minecraft.world.entity.ItemOwner | null | undefined, seed: number): void; + } const ItemModelResolver: { new(modelManager: net.minecraft.client.resources.model.ModelManager): net.minecraft.client.renderer.item.ItemModelResolver; } @@ -12802,12 +13016,6 @@ declare global { shouldPlaySwapAnimation(stack: net.minecraft.world.item.ItemStack): boolean; swapAnimationScale(stack: net.minecraft.world.item.ItemStack): number; } - const ItemModel: { - BakingContext: typeof net.minecraft.client.renderer.item.ItemModel$BakingContext; - } - interface ItemModel { - update(output: net.minecraft.client.renderer.item.ItemStackRenderState, item: net.minecraft.world.item.ItemStack, resolver: net.minecraft.client.renderer.item.ItemModelResolver, displayContext: net.minecraft.world.item.ItemDisplayContext, level: net.minecraft.client.multiplayer.ClientLevel | null | undefined, owner: net.minecraft.world.entity.ItemOwner | null | undefined, seed: number): void; - } const ItemModel$BakingContext: { new(blockModelBaker: net.minecraft.client.resources.model.ModelBaker, entityModelSet: net.minecraft.client.model.geom.EntityModelSet, sprites: net.minecraft.client.resources.model.sprite.SpriteGetter, playerSkinRenderCache: net.minecraft.client.renderer.PlayerSkinRenderCache, missingItemModel: net.minecraft.client.renderer.item.MissingItemModel, contextSwapper: net.minecraft.util.RegistryContextSwapper | null | undefined): net.minecraft.client.renderer.item.ItemModel$BakingContext; } @@ -12865,20 +13073,96 @@ declare global { label(): string; vertexFormat(): com.mojang.blaze3d.vertex.VertexFormat; } + const SectionRenderDispatcher$RenderSection: { + SectionTask: typeof net.minecraft.client.renderer.chunk.SectionRenderDispatcher.SectionRenderDispatcher$RenderSection$SectionTask; + new(index: number, sectionNode: number): net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection; + } + interface SectionRenderDispatcher$RenderSection extends net.minecraft.client.RotatingSectionStorage$Value { + index: number; + sectionMesh: java.util.concurrent.atomic.AtomicReference; + wasPreviouslyEmpty(): boolean; + getVisibility(now: number): number; + setFadeDuration(fadeDuration: number): void; + setWasPreviouslyEmpty(wasPreviouslyEmpty: boolean): void; + getBoundingBox(): net.minecraft.world.phys.AABB; + getSectionMesh(): net.minecraft.client.renderer.chunk.SectionMesh; + reset(): void; + getRenderOrigin(): net.minecraft.core.BlockPos; + getNeighborSectionNode(direction: net.minecraft.core.Direction): number; + resortTransparency(): void; + hasTranslucentGeometry(): boolean; + transparencyResortingScheduled(): boolean; + compileAsync(region: net.minecraft.client.renderer.chunk.RenderSectionRegion): void; + compileSync(region: net.minecraft.client.renderer.chunk.RenderSectionRegion): void; + } + const SectionMesh: { + SectionDraw: typeof net.minecraft.client.renderer.chunk.SectionMesh$SectionDraw; + } + interface SectionMesh extends java.lang.AutoCloseable { + isDifferentPointOfView(pointOfView: net.minecraft.client.renderer.chunk.TranslucencyPointOfView): boolean; + hasRenderableLayers(): boolean; + hasTranslucentGeometry(): boolean; + isEmpty(layer: net.minecraft.client.renderer.chunk.ChunkSectionLayer): boolean; + getRenderableBlockEntities(): Array; + facesCanSeeEachother(direction1: net.minecraft.core.Direction, direction2: net.minecraft.core.Direction): boolean; + getSectionDraw(layer: net.minecraft.client.renderer.chunk.ChunkSectionLayer): net.minecraft.client.renderer.chunk.SectionMesh$SectionDraw | null | undefined; + } + const TranslucencyPointOfView: { + new(): net.minecraft.client.renderer.chunk.TranslucencyPointOfView; + of(cameraPos: net.minecraft.world.phys.Vec3, sectionNode: number): net.minecraft.client.renderer.chunk.TranslucencyPointOfView; + } + interface TranslucencyPointOfView { + set(cameraPos: net.minecraft.world.phys.Vec3, sectionPos: number): net.minecraft.client.renderer.chunk.TranslucencyPointOfView; + isAxisAligned(): boolean; + } + const SectionMesh$SectionDraw: { + new(indexCount: number, indexType: com.mojang.blaze3d.IndexType, hasCustomIndexBuffer: boolean): net.minecraft.client.renderer.chunk.SectionMesh$SectionDraw; + } + interface SectionMesh$SectionDraw extends java.lang.Record { + indexCount(): number; + indexType(): com.mojang.blaze3d.IndexType; + hasCustomIndexBuffer(): boolean; + } + const RenderSectionRegion: { + RADIUS: number; + SIZE: number; + new(level: net.minecraft.client.multiplayer.ClientLevel, minSectionX: number, minSectionY: number, minSectionZ: number, sections: Array): net.minecraft.client.renderer.chunk.RenderSectionRegion; + index(minSectionX: number, minSectionY: number, minSectionZ: number, sectionX: number, sectionY: number, sectionZ: number): number; + } + interface RenderSectionRegion extends net.minecraft.client.renderer.block.BlockAndTintGetter { + } + const SectionRenderDispatcher$RenderSection$SectionTask: { + SectionTaskResult: typeof net.minecraft.client.renderer.chunk.SectionRenderDispatcher.RenderSection.SectionRenderDispatcher$RenderSection$SectionTask$SectionTaskResult; + new(isRecompile: boolean): unknown; + } + interface SectionRenderDispatcher$RenderSection$SectionTask { + isRecompile(): boolean; + doTask(buffers: net.minecraft.client.renderer.SectionBufferBuilderPack): unknown; + cancel(): void; + getRenderOrigin(): net.minecraft.core.BlockPos; + } + const SectionRenderDispatcher$RenderSection$SectionTask$SectionTaskResult: { + SUCCESSFUL: net.minecraft.client.renderer.chunk.SectionRenderDispatcher.RenderSection.SectionRenderDispatcher$RenderSection$SectionTask$SectionTaskResult; + CANCELLED: net.minecraft.client.renderer.chunk.SectionRenderDispatcher.RenderSection.SectionRenderDispatcher$RenderSection$SectionTask$SectionTaskResult; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): unknown; + } + interface SectionRenderDispatcher$RenderSection$SectionTask$SectionTaskResult extends kotlin.Enum { + } const SectionRenderDispatcher: { RenderSection: typeof net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection; RenderSectionBufferSlice: typeof net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSectionBufferSlice; - new(level: net.minecraft.client.multiplayer.ClientLevel, renderer: net.minecraft.client.renderer.LevelRenderer, executor: net.minecraft.TracingExecutor, renderBuffers: net.minecraft.client.renderer.RenderBuffers, sectionCompiler: net.minecraft.client.renderer.chunk.SectionCompiler): net.minecraft.client.renderer.chunk.SectionRenderDispatcher; + NEARBY_SECTION_DISTANCE_IN_BLOCKS: number; + new(executor: net.minecraft.TracingExecutor, renderBuffers: net.minecraft.client.renderer.RenderBuffers, sectionCompiler: net.minecraft.client.renderer.chunk.SectionCompiler, onSectionMeshUpdate: unknown): net.minecraft.client.renderer.chunk.SectionRenderDispatcher; } interface SectionRenderDispatcher { - setLevel(level: net.minecraft.client.multiplayer.ClientLevel, sectionCompiler: net.minecraft.client.renderer.chunk.SectionCompiler): void; + setCompiler(sectionCompiler: net.minecraft.client.renderer.chunk.SectionCompiler): void; setCameraPosition(cameraPosition: net.minecraft.world.phys.Vec3): void; getRenderSectionSlice(sectionMesh: net.minecraft.client.renderer.chunk.SectionMesh, layer: net.minecraft.client.renderer.chunk.ChunkSectionLayer): net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSectionBufferSlice | null | undefined; lock(): void; unlock(): void; - uploadGlobalGeomBuffersToGPU(): void; - rebuildSectionSync(section: net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection, cache: net.minecraft.client.renderer.chunk.RenderRegionCache): void; - schedule(task: unknown): void; + uploadTerrainBuffersToGpu(): void; clearCompileQueue(): void; isQueueEmpty(): boolean; dispose(): void; @@ -12888,24 +13172,17 @@ declare global { } const SectionCompiler: { Results: typeof net.minecraft.client.renderer.chunk.SectionCompiler$Results; - new(ambientOcclusion: boolean, cutoutLeaves: boolean, blockModelSet: net.minecraft.client.renderer.block.BlockStateModelSet, fluidModelSet: net.minecraft.client.renderer.block.FluidStateModelSet, blockColors: net.minecraft.client.color.block.BlockColors, blockEntityRenderer: net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher): net.minecraft.client.renderer.chunk.SectionCompiler; + new(ambientOcclusion: boolean, cutoutLeaves: boolean, blockModelSet: net.minecraft.client.renderer.block.BlockStateModelSet, fluidModelSet: net.minecraft.client.renderer.block.FluidStateModelSet, blockColors: net.minecraft.client.color.block.BlockColors): net.minecraft.client.renderer.chunk.SectionCompiler; } interface SectionCompiler { compile(sectionPos: net.minecraft.core.SectionPos, region: net.minecraft.client.renderer.chunk.RenderSectionRegion, vertexSorting: com.mojang.blaze3d.vertex.VertexSorting, builders: net.minecraft.client.renderer.SectionBufferBuilderPack): net.minecraft.client.renderer.chunk.SectionCompiler$Results; } - const RenderSectionRegion: { - RADIUS: number; - SIZE: number; - index(minSectionX: number, minSectionY: number, minSectionZ: number, sectionX: number, sectionY: number, sectionZ: number): number; - } - interface RenderSectionRegion extends net.minecraft.client.renderer.block.BlockAndTintGetter { - } const SectionCompiler$Results: { new(): net.minecraft.client.renderer.chunk.SectionCompiler$Results; } interface SectionCompiler$Results { blockEntities: Array; - renderedLayers: Map; + renderedLayers: Map; visibilitySet: net.minecraft.client.renderer.chunk.VisibilitySet; transparencyState: com.mojang.blaze3d.vertex.MeshData$SortState | null | undefined; release(): void; @@ -12919,34 +13196,6 @@ declare global { setAll(visible: boolean): void; visibilityBetween(direction1: net.minecraft.core.Direction, direction2: net.minecraft.core.Direction): boolean; } - const SectionMesh: { - SectionDraw: typeof net.minecraft.client.renderer.chunk.SectionMesh$SectionDraw; - } - interface SectionMesh extends java.lang.AutoCloseable { - isDifferentPointOfView(pointOfView: net.minecraft.client.renderer.chunk.TranslucencyPointOfView): boolean; - hasRenderableLayers(): boolean; - hasTranslucentGeometry(): boolean; - isEmpty(layer: net.minecraft.client.renderer.chunk.ChunkSectionLayer): boolean; - getRenderableBlockEntities(): Array; - facesCanSeeEachother(direction1: net.minecraft.core.Direction, direction2: net.minecraft.core.Direction): boolean; - getSectionDraw(layer: net.minecraft.client.renderer.chunk.ChunkSectionLayer): net.minecraft.client.renderer.chunk.SectionMesh$SectionDraw | null | undefined; - } - const TranslucencyPointOfView: { - new(): net.minecraft.client.renderer.chunk.TranslucencyPointOfView; - of(cameraPos: net.minecraft.world.phys.Vec3, sectionNode: number): net.minecraft.client.renderer.chunk.TranslucencyPointOfView; - } - interface TranslucencyPointOfView { - set(cameraPos: net.minecraft.world.phys.Vec3, sectionPos: number): net.minecraft.client.renderer.chunk.TranslucencyPointOfView; - isAxisAligned(): boolean; - } - const SectionMesh$SectionDraw: { - new(indexCount: number, indexType: com.mojang.blaze3d.vertex.VertexFormat$IndexType, hasCustomIndexBuffer: boolean): net.minecraft.client.renderer.chunk.SectionMesh$SectionDraw; - } - interface SectionMesh$SectionDraw extends java.lang.Record { - indexCount(): number; - indexType(): com.mojang.blaze3d.vertex.VertexFormat$IndexType; - hasCustomIndexBuffer(): boolean; - } const SectionRenderDispatcher$RenderSectionBufferSlice: { new(vertexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, vertexBufferOffset: number, indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer | null | undefined, indexBufferOffset: number): net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSectionBufferSlice; } @@ -12956,62 +13205,6 @@ declare global { indexBuffer(): com.mojang.blaze3d.buffers.GpuBuffer | null | undefined; indexBufferOffset(): number; } - const SectionRenderDispatcher$RenderSection: { - CompileTask: typeof net.minecraft.client.renderer.chunk.SectionRenderDispatcher.SectionRenderDispatcher$RenderSection$CompileTask; - SIZE: number; - new(index: number, sectionNode: number): net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection; - } - interface SectionRenderDispatcher$RenderSection { - index: number; - sectionMesh: java.util.concurrent.atomic.AtomicReference; - wasPreviouslyEmpty(): boolean; - getVisibility(now: number): number; - setFadeDuration(fadeDuration: number): void; - setWasPreviouslyEmpty(wasPreviouslyEmpty: boolean): void; - hasAllNeighbors(): boolean; - getBoundingBox(): net.minecraft.world.phys.AABB; - setSectionNode(sectionNode: number): void; - getSectionMesh(): net.minecraft.client.renderer.chunk.SectionMesh; - reset(): void; - getRenderOrigin(): net.minecraft.core.BlockPos; - getSectionNode(): number; - setDirty(fromPlayer: boolean): void; - setNotDirty(): void; - isDirty(): boolean; - isDirtyFromPlayer(): boolean; - getNeighborSectionNode(direction: net.minecraft.core.Direction): number; - resortTransparency(dispatcher: net.minecraft.client.renderer.chunk.SectionRenderDispatcher): void; - hasTranslucentGeometry(): boolean; - transparencyResortingScheduled(): boolean; - createCompileTask(cache: net.minecraft.client.renderer.chunk.RenderRegionCache): unknown; - rebuildSectionAsync(cache: net.minecraft.client.renderer.chunk.RenderRegionCache): void; - compileSync(cache: net.minecraft.client.renderer.chunk.RenderRegionCache): void; - } - const RenderRegionCache: { - new(): net.minecraft.client.renderer.chunk.RenderRegionCache; - } - interface RenderRegionCache { - createRegion(level: net.minecraft.client.multiplayer.ClientLevel, sectionNode: number): net.minecraft.client.renderer.chunk.RenderSectionRegion; - } - const SectionRenderDispatcher$RenderSection$CompileTask: { - SectionTaskResult: typeof net.minecraft.client.renderer.chunk.SectionRenderDispatcher.RenderSection.SectionRenderDispatcher$RenderSection$CompileTask$SectionTaskResult; - new(isRecompile: boolean): unknown; - } - interface SectionRenderDispatcher$RenderSection$CompileTask { - isRecompile(): boolean; - doTask(buffers: net.minecraft.client.renderer.SectionBufferBuilderPack): unknown; - cancel(): void; - getRenderOrigin(): net.minecraft.core.BlockPos; - } - const SectionRenderDispatcher$RenderSection$CompileTask$SectionTaskResult: { - SUCCESSFUL: net.minecraft.client.renderer.chunk.SectionRenderDispatcher.RenderSection.SectionRenderDispatcher$RenderSection$CompileTask$SectionTaskResult; - CANCELLED: net.minecraft.client.renderer.chunk.SectionRenderDispatcher.RenderSection.SectionRenderDispatcher$RenderSection$CompileTask$SectionTaskResult; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): unknown; - } - interface SectionRenderDispatcher$RenderSection$CompileTask$SectionTaskResult extends kotlin.Enum { - } const ChunkSectionsToRender: { new(textureView: com.mojang.blaze3d.textures.GpuTextureView, drawGroupsPerLayer: java.util.EnumMap, maxIndicesRequired: number, chunkSectionInfos: Array): net.minecraft.client.renderer.chunk.ChunkSectionsToRender; } @@ -13046,10 +13239,9 @@ declare global { outline(): java.util.Optional; hasBlending(): boolean; outputTarget(): net.minecraft.client.renderer.rendertype.OutputTarget; - draw(mesh: com.mojang.blaze3d.vertex.MeshData): void; - bufferSize(): number; + prepare(): net.minecraft.client.renderer.rendertype.PreparedRenderType; format(): com.mojang.blaze3d.vertex.VertexFormat; - mode(): com.mojang.blaze3d.vertex.VertexFormat$Mode; + primitiveTopology(): com.mojang.blaze3d.PrimitiveTopology; isOutline(): boolean; pipeline(): com.mojang.blaze3d.pipeline.RenderPipeline; affectsCrumbling(): boolean; @@ -13066,21 +13258,40 @@ declare global { interface OutputTarget { getRenderTarget(): com.mojang.blaze3d.pipeline.RenderTarget; } + const PreparedRenderType: { + Texture: typeof net.minecraft.client.renderer.rendertype.PreparedRenderType$Texture; + new(pipeline: com.mojang.blaze3d.pipeline.RenderPipeline, outputTarget: net.minecraft.client.renderer.rendertype.OutputTarget, dynamicTransforms: com.mojang.blaze3d.buffers.GpuBufferSlice, scissorState: com.mojang.blaze3d.systems.ScissorState, textures: Array): net.minecraft.client.renderer.rendertype.PreparedRenderType; + } + interface PreparedRenderType extends java.lang.Record { + drawFromBuffer(info: net.minecraft.client.renderer.StagedVertexBuffer$ExecuteInfo): void; + drawFromBuffer(vertexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexType: com.mojang.blaze3d.IndexType, baseVertex: number, firstIndex: number, indexCount: number): void; + pipeline(): com.mojang.blaze3d.pipeline.RenderPipeline; + outputTarget(): net.minecraft.client.renderer.rendertype.OutputTarget; + dynamicTransforms(): com.mojang.blaze3d.buffers.GpuBufferSlice; + scissorState(): com.mojang.blaze3d.systems.ScissorState; + textures(): Array; + } + const PreparedRenderType$Texture: { + new(name: string, textureView: com.mojang.blaze3d.textures.GpuTextureView, sampler: com.mojang.blaze3d.textures.GpuSampler): net.minecraft.client.renderer.rendertype.PreparedRenderType$Texture; + } + interface PreparedRenderType$Texture extends java.lang.Record { + name(): string; + textureView(): com.mojang.blaze3d.textures.GpuTextureView; + sampler(): com.mojang.blaze3d.textures.GpuSampler; + } const RenderSetup: { OutlineProperty: typeof net.minecraft.client.renderer.rendertype.RenderSetup$OutlineProperty; RenderSetupBuilder: typeof net.minecraft.client.renderer.rendertype.RenderSetup$RenderSetupBuilder; - TextureAndSampler: typeof net.minecraft.client.renderer.rendertype.RenderSetup$TextureAndSampler; builder(pipeline: com.mojang.blaze3d.pipeline.RenderPipeline): net.minecraft.client.renderer.rendertype.RenderSetup$RenderSetupBuilder; } interface RenderSetup { - getTextures(): Map; + prepareTextures(textureManager: net.minecraft.client.renderer.texture.TextureManager, samplerCache: com.mojang.blaze3d.systems.SamplerCache, overlayTexture: com.mojang.blaze3d.textures.GpuTextureView, lightmapTexture: com.mojang.blaze3d.textures.GpuTextureView): Array; } interface RenderSetup$RenderSetupBuilder { useLightmap(): net.minecraft.client.renderer.rendertype.RenderSetup$RenderSetupBuilder; useOverlay(): net.minecraft.client.renderer.rendertype.RenderSetup$RenderSetupBuilder; affectsCrumbling(): net.minecraft.client.renderer.rendertype.RenderSetup$RenderSetupBuilder; sortOnUpload(): net.minecraft.client.renderer.rendertype.RenderSetup$RenderSetupBuilder; - bufferSize(bufferSize: number): net.minecraft.client.renderer.rendertype.RenderSetup$RenderSetupBuilder; withTexture(name: string, texture: net.minecraft.resources.Identifier): net.minecraft.client.renderer.rendertype.RenderSetup$RenderSetupBuilder; withTexture(name: string, texture: net.minecraft.resources.Identifier, sampler: unknown): net.minecraft.client.renderer.rendertype.RenderSetup$RenderSetupBuilder; setLayeringTransform(layeringTransform: net.minecraft.client.renderer.rendertype.LayeringTransform): net.minecraft.client.renderer.rendertype.RenderSetup$RenderSetupBuilder; @@ -13108,7 +13319,7 @@ declare global { new(name: string, matrix: unknown): net.minecraft.client.renderer.rendertype.TextureTransform; } interface TextureTransform { - getMatrix(): org.joml.Matrix4f; + createMatrix(): org.joml.Matrix4f; } const TextureTransform$OffsetTextureTransform: { new(uOffset: number, vOffset: number): net.minecraft.client.renderer.rendertype.TextureTransform$OffsetTextureTransform; @@ -13125,60 +13336,8 @@ declare global { } interface RenderSetup$OutlineProperty extends kotlin.Enum { } - const RenderSetup$TextureAndSampler: { - new(textureView: com.mojang.blaze3d.textures.GpuTextureView, sampler: com.mojang.blaze3d.textures.GpuSampler): net.minecraft.client.renderer.rendertype.RenderSetup$TextureAndSampler; - } - interface RenderSetup$TextureAndSampler extends java.lang.Record { - textureView(): com.mojang.blaze3d.textures.GpuTextureView; - sampler(): com.mojang.blaze3d.textures.GpuSampler; - } } namespace texture { - interface TextureAtlasSprite extends java.lang.AutoCloseable { - atlasLocation(): net.minecraft.resources.Identifier; - contents(): net.minecraft.client.renderer.texture.SpriteContents; - getX(): number; - getY(): number; - getU0(): number; - getU1(): number; - createAnimationState(uboSlice: com.mojang.blaze3d.buffers.GpuBufferSlice, spriteUboSize: number): net.minecraft.client.renderer.texture.SpriteContents$AnimationState | null | undefined; - transparency(): com.mojang.blaze3d.platform.Transparency; - getU(offset: number): number; - getV0(): number; - getV1(): number; - getV(offset: number): number; - uploadFirstFrame(destination: com.mojang.blaze3d.textures.GpuTexture, level: number): void; - wrap(buffer: com.mojang.blaze3d.vertex.VertexConsumer): com.mojang.blaze3d.vertex.VertexConsumer; - uploadSpriteUbo(uboBuffer: java.nio.ByteBuffer, startOffset: number, maxMipLevel: number, atlasWidth: number, atlasHeight: number, spriteUboSize: number): void; - } - const SpriteContents: { - AnimationState: typeof net.minecraft.client.renderer.texture.SpriteContents$AnimationState; - UBO_SIZE: number; - new(name: net.minecraft.resources.Identifier, frameSize: net.minecraft.client.resources.metadata.animation.FrameSize, image: com.mojang.blaze3d.platform.NativeImage): net.minecraft.client.renderer.texture.SpriteContents; - new(name: net.minecraft.resources.Identifier, frameSize: net.minecraft.client.resources.metadata.animation.FrameSize, image: com.mojang.blaze3d.platform.NativeImage, animationInfo: java.util.Optional, additionalMetadata: Array>, textureInfo: java.util.Optional): net.minecraft.client.renderer.texture.SpriteContents; - } - interface SpriteContents extends java.lang.AutoCloseable, net.minecraft.client.renderer.texture.Stitcher$Entry { - transparency(): com.mojang.blaze3d.platform.Transparency; - increaseMipLevel(mipLevel: number): void; - isAnimated(): boolean; - getUniqueFrames(): it.unimi.dsi.fastutil.ints.IntList; - createAnimationState(uboSlice: com.mojang.blaze3d.buffers.GpuBufferSlice, spriteUboSize: number): net.minecraft.client.renderer.texture.SpriteContents$AnimationState | null | undefined; - getAdditionalMetadata(type: net.minecraft.server.packs.metadata.MetadataSectionType): java.util.Optional; - isTransparent(frame: number, x: number, y: number): boolean; - computeTransparency(u0: number, v0: number, u1: number, v1: number): com.mojang.blaze3d.platform.Transparency; - uploadFirstFrame(destination: com.mojang.blaze3d.textures.GpuTexture, level: number): void; - } - interface Stitcher$Entry { - width(): number; - height(): number; - name(): net.minecraft.resources.Identifier; - } - interface SpriteContents$AnimationState extends java.lang.AutoCloseable { - tick(): void; - getDrawUbo(level: number): com.mojang.blaze3d.buffers.GpuBufferSlice; - needsToDraw(): boolean; - drawToAtlas(renderPass: com.mojang.blaze3d.systems.RenderPass, ubo: com.mojang.blaze3d.buffers.GpuBufferSlice): void; - } const TextureManager: { INTENTIONAL_MISSING_TEXTURE: net.minecraft.resources.Identifier; new(resourceManager: net.minecraft.server.packs.resources.ResourceManager): net.minecraft.client.renderer.texture.TextureManager; @@ -13232,12 +13391,70 @@ declare global { } interface MipmapStrategy extends kotlin.Enum, net.minecraft.util.StringRepresentable { } + interface TextureAtlasSprite extends java.lang.AutoCloseable { + atlasLocation(): net.minecraft.resources.Identifier; + contents(): net.minecraft.client.renderer.texture.SpriteContents; + getX(): number; + getY(): number; + getU0(): number; + getU1(): number; + createAnimationState(uboSlice: com.mojang.blaze3d.buffers.GpuBufferSlice, spriteUboSize: number): net.minecraft.client.renderer.texture.SpriteContents$AnimationState | null | undefined; + transparency(): com.mojang.blaze3d.platform.Transparency; + getU(offset: number): number; + getV0(): number; + getV1(): number; + getV(offset: number): number; + uploadFirstFrame(destination: com.mojang.blaze3d.textures.GpuTexture, level: number): void; + wrap(buffer: com.mojang.blaze3d.vertex.VertexConsumer): com.mojang.blaze3d.vertex.VertexConsumer; + isAnimated(): boolean; + uploadSpriteUbo(uboBuffer: java.nio.ByteBuffer, startOffset: number, maxMipLevel: number, atlasWidth: number, atlasHeight: number, spriteUboSize: number): void; + } + const SpriteContents: { + AnimationState: typeof net.minecraft.client.renderer.texture.SpriteContents$AnimationState; + UBO_SIZE: number; + new(name: net.minecraft.resources.Identifier, frameSize: net.minecraft.client.resources.metadata.animation.FrameSize, image: com.mojang.blaze3d.platform.NativeImage): net.minecraft.client.renderer.texture.SpriteContents; + new(name: net.minecraft.resources.Identifier, frameSize: net.minecraft.client.resources.metadata.animation.FrameSize, image: com.mojang.blaze3d.platform.NativeImage, animationInfo: java.util.Optional, additionalMetadata: Array>, textureInfo: java.util.Optional): net.minecraft.client.renderer.texture.SpriteContents; + } + interface SpriteContents extends java.lang.AutoCloseable, net.minecraft.client.renderer.texture.Stitcher$Entry { + transparency(): com.mojang.blaze3d.platform.Transparency; + increaseMipLevel(mipLevel: number): void; + isAnimated(): boolean; + getUniqueFrames(): it.unimi.dsi.fastutil.ints.IntList; + createAnimationState(uboSlice: com.mojang.blaze3d.buffers.GpuBufferSlice, spriteUboSize: number): net.minecraft.client.renderer.texture.SpriteContents$AnimationState | null | undefined; + getAdditionalMetadata(type: net.minecraft.server.packs.metadata.MetadataSectionType): java.util.Optional; + isTransparent(frame: number, x: number, y: number): boolean; + computeTransparency(u0: number, v0: number, u1: number, v1: number): com.mojang.blaze3d.platform.Transparency; + uploadFirstFrame(destination: com.mojang.blaze3d.textures.GpuTexture, level: number): void; + } + interface Stitcher$Entry { + width(): number; + height(): number; + name(): net.minecraft.resources.Identifier; + } + interface SpriteContents$AnimationState extends java.lang.AutoCloseable { + tick(): void; + getDrawUbo(level: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + needsToDraw(): boolean; + drawToAtlas(renderPass: com.mojang.blaze3d.systems.RenderPass, ubo: com.mojang.blaze3d.buffers.GpuBufferSlice): void; + } const SkinTextureDownloader: { new(proxy: java.net.Proxy, textureManager: net.minecraft.client.renderer.texture.TextureManager, mainThreadExecutor: java.util.concurrent.Executor): net.minecraft.client.renderer.texture.SkinTextureDownloader; } interface SkinTextureDownloader { downloadAndRegisterSkin(textureId: net.minecraft.resources.Identifier, localCopy: java.nio.file.Path, url: string, processLegacySkin: boolean): java.util.concurrent.CompletableFuture; } + const SpriteLoader$Preparations: { + new(width: number, height: number, mipLevel: number, missing: net.minecraft.client.renderer.texture.TextureAtlasSprite, regions: Map, readyForUpload: java.util.concurrent.CompletableFuture): net.minecraft.client.renderer.texture.SpriteLoader$Preparations; + } + interface SpriteLoader$Preparations extends java.lang.Record, net.fabricmc.fabric.api.client.renderer.v1.sprite.FabricPreparations { + getSprite(id: net.minecraft.resources.Identifier): net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined; + width(): number; + height(): number; + mipLevel(): number; + missing(): net.minecraft.client.renderer.texture.TextureAtlasSprite; + regions(): Map; + readyForUpload(): java.util.concurrent.CompletableFuture; + } const TextureAtlas: { LOCATION_BLOCKS: net.minecraft.resources.Identifier; LOCATION_ITEMS: net.minecraft.resources.Identifier; @@ -13259,18 +13476,6 @@ declare global { interface Dumpable { dumpContents(selfId: net.minecraft.resources.Identifier, dir: java.nio.file.Path): void; } - const SpriteLoader$Preparations: { - new(width: number, height: number, mipLevel: number, missing: net.minecraft.client.renderer.texture.TextureAtlasSprite, regions: Map, readyForUpload: java.util.concurrent.CompletableFuture): net.minecraft.client.renderer.texture.SpriteLoader$Preparations; - } - interface SpriteLoader$Preparations extends java.lang.Record, net.fabricmc.fabric.api.client.renderer.v1.sprite.FabricPreparations { - getSprite(id: net.minecraft.resources.Identifier): net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined; - width(): number; - height(): number; - mipLevel(): number; - missing(): net.minecraft.client.renderer.texture.TextureAtlasSprite; - regions(): Map; - readyForUpload(): java.util.concurrent.CompletableFuture; - } const OverlayTexture: { NO_WHITE_U: number; RED_OVERLAY_V: number; @@ -13312,6 +13517,78 @@ declare global { type(): com.mojang.serialization.MapCodec>; } } + namespace feature { + namespace phase { + const SimpleFeatureRenderPhase: { + new(): net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + } + interface SimpleFeatureRenderPhase extends net.minecraft.client.renderer.feature.phase.FeatureRenderPhase { + clear(): void; + } + interface FeatureRenderPhase { + submit(submit: Submit): void; + sortInto(output: net.minecraft.client.renderer.feature.phase.FeatureRenderPhase$Output): void; + isEmpty(): boolean; + } + interface FeatureRenderPhase$Output { + accept(submit: net.minecraft.client.renderer.feature.submit.SubmitNode, strictlyOrdered: boolean): void; + acceptFeatureGroup(featureType: net.minecraft.client.renderer.feature.FeatureRendererType, submits: Array, strictlyOrdered: boolean): void; + (submit: net.minecraft.client.renderer.feature.submit.SubmitNode, strictlyOrdered: boolean): void; + } + const TranslucentFeatureRenderPhase: { + new(): net.minecraft.client.renderer.feature.phase.TranslucentFeatureRenderPhase; + } + interface TranslucentFeatureRenderPhase extends net.minecraft.client.renderer.feature.phase.FeatureRenderPhase { + } + } + namespace submit { + interface SubmitNode { + featureType(): net.minecraft.client.renderer.feature.FeatureRendererType; + } + const TranslucentSubmit: { + computeDistanceToCameraSq(pose: org.joml.Matrix4fc): number; + computeDistanceToCameraSq(pose: org.joml.Matrix4fc, originX: number, originY: number, originZ: number): number; + } + interface TranslucentSubmit extends net.minecraft.client.renderer.feature.submit.SubmitNode { + distanceToCameraSq(): number; + } + } + const FeatureRendererType: { + new(id: number, name: string): net.minecraft.client.renderer.feature.FeatureRendererType; + create(name: string): net.minecraft.client.renderer.feature.FeatureRendererType; + } + interface FeatureRendererType extends java.lang.Record { + id(): number; + name(): string; + } + const ModelFeatureRenderer$CrumblingOverlay: { + new(progress: number, cameraPose: com.mojang.blaze3d.vertex.PoseStack$Pose): net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay; + } + interface ModelFeatureRenderer$CrumblingOverlay extends java.lang.Record { + progress(): number; + cameraPose(): com.mojang.blaze3d.vertex.PoseStack$Pose; + } + const FeatureRenderDispatcher: { + PreparedFrame: typeof net.minecraft.client.renderer.feature.FeatureRenderDispatcher$PreparedFrame; + new(renderBuffers: net.minecraft.client.renderer.RenderBuffers, modelManager: net.minecraft.client.resources.model.ModelManager, atlasManager: net.minecraft.client.resources.model.sprite.AtlasManager, font: net.minecraft.client.gui.Font, gameRenderState: net.minecraft.client.renderer.state.GameRenderState): net.minecraft.client.renderer.feature.FeatureRenderDispatcher; + } + interface FeatureRenderDispatcher extends java.lang.AutoCloseable { + prepareFrame(submitNodeStorage: net.minecraft.client.renderer.SubmitNodeStorage): net.minecraft.client.renderer.feature.FeatureRenderDispatcher$PreparedFrame; + renderAllFeatures(submitNodeStorage: net.minecraft.client.renderer.SubmitNodeStorage): void; + } + const FeatureRenderDispatcher$PreparedFrame: { + new(): net.minecraft.client.renderer.feature.FeatureRenderDispatcher$PreparedFrame; + } + interface FeatureRenderDispatcher$PreparedFrame extends java.lang.AutoCloseable { + executeSolid(): void; + executeTranslucent(): void; + executeOutline(): void; + executeTranslucentAfterTerrain(): void; + executeAlwaysOnTop(): void; + hasAnyAlwaysOnTop(): boolean; + hasAnyOutline(): boolean; + } + } namespace culling { const Frustum: { OFFSET_STEP: number; @@ -13402,48 +13679,6 @@ declare global { endSkyLight: number; slack: boolean; } - const HumanoidRenderState: { - new(): net.minecraft.client.renderer.entity.state.HumanoidRenderState; - } - interface HumanoidRenderState extends net.minecraft.client.renderer.entity.state.ArmedEntityRenderState { - swimAmount: number; - speedValue: number; - maxCrossbowChargeDuration: number; - ticksUsingItem: number; - useItemHand: net.minecraft.world.InteractionHand; - isCrouching: boolean; - isFallFlying: boolean; - isVisuallySwimming: boolean; - isPassenger: boolean; - isUsingItem: boolean; - elytraRotX: number; - elytraRotY: number; - elytraRotZ: number; - headEquipment: net.minecraft.world.item.ItemStack; - chestEquipment: net.minecraft.world.item.ItemStack; - legsEquipment: net.minecraft.world.item.ItemStack; - feetEquipment: net.minecraft.world.item.ItemStack; - } - const ArmedEntityRenderState: { - new(): net.minecraft.client.renderer.entity.state.ArmedEntityRenderState; - extractArmedEntityRenderState(entity: net.minecraft.world.entity.LivingEntity, state: net.minecraft.client.renderer.entity.state.ArmedEntityRenderState, itemModelResolver: net.minecraft.client.renderer.item.ItemModelResolver, partialTicks: number): void; - } - interface ArmedEntityRenderState extends net.minecraft.client.renderer.entity.state.LivingEntityRenderState { - mainArm: net.minecraft.world.entity.HumanoidArm; - attackArm: net.minecraft.world.entity.HumanoidArm; - rightArmPose: net.minecraft.client.model.HumanoidModel$ArmPose; - rightHandItemState: net.minecraft.client.renderer.item.ItemStackRenderState; - rightHandItemStack: net.minecraft.world.item.ItemStack; - leftArmPose: net.minecraft.client.model.HumanoidModel$ArmPose; - leftHandItemState: net.minecraft.client.renderer.item.ItemStackRenderState; - leftHandItemStack: net.minecraft.world.item.ItemStack; - swingAnimationType: net.minecraft.world.item.SwingAnimationType; - attackTime: number; - getMainHandItemState(): net.minecraft.client.renderer.item.ItemStackRenderState; - getMainHandItemStack(): net.minecraft.world.item.ItemStack; - getUseItemStackForArm(arm: net.minecraft.world.entity.HumanoidArm): net.minecraft.world.item.ItemStack; - ticksUsingItem(arm: net.minecraft.world.entity.HumanoidArm): number; - } const LivingEntityRenderState: { new(): net.minecraft.client.renderer.entity.state.LivingEntityRenderState; } @@ -13500,6 +13735,48 @@ declare global { heldOnHead: net.minecraft.client.renderer.item.ItemStackRenderState; fallFlyingScale(): number; } + const HumanoidRenderState: { + new(): net.minecraft.client.renderer.entity.state.HumanoidRenderState; + } + interface HumanoidRenderState extends net.minecraft.client.renderer.entity.state.ArmedEntityRenderState { + swimAmount: number; + speedValue: number; + maxCrossbowChargeDuration: number; + ticksUsingItem: number; + useItemHand: net.minecraft.world.InteractionHand; + isCrouching: boolean; + isFallFlying: boolean; + isVisuallySwimming: boolean; + isPassenger: boolean; + isUsingItem: boolean; + elytraRotX: number; + elytraRotY: number; + elytraRotZ: number; + headEquipment: net.minecraft.world.item.ItemStack; + chestEquipment: net.minecraft.world.item.ItemStack; + legsEquipment: net.minecraft.world.item.ItemStack; + feetEquipment: net.minecraft.world.item.ItemStack; + } + const ArmedEntityRenderState: { + new(): net.minecraft.client.renderer.entity.state.ArmedEntityRenderState; + extractArmedEntityRenderState(entity: net.minecraft.world.entity.LivingEntity, state: net.minecraft.client.renderer.entity.state.ArmedEntityRenderState, itemModelResolver: net.minecraft.client.renderer.item.ItemModelResolver, partialTicks: number): void; + } + interface ArmedEntityRenderState extends net.minecraft.client.renderer.entity.state.LivingEntityRenderState { + mainArm: net.minecraft.world.entity.HumanoidArm; + attackArm: net.minecraft.world.entity.HumanoidArm; + rightArmPose: net.minecraft.client.model.HumanoidModel$ArmPose; + rightHandItemState: net.minecraft.client.renderer.item.ItemStackRenderState; + rightHandItemStack: net.minecraft.world.item.ItemStack; + leftArmPose: net.minecraft.client.model.HumanoidModel$ArmPose; + leftHandItemState: net.minecraft.client.renderer.item.ItemStackRenderState; + leftHandItemStack: net.minecraft.world.item.ItemStack; + swingAnimationType: net.minecraft.world.item.SwingAnimationType; + attackTime: number; + getMainHandItemState(): net.minecraft.client.renderer.item.ItemStackRenderState; + getMainHandItemStack(): net.minecraft.world.item.ItemStack; + getUseItemStackForArm(arm: net.minecraft.world.entity.HumanoidArm): net.minecraft.world.item.ItemStack; + ticksUsingItem(arm: net.minecraft.world.entity.HumanoidArm): number; + } } namespace layers { const EquipmentLayerRenderer: { @@ -13522,7 +13799,7 @@ declare global { new(context: net.minecraft.client.renderer.entity.EntityRendererProvider$Context, slimSteve: boolean): net.minecraft.client.renderer.entity.player.AvatarRenderer; isPlayerUpsideDown(player: net.minecraft.world.entity.player.Player): boolean; } - interface AvatarRenderer extends net.minecraft.client.renderer.entity.LivingEntityRenderer { + interface AvatarRenderer extends net.minecraft.client.renderer.entity.LivingEntityRenderer { renderRightHand(poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, lightCoords: number, skinTexture: net.minecraft.resources.Identifier, hasSleeve: boolean): void; renderLeftHand(poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, lightCoords: number, skinTexture: net.minecraft.resources.Identifier, hasSleeve: boolean): void; } @@ -13589,99 +13866,32 @@ declare global { interface RenderLayerParent { getModel(): M; } - const ArmorModelSet: { - new(head: T, chest: T, legs: T, feet: T): net.minecraft.client.renderer.entity.ArmorModelSet; - bake(locations: net.minecraft.client.renderer.entity.ArmorModelSet, modelSet: net.minecraft.client.model.geom.EntityModelSet, factory: unknown): net.minecraft.client.renderer.entity.ArmorModelSet; - } - interface ArmorModelSet extends java.lang.Record { - get(slot: net.minecraft.world.entity.EquipmentSlot): T; - map(mapper: unknown): net.minecraft.client.renderer.entity.ArmorModelSet; - putFrom(values: net.minecraft.client.renderer.entity.ArmorModelSet, output: com.google.common.collect.ImmutableMap$Builder): void; - head(): T; - chest(): T; - legs(): T; - feet(): T; - } - } - namespace feature { - const ModelFeatureRenderer$CrumblingOverlay: { - new(progress: number, cameraPose: com.mojang.blaze3d.vertex.PoseStack$Pose): net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay; - } - interface ModelFeatureRenderer$CrumblingOverlay extends java.lang.Record { - progress(): number; - cameraPose(): com.mojang.blaze3d.vertex.PoseStack$Pose; - } - const ParticleFeatureRenderer$ParticleBufferCache: { - new(): net.minecraft.client.renderer.feature.ParticleFeatureRenderer$ParticleBufferCache; - } - interface ParticleFeatureRenderer$ParticleBufferCache extends java.lang.AutoCloseable { - write(byteBuffer: java.nio.ByteBuffer): void; - get(): com.mojang.blaze3d.buffers.GpuBuffer; - } - const NameTagFeatureRenderer$Storage: { - new(): net.minecraft.client.renderer.feature.NameTagFeatureRenderer$Storage; - } - interface NameTagFeatureRenderer$Storage { - add(poseStack: com.mojang.blaze3d.vertex.PoseStack, nameTagAttachment: net.minecraft.world.phys.Vec3 | null | undefined, offset: number, name: net.minecraft.network.chat.Component, seeThrough: boolean, lightCoords: number, distanceToCameraSq: number, camera: net.minecraft.client.renderer.state.level.CameraRenderState): void; - clear(): void; - } - const ModelPartFeatureRenderer$Storage: { - new(): net.minecraft.client.renderer.feature.ModelPartFeatureRenderer$Storage; - } - interface ModelPartFeatureRenderer$Storage { - add(renderType: net.minecraft.client.renderer.rendertype.RenderType, submit: net.minecraft.client.renderer.SubmitNodeStorage$ModelPartSubmit): void; - clear(): void; - endFrame(): void; - } - const ModelFeatureRenderer$Storage: { - new(): net.minecraft.client.renderer.feature.ModelFeatureRenderer$Storage; - } - interface ModelFeatureRenderer$Storage { - add(renderType: net.minecraft.client.renderer.rendertype.RenderType, modelSubmit: net.minecraft.client.renderer.SubmitNodeStorage$ModelSubmit): void; - clear(): void; - endFrame(): void; - } - const CustomFeatureRenderer$Storage: { - new(): net.minecraft.client.renderer.feature.CustomFeatureRenderer$Storage; - } - interface CustomFeatureRenderer$Storage { - add(poseStack: com.mojang.blaze3d.vertex.PoseStack, renderType: net.minecraft.client.renderer.rendertype.RenderType, customGeometryRenderer: net.minecraft.client.renderer.SubmitNodeCollector$CustomGeometryRenderer): void; - clear(): void; - endFrame(): void; - } - const FeatureRenderDispatcher: { - new(submitNodeStorage: net.minecraft.client.renderer.SubmitNodeStorage, modelManager: net.minecraft.client.resources.model.ModelManager, bufferSource: net.minecraft.client.renderer.MultiBufferSource$BufferSource, atlasManager: net.minecraft.client.resources.model.sprite.AtlasManager, outlineBufferSource: net.minecraft.client.renderer.OutlineBufferSource, crumblingBufferSource: net.minecraft.client.renderer.MultiBufferSource$BufferSource, font: net.minecraft.client.gui.Font, gameRenderState: net.minecraft.client.renderer.state.GameRenderState): net.minecraft.client.renderer.feature.FeatureRenderDispatcher; - } - interface FeatureRenderDispatcher extends java.lang.AutoCloseable { - renderSolidFeatures(): void; - renderTranslucentFeatures(): void; - renderTranslucentParticles(): void; - clearSubmitNodes(): void; - renderAllFeatures(): void; - endFrame(): void; - getSubmitNodeStorage(): net.minecraft.client.renderer.SubmitNodeStorage; - } } namespace block { - namespace dispatch { - const BlockStateModel: { - SimpleCachedUnbakedRoot: typeof net.minecraft.client.renderer.block.dispatch.BlockStateModel$SimpleCachedUnbakedRoot; + namespace model { + const BlockDisplayContext: { + create(): net.minecraft.client.renderer.block.model.BlockDisplayContext; } - interface BlockStateModel extends net.fabricmc.fabric.api.client.renderer.v1.model.FabricBlockStateModel { - collectParts(random: net.minecraft.util.RandomSource, output: Array): void; - particleMaterial(): net.minecraft.client.resources.model.sprite.Material$Baked; - materialFlags(): number; - hasMaterialFlag(flag: number): boolean; + interface BlockDisplayContext { } - const BlockStateModel$SimpleCachedUnbakedRoot: { - new(contents: net.minecraft.client.renderer.block.dispatch.BlockStateModel$Unbaked): net.minecraft.client.renderer.block.dispatch.BlockStateModel$SimpleCachedUnbakedRoot; + const BlockModel: { + BakingContext: typeof net.minecraft.client.renderer.block.model.BlockModel$BakingContext; } - interface BlockStateModel$SimpleCachedUnbakedRoot extends net.minecraft.client.renderer.block.dispatch.BlockStateModel$UnbakedRoot { + interface BlockModel { + update(output: net.minecraft.client.renderer.block.BlockModelRenderState, blockState: net.minecraft.world.level.block.state.BlockState, displayContext: net.minecraft.client.renderer.block.model.BlockDisplayContext, seed: number): void; } - interface BlockStateModel$UnbakedRoot extends net.minecraft.client.resources.model.ResolvableModel { - bake(blockState: net.minecraft.world.level.block.state.BlockState, modelBakery: net.minecraft.client.resources.model.ModelBaker): net.minecraft.client.renderer.block.dispatch.BlockStateModel; - visualEqualityGroup(blockState: net.minecraft.world.level.block.state.BlockState): any; + const BlockModel$BakingContext: { + new(entityModelSet: net.minecraft.client.model.geom.EntityModelSet, sprites: net.minecraft.client.resources.model.sprite.SpriteGetter, playerSkinRenderCache: net.minecraft.client.renderer.PlayerSkinRenderCache, modelGetter: unknown, missingBlockModel: net.minecraft.client.renderer.block.model.BlockModel): net.minecraft.client.renderer.block.model.BlockModel$BakingContext; } + interface BlockModel$BakingContext extends java.lang.Record, net.minecraft.client.renderer.special.SpecialModelRenderer$BakingContext { + modelGetter(): unknown; + missingBlockModel(): net.minecraft.client.renderer.block.model.BlockModel; + } + interface BlockModel$Unbaked { + bake(context: net.minecraft.client.renderer.block.model.BlockModel$BakingContext, transformation: org.joml.Matrix4fc): net.minecraft.client.renderer.block.model.BlockModel; + } + } + namespace dispatch { const ModelState: { NO_TRANSFORM: org.joml.Matrix4fc; } @@ -13699,6 +13909,24 @@ declare global { interface BlockStateModelPart$Unbaked extends net.minecraft.client.resources.model.ResolvableModel { bake(modelBakery: net.minecraft.client.resources.model.ModelBaker): net.minecraft.client.renderer.block.dispatch.BlockStateModelPart; } + const BlockStateModel: { + SimpleCachedUnbakedRoot: typeof net.minecraft.client.renderer.block.dispatch.BlockStateModel$SimpleCachedUnbakedRoot; + } + interface BlockStateModel extends net.fabricmc.fabric.api.client.renderer.v1.model.FabricBlockStateModel { + collectParts(random: net.minecraft.util.RandomSource, output: Array): void; + particleMaterial(): net.minecraft.client.resources.model.sprite.Material$Baked; + materialFlags(): number; + hasMaterialFlag(flag: number): boolean; + } + const BlockStateModel$SimpleCachedUnbakedRoot: { + new(contents: net.minecraft.client.renderer.block.dispatch.BlockStateModel$Unbaked): net.minecraft.client.renderer.block.dispatch.BlockStateModel$SimpleCachedUnbakedRoot; + } + interface BlockStateModel$SimpleCachedUnbakedRoot extends net.minecraft.client.renderer.block.dispatch.BlockStateModel$UnbakedRoot { + } + interface BlockStateModel$UnbakedRoot extends net.minecraft.client.resources.model.ResolvableModel { + bake(blockState: net.minecraft.world.level.block.state.BlockState, modelBakery: net.minecraft.client.resources.model.ModelBaker): net.minecraft.client.renderer.block.dispatch.BlockStateModel; + visualEqualityGroup(blockState: net.minecraft.world.level.block.state.BlockState): any; + } const BlockStateModel$Unbaked: { ELEMENT_CODEC: com.mojang.serialization.Codec>; HARDCODED_WEIGHTED_CODEC: com.mojang.serialization.Codec; @@ -13709,29 +13937,6 @@ declare global { asRoot(): net.minecraft.client.renderer.block.dispatch.BlockStateModel$UnbakedRoot; } } - namespace model { - const BlockDisplayContext: { - create(): net.minecraft.client.renderer.block.model.BlockDisplayContext; - } - interface BlockDisplayContext { - } - const BlockModel: { - BakingContext: typeof net.minecraft.client.renderer.block.model.BlockModel$BakingContext; - } - interface BlockModel { - update(output: net.minecraft.client.renderer.block.BlockModelRenderState, blockState: net.minecraft.world.level.block.state.BlockState, displayContext: net.minecraft.client.renderer.block.model.BlockDisplayContext, seed: number): void; - } - const BlockModel$BakingContext: { - new(entityModelSet: net.minecraft.client.model.geom.EntityModelSet, sprites: net.minecraft.client.resources.model.sprite.SpriteGetter, playerSkinRenderCache: net.minecraft.client.renderer.PlayerSkinRenderCache, modelGetter: unknown, missingBlockModel: net.minecraft.client.renderer.block.model.BlockModel): net.minecraft.client.renderer.block.model.BlockModel$BakingContext; - } - interface BlockModel$BakingContext extends java.lang.Record, net.minecraft.client.renderer.special.SpecialModelRenderer$BakingContext { - modelGetter(): unknown; - missingBlockModel(): net.minecraft.client.renderer.block.model.BlockModel; - } - interface BlockModel$Unbaked { - bake(context: net.minecraft.client.renderer.block.model.BlockModel$BakingContext, transformation: org.joml.Matrix4fc): net.minecraft.client.renderer.block.model.BlockModel; - } - } const MovingBlockRenderState: { new(): net.minecraft.client.renderer.block.MovingBlockRenderState; } @@ -13750,6 +13955,29 @@ declare global { cardinalLighting(): net.minecraft.world.level.CardinalLighting; getBlockTint(pos: net.minecraft.core.BlockPos, color: net.minecraft.world.level.ColorResolver): number; } + const BlockModelResolver: { + new(modelManager: net.minecraft.client.resources.model.ModelManager): net.minecraft.client.renderer.block.BlockModelResolver; + } + interface BlockModelResolver { + update(renderState: net.minecraft.client.renderer.block.BlockModelRenderState, blockState: net.minecraft.world.level.block.state.BlockState, displayContext: net.minecraft.client.renderer.block.model.BlockDisplayContext): void; + updateForItemFrame(renderState: net.minecraft.client.renderer.block.BlockModelRenderState, isGlowing: boolean, map: boolean): void; + } + const BlockModelRenderState: { + EMPTY_TINTS: Array; + new(): net.minecraft.client.renderer.block.BlockModelRenderState; + } + interface BlockModelRenderState extends net.fabricmc.fabric.api.client.renderer.v1.render.FabricBlockModelRenderState, net.fabricmc.fabric.api.client.rendering.v1.FabricRenderState { + blockLightCoords: number; + tintLayers(): it.unimi.dsi.fastutil.ints.IntList; + clear(): void; + setupSpecialModel(renderer: net.minecraft.client.renderer.special.SpecialModelRenderer, transformation: org.joml.Matrix4fc): void; + setupModel(transformation: org.joml.Matrix4fc, hasTranslucency: boolean): Array; + submit(poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, externalLightCoords: number, overlayCoords: number, outlineColor: number): void; + submitOnlyOutline(poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, lightCoords: number, overlayCoords: number, outlineColor: number): void; + submitWithZOffset(poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, lightCoords: number, overlayCoords: number, outlineColor: number): void; + isEmpty(): boolean; + scratchRandomSource(seed: number): net.minecraft.util.RandomSource; + } const BlockStateModelSet: { new(modelByState: Map, missingModel: net.minecraft.client.renderer.block.dispatch.BlockStateModel): net.minecraft.client.renderer.block.BlockStateModelSet; } @@ -13758,6 +13986,12 @@ declare global { get(state: net.minecraft.world.level.block.state.BlockState): net.minecraft.client.renderer.block.dispatch.BlockStateModel; getParticleMaterial(blockState: net.minecraft.world.level.block.state.BlockState): net.minecraft.client.resources.model.sprite.Material$Baked; } + const BlockModelSet: { + new(fallback: net.minecraft.client.renderer.block.BlockStateModelSet, blockModelByState: Map, blockColors: net.minecraft.client.color.block.BlockColors): net.minecraft.client.renderer.block.BlockModelSet; + } + interface BlockModelSet { + get(blockState: net.minecraft.world.level.block.state.BlockState): net.minecraft.client.renderer.block.model.BlockModel; + } const FluidStateModelSet: { new(modelByFluid: Map, missingModel: net.minecraft.client.renderer.block.FluidModel): net.minecraft.client.renderer.block.FluidStateModelSet; bake(materials: net.minecraft.client.resources.model.sprite.MaterialBaker): Map; @@ -13786,33 +14020,44 @@ declare global { overlayMaterial(): net.minecraft.client.resources.model.sprite.Material | null | undefined; tintSource(): net.minecraft.client.color.block.BlockTintSource | null | undefined; } - const BlockModelResolver: { - new(modelManager: net.minecraft.client.resources.model.ModelManager): net.minecraft.client.renderer.block.BlockModelResolver; - } - interface BlockModelResolver { - update(renderState: net.minecraft.client.renderer.block.BlockModelRenderState, blockState: net.minecraft.world.level.block.state.BlockState, displayContext: net.minecraft.client.renderer.block.model.BlockDisplayContext): void; - updateForItemFrame(renderState: net.minecraft.client.renderer.block.BlockModelRenderState, isGlowing: boolean, map: boolean): void; - } - const BlockModelRenderState: { - EMPTY_TINTS: Array; - new(): net.minecraft.client.renderer.block.BlockModelRenderState; - } - interface BlockModelRenderState extends net.fabricmc.fabric.api.client.renderer.v1.render.FabricBlockModelRenderState, net.fabricmc.fabric.api.client.rendering.v1.FabricRenderState { - tintLayers(): it.unimi.dsi.fastutil.ints.IntList; - clear(): void; - setupSpecialModel(renderer: net.minecraft.client.renderer.special.SpecialModelRenderer, transformation: org.joml.Matrix4fc): void; - setupModel(transformation: org.joml.Matrix4fc, hasTranslucency: boolean): Array; - submit(poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, lightCoords: number, overlayCoords: number, outlineColor: number): void; - submitOnlyOutline(poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, lightCoords: number, overlayCoords: number, outlineColor: number): void; - submitWithZOffset(poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, lightCoords: number, overlayCoords: number, outlineColor: number): void; - isEmpty(): boolean; - scratchRandomSource(seed: number): net.minecraft.util.RandomSource; - } - const BlockModelSet: { - new(fallback: net.minecraft.client.renderer.block.BlockStateModelSet, blockModelByState: Map, blockColors: net.minecraft.client.color.block.BlockColors): net.minecraft.client.renderer.block.BlockModelSet; - } - interface BlockModelSet { - get(blockState: net.minecraft.world.level.block.state.BlockState): net.minecraft.client.renderer.block.model.BlockModel; + } + namespace gizmos { + const DrawableGizmoPrimitives$Group: { + new(opaque: boolean, lines: Array, quads: Array, triangleFans: Array, texts: Array, points: Array): net.minecraft.client.renderer.gizmos.DrawableGizmoPrimitives$Group; + } + interface DrawableGizmoPrimitives$Group extends java.lang.Record { + opaque(): boolean; + lines(): Array; + quads(): Array; + triangleFans(): Array; + texts(): Array; + points(): Array; + } + } + namespace extract { + const LevelExtractor: { + new(minecraft: net.minecraft.client.Minecraft, levelRenderState: net.minecraft.client.renderer.state.level.LevelRenderState, levelRenderer: net.minecraft.client.renderer.LevelRenderer): net.minecraft.client.renderer.extract.LevelExtractor; + } + interface LevelExtractor extends net.minecraft.server.packs.resources.ResourceManagerReloadListener { + debugRenderer: net.minecraft.client.renderer.debug.DebugRenderer; + gameTestBlockHighlightRenderer: net.minecraft.client.renderer.debug.GameTestBlockHighlightRenderer; + lastViewDistance(): number; + extract(deltaTracker: net.minecraft.client.DeltaTracker, camera: net.minecraft.client.Camera, deltaPartialTick: number): void; + isEntityVisible(entity: net.minecraft.world.entity.Entity, frustum: net.minecraft.client.renderer.culling.Frustum, camX: number, camY: number, camZ: number): boolean; + setLevel(level: net.minecraft.client.multiplayer.ClientLevel | null | undefined): void; + allChanged(): void; + resetSampler(): void; + blockChanged(pos: net.minecraft.core.BlockPos, updateFlags: number): void; + setBlockDirty(pos: net.minecraft.core.BlockPos, oldState: net.minecraft.world.level.block.state.BlockState, newState: net.minecraft.world.level.block.state.BlockState): void; + setBlocksDirty(x0: number, y0: number, z0: number, x1: number, y1: number, z1: number): void; + setSectionDirtyWithNeighbors(sectionX: number, sectionY: number, sectionZ: number): void; + setSectionRangeDirty(minSectionX: number, minSectionY: number, minSectionZ: number, maxSectionX: number, maxSectionY: number, maxSectionZ: number): void; + setSectionDirty(sectionX: number, sectionY: number, sectionZ: number): void; + collectPerFrameMainThreadGizmos(): net.minecraft.gizmos.Gizmos$TemporaryCollection; + countRenderedSections(): number; + sectionStatistics(): string | null | undefined; + entityStatistics(): string | null | undefined; + totalSections(): number; } } namespace debug { @@ -13844,7 +14089,7 @@ declare global { getRenderer(blockEntity: E): net.minecraft.client.renderer.blockentity.BlockEntityRenderer | null | undefined; getRenderer(state: S): net.minecraft.client.renderer.blockentity.BlockEntityRenderer | null | undefined; prepare(cameraPos: net.minecraft.world.phys.Vec3): void; - tryExtractRenderState(blockEntity: E, partialTicks: number, breakProgress: net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay | null | undefined): S; + tryExtractRenderState(blockEntity: E, partialTicks: number, breakProgress: net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay | null | undefined, isGloballyRendered: boolean): S; submit(state: S, poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, camera: net.minecraft.client.renderer.state.level.CameraRenderState): void; } interface BlockEntityRenderer { @@ -13877,12 +14122,23 @@ declare global { define(key: string): net.minecraft.client.renderer.ShaderDefines$Builder; build(): net.minecraft.client.renderer.ShaderDefines; } + const StagedVertexBuffer$ExecuteInfo: { + new(vertexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexType: com.mojang.blaze3d.IndexType, baseVertex: number, firstIndex: number, indexCount: number): net.minecraft.client.renderer.StagedVertexBuffer$ExecuteInfo; + } + interface StagedVertexBuffer$ExecuteInfo extends java.lang.Record { + vertexBuffer(): com.mojang.blaze3d.buffers.GpuBuffer; + indexBuffer(): com.mojang.blaze3d.buffers.GpuBuffer; + indexType(): com.mojang.blaze3d.IndexType; + baseVertex(): number; + firstIndex(): number; + indexCount(): number; + } interface SubmitNodeCollector extends net.minecraft.client.renderer.OrderedSubmitNodeCollector { order(order: number): net.minecraft.client.renderer.OrderedSubmitNodeCollector; } - interface OrderedSubmitNodeCollector extends net.fabricmc.fabric.api.client.renderer.v1.render.FabricOrderedSubmitNodeCollector { + interface OrderedSubmitNodeCollector extends net.fabricmc.fabric.api.client.renderer.v1.render.FabricOrderedSubmitNodeCollector, net.fabricmc.fabric.api.client.rendering.v1.FabricOrderedSubmitNodeCollector { submitShadow(poseStack: com.mojang.blaze3d.vertex.PoseStack, radius: number, pieces: Array): void; - submitNameTag(poseStack: com.mojang.blaze3d.vertex.PoseStack, nameTagAttachment: net.minecraft.world.phys.Vec3 | null | undefined, offset: number, name: net.minecraft.network.chat.Component, seeThrough: boolean, lightCoords: number, distanceToCameraSq: number, camera: net.minecraft.client.renderer.state.level.CameraRenderState): void; + submitNameTag(poseStack: com.mojang.blaze3d.vertex.PoseStack, nameTagAttachment: net.minecraft.world.phys.Vec3 | null | undefined, offset: number, name: net.minecraft.network.chat.Component, seeThrough: boolean, lightCoords: number, camera: net.minecraft.client.renderer.state.level.CameraRenderState): void; submitText(poseStack: com.mojang.blaze3d.vertex.PoseStack, x: number, y: number, string: net.minecraft.util.FormattedCharSequence, dropShadow: boolean, displayMode: net.minecraft.client.gui.Font$DisplayMode, lightCoords: number, color: number, backgroundColor: number, outlineColor: number): void; submitFlame(poseStack: com.mojang.blaze3d.vertex.PoseStack, renderState: net.minecraft.client.renderer.entity.state.EntityRenderState, rotation: org.joml.Quaternionf): void; submitLeash(poseStack: com.mojang.blaze3d.vertex.PoseStack, leashState: net.minecraft.client.renderer.entity.state.EntityRenderState$LeashState): void; @@ -13892,36 +14148,40 @@ declare global { submitModel(model: net.minecraft.client.model.Model, state: S, poseStack: com.mojang.blaze3d.vertex.PoseStack, lightCoords: number, overlayCoords: number, tintedColor: number, sprite: net.minecraft.client.resources.model.sprite.SpriteId, sprites: net.minecraft.client.resources.model.sprite.SpriteGetter, outlineColor: number, crumblingOverlay: net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay | null | undefined): void; submitModelPart(modelPart: net.minecraft.client.model.geom.ModelPart, poseStack: com.mojang.blaze3d.vertex.PoseStack, renderType: net.minecraft.client.renderer.rendertype.RenderType, lightCoords: number, overlayCoords: number, sprite: net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined): void; submitModelPart(modelPart: net.minecraft.client.model.geom.ModelPart, poseStack: com.mojang.blaze3d.vertex.PoseStack, renderType: net.minecraft.client.renderer.rendertype.RenderType, lightCoords: number, overlayCoords: number, sprite: net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined, tintedColor: number, crumblingOverlay: net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay | null | undefined): void; - submitModelPart(modelPart: net.minecraft.client.model.geom.ModelPart, poseStack: com.mojang.blaze3d.vertex.PoseStack, renderType: net.minecraft.client.renderer.rendertype.RenderType, lightCoords: number, overlayCoords: number, sprite: net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined, sheeted: boolean, hasFoil: boolean): void; - submitModelPart(modelPart: net.minecraft.client.model.geom.ModelPart, poseStack: com.mojang.blaze3d.vertex.PoseStack, renderType: net.minecraft.client.renderer.rendertype.RenderType, lightCoords: number, overlayCoords: number, sprite: net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined, sheeted: boolean, hasFoil: boolean, tintedColor: number, crumblingOverlay: net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay | null | undefined, outlineColor: number): void; - submitMovingBlock(poseStack: com.mojang.blaze3d.vertex.PoseStack, movingBlockRenderState: net.minecraft.client.renderer.block.MovingBlockRenderState): void; + submitModelPart(modelPart: net.minecraft.client.model.geom.ModelPart, poseStack: com.mojang.blaze3d.vertex.PoseStack, renderType: net.minecraft.client.renderer.rendertype.RenderType, lightCoords: number, overlayCoords: number, sprite: net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined, tintedColor: number, crumblingOverlay: net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay | null | undefined, outlineColor: number): void; + submitMovingBlock(poseStack: com.mojang.blaze3d.vertex.PoseStack, movingBlockRenderState: net.minecraft.client.renderer.block.MovingBlockRenderState, outlineColor: number): void; submitBlockModel(poseStack: com.mojang.blaze3d.vertex.PoseStack, renderType: net.minecraft.client.renderer.rendertype.RenderType, parts: Array, tintLayers: Array, lightCoords: number, overlayCoords: number, outlineColor: number): void; - submitBreakingBlockModel(poseStack: com.mojang.blaze3d.vertex.PoseStack, model: net.minecraft.client.renderer.block.dispatch.BlockStateModel, seed: number, progress: number): void; + submitBreakingBlockModel(poseStack: com.mojang.blaze3d.vertex.PoseStack, parts: Array, progress: number): void; + submitShapeOutline(poseStack: com.mojang.blaze3d.vertex.PoseStack, shape: net.minecraft.world.phys.shapes.VoxelShape, renderType: net.minecraft.client.renderer.rendertype.RenderType, color: number, width: number, afterTerrain: boolean): void; submitItem(poseStack: com.mojang.blaze3d.vertex.PoseStack, displayContext: net.minecraft.world.item.ItemDisplayContext, lightCoords: number, overlayCoords: number, outlineColor: number, tintLayers: Array, quads: Array, foilType: net.minecraft.client.renderer.item.ItemStackRenderState$FoilType): void; submitCustomGeometry(poseStack: com.mojang.blaze3d.vertex.PoseStack, renderType: net.minecraft.client.renderer.rendertype.RenderType, customGeometryRenderer: net.minecraft.client.renderer.SubmitNodeCollector$CustomGeometryRenderer): void; - submitParticleGroup(particleGroupRenderer: net.minecraft.client.renderer.SubmitNodeCollector$ParticleGroupRenderer): void; - } - const MultiBufferSource: { - BufferSource: typeof net.minecraft.client.renderer.MultiBufferSource$BufferSource; - immediate(buffer: com.mojang.blaze3d.vertex.ByteBufferBuilder): net.minecraft.client.renderer.MultiBufferSource$BufferSource; - immediateWithBuffers(fixedBuffers: java.util.SequencedMap, sharedBuffer: com.mojang.blaze3d.vertex.ByteBufferBuilder): net.minecraft.client.renderer.MultiBufferSource$BufferSource; - } - interface MultiBufferSource { - getBuffer(renderType: net.minecraft.client.renderer.rendertype.RenderType): com.mojang.blaze3d.vertex.VertexConsumer; + submitQuadParticleGroup(particles: net.minecraft.client.renderer.state.level.QuadParticleRenderState): void; + submitGizmoPrimitives(group: net.minecraft.client.renderer.gizmos.DrawableGizmoPrimitives$Group, camera: net.minecraft.client.renderer.state.level.CameraRenderState, onTop: boolean): void; } - interface MultiBufferSource$BufferSource extends net.minecraft.client.renderer.MultiBufferSource { - endLastBatch(): void; - endBatch(): void; - endBatch(type: net.minecraft.client.renderer.rendertype.RenderType): void; + const SubmitNodeCollection: { + new(): net.minecraft.client.renderer.SubmitNodeCollection; + } + interface SubmitNodeCollection extends net.minecraft.client.renderer.OrderedSubmitNodeCollector { + solid: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + shadows: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + nameTags: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + seeThroughNameTags: net.minecraft.client.renderer.feature.phase.TranslucentFeatureRenderPhase; + texts: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + shapeOutlines: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + translucentBlocksAndItems: net.minecraft.client.renderer.feature.phase.TranslucentFeatureRenderPhase; + translucentModels: net.minecraft.client.renderer.feature.phase.TranslucentFeatureRenderPhase; + translucentCustomGeometry: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + gizmos: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + breakingOverlay: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + waterMask: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + afterTerrain: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + alwaysOnTop: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + outline: net.minecraft.client.renderer.feature.phase.SimpleFeatureRenderPhase; + allPhases(): Array>; } interface SubmitNodeCollector$CustomGeometryRenderer { render(pose: com.mojang.blaze3d.vertex.PoseStack$Pose, buffer: com.mojang.blaze3d.vertex.VertexConsumer): void; } - interface SubmitNodeCollector$ParticleGroupRenderer { - isEmpty(): boolean; - prepare(buffer: net.minecraft.client.renderer.feature.ParticleFeatureRenderer$ParticleBufferCache, translucent: boolean): net.minecraft.client.renderer.state.level.QuadParticleRenderState$PreparedBuffers | null | undefined; - render(buffers: net.minecraft.client.renderer.state.level.QuadParticleRenderState$PreparedBuffers, bufferCache: net.minecraft.client.renderer.feature.ParticleFeatureRenderer$ParticleBufferCache, renderPass: com.mojang.blaze3d.systems.RenderPass, textureManager: net.minecraft.client.renderer.texture.TextureManager): void; - } const PlayerSkinRenderCache: { RenderInfo: typeof net.minecraft.client.renderer.PlayerSkinRenderCache$RenderInfo; DEFAULT_PLAYER_SKIN_RENDER_TYPE: net.minecraft.client.renderer.rendertype.RenderType; @@ -13954,94 +14214,40 @@ declare global { getIntensity(partialTicks: number): number; flashStartedThisTick(): boolean; } - const RenderBuffers: { - new(maxSectionBuilders: number): net.minecraft.client.renderer.RenderBuffers; - } - interface RenderBuffers { - fixedBufferPack(): net.minecraft.client.renderer.SectionBufferBuilderPack; - sectionBufferPool(): net.minecraft.client.renderer.SectionBufferBuilderPool; - bufferSource(): net.minecraft.client.renderer.MultiBufferSource$BufferSource; - crumblingBufferSource(): net.minecraft.client.renderer.MultiBufferSource$BufferSource; - outlineBufferSource(): net.minecraft.client.renderer.OutlineBufferSource; - } - const SectionBufferBuilderPack: { - TOTAL_BUFFERS_SIZE: number; - new(): net.minecraft.client.renderer.SectionBufferBuilderPack; - } - interface SectionBufferBuilderPack extends java.lang.AutoCloseable { - buffer(layer: net.minecraft.client.renderer.chunk.ChunkSectionLayer): com.mojang.blaze3d.vertex.ByteBufferBuilder; - clearAll(): void; - discardAll(): void; - } - const SectionBufferBuilderPool: { - allocate(maxWorkers: number): net.minecraft.client.renderer.SectionBufferBuilderPool; - } - interface SectionBufferBuilderPool { - acquire(): net.minecraft.client.renderer.SectionBufferBuilderPack | null | undefined; - release(buffer: net.minecraft.client.renderer.SectionBufferBuilderPack): void; - isEmpty(): boolean; - getFreeBufferCount(): number; - } - const OutlineBufferSource: { - new(): net.minecraft.client.renderer.OutlineBufferSource; - } - interface OutlineBufferSource extends net.minecraft.client.renderer.MultiBufferSource { - setColor(color: number): void; - endOutlineBatch(): void; - } const LevelRenderer: { - SECTION_SIZE: number; - HALF_SECTION_SIZE: number; - NEARBY_SECTION_DISTANCE_IN_BLOCKS: number; - new(minecraft: net.minecraft.client.Minecraft, entityRenderDispatcher: net.minecraft.client.renderer.entity.EntityRenderDispatcher, blockEntityRenderDispatcher: net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher, renderBuffers: net.minecraft.client.renderer.RenderBuffers, gameRenderState: net.minecraft.client.renderer.state.GameRenderState, featureRenderDispatcher: net.minecraft.client.renderer.feature.FeatureRenderDispatcher): net.minecraft.client.renderer.LevelRenderer; - offsetFrustum(frustum: net.minecraft.client.renderer.culling.Frustum): net.minecraft.client.renderer.culling.Frustum; - getLightCoords(level: net.minecraft.world.level.BlockAndLightGetter, pos: net.minecraft.core.BlockPos): number; - getLightCoords(brightnessGetter: net.minecraft.client.renderer.LevelRenderer$BrightnessGetter, level: net.minecraft.world.level.BlockAndLightGetter, state: net.minecraft.world.level.block.state.BlockState, pos: net.minecraft.core.BlockPos): number; - } - interface LevelRenderer extends net.minecraft.server.packs.resources.ResourceManagerReloadListener, java.lang.AutoCloseable { - debugRenderer: net.minecraft.client.renderer.debug.DebugRenderer; - gameTestBlockHighlightRenderer: net.minecraft.client.renderer.debug.GameTestBlockHighlightRenderer; + new(entityRenderDispatcher: net.minecraft.client.renderer.entity.EntityRenderDispatcher, blockEntityRenderDispatcher: net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher, modelManager: net.minecraft.client.resources.model.ModelManager, textureManager: net.minecraft.client.renderer.texture.TextureManager, atlasManager: net.minecraft.client.resources.model.sprite.AtlasManager, shaderManager: net.minecraft.client.renderer.ShaderManager, gameRenderer: net.minecraft.client.renderer.GameRenderer, width: number, height: number): net.minecraft.client.renderer.LevelRenderer; + } + interface LevelRenderer extends java.lang.AutoCloseable { + entityRenderDispatcher(): net.minecraft.client.renderer.entity.EntityRenderDispatcher; + blockEntityRenderDispatcher(): net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; + skyRenderer(): net.minecraft.client.renderer.SkyRenderer | null | undefined; + cloudRenderer(): net.minecraft.client.renderer.CloudRenderer; + worldBorderRenderer(): net.minecraft.client.renderer.WorldBorderRenderer; + weatherEffectRenderer(): net.minecraft.client.renderer.WeatherEffectRenderer; + sectionOcclusionGraph(): net.minecraft.client.renderer.SectionOcclusionGraph; + visibleSections(): it.unimi.dsi.fastutil.objects.ObjectArrayList; + nearbyVisibleSections(): it.unimi.dsi.fastutil.objects.ObjectArrayList; + viewArea(): net.minecraft.client.renderer.ViewArea | null | undefined; entityOutlineTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; - initOutline(): void; - doEntityOutline(): void; - setLevel(level: net.minecraft.client.multiplayer.ClientLevel | null | undefined): void; - allChanged(): void; - resize(width: number, height: number): void; - getSectionStatistics(): string | null | undefined; - getSectionRenderDispatcher(): net.minecraft.client.renderer.chunk.SectionRenderDispatcher | null | undefined; - getTotalSections(): number; - getLastViewDistance(): number; - countRenderedSections(): number; - resetSampler(): void; - getEntityStatistics(): string | null | undefined; - addRecentlyCompiledSection(section: net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection): void; - update(camera: net.minecraft.client.Camera): void; - renderLevel(resourceAllocator: com.mojang.blaze3d.resource.GraphicsResourceAllocator, deltaTracker: net.minecraft.client.DeltaTracker, renderOutline: boolean, cameraState: net.minecraft.client.renderer.state.level.CameraRenderState, modelViewMatrix: org.joml.Matrix4fc, terrainFog: com.mojang.blaze3d.buffers.GpuBufferSlice, fogColor: org.joml.Vector4f, shouldRenderSky: boolean, chunkSectionsToRender: net.minecraft.client.renderer.chunk.ChunkSectionsToRender): void; - extractLevel(deltaTracker: net.minecraft.client.DeltaTracker, camera: net.minecraft.client.Camera, deltaPartialTick: number): void; + sectionRenderDispatcher(): net.minecraft.client.renderer.chunk.SectionRenderDispatcher | null | undefined; + render(resourceAllocator: com.mojang.blaze3d.resource.GraphicsResourceAllocator, deltaTracker: net.minecraft.client.DeltaTracker, renderOutline: boolean, cameraState: net.minecraft.client.renderer.state.level.CameraRenderState, modelViewMatrix: org.joml.Matrix4fc, terrainFog: com.mojang.blaze3d.buffers.GpuBufferSlice, fogColor: org.joml.Vector4f, shouldRenderSky: boolean): void; prepareChunkRenders(modelViewMatrix: org.joml.Matrix4fc): net.minecraft.client.renderer.chunk.ChunkSectionsToRender; + resize(width: number, height: number): void; endFrame(): void; - tick(camera: net.minecraft.client.Camera): void; - blockChanged(level: net.minecraft.world.level.BlockGetter, pos: net.minecraft.core.BlockPos, old: net.minecraft.world.level.block.state.BlockState, current: net.minecraft.world.level.block.state.BlockState, updateFlags: number): void; - setBlockDirty(pos: net.minecraft.core.BlockPos, oldState: net.minecraft.world.level.block.state.BlockState, newState: net.minecraft.world.level.block.state.BlockState): void; - setBlocksDirty(x0: number, y0: number, z0: number, x1: number, y1: number, z1: number): void; - setSectionDirtyWithNeighbors(sectionX: number, sectionY: number, sectionZ: number): void; - setSectionRangeDirty(minSectionX: number, minSectionY: number, minSectionZ: number, maxSectionX: number, maxSectionY: number, maxSectionZ: number): void; - setSectionDirty(sectionX: number, sectionY: number, sectionZ: number): void; - onSectionBecomingNonEmpty(sectionNode: number): void; - destroyBlockProgress(id: number, pos: net.minecraft.core.BlockPos, progress: number): void; + doEntityOutline(): void; + invalidateCompiledGeometry(level: net.minecraft.client.multiplayer.ClientLevel, options: net.minecraft.client.Options, camera: net.minecraft.client.Camera, blockColors: net.minecraft.client.color.block.BlockColors): void; + clearVisibleSections(): void; + resetLevelRenderData(): void; hasRenderedAllSections(): boolean; - onChunkReadyToRender(pos: net.minecraft.world.level.ChunkPos): void; - needsUpdate(): void; isSectionCompiledAndVisible(blockPos: net.minecraft.core.BlockPos): boolean; - getTranslucentTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; - getItemEntityTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; - getParticlesTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; - getWeatherTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; - getCloudsTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; - getVisibleSections(): it.unimi.dsi.fastutil.objects.ObjectArrayList; - getSectionOcclusionGraph(): net.minecraft.client.renderer.SectionOcclusionGraph; - getCloudRenderer(): net.minecraft.client.renderer.CloudRenderer; - collectPerFrameGizmos(): net.minecraft.gizmos.Gizmos$TemporaryCollection; + translucentTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; + itemEntityTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; + particlesTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; + weatherTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; + cloudsTarget(): com.mojang.blaze3d.pipeline.RenderTarget | null | undefined; + expectedChunks(): it.unimi.dsi.fastutil.longs.LongCollection; + collectPerFrameRenderThreadGizmos(): net.minecraft.gizmos.Gizmos$TemporaryCollection; + addMainThreadGizmos(mainThreadGizmos: Array): void; } const MapRenderer: { WIDTH: number; @@ -14057,56 +14263,21 @@ declare global { } interface ItemInHandRenderer { renderItem(mob: net.minecraft.world.entity.LivingEntity, itemStack: net.minecraft.world.item.ItemStack, type: net.minecraft.world.item.ItemDisplayContext, poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, lightCoords: number): void; - renderHandsWithItems(frameInterp: number, poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, player: net.minecraft.client.player.LocalPlayer, lightCoords: number): void; + submitHandsWithItems(frameInterp: number, poseStack: com.mojang.blaze3d.vertex.PoseStack, submitNodeCollector: net.minecraft.client.renderer.SubmitNodeCollector, player: net.minecraft.client.player.LocalPlayer, lightCoords: number): void; tick(): void; itemUsed(hand: net.minecraft.world.InteractionHand): void; } - const SectionOcclusionGraph: { - Node: typeof net.minecraft.client.renderer.SectionOcclusionGraph$Node; - new(): net.minecraft.client.renderer.SectionOcclusionGraph; - } - interface SectionOcclusionGraph { - waitAndReset(viewArea: net.minecraft.client.renderer.ViewArea | null | undefined): void; - invalidate(): void; - addSectionsInFrustum(frustum: net.minecraft.client.renderer.culling.Frustum, visibleSections: Array, nearbyVisibleSection: Array): void; - consumeFrustumUpdate(): boolean; - onChunkReadyToRender(pos: net.minecraft.world.level.ChunkPos): void; - schedulePropagationFrom(section: net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection): void; - update(smartCull: boolean, camera: net.minecraft.client.Camera, frustum: net.minecraft.client.renderer.culling.Frustum, visibleSections: Array, loadedEmptySections: it.unimi.dsi.fastutil.longs.LongOpenHashSet): void; - getNode(section: net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection): net.minecraft.client.renderer.SectionOcclusionGraph$Node | null | undefined; - getOctree(): net.minecraft.client.renderer.Octree; - } - const ViewArea: { - new(sectionRenderDispatcher: net.minecraft.client.renderer.chunk.SectionRenderDispatcher, level: net.minecraft.world.level.Level, renderDistance: number, levelRenderer: net.minecraft.client.renderer.LevelRenderer): net.minecraft.client.renderer.ViewArea; - } - interface ViewArea { - sections: Array; - releaseAllBuffers(): void; - getViewDistance(): number; - getLevelHeightAccessor(): net.minecraft.world.level.LevelHeightAccessor; - repositionCamera(cameraSectionPos: net.minecraft.core.SectionPos): void; - getCameraSectionPos(): net.minecraft.core.SectionPos; - setDirty(sectionX: number, sectionY: number, sectionZ: number, playerChanged: boolean): void; + const SkyRenderer: { + new(textureManager: net.minecraft.client.renderer.texture.TextureManager, atlasManager: net.minecraft.client.resources.model.sprite.AtlasManager, renderTarget: com.mojang.blaze3d.pipeline.RenderTarget): net.minecraft.client.renderer.SkyRenderer; } - interface SectionOcclusionGraph$Node { - step: number; - hasSourceDirection(directionOrdinal: number): boolean; - } - const Octree: { - new(cameraSection: net.minecraft.core.SectionPos, renderDistance: number, sectionsPerChunk: number, minBlockY: number): net.minecraft.client.renderer.Octree; - } - interface Octree { - add(section: net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection): boolean; - visitNodes(visitor: net.minecraft.client.renderer.Octree$OctreeVisitor, frustum: net.minecraft.client.renderer.culling.Frustum, closeDistance: number): void; - } - interface Octree$OctreeVisitor { - visit(node: net.minecraft.client.renderer.Octree$Node, fullyVisible: boolean, depth: number, isClose: boolean): void; - (node: net.minecraft.client.renderer.Octree$Node, fullyVisible: boolean, depth: number, isClose: boolean): void; - } - interface Octree$Node { - visitNodes(visitor: net.minecraft.client.renderer.Octree$OctreeVisitor, skipFrustumCheck: boolean, frustum: net.minecraft.client.renderer.culling.Frustum, depth: number, closeDistance: number, isClose: boolean): void; - getSection(): net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection | null | undefined; - getAABB(): net.minecraft.world.phys.AABB; + interface SkyRenderer extends java.lang.AutoCloseable { + renderSkyDisc(skyColor: number): void; + extractRenderState(level: net.minecraft.client.multiplayer.ClientLevel, partialTicks: number, camera: net.minecraft.client.Camera, state: net.minecraft.client.renderer.state.level.SkyRenderState): void; + renderDarkDisc(): void; + renderSunMoonAndStars(poseStack: com.mojang.blaze3d.vertex.PoseStack, sunAngle: number, moonAngle: number, starAngle: number, moonPhase: net.minecraft.world.level.MoonPhase, rainBrightness: number, starBrightness: number): void; + renderSunriseAndSunset(poseStack: com.mojang.blaze3d.vertex.PoseStack, sunAngle: number, sunriseAndSunsetColor: number): void; + renderEndSky(): void; + renderEndFlash(poseStack: com.mojang.blaze3d.vertex.PoseStack, intensity: number, xAngle: number, yAngle: number): void; } const CloudRenderer: { TextureData: typeof net.minecraft.client.renderer.CloudRenderer$TextureData; @@ -14125,242 +14296,132 @@ declare global { width(): number; height(): number; } - const SubmitNodeStorage: { - BreakingBlockModelSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$BreakingBlockModelSubmit; - CustomGeometrySubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$CustomGeometrySubmit; - ItemSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$ItemSubmit; - BlockModelSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$BlockModelSubmit; - MovingBlockSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$MovingBlockSubmit; - TranslucentModelSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$TranslucentModelSubmit; - ModelPartSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$ModelPartSubmit; - ModelSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$ModelSubmit; - LeashSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$LeashSubmit; - TextSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$TextSubmit; - NameTagSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$NameTagSubmit; - FlameSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$FlameSubmit; - ShadowSubmit: typeof net.minecraft.client.renderer.SubmitNodeStorage$ShadowSubmit; - new(): net.minecraft.client.renderer.SubmitNodeStorage; - } - interface SubmitNodeStorage extends net.minecraft.client.renderer.SubmitNodeCollector { - clear(): void; - endFrame(): void; - getSubmitsPerOrder(): it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap; - } - const SubmitNodeCollection: { - new(submitNodeStorage: net.minecraft.client.renderer.SubmitNodeStorage): net.minecraft.client.renderer.SubmitNodeCollection; - } - interface SubmitNodeCollection extends net.minecraft.client.renderer.OrderedSubmitNodeCollector, net.fabricmc.fabric.api.client.renderer.v1.render.FabricSubmitNodeCollection { - wasUsed(): boolean; - getShadowSubmits(): Array; - getFlameSubmits(): Array; - getNameTagSubmits(): net.minecraft.client.renderer.feature.NameTagFeatureRenderer$Storage; - getTextSubmits(): Array; - getLeashSubmits(): Array; - getMovingBlockSubmits(): Array; - getBlockModelSubmits(): Array; - getBreakingBlockModelSubmits(): Array; - getModelPartSubmits(): net.minecraft.client.renderer.feature.ModelPartFeatureRenderer$Storage; - getItemSubmits(): Array; - getParticleGroupRenderers(): Array; - getModelSubmits(): net.minecraft.client.renderer.feature.ModelFeatureRenderer$Storage; - getCustomGeometrySubmits(): net.minecraft.client.renderer.feature.CustomFeatureRenderer$Storage; - clear(): void; - endFrame(): void; - } - const SubmitNodeStorage$ModelPartSubmit: { - new(pose: com.mojang.blaze3d.vertex.PoseStack$Pose, modelPart: net.minecraft.client.model.geom.ModelPart, lightCoords: number, overlayCoords: number, sprite: net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined, sheeted: boolean, hasFoil: boolean, tintedColor: number, crumblingOverlay: net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay | null | undefined, outlineColor: number): net.minecraft.client.renderer.SubmitNodeStorage$ModelPartSubmit; - } - interface SubmitNodeStorage$ModelPartSubmit extends java.lang.Record { - pose(): com.mojang.blaze3d.vertex.PoseStack$Pose; - modelPart(): net.minecraft.client.model.geom.ModelPart; - lightCoords(): number; - overlayCoords(): number; - sprite(): net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined; - sheeted(): boolean; - hasFoil(): boolean; - tintedColor(): number; - crumblingOverlay(): net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay | null | undefined; - outlineColor(): number; - } - const SubmitNodeStorage$ModelSubmit: { - new(pose: com.mojang.blaze3d.vertex.PoseStack$Pose, model: net.minecraft.client.model.Model, state: S, lightCoords: number, overlayCoords: number, tintedColor: number, sprite: net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined, outlineColor: number, crumblingOverlay: net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay | null | undefined): net.minecraft.client.renderer.SubmitNodeStorage$ModelSubmit; - } - interface SubmitNodeStorage$ModelSubmit extends java.lang.Record { - pose(): com.mojang.blaze3d.vertex.PoseStack$Pose; - model(): net.minecraft.client.model.Model; - state(): S; - lightCoords(): number; - overlayCoords(): number; - tintedColor(): number; - sprite(): net.minecraft.client.renderer.texture.TextureAtlasSprite | null | undefined; - outlineColor(): number; - crumblingOverlay(): net.minecraft.client.renderer.feature.ModelFeatureRenderer$CrumblingOverlay | null | undefined; - } - const SubmitNodeStorage$BreakingBlockModelSubmit: { - new(pose: com.mojang.blaze3d.vertex.PoseStack$Pose, model: net.minecraft.client.renderer.block.dispatch.BlockStateModel, seed: number, progress: number): net.minecraft.client.renderer.SubmitNodeStorage$BreakingBlockModelSubmit; - } - interface SubmitNodeStorage$BreakingBlockModelSubmit extends java.lang.Record { - pose(): com.mojang.blaze3d.vertex.PoseStack$Pose; - model(): net.minecraft.client.renderer.block.dispatch.BlockStateModel; - seed(): number; - progress(): number; - } - const SubmitNodeStorage$CustomGeometrySubmit: { - new(pose: com.mojang.blaze3d.vertex.PoseStack$Pose, customGeometryRenderer: net.minecraft.client.renderer.SubmitNodeCollector$CustomGeometryRenderer): net.minecraft.client.renderer.SubmitNodeStorage$CustomGeometrySubmit; + const WorldBorderRenderer: { + FORCEFIELD_LOCATION: net.minecraft.resources.Identifier; + new(): net.minecraft.client.renderer.WorldBorderRenderer; } - interface SubmitNodeStorage$CustomGeometrySubmit extends java.lang.Record { - pose(): com.mojang.blaze3d.vertex.PoseStack$Pose; - customGeometryRenderer(): net.minecraft.client.renderer.SubmitNodeCollector$CustomGeometryRenderer; + interface WorldBorderRenderer extends java.lang.AutoCloseable { + extract(border: net.minecraft.world.level.border.WorldBorder, deltaPartialTick: number, cameraPos: net.minecraft.world.phys.Vec3, renderDistance: number, state: net.minecraft.client.renderer.state.level.WorldBorderRenderState): void; + render(state: net.minecraft.client.renderer.state.level.WorldBorderRenderState, cameraPos: net.minecraft.world.phys.Vec3, renderDistance: number, depthFar: number): void; + invalidate(): void; } - const SubmitNodeStorage$ItemSubmit: { - new(pose: com.mojang.blaze3d.vertex.PoseStack$Pose, displayContext: net.minecraft.world.item.ItemDisplayContext, lightCoords: number, overlayCoords: number, outlineColor: number, tintLayers: Array, quads: Array, foilType: net.minecraft.client.renderer.item.ItemStackRenderState$FoilType): net.minecraft.client.renderer.SubmitNodeStorage$ItemSubmit; + const WeatherEffectRenderer: { + ColumnInstance: typeof net.minecraft.client.renderer.WeatherEffectRenderer$ColumnInstance; + new(): net.minecraft.client.renderer.WeatherEffectRenderer; } - interface SubmitNodeStorage$ItemSubmit extends java.lang.Record { - pose(): com.mojang.blaze3d.vertex.PoseStack$Pose; - displayContext(): net.minecraft.world.item.ItemDisplayContext; - lightCoords(): number; - overlayCoords(): number; - outlineColor(): number; - tintLayers(): Array; - quads(): Array; - foilType(): net.minecraft.client.renderer.item.ItemStackRenderState$FoilType; + interface WeatherEffectRenderer extends java.lang.AutoCloseable { + extractRenderState(level: net.minecraft.client.multiplayer.ClientLevel, partialTicks: number, cameraPos: net.minecraft.world.phys.Vec3, renderState: net.minecraft.client.renderer.state.level.WeatherRenderState): void; + render(cameraPos: net.minecraft.world.phys.Vec3, renderState: net.minecraft.client.renderer.state.level.WeatherRenderState): void; } - const SubmitNodeStorage$BlockModelSubmit: { - new(pose: com.mojang.blaze3d.vertex.PoseStack$Pose, renderType: net.minecraft.client.renderer.rendertype.RenderType, modelParts: Array, tintLayers: Array, lightCoords: number, overlayCoords: number, outlineColor: number): net.minecraft.client.renderer.SubmitNodeStorage$BlockModelSubmit; + const WeatherEffectRenderer$ColumnInstance: { + new(x: number, z: number, bottomY: number, topY: number, uOffset: number, vOffset: number, lightCoords: number): net.minecraft.client.renderer.WeatherEffectRenderer$ColumnInstance; } - interface SubmitNodeStorage$BlockModelSubmit extends java.lang.Record { - pose(): com.mojang.blaze3d.vertex.PoseStack$Pose; - renderType(): net.minecraft.client.renderer.rendertype.RenderType; - modelParts(): Array; - tintLayers(): Array; + interface WeatherEffectRenderer$ColumnInstance extends java.lang.Record { + x(): number; + z(): number; + bottomY(): number; + topY(): number; + uOffset(): number; + vOffset(): number; lightCoords(): number; - overlayCoords(): number; - outlineColor(): number; - } - const SubmitNodeStorage$MovingBlockSubmit: { - new(pose: org.joml.Matrix4fc, movingBlockRenderState: net.minecraft.client.renderer.block.MovingBlockRenderState): net.minecraft.client.renderer.SubmitNodeStorage$MovingBlockSubmit; } - interface SubmitNodeStorage$MovingBlockSubmit extends java.lang.Record { - pose(): org.joml.Matrix4fc; - movingBlockRenderState(): net.minecraft.client.renderer.block.MovingBlockRenderState; - } - const SubmitNodeStorage$TranslucentModelSubmit: { - new(modelSubmit: net.minecraft.client.renderer.SubmitNodeStorage$ModelSubmit, renderType: net.minecraft.client.renderer.rendertype.RenderType, position: org.joml.Vector3f): net.minecraft.client.renderer.SubmitNodeStorage$TranslucentModelSubmit; - } - interface SubmitNodeStorage$TranslucentModelSubmit extends java.lang.Record { - modelSubmit(): net.minecraft.client.renderer.SubmitNodeStorage$ModelSubmit; - renderType(): net.minecraft.client.renderer.rendertype.RenderType; - position(): org.joml.Vector3f; - } - const SubmitNodeStorage$LeashSubmit: { - new(pose: org.joml.Matrix4f, leashState: net.minecraft.client.renderer.entity.state.EntityRenderState$LeashState): net.minecraft.client.renderer.SubmitNodeStorage$LeashSubmit; - } - interface SubmitNodeStorage$LeashSubmit extends java.lang.Record { - pose(): org.joml.Matrix4f; - leashState(): net.minecraft.client.renderer.entity.state.EntityRenderState$LeashState; + const SectionOcclusionGraph: { + Node: typeof net.minecraft.client.renderer.SectionOcclusionGraph$Node; + new(): net.minecraft.client.renderer.SectionOcclusionGraph; } - const SubmitNodeStorage$TextSubmit: { - new(pose: org.joml.Matrix4fc, x: number, y: number, string: net.minecraft.util.FormattedCharSequence, dropShadow: boolean, displayMode: net.minecraft.client.gui.Font$DisplayMode, lightCoords: number, color: number, backgroundColor: number, outlineColor: number): net.minecraft.client.renderer.SubmitNodeStorage$TextSubmit; + interface SectionOcclusionGraph { + waitAndReset(viewArea: net.minecraft.client.renderer.ViewArea | null | undefined): void; + expectedChunks(): it.unimi.dsi.fastutil.longs.LongCollection; + invalidate(): void; + invalidateIfNeeded(camera: net.minecraft.client.renderer.state.level.CameraRenderState, fov: number): void; + addSectionsInFrustum(frustum: net.minecraft.client.renderer.culling.Frustum, visibleSections: Array, nearbyVisibleSection: Array): void; + consumeFrustumUpdate(): boolean; + schedulePropagationFrom(section: net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection): void; + update(camera: net.minecraft.client.renderer.state.level.CameraRenderState, fov: number, chunkLoadingRenderState: net.minecraft.client.renderer.state.level.ChunkLoadingRenderState): void; + getNode(section: net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection): net.minecraft.client.renderer.SectionOcclusionGraph$Node | null | undefined; + updateEmptySections(added: it.unimi.dsi.fastutil.longs.LongOpenHashSet, removed: it.unimi.dsi.fastutil.longs.LongOpenHashSet): void; + updateLoadedChunks(added: it.unimi.dsi.fastutil.longs.LongOpenHashSet, removed: it.unimi.dsi.fastutil.longs.LongOpenHashSet): void; + getOctree(): net.minecraft.client.renderer.Octree; } - interface SubmitNodeStorage$TextSubmit extends java.lang.Record { - pose(): org.joml.Matrix4fc; - x(): number; - y(): number; - string(): net.minecraft.util.FormattedCharSequence; - dropShadow(): boolean; - displayMode(): net.minecraft.client.gui.Font$DisplayMode; - lightCoords(): number; - color(): number; - backgroundColor(): number; - outlineColor(): number; + const ViewArea: { + new(sectionRenderDispatcher: net.minecraft.client.renderer.chunk.SectionRenderDispatcher, minY: number, maxY: number, minSectionY: number, maxSectionY: number, renderDistance: number, sectionOcclusionGraph: net.minecraft.client.renderer.SectionOcclusionGraph): net.minecraft.client.renderer.ViewArea; } - const SubmitNodeStorage$NameTagSubmit: { - new(pose: org.joml.Matrix4fc, x: number, y: number, text: net.minecraft.network.chat.Component, lightCoords: number, color: number, backgroundColor: number, distanceToCameraSq: number): net.minecraft.client.renderer.SubmitNodeStorage$NameTagSubmit; + interface ViewArea { + minY(): number; + maxY(): number; + releaseAllBuffers(): void; + size(): number; + minSectionY(): number; + maxSectionY(): number; + sectionCount(): number; + getViewDistance(): number; + repositionCamera(cameraSectionPos: net.minecraft.core.SectionPos): boolean; + getCameraSectionPos(): net.minecraft.core.SectionPos; + getRenderSectionAt(pos: net.minecraft.core.BlockPos): net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection | null | undefined; } - interface SubmitNodeStorage$NameTagSubmit extends java.lang.Record { - pose(): org.joml.Matrix4fc; - x(): number; - y(): number; - text(): net.minecraft.network.chat.Component; - lightCoords(): number; - color(): number; - backgroundColor(): number; - distanceToCameraSq(): number; + const SectionBufferBuilderPack: { + TOTAL_BUFFERS_SIZE: number; + new(): net.minecraft.client.renderer.SectionBufferBuilderPack; } - const SubmitNodeStorage$FlameSubmit: { - new(pose: com.mojang.blaze3d.vertex.PoseStack$Pose, entityRenderState: net.minecraft.client.renderer.entity.state.EntityRenderState, rotation: org.joml.Quaternionf): net.minecraft.client.renderer.SubmitNodeStorage$FlameSubmit; + interface SectionBufferBuilderPack extends java.lang.AutoCloseable { + buffer(layer: net.minecraft.client.renderer.chunk.ChunkSectionLayer): com.mojang.blaze3d.vertex.ByteBufferBuilder; + clearAll(): void; + discardAll(): void; } - interface SubmitNodeStorage$FlameSubmit extends java.lang.Record { - pose(): com.mojang.blaze3d.vertex.PoseStack$Pose; - entityRenderState(): net.minecraft.client.renderer.entity.state.EntityRenderState; - rotation(): org.joml.Quaternionf; + const RenderBuffers: { + new(maxSectionBuilders: number): net.minecraft.client.renderer.RenderBuffers; } - const SubmitNodeStorage$ShadowSubmit: { - new(pose: org.joml.Matrix4fc, radius: number, pieces: Array): net.minecraft.client.renderer.SubmitNodeStorage$ShadowSubmit; + interface RenderBuffers extends java.lang.AutoCloseable { + fixedBufferPack(): net.minecraft.client.renderer.SectionBufferBuilderPack; + sectionBufferPool(): net.minecraft.client.renderer.SectionBufferBuilderPool; + stagedVertexBuffer(): net.minecraft.client.renderer.StagedVertexBuffer; + endFrame(): void; } - interface SubmitNodeStorage$ShadowSubmit extends java.lang.Record { - pose(): org.joml.Matrix4fc; - radius(): number; - pieces(): Array; + const SectionBufferBuilderPool: { + allocate(maxWorkers: number): net.minecraft.client.renderer.SectionBufferBuilderPool; } - const LevelRenderer$BrightnessGetter: { - DEFAULT: net.minecraft.client.renderer.LevelRenderer$BrightnessGetter; + interface SectionBufferBuilderPool extends java.lang.AutoCloseable { + acquire(): net.minecraft.client.renderer.SectionBufferBuilderPack | null | undefined; + release(buffer: net.minecraft.client.renderer.SectionBufferBuilderPack): void; + isEmpty(): boolean; + getFreeBufferCount(): number; } - interface LevelRenderer$BrightnessGetter { - packedBrightness(level: net.minecraft.world.level.BlockAndLightGetter, pos: net.minecraft.core.BlockPos): number; - (level: net.minecraft.world.level.BlockAndLightGetter, pos: net.minecraft.core.BlockPos): number; + const StagedVertexBuffer: { + Draw: typeof net.minecraft.client.renderer.StagedVertexBuffer$Draw; + ExecuteInfo: typeof net.minecraft.client.renderer.StagedVertexBuffer$ExecuteInfo; + new(label: unknown, initialCapacity: number): net.minecraft.client.renderer.StagedVertexBuffer; + } + interface StagedVertexBuffer extends java.lang.AutoCloseable { + appendDraw(format: com.mojang.blaze3d.vertex.VertexFormat, primitiveTopology: com.mojang.blaze3d.PrimitiveTopology): net.minecraft.client.renderer.StagedVertexBuffer$Draw; + appendDraw(format: com.mojang.blaze3d.vertex.VertexFormat, primitiveTopology: com.mojang.blaze3d.PrimitiveTopology, quadSorting: com.mojang.blaze3d.vertex.VertexSorting | null | undefined): net.minecraft.client.renderer.StagedVertexBuffer$Draw; + getVertexBuilder(draw: net.minecraft.client.renderer.StagedVertexBuffer$Draw): com.mojang.blaze3d.vertex.VertexConsumer; + upload(): void; + getExecuteInfo(draw: net.minecraft.client.renderer.StagedVertexBuffer$Draw): net.minecraft.client.renderer.StagedVertexBuffer$ExecuteInfo | null | undefined; + endDraw(): void; + endFrame(): void; } - const GameRenderer: { - MAX_BLUR_RADIUS: number; - PROJECTION_3D_HUD_Z_FAR: number; - new(minecraft: net.minecraft.client.Minecraft, itemInHandRenderer: net.minecraft.client.renderer.ItemInHandRenderer, renderBuffers: net.minecraft.client.renderer.RenderBuffers, modelManager: net.minecraft.client.resources.model.ModelManager): net.minecraft.client.renderer.GameRenderer; - getNightVisionScale(camera: net.minecraft.world.entity.LivingEntity, a: number): number; + interface StagedVertexBuffer$Draw { + isEmpty(): boolean; } - interface GameRenderer extends java.lang.AutoCloseable, net.minecraft.world.waypoints.TrackedWaypoint$Projector { - itemInHandRenderer: net.minecraft.client.renderer.ItemInHandRenderer; - lightmap(): com.mojang.blaze3d.textures.GpuTextureView; - overlayTexture(): net.minecraft.client.renderer.texture.OverlayTexture; - getSubmitNodeStorage(): net.minecraft.client.renderer.SubmitNodeStorage; - getFeatureRenderDispatcher(): net.minecraft.client.renderer.feature.FeatureRenderDispatcher; - getGameRenderState(): net.minecraft.client.renderer.state.GameRenderState; - setRenderBlockOutline(renderBlockOutline: boolean): void; - clearPostEffect(): void; - togglePostEffect(): void; - checkEntityPostEffect(cameraEntity: net.minecraft.world.entity.Entity | null | undefined): void; - processBlurEffect(): void; - preloadUiShader(resourceProvider: net.minecraft.server.packs.resources.ResourceProvider): void; - tick(): void; - currentPostEffect(): net.minecraft.resources.Identifier | null | undefined; - resize(width: number, height: number): void; - update(deltaTracker: net.minecraft.client.DeltaTracker, advanceGameTime: boolean): void; - extract(deltaTracker: net.minecraft.client.DeltaTracker, advanceGameTime: boolean): void; - render(deltaTracker: net.minecraft.client.DeltaTracker, advanceGameTime: boolean): void; - renderLevel(deltaTracker: net.minecraft.client.DeltaTracker): void; - resetData(): void; - displayItemActivation(itemStack: net.minecraft.world.item.ItemStack): void; - getMinecraft(): net.minecraft.client.Minecraft; - getBossOverlayWorldDarkening(a: number): number; - getMainCamera(): net.minecraft.client.Camera; - levelLightmap(): com.mojang.blaze3d.textures.GpuTextureView; - getGlobalSettingsUniform(): net.minecraft.client.renderer.GlobalSettingsUniform; - getLighting(): com.mojang.blaze3d.platform.Lighting; - setLevel(level: net.minecraft.client.multiplayer.ClientLevel | null | undefined): void; - getPanorama(): net.minecraft.client.renderer.Panorama; - registerPanoramaTextures(textureManager: net.minecraft.client.renderer.texture.TextureManager): void; + interface SectionOcclusionGraph$Node { + step: number; + hasSourceDirection(directionOrdinal: number): boolean; } - const Panorama: { - PANORAMA_OVERLAY: net.minecraft.resources.Identifier; - new(): net.minecraft.client.renderer.Panorama; + const Octree: { + new(cameraSection: net.minecraft.core.SectionPos, renderDistance: number, sectionsPerChunk: number, minBlockY: number): net.minecraft.client.renderer.Octree; } - interface Panorama { - extractRenderState(graphics: net.minecraft.client.gui.GuiGraphicsExtractor, width: number, height: number, shouldSpin: boolean): void; + interface Octree { + add(section: net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection): boolean; + visitNodes(visitor: net.minecraft.client.renderer.Octree$OctreeVisitor, frustum: net.minecraft.client.renderer.culling.Frustum, closeDistance: number): void; } - const GlobalSettingsUniform: { - UBO_SIZE: number; - new(): net.minecraft.client.renderer.GlobalSettingsUniform; + interface Octree$OctreeVisitor { + visit(node: net.minecraft.client.renderer.Octree$Node, fullyVisible: boolean, depth: number, isClose: boolean): void; + (node: net.minecraft.client.renderer.Octree$Node, fullyVisible: boolean, depth: number, isClose: boolean): void; } - interface GlobalSettingsUniform extends java.lang.AutoCloseable { - update(width: number, height: number, glintAlpha: number, gameTime: number, deltaTracker: net.minecraft.client.DeltaTracker, menuBlurRadius: number, cameraPos: net.minecraft.world.phys.Vec3, useRgss: boolean): void; + interface Octree$Node { + visitNodes(visitor: net.minecraft.client.renderer.Octree$OctreeVisitor, skipFrustumCheck: boolean, frustum: net.minecraft.client.renderer.culling.Frustum, depth: number, closeDistance: number, isClose: boolean): void; + getSection(): net.minecraft.client.renderer.chunk.SectionRenderDispatcher$RenderSection | null | undefined; + getAABB(): net.minecraft.world.phys.AABB; } const ShaderManager: { Configs: typeof net.minecraft.client.renderer.ShaderManager$Configs; @@ -14485,6 +14546,59 @@ declare global { } interface ShaderManager$CompilationException extends java.lang.Exception { } + const GameRenderer: { + MAX_BLUR_RADIUS: number; + PROJECTION_3D_HUD_Z_FAR: number; + new(minecraft: net.minecraft.client.Minecraft, itemInHandRenderer: net.minecraft.client.renderer.ItemInHandRenderer, modelManager: net.minecraft.client.resources.model.ModelManager): net.minecraft.client.renderer.GameRenderer; + nightVisionScale(camera: net.minecraft.world.entity.LivingEntity, a: number): number; + } + interface GameRenderer extends java.lang.AutoCloseable, net.minecraft.world.waypoints.TrackedWaypoint$Projector { + itemInHandRenderer: net.minecraft.client.renderer.ItemInHandRenderer; + gameRenderState(): net.minecraft.client.renderer.state.GameRenderState; + renderBuffers(): net.minecraft.client.renderer.RenderBuffers; + mainRenderTarget(): com.mojang.blaze3d.pipeline.RenderTarget; + bossOverlayWorldDarkening(a: number): number; + lightmap(): com.mojang.blaze3d.textures.GpuTextureView; + overlayTexture(): net.minecraft.client.renderer.texture.OverlayTexture; + panorama(): net.minecraft.client.renderer.Panorama; + featureRenderDispatcher(): net.minecraft.client.renderer.feature.FeatureRenderDispatcher; + mainCamera(): net.minecraft.client.Camera; + lighting(): com.mojang.blaze3d.platform.Lighting; + setRenderBlockOutline(renderBlockOutline: boolean): void; + clearPostEffect(): void; + togglePostEffect(): void; + checkEntityPostEffect(cameraEntity: net.minecraft.world.entity.Entity | null | undefined): void; + processBlurEffect(): void; + preloadUiShader(resourceProvider: net.minecraft.server.packs.resources.ResourceProvider): void; + tick(): void; + currentPostEffect(): net.minecraft.resources.Identifier | null | undefined; + resize(width: number, height: number): void; + update(deltaTracker: net.minecraft.client.DeltaTracker): void; + extract(deltaTracker: net.minecraft.client.DeltaTracker, advanceGameTime: boolean): void; + render(deltaTracker: net.minecraft.client.DeltaTracker, advanceGameTime: boolean): void; + renderLevel(deltaTracker: net.minecraft.client.DeltaTracker): void; + resetData(): void; + displayItemActivation(itemStack: net.minecraft.world.item.ItemStack): void; + levelLightmap(): com.mojang.blaze3d.textures.GpuTextureView; + setLevel(level: net.minecraft.client.multiplayer.ClientLevel | null | undefined): void; + registerPanoramaTextures(textureManager: net.minecraft.client.renderer.texture.TextureManager): void; + } + const Panorama: { + PANORAMA_OVERLAY: net.minecraft.resources.Identifier; + new(): net.minecraft.client.renderer.Panorama; + } + interface Panorama { + startSpin(): void; + holdSpin(): void; + extractRenderState(graphics: net.minecraft.client.gui.GuiGraphicsExtractor, width: number, height: number): void; + } + const SubmitNodeStorage: { + new(): net.minecraft.client.renderer.SubmitNodeStorage; + } + interface SubmitNodeStorage extends net.minecraft.client.renderer.SubmitNodeCollector { + getSubmitsPerOrder(): it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap; + drainPhases(consumer: unknown): void; + } const GpuWarnlistManager: { new(): net.minecraft.client.renderer.GpuWarnlistManager; } @@ -14503,15 +14617,6 @@ declare global { } namespace resources { namespace metadata { - namespace animation { - const FrameSize: { - new(width: number, height: number): net.minecraft.client.resources.metadata.animation.FrameSize; - } - interface FrameSize extends java.lang.Record { - width(): number; - height(): number; - } - } namespace texture { const TextureMetadataSection: { DEFAULT_BLUR: boolean; @@ -14528,6 +14633,15 @@ declare global { alphaCutoffBias(): number; } } + namespace animation { + const FrameSize: { + new(width: number, height: number): net.minecraft.client.resources.metadata.animation.FrameSize; + } + interface FrameSize extends java.lang.Record { + width(): number; + height(): number; + } + } } namespace model { namespace geometry { @@ -14611,8 +14725,6 @@ declare global { } interface SpriteId extends java.lang.Record { renderType(renderType: unknown): net.minecraft.client.renderer.rendertype.RenderType; - buffer(sprites: net.minecraft.client.resources.model.sprite.SpriteGetter, bufferSource: net.minecraft.client.renderer.MultiBufferSource, renderType: unknown): com.mojang.blaze3d.vertex.VertexConsumer; - buffer(sprites: net.minecraft.client.resources.model.sprite.SpriteGetter, bufferSource: net.minecraft.client.renderer.MultiBufferSource, renderType: unknown, sheeted: boolean, hasFoil: boolean): com.mojang.blaze3d.vertex.VertexConsumer; atlasLocation(): net.minecraft.resources.Identifier; texture(): net.minecraft.resources.Identifier; } @@ -14665,10 +14777,15 @@ declare global { } interface TextureSlots$SlotContents { } + const MaterialBaker: { + new(missingSprite: net.minecraft.client.renderer.texture.TextureAtlasSprite): net.minecraft.client.resources.model.sprite.MaterialBaker; + } interface MaterialBaker extends net.fabricmc.fabric.api.client.renderer.v1.sprite.FabricMaterialBaker { + replacementForMissingMaterial(material: net.minecraft.client.resources.model.sprite.Material): net.minecraft.client.resources.model.sprite.Material$Baked; get(material: net.minecraft.client.resources.model.sprite.Material, name: net.minecraft.client.resources.model.ModelDebugName): net.minecraft.client.resources.model.sprite.Material$Baked; - reportMissingReference(reference: string, name: net.minecraft.client.resources.model.ModelDebugName): net.minecraft.client.resources.model.sprite.Material$Baked; resolveSlot(slots: net.minecraft.client.resources.model.sprite.TextureSlots, id: string, name: net.minecraft.client.resources.model.ModelDebugName): net.minecraft.client.resources.model.sprite.Material$Baked; + reportMissingReference(reference: string, responsibleModel: net.minecraft.client.resources.model.ModelDebugName): net.minecraft.client.resources.model.sprite.Material$Baked; + logMissingTextures(): void; } const AtlasManager: { AtlasConfig: typeof net.minecraft.client.resources.model.sprite.AtlasManager$AtlasConfig; @@ -14724,11 +14841,17 @@ declare global { fixedFromBottom(): net.minecraft.client.resources.model.cuboid.ItemTransform; } } - interface ResolvableModel { - resolveDependencies(resolver: net.minecraft.client.resources.model.ResolvableModel$Resolver): void; + const ModelManager: { + new(blockColors: net.minecraft.client.color.block.BlockColors, atlasManager: net.minecraft.client.resources.model.sprite.AtlasManager, playerSkinRenderCache: net.minecraft.client.renderer.PlayerSkinRenderCache): net.minecraft.client.resources.model.ModelManager; } - interface ResolvableModel$Resolver { - markDependency(id: net.minecraft.resources.Identifier): void; + interface ModelManager extends net.minecraft.server.packs.resources.PreparableReloadListener, net.fabricmc.fabric.api.client.model.loading.v1.FabricModelManager { + getItemModel(id: net.minecraft.resources.Identifier): net.minecraft.client.renderer.item.ItemModel; + getItemProperties(id: net.minecraft.resources.Identifier): net.minecraft.client.renderer.item.ClientItem$Properties; + getBlockStateModelSet(): net.minecraft.client.renderer.block.BlockStateModelSet; + getBlockModelSet(): net.minecraft.client.renderer.block.BlockModelSet; + getFluidStateModelSet(): net.minecraft.client.renderer.block.FluidStateModelSet; + requiresRender(oldState: net.minecraft.world.level.block.state.BlockState, newState: net.minecraft.world.level.block.state.BlockState): boolean; + entityModels(): unknown; } interface ModelBaker { getModel(location: net.minecraft.resources.Identifier): net.minecraft.client.resources.model.ResolvedModel; @@ -14786,6 +14909,12 @@ declare global { interface UnbakedModel$GuiLight extends kotlin.Enum { lightLikeBlock(): boolean; } + interface ResolvableModel { + resolveDependencies(resolver: net.minecraft.client.resources.model.ResolvableModel$Resolver): void; + } + interface ResolvableModel$Resolver { + markDependency(id: net.minecraft.resources.Identifier): void; + } interface ModelBaker$Interner { vector(vector: org.joml.Vector3fc): org.joml.Vector3fc; materialInfo(material: net.minecraft.client.resources.model.geometry.BakedQuad$MaterialInfo): net.minecraft.client.resources.model.geometry.BakedQuad$MaterialInfo; @@ -14794,18 +14923,6 @@ declare global { compute(modelBakery: net.minecraft.client.resources.model.ModelBaker): T; (modelBakery: net.minecraft.client.resources.model.ModelBaker): T; } - const ModelManager: { - new(blockColors: net.minecraft.client.color.block.BlockColors, atlasManager: net.minecraft.client.resources.model.sprite.AtlasManager, playerSkinRenderCache: net.minecraft.client.renderer.PlayerSkinRenderCache): net.minecraft.client.resources.model.ModelManager; - } - interface ModelManager extends net.minecraft.server.packs.resources.PreparableReloadListener, net.fabricmc.fabric.api.client.model.loading.v1.FabricModelManager { - getItemModel(id: net.minecraft.resources.Identifier): net.minecraft.client.renderer.item.ItemModel; - getItemProperties(id: net.minecraft.resources.Identifier): net.minecraft.client.renderer.item.ClientItem$Properties; - getBlockStateModelSet(): net.minecraft.client.renderer.block.BlockStateModelSet; - getBlockModelSet(): net.minecraft.client.renderer.block.BlockModelSet; - getFluidStateModelSet(): net.minecraft.client.renderer.block.FluidStateModelSet; - requiresRender(oldState: net.minecraft.world.level.block.state.BlockState, newState: net.minecraft.world.level.block.state.BlockState): boolean; - entityModels(): unknown; - } const EquipmentAssetManager: { MISSING: net.minecraft.client.resources.model.EquipmentClientInfo; new(): net.minecraft.client.resources.model.EquipmentAssetManager; @@ -15045,6 +15162,13 @@ declare global { namespace model { namespace geom { namespace builders { + const LayerDefinition: { + create(mesh: net.minecraft.client.model.geom.builders.MeshDefinition, xTexSize: number, yTexSize: number): net.minecraft.client.model.geom.builders.LayerDefinition; + } + interface LayerDefinition { + apply(transformer: net.minecraft.client.model.geom.builders.MeshTransformer): net.minecraft.client.model.geom.builders.LayerDefinition; + bakeRoot(): net.minecraft.client.model.geom.ModelPart; + } const MeshTransformer: { IDENTITY: net.minecraft.client.model.geom.builders.MeshTransformer; scaling(factor: number): net.minecraft.client.model.geom.builders.MeshTransformer; @@ -15101,13 +15225,6 @@ declare global { extend(factor: number): net.minecraft.client.model.geom.builders.CubeDeformation; extend(factorX: number, factorY: number, factorZ: number): net.minecraft.client.model.geom.builders.CubeDeformation; } - const LayerDefinition: { - create(mesh: net.minecraft.client.model.geom.builders.MeshDefinition, xTexSize: number, yTexSize: number): net.minecraft.client.model.geom.builders.LayerDefinition; - } - interface LayerDefinition { - apply(transformer: net.minecraft.client.model.geom.builders.MeshTransformer): net.minecraft.client.model.geom.builders.LayerDefinition; - bakeRoot(): net.minecraft.client.model.geom.ModelPart; - } } const ModelPart: { Cube: typeof net.minecraft.client.model.geom.ModelPart$Cube; @@ -15229,22 +15346,6 @@ declare global { layer(): string; } } - namespace player { - const PlayerModel: { - new(root: net.minecraft.client.model.geom.ModelPart, slim: boolean): net.minecraft.client.model.player.PlayerModel; - createMesh(scale: net.minecraft.client.model.geom.builders.CubeDeformation, slim: boolean): net.minecraft.client.model.geom.builders.MeshDefinition; - createArmorMeshSet(innerDeformation: net.minecraft.client.model.geom.builders.CubeDeformation, outerDeformation: net.minecraft.client.model.geom.builders.CubeDeformation): net.minecraft.client.renderer.entity.ArmorModelSet; - } - interface PlayerModel extends net.minecraft.client.model.HumanoidModel { - leftSleeve: net.minecraft.client.model.geom.ModelPart; - rightSleeve: net.minecraft.client.model.geom.ModelPart; - leftPants: net.minecraft.client.model.geom.ModelPart; - rightPants: net.minecraft.client.model.geom.ModelPart; - jacket: net.minecraft.client.model.geom.ModelPart; - translateToHand(state: net.minecraft.client.renderer.entity.state.AvatarRenderState, arm: net.minecraft.world.entity.HumanoidArm, poseStack: com.mojang.blaze3d.vertex.PoseStack): void; - getRandomBodyPart(random: net.minecraft.util.RandomSource): net.minecraft.client.model.geom.ModelPart; - } - } namespace object { namespace book { const BookModel: { @@ -15283,7 +15384,6 @@ declare global { renderType(texture: net.minecraft.resources.Identifier): net.minecraft.client.renderer.rendertype.RenderType; allParts(): Array; renderToBuffer(poseStack: com.mojang.blaze3d.vertex.PoseStack, buffer: com.mojang.blaze3d.vertex.VertexConsumer, lightCoords: number, overlayCoords: number, color: number): void; - renderToBuffer(poseStack: com.mojang.blaze3d.vertex.PoseStack, buffer: com.mojang.blaze3d.vertex.VertexConsumer, lightCoords: number, overlayCoords: number): void; setupAnim(state: S): void; resetPose(): void; } @@ -15292,42 +15392,6 @@ declare global { } interface Model$Simple extends net.minecraft.client.model.Model { } - const HumanoidModel: { - ArmPose: typeof net.minecraft.client.model.HumanoidModel$ArmPose; - BABY_TRANSFORMER: net.minecraft.client.model.geom.builders.MeshTransformer; - OVERLAY_SCALE: number; - HAT_OVERLAY_SCALE: number; - LEGGINGS_OVERLAY_SCALE: number; - TOOT_HORN_XROT_BASE: number; - TOOT_HORN_YROT_BASE: number; - new(root: net.minecraft.client.model.geom.ModelPart): net.minecraft.client.model.HumanoidModel; - new(root: net.minecraft.client.model.geom.ModelPart, renderType: unknown): net.minecraft.client.model.HumanoidModel; - createMesh(g: net.minecraft.client.model.geom.builders.CubeDeformation, yOffset: number): net.minecraft.client.model.geom.builders.MeshDefinition; - createArmorMeshSet(innerDeformation: net.minecraft.client.model.geom.builders.CubeDeformation, outerDeformation: net.minecraft.client.model.geom.builders.CubeDeformation): net.minecraft.client.renderer.entity.ArmorModelSet; - createBabyArmorMeshSet(innerDeformation: net.minecraft.client.model.geom.builders.CubeDeformation, outerDeformation: net.minecraft.client.model.geom.builders.CubeDeformation, armOffset: net.minecraft.client.model.geom.PartPose): net.minecraft.client.renderer.entity.ArmorModelSet; - } - interface HumanoidModel extends net.minecraft.client.model.EntityModel, net.minecraft.client.model.ArmedModel, net.minecraft.client.model.HeadedModel { - head: net.minecraft.client.model.geom.ModelPart; - hat: net.minecraft.client.model.geom.ModelPart; - body: net.minecraft.client.model.geom.ModelPart; - rightArm: net.minecraft.client.model.geom.ModelPart; - leftArm: net.minecraft.client.model.geom.ModelPart; - rightLeg: net.minecraft.client.model.geom.ModelPart; - leftLeg: net.minecraft.client.model.geom.ModelPart; - getArm(arm: net.minecraft.world.entity.HumanoidArm): net.minecraft.client.model.geom.ModelPart; - } - const EntityModel: { - MODEL_Y_OFFSET: number; - } - interface EntityModel extends net.minecraft.client.model.Model { - } - interface ArmedModel { - translateToHand(state: T, arm: net.minecraft.world.entity.HumanoidArm, poseStack: com.mojang.blaze3d.vertex.PoseStack): void; - } - interface HeadedModel { - getHead(): net.minecraft.client.model.geom.ModelPart; - translateToHead(poseStack: com.mojang.blaze3d.vertex.PoseStack): void; - } const HumanoidModel$ArmPose: { EMPTY: net.minecraft.client.model.HumanoidModel$ArmPose; ITEM: net.minecraft.client.model.HumanoidModel$ArmPose; @@ -15350,6 +15414,88 @@ declare global { animateUseItem(state: S, poseStack: com.mojang.blaze3d.vertex.PoseStack, ticksUsingItem: number, arm: net.minecraft.world.entity.HumanoidArm, actualItem: net.minecraft.world.item.ItemStack): void; } } + namespace particle { + const SingleQuadParticle$Layer: { + OPAQUE_TERRAIN: net.minecraft.client.particle.SingleQuadParticle$Layer; + TRANSLUCENT_TERRAIN: net.minecraft.client.particle.SingleQuadParticle$Layer; + OPAQUE_ITEMS: net.minecraft.client.particle.SingleQuadParticle$Layer; + TRANSLUCENT_ITEMS: net.minecraft.client.particle.SingleQuadParticle$Layer; + OPAQUE: net.minecraft.client.particle.SingleQuadParticle$Layer; + TRANSLUCENT: net.minecraft.client.particle.SingleQuadParticle$Layer; + new(translucent: boolean, textureAtlasLocation: net.minecraft.resources.Identifier, pipeline: com.mojang.blaze3d.pipeline.RenderPipeline): net.minecraft.client.particle.SingleQuadParticle$Layer; + bySprite(sprite: net.minecraft.client.renderer.texture.TextureAtlasSprite): net.minecraft.client.particle.SingleQuadParticle$Layer; + } + interface SingleQuadParticle$Layer extends java.lang.Record { + translucent(): boolean; + textureAtlasLocation(): net.minecraft.resources.Identifier; + pipeline(): com.mojang.blaze3d.pipeline.RenderPipeline; + } + const ParticleEngine: { + new(level: net.minecraft.client.multiplayer.ClientLevel, resourceManager: net.minecraft.client.particle.ParticleResources): net.minecraft.client.particle.ParticleEngine; + } + interface ParticleEngine { + createTrackingEmitter(entity: net.minecraft.world.entity.Entity, particle: net.minecraft.core.particles.ParticleOptions): void; + createTrackingEmitter(entity: net.minecraft.world.entity.Entity, particle: net.minecraft.core.particles.ParticleOptions, lifeTime: number): void; + createParticle(options: net.minecraft.core.particles.ParticleOptions, x: number, y: number, z: number, xa: number, ya: number, za: number): net.minecraft.client.particle.Particle | null | undefined; + add(p: net.minecraft.client.particle.Particle): void; + tick(): void; + extract(particlesRenderState: net.minecraft.client.renderer.state.level.ParticlesRenderState, frustum: net.minecraft.client.renderer.culling.Frustum, camera: net.minecraft.client.Camera, partialTickTime: number): void; + setLevel(level: net.minecraft.client.multiplayer.ClientLevel | null | undefined): void; + countParticles(): string; + clearParticles(): void; + getRandom(): net.minecraft.util.RandomSource; + } + const Particle: { + LifetimeAlpha: typeof net.minecraft.client.particle.Particle$LifetimeAlpha; + new(level: net.minecraft.client.multiplayer.ClientLevel, x: number, y: number, z: number, xa: number, ya: number, za: number): net.minecraft.client.particle.Particle; + } + interface Particle { + setPower(power: number): net.minecraft.client.particle.Particle; + setParticleSpeed(xd: number, yd: number, zd: number): void; + scale(scale: number): net.minecraft.client.particle.Particle; + setLifetime(lifetime: number): void; + getLifetime(): number; + tick(): void; + getGroup(): net.minecraft.client.particle.ParticleRenderType; + remove(): void; + setPos(x: number, y: number, z: number): void; + move(xa: number, ya: number, za: number): void; + isAlive(): boolean; + getBoundingBox(): net.minecraft.world.phys.AABB; + setBoundingBox(bb: net.minecraft.world.phys.AABB): void; + getParticleLimit(): java.util.Optional; + } + const ParticleRenderType: { + SINGLE_QUADS: net.minecraft.client.particle.ParticleRenderType; + ITEM_PICKUP: net.minecraft.client.particle.ParticleRenderType; + ELDER_GUARDIANS: net.minecraft.client.particle.ParticleRenderType; + NO_RENDER: net.minecraft.client.particle.ParticleRenderType; + new(name: string, shorthand: string): net.minecraft.client.particle.ParticleRenderType; + } + interface ParticleRenderType extends java.lang.Record { + name(): string; + shorthand(): string; + } + const Particle$LifetimeAlpha: { + ALWAYS_OPAQUE: net.minecraft.client.particle.Particle$LifetimeAlpha; + new(startAlpha: number, endAlpha: number, startAtNormalizedAge: number, endAtNormalizedAge: number): net.minecraft.client.particle.Particle$LifetimeAlpha; + } + interface Particle$LifetimeAlpha extends java.lang.Record { + isOpaque(): boolean; + currentAlphaForAge(age: number, lifetime: number, partialTickTime: number): number; + startAlpha(): number; + endAlpha(): number; + startAtNormalizedAge(): number; + endAtNormalizedAge(): number; + } + const ParticleResources: { + new(): net.minecraft.client.particle.ParticleResources; + } + interface ParticleResources extends net.minecraft.server.packs.resources.PreparableReloadListener { + onReload(onReload: java.lang.Runnable): void; + getProviders(): it.unimi.dsi.fastutil.ints.Int2ObjectMap; + } + } namespace main { const SilentInitException: { new(message: string): net.minecraft.client.main.SilentInitException; @@ -15357,6 +15503,20 @@ declare global { } interface SilentInitException extends java.lang.RuntimeException { } + const GameConfig$QuickPlayData: { + new(logPath: string | null | undefined, variant: net.minecraft.client.main.GameConfig$QuickPlayVariant): net.minecraft.client.main.GameConfig$QuickPlayData; + } + interface GameConfig$QuickPlayData extends java.lang.Record { + isEnabled(): boolean; + logPath(): string | null | undefined; + variant(): net.minecraft.client.main.GameConfig$QuickPlayVariant; + } + const GameConfig$QuickPlayVariant: { + DISABLED: net.minecraft.client.main.GameConfig$QuickPlayVariant; + } + interface GameConfig$QuickPlayVariant { + isEnabled(): boolean; + } const GameConfig$UserData: { new(user: net.minecraft.client.User, proxy: java.net.Proxy): net.minecraft.client.main.GameConfig$UserData; } @@ -15393,7 +15553,7 @@ declare global { getExternalAssetSource(): java.nio.file.Path; } const GameConfig$GameData: { - new(demo: boolean, launchVersion: string, versionType: string, disableMultiplayer: boolean, disableChat: boolean, captureTracyImages: boolean, renderDebugLabels: boolean, offlineDeveloperMode: boolean): net.minecraft.client.main.GameConfig$GameData; + new(demo: boolean, launchVersion: string, versionType: string, disableMultiplayer: boolean, disableChat: boolean, captureTracyImages: boolean, vulkanValidation: boolean, renderDebugLabels: boolean, forcedGraphicsApi: net.minecraft.client.PreferredGraphicsApi | null | undefined, offlineDeveloperMode: boolean): net.minecraft.client.main.GameConfig$GameData; } interface GameConfig$GameData { demo: boolean; @@ -15403,22 +15563,10 @@ declare global { disableChat: boolean; captureTracyImages: boolean; renderDebugLabels: boolean; + vulkanValidation: boolean; + forcedGraphicsApi: net.minecraft.client.PreferredGraphicsApi | null | undefined; offlineDeveloperMode: boolean; } - const GameConfig$QuickPlayData: { - new(logPath: string | null | undefined, variant: net.minecraft.client.main.GameConfig$QuickPlayVariant): net.minecraft.client.main.GameConfig$QuickPlayData; - } - interface GameConfig$QuickPlayData extends java.lang.Record { - isEnabled(): boolean; - logPath(): string | null | undefined; - variant(): net.minecraft.client.main.GameConfig$QuickPlayVariant; - } - const GameConfig$QuickPlayVariant: { - DISABLED: net.minecraft.client.main.GameConfig$QuickPlayVariant; - } - interface GameConfig$QuickPlayVariant { - isEnabled(): boolean; - } const GameConfig$QuickPlayDisabled: { new(): net.minecraft.client.main.GameConfig$QuickPlayDisabled; } @@ -15744,10 +15892,11 @@ declare global { const ClientLevel: { ClientLevelData: typeof net.minecraft.client.multiplayer.ClientLevel$ClientLevelData; DEFAULT_QUIT_MESSAGE: net.minecraft.network.chat.Component; - new(connection: net.minecraft.client.multiplayer.ClientPacketListener, levelData: net.minecraft.client.multiplayer.ClientLevel$ClientLevelData, dimension: net.minecraft.resources.ResourceKey, dimensionType: net.minecraft.core.Holder, serverChunkRadius: number, serverSimulationDistance: number, levelRenderer: net.minecraft.client.renderer.LevelRenderer, isDebug: boolean, biomeZoomSeed: number, seaLevel: number): net.minecraft.client.multiplayer.ClientLevel; + new(connection: net.minecraft.client.multiplayer.ClientPacketListener, levelData: net.minecraft.client.multiplayer.ClientLevel$ClientLevelData, dimension: net.minecraft.resources.ResourceKey, dimensionType: net.minecraft.core.Holder, serverChunkRadius: number, serverSimulationDistance: number, levelExtractor: net.minecraft.client.renderer.extract.LevelExtractor, isDebug: boolean, biomeZoomSeed: number, seaLevel: number): net.minecraft.client.multiplayer.ClientLevel; } interface ClientLevel extends net.minecraft.world.level.Level, net.minecraft.client.renderer.block.BlockAndTintGetter, net.minecraft.client.multiplayer.CacheSlot$Cleaner { endFlashState(): net.minecraft.client.renderer.EndFlashState | null | undefined; + destructionProgress(): it.unimi.dsi.fastutil.longs.Long2ObjectMap>; handleBlockChangedAck(sequence: number): void; getGloballyRenderedBlockEntities(): Set; setServerVerifiedBlockState(pos: net.minecraft.core.BlockPos, blockState: net.minecraft.world.level.block.state.BlockState, updateFlag: number): void; @@ -15755,6 +15904,8 @@ declare global { queueLightUpdate(update: java.lang.Runnable): void; pollLightUpdates(): void; tick(haveTime: unknown): void; + tickWeatherEffects(): void; + getPrecipitationAt(pos: net.minecraft.core.BlockPos): net.minecraft.world.level.biome.Biome$Precipitation; setTimeFromServer(gameTime: number): void; entitiesForRendering(): kotlin.collections.MutableIterable; tickEntities(): void; @@ -15763,7 +15914,6 @@ declare global { update(): void; unload(levelChunk: net.minecraft.world.level.chunk.LevelChunk): void; onChunkLoaded(pos: net.minecraft.world.level.ChunkPos): void; - onSectionBecomingNonEmpty(sectionNode: number): void; clearTintCaches(): void; getEntityCount(): number; addEntity(entity: net.minecraft.world.entity.Entity): void; @@ -15801,10 +15951,15 @@ declare global { replaceWithPacketData(chunkX: number, chunkZ: number, readBuffer: net.minecraft.network.FriendlyByteBuf, heightmaps: Map>, blockEntities: unknown): net.minecraft.world.level.chunk.LevelChunk | null | undefined; updateViewCenter(x: number, z: number): void; updateViewRadius(viewRange: number): void; - getLoadedEmptySections(): it.unimi.dsi.fastutil.longs.LongOpenHashSet; + addedEmptySections(): it.unimi.dsi.fastutil.longs.LongOpenHashSet; + removedEmptySections(): it.unimi.dsi.fastutil.longs.LongOpenHashSet; + addedLoadedChunks(): it.unimi.dsi.fastutil.longs.LongOpenHashSet; + removedLoadedChunks(): it.unimi.dsi.fastutil.longs.LongOpenHashSet; + flipUpdateTrackingSets(): void; } interface ClientChunkCache$Storage { onSectionEmptinessChanged(sectionX: number, sectionY: number, sectionZ: number, empty: boolean): void; + getChunk(index: number): net.minecraft.world.level.chunk.LevelChunk | null | undefined; } const ClientLevel$ClientLevelData: { new(difficulty: net.minecraft.world.Difficulty, hardcore: boolean, isFlat: boolean): net.minecraft.client.multiplayer.ClientLevel$ClientLevelData; @@ -15827,6 +15982,7 @@ declare global { enabledFeatures(): net.minecraft.world.flag.FeatureFlagSet; potionBrewing(): net.minecraft.world.item.alchemy.PotionBrewing; fuelValues(): net.minecraft.world.level.block.entity.FuelValues; + onlineMode(): boolean; scoreboard(): net.minecraft.world.scores.Scoreboard; clockManager(): net.minecraft.client.ClientClockManager; searchTrees(): net.minecraft.client.multiplayer.SessionSearchTrees; @@ -15851,6 +16007,7 @@ declare global { sendCommand(command: string): void; sendUnattendedCommand(command: string, screenAfterCommand: net.minecraft.client.gui.screens.Screen | null | undefined): void; broadcastClientInformation(information: net.minecraft.server.level.ClientInformation): void; + getPlayerCompiledSectionCallback(): java.lang.Runnable | null | undefined; prepareKeyPair(): void; getServerData(): net.minecraft.client.multiplayer.ServerData | null | undefined; isFeatureEnabled(requiredFlags: net.minecraft.world.flag.FeatureFlagSet): boolean; @@ -15868,25 +16025,6 @@ declare global { clearDialog(): void; send(packet: net.minecraft.network.protocol.Packet): void; } - const PlayerInfo: { - new(profile: com.mojang.authlib.GameProfile, enforcesSecureChat: boolean): net.minecraft.client.multiplayer.PlayerInfo; - } - interface PlayerInfo { - showHat(): boolean; - getProfile(): com.mojang.authlib.GameProfile; - getChatSession(): net.minecraft.network.chat.RemoteChatSession | null | undefined; - getMessageValidator(): net.minecraft.network.chat.SignedMessageValidator; - hasVerifiableChat(): boolean; - getGameMode(): net.minecraft.world.level.GameType; - getLatency(): number; - getSkin(): net.minecraft.world.entity.player.PlayerSkin; - getTeam(): net.minecraft.world.scores.PlayerTeam | null | undefined; - setTabListDisplayName(tabListDisplayName: net.minecraft.network.chat.Component | null | undefined): void; - getTabListDisplayName(): net.minecraft.network.chat.Component | null | undefined; - setShowHat(showHat: boolean): void; - setTabListOrder(tabListOrder: number): void; - getTabListOrder(): number; - } const ServerData: { ServerPackStatus: typeof net.minecraft.client.multiplayer.ServerData$ServerPackStatus; State: typeof net.minecraft.client.multiplayer.ServerData$State; @@ -15955,53 +16093,6 @@ declare global { interface ServerData$ServerPackStatus extends kotlin.Enum { getName(): net.minecraft.network.chat.Component; } - const MultiPlayerGameMode: { - new(minecraft: net.minecraft.client.Minecraft, connection: net.minecraft.client.multiplayer.ClientPacketListener): net.minecraft.client.multiplayer.MultiPlayerGameMode; - } - interface MultiPlayerGameMode { - isDestroying(): boolean; - adjustPlayer(player: net.minecraft.world.entity.player.Player): void; - setLocalMode(mode: net.minecraft.world.level.GameType, previousMode: net.minecraft.world.level.GameType | null | undefined): void; - setLocalMode(mode: net.minecraft.world.level.GameType): void; - canHurtPlayer(): boolean; - destroyBlock(pos: net.minecraft.core.BlockPos): boolean; - startDestroyBlock(pos: net.minecraft.core.BlockPos, direction: net.minecraft.core.Direction): boolean; - stopDestroyBlock(): void; - continueDestroyBlock(pos: net.minecraft.core.BlockPos, direction: net.minecraft.core.Direction): boolean; - tick(): void; - useItemOn(player: net.minecraft.client.player.LocalPlayer, hand: net.minecraft.world.InteractionHand, blockHit: net.minecraft.world.phys.BlockHitResult): net.minecraft.world.InteractionResult; - useItem(player: net.minecraft.world.entity.player.Player, hand: net.minecraft.world.InteractionHand): net.minecraft.world.InteractionResult; - createPlayer(level: net.minecraft.client.multiplayer.ClientLevel, stats: net.minecraft.stats.StatsCounter, recipeBook: net.minecraft.client.ClientRecipeBook): net.minecraft.client.player.LocalPlayer; - createPlayer(level: net.minecraft.client.multiplayer.ClientLevel, stats: net.minecraft.stats.StatsCounter, recipeBook: net.minecraft.client.ClientRecipeBook, lastSentInput: net.minecraft.world.entity.player.Input, wasSprinting: boolean): net.minecraft.client.player.LocalPlayer; - attack(player: net.minecraft.world.entity.player.Player, entity: net.minecraft.world.entity.Entity): void; - spectate(entity: net.minecraft.world.entity.Entity): void; - interact(player: net.minecraft.world.entity.player.Player, entity: net.minecraft.world.entity.Entity, hitResult: net.minecraft.world.phys.EntityHitResult, hand: net.minecraft.world.InteractionHand): net.minecraft.world.InteractionResult; - handleContainerInput(containerId: number, slotNum: number, buttonNum: number, containerInput: net.minecraft.world.inventory.ContainerInput, player: net.minecraft.world.entity.player.Player): void; - handlePlaceRecipe(containerId: number, recipe: net.minecraft.world.item.crafting.display.RecipeDisplayId, useMaxItems: boolean): void; - handleInventoryButtonClick(containerId: number, buttonId: number): void; - handleCreativeModeItemAdd(clicked: net.minecraft.world.item.ItemStack, slot: number): void; - handleCreativeModeItemDrop(clicked: net.minecraft.world.item.ItemStack): void; - releaseUsingItem(player: net.minecraft.world.entity.player.Player): void; - piercingAttack(weapon: net.minecraft.world.item.component.PiercingWeapon): void; - hasExperience(): boolean; - hasMissTime(): boolean; - isServerControlledInventory(): boolean; - isSpectator(): boolean; - getPreviousPlayerMode(): net.minecraft.world.level.GameType | null | undefined; - getPlayerMode(): net.minecraft.world.level.GameType; - getDestroyStage(): number; - handlePickItemFromBlock(pos: net.minecraft.core.BlockPos, includeData: boolean): void; - handlePickItemFromEntity(entity: net.minecraft.world.entity.Entity, includeData: boolean): void; - handleSlotStateChanged(slotId: number, containerId: number, newState: boolean): void; - } - const ProfileKeyPairManager: { - EMPTY_KEY_MANAGER: net.minecraft.client.multiplayer.ProfileKeyPairManager; - create(userApiService: com.mojang.authlib.minecraft.UserApiService, user: net.minecraft.client.User, gameDirectory: java.nio.file.Path): net.minecraft.client.multiplayer.ProfileKeyPairManager; - } - interface ProfileKeyPairManager { - prepareKeyPair(): java.util.concurrent.CompletableFuture>; - shouldRefreshKeyPair(): boolean; - } const CommonListenerCookie: { new(levelLoadTracker: net.minecraft.client.multiplayer.LevelLoadTracker, localGameProfile: com.mojang.authlib.GameProfile, telemetryManager: net.minecraft.client.telemetry.WorldSessionTelemetryManager, receivedRegistries: net.minecraft.core.RegistryAccess$Frozen, enabledFeatures: net.minecraft.world.flag.FeatureFlagSet, serverBrand: string | null | undefined, serverData: net.minecraft.client.multiplayer.ServerData | null | undefined, postDisconnectScreen: net.minecraft.client.gui.screens.Screen | null | undefined, serverCookies: Map>, chatState: net.minecraft.client.gui.components.ChatComponent$State | null | undefined, customReportDetails: Map, serverLinks: net.minecraft.server.ServerLinks, seenPlayers: Map, seenInsecureChatWarning: boolean): net.minecraft.client.multiplayer.CommonListenerCookie; } @@ -16028,13 +16119,33 @@ declare global { } interface LevelLoadTracker extends net.minecraft.server.level.progress.LevelLoadListener { setServerChunkStatusView(serverChunkStatusView: net.minecraft.server.level.progress.ChunkLoadStatusView): void; - startClientLoad(player: net.minecraft.client.player.LocalPlayer, level: net.minecraft.client.multiplayer.ClientLevel, levelRenderer: net.minecraft.client.renderer.LevelRenderer): void; + startClientLoad(player: net.minecraft.client.player.LocalPlayer, level: net.minecraft.client.multiplayer.ClientLevel): void; tickClientLoad(): void; isLevelReady(): boolean; loadingPacketsReceived(): void; statusView(): net.minecraft.server.level.progress.ChunkLoadStatusView | null | undefined; serverProgress(): number; hasProgress(): boolean; + getPlayerCompiledSectionCallback(): java.lang.Runnable | null | undefined; + } + const PlayerInfo: { + new(profile: com.mojang.authlib.GameProfile, enforcesSecureChat: boolean): net.minecraft.client.multiplayer.PlayerInfo; + } + interface PlayerInfo { + showHat(): boolean; + getProfile(): com.mojang.authlib.GameProfile; + getChatSession(): net.minecraft.network.chat.RemoteChatSession | null | undefined; + getMessageValidator(): net.minecraft.network.chat.SignedMessageValidator; + hasVerifiableChat(): boolean; + getGameMode(): net.minecraft.world.level.GameType; + getLatency(): number; + getSkin(): net.minecraft.world.entity.player.PlayerSkin; + getTeam(): net.minecraft.world.scores.PlayerTeam | null | undefined; + setTabListDisplayName(tabListDisplayName: net.minecraft.network.chat.Component | null | undefined): void; + getTabListDisplayName(): net.minecraft.network.chat.Component | null | undefined; + setShowHat(showHat: boolean): void; + setTabListOrder(tabListOrder: number): void; + getTabListOrder(): number; } const SessionSearchTrees: { new(): net.minecraft.client.multiplayer.SessionSearchTrees; @@ -16069,216 +16180,211 @@ declare global { onUpdateAdvancementProgress(advancement: net.minecraft.advancements.AdvancementNode, progress: net.minecraft.advancements.AdvancementProgress): void; onSelectedTabChanged(selectedTab: net.minecraft.advancements.AdvancementHolder | null | undefined): void; } - } - namespace color { - namespace block { - interface BlockTintSource { - color(state: net.minecraft.world.level.block.state.BlockState): number; - colorInWorld(state: net.minecraft.world.level.block.state.BlockState, level: net.minecraft.client.renderer.block.BlockAndTintGetter, pos: net.minecraft.core.BlockPos): number; - colorAsTerrainParticle(state: net.minecraft.world.level.block.state.BlockState, level: net.minecraft.client.renderer.block.BlockAndTintGetter, pos: net.minecraft.core.BlockPos): number; - relevantProperties(): Set>; - } - const BlockColors: { - LILY_PAD_IN_WORLD: number; - LILY_PAD_DEFAULT: number; - new(): net.minecraft.client.color.block.BlockColors; - createDefault(): net.minecraft.client.color.block.BlockColors; - } - interface BlockColors { - getTintSources(state: net.minecraft.world.level.block.state.BlockState): Array; - getTintSource(state: net.minecraft.world.level.block.state.BlockState, layer: number): net.minecraft.client.color.block.BlockTintSource | null | undefined; - register(layers: Array, blocks: net.minecraft.world.level.block.Block): void; - getColoringProperties(block: net.minecraft.world.level.block.Block): Set>; - } + const MultiPlayerGameMode: { + new(minecraft: net.minecraft.client.Minecraft, connection: net.minecraft.client.multiplayer.ClientPacketListener): net.minecraft.client.multiplayer.MultiPlayerGameMode; } - } - namespace sounds { - const SoundManager: { - EMPTY_SOUND_LOCATION: net.minecraft.resources.Identifier; - EMPTY_SOUND: net.minecraft.client.resources.sounds.Sound; - INTENTIONALLY_EMPTY_SOUND_LOCATION: net.minecraft.resources.Identifier; - INTENTIONALLY_EMPTY_SOUND_EVENT: net.minecraft.client.sounds.WeighedSoundEvents; - INTENTIONALLY_EMPTY_SOUND: net.minecraft.client.resources.sounds.Sound; - new(options: net.minecraft.client.Options): net.minecraft.client.sounds.SoundManager; + interface MultiPlayerGameMode { + isDestroying(): boolean; + adjustPlayer(player: net.minecraft.world.entity.player.Player): void; + setLocalMode(mode: net.minecraft.world.level.GameType, previousMode: net.minecraft.world.level.GameType | null | undefined): void; + setLocalMode(mode: net.minecraft.world.level.GameType): void; + canHurtPlayer(): boolean; + destroyBlock(pos: net.minecraft.core.BlockPos): boolean; + startDestroyBlock(pos: net.minecraft.core.BlockPos, direction: net.minecraft.core.Direction): boolean; + stopDestroyBlock(): void; + continueDestroyBlock(pos: net.minecraft.core.BlockPos, direction: net.minecraft.core.Direction): boolean; + tick(): void; + useItemOn(player: net.minecraft.client.player.LocalPlayer, hand: net.minecraft.world.InteractionHand, blockHit: net.minecraft.world.phys.BlockHitResult): net.minecraft.world.InteractionResult; + useItem(player: net.minecraft.world.entity.player.Player, hand: net.minecraft.world.InteractionHand): net.minecraft.world.InteractionResult; + createPlayer(level: net.minecraft.client.multiplayer.ClientLevel, stats: net.minecraft.stats.StatsCounter, recipeBook: net.minecraft.client.ClientRecipeBook): net.minecraft.client.player.LocalPlayer; + createPlayer(level: net.minecraft.client.multiplayer.ClientLevel, stats: net.minecraft.stats.StatsCounter, recipeBook: net.minecraft.client.ClientRecipeBook, lastSentInput: net.minecraft.world.entity.player.Input, wasSprinting: boolean): net.minecraft.client.player.LocalPlayer; + attack(player: net.minecraft.world.entity.player.Player, entity: net.minecraft.world.entity.Entity): void; + spectate(entity: net.minecraft.world.entity.Entity): void; + spectatorNoAction(): void; + interact(player: net.minecraft.world.entity.player.Player, entity: net.minecraft.world.entity.Entity, hitResult: net.minecraft.world.phys.EntityHitResult, hand: net.minecraft.world.InteractionHand): net.minecraft.world.InteractionResult; + handleContainerInput(containerId: number, slotNum: number, buttonNum: number, containerInput: net.minecraft.world.inventory.ContainerInput, player: net.minecraft.world.entity.player.Player): void; + handlePlaceRecipe(containerId: number, recipe: net.minecraft.world.item.crafting.display.RecipeDisplayId, useMaxItems: boolean): void; + handleInventoryButtonClick(containerId: number, buttonId: number): void; + handleCreativeModeItemAdd(clicked: net.minecraft.world.item.ItemStack, slot: number): void; + handleCreativeModeItemDrop(clicked: net.minecraft.world.item.ItemStack): void; + releaseUsingItem(player: net.minecraft.world.entity.player.Player): void; + piercingAttack(weapon: net.minecraft.world.item.component.PiercingWeapon): void; + hasExperience(): boolean; + hasMissTime(): boolean; + isServerControlledInventory(): boolean; + isSpectator(): boolean; + getPreviousPlayerMode(): net.minecraft.world.level.GameType | null | undefined; + getPlayerMode(): net.minecraft.world.level.GameType; + getDestroyStage(): number; + handlePickItemFromBlock(pos: net.minecraft.core.BlockPos, includeData: boolean): void; + handlePickItemFromEntity(entity: net.minecraft.world.entity.Entity, includeData: boolean): void; + handleSlotStateChanged(slotId: number, containerId: number, newState: boolean): void; } - interface SoundManager extends net.minecraft.server.packs.resources.SimplePreparableReloadListener { - getAvailableSoundDevices(): Array; - getListenerTransform(): com.mojang.blaze3d.audio.ListenerTransform; - getSoundEvent(location: net.minecraft.resources.Identifier): net.minecraft.client.sounds.WeighedSoundEvents | null | undefined; - getAvailableSounds(): Array; - queueTickingSound(instance: net.minecraft.client.resources.sounds.TickableSoundInstance): void; - play(instance: net.minecraft.client.resources.sounds.SoundInstance): net.minecraft.client.sounds.SoundEngine$PlayResult; - playDelayed(instance: net.minecraft.client.resources.sounds.SoundInstance, delay: number): void; - updateSource(camera: net.minecraft.client.Camera): void; - pauseAllExcept(ignoredSources: net.minecraft.sounds.SoundSource): void; - stop(): void; - stop(soundInstance: net.minecraft.client.resources.sounds.SoundInstance): void; - stop(sound: net.minecraft.resources.Identifier | null | undefined, source: net.minecraft.sounds.SoundSource | null | undefined): void; - destroy(): void; - emergencyShutdown(): void; - tick(paused: boolean): void; - resume(): void; - refreshCategoryVolume(category: net.minecraft.sounds.SoundSource): void; - updateCategoryVolume(source: net.minecraft.sounds.SoundSource, gain: number): void; - isActive(instance: net.minecraft.client.resources.sounds.SoundInstance): boolean; - addListener(listener: net.minecraft.client.sounds.SoundEventListener): void; - removeListener(listener: net.minecraft.client.sounds.SoundEventListener): void; - getChannelDebugString(): string; - getSoundCacheDebugStats(output: net.minecraft.client.sounds.SoundBufferLibrary$DebugOutput): void; - reload(): void; + const ProfileKeyPairManager: { + EMPTY_KEY_MANAGER: net.minecraft.client.multiplayer.ProfileKeyPairManager; + create(userApiService: com.mojang.authlib.minecraft.UserApiService, user: net.minecraft.client.User, gameDirectory: java.nio.file.Path): net.minecraft.client.multiplayer.ProfileKeyPairManager; } - const WeighedSoundEvents: { - new(location: net.minecraft.resources.Identifier, subtitle: string | null | undefined): net.minecraft.client.sounds.WeighedSoundEvents; + interface ProfileKeyPairManager { + prepareKeyPair(): java.util.concurrent.CompletableFuture>; + shouldRefreshKeyPair(): boolean; } - interface WeighedSoundEvents extends net.minecraft.client.sounds.Weighted { - addSound(sound: net.minecraft.client.sounds.Weighted): void; - getSubtitle(): net.minecraft.network.chat.Component | null | undefined; + } + namespace telemetry { + const WorldSessionTelemetryManager: { + new(eventSender: net.minecraft.client.telemetry.TelemetryEventSender, newWorld: boolean, worldLoadDuration: java.time.Duration | null | undefined, minigameName: string | null | undefined, sessionId: java.util.UUID): net.minecraft.client.telemetry.WorldSessionTelemetryManager; } - interface Weighted { - getWeight(): number; - getSound(random: net.minecraft.util.RandomSource): T; - preloadIfRequired(soundEngine: net.minecraft.client.sounds.SoundEngine): void; + interface WorldSessionTelemetryManager { + tick(): void; + onPlayerInfoReceived(type: net.minecraft.world.level.GameType, hardcore: boolean): void; + onServerBrandReceived(serverBrand: string): void; + setTime(gameTime: number): void; + worldSessionStart(): void; + onDisconnect(): void; + onAdvancementDone(level: net.minecraft.world.level.Level, holder: net.minecraft.advancements.AdvancementHolder): void; } - const SoundEngine: { - PlayResult: typeof net.minecraft.client.sounds.SoundEngine$PlayResult; - MISSING_SOUND: string; - OPEN_AL_SOFT_PREFIX: string; - OPEN_AL_SOFT_PREFIX_LENGTH: number; - new(soundManager: net.minecraft.client.sounds.SoundManager, options: net.minecraft.client.Options, resourceProvider: net.minecraft.server.packs.resources.ResourceProvider): net.minecraft.client.sounds.SoundEngine; + const TelemetryEventSender: { + DISABLED: net.minecraft.client.telemetry.TelemetryEventSender; } - interface SoundEngine { - reload(): void; - refreshCategoryVolume(source: net.minecraft.sounds.SoundSource): void; - destroy(): void; - emergencyShutdown(): void; - stop(soundInstance: net.minecraft.client.resources.sounds.SoundInstance): void; - stop(sound: net.minecraft.resources.Identifier | null | undefined, source: net.minecraft.sounds.SoundSource | null | undefined): void; - updateCategoryVolume(source: net.minecraft.sounds.SoundSource, gain: number): void; - stopAll(): void; - addEventListener(listener: net.minecraft.client.sounds.SoundEventListener): void; - removeEventListener(listener: net.minecraft.client.sounds.SoundEventListener): void; - tick(paused: boolean): void; - isActive(instance: net.minecraft.client.resources.sounds.SoundInstance): boolean; - play(instance: net.minecraft.client.resources.sounds.SoundInstance): net.minecraft.client.sounds.SoundEngine$PlayResult; - queueTickingSound(tickableSoundInstance: net.minecraft.client.resources.sounds.TickableSoundInstance): void; - requestPreload(sound: net.minecraft.client.resources.sounds.Sound): void; - pauseAllExcept(ignoredSources: net.minecraft.sounds.SoundSource): void; - resume(): void; - playDelayed(instance: net.minecraft.client.resources.sounds.SoundInstance, delay: number): void; - updateSource(camera: net.minecraft.client.Camera): void; - getChannelDebugString(): string; - getSoundCacheDebugStats(output: net.minecraft.client.sounds.SoundBufferLibrary$DebugOutput): void; - getAvailableSoundDevices(): Array; - getListenerTransform(): com.mojang.blaze3d.audio.ListenerTransform; + interface TelemetryEventSender { + decorate(decorator: unknown): net.minecraft.client.telemetry.TelemetryEventSender; + send(type: net.minecraft.client.telemetry.TelemetryEventType, buildFunction: unknown): void; + (type: net.minecraft.client.telemetry.TelemetryEventType, buildFunction: unknown): void; } - const SoundBufferLibrary: { - new(resourceProvider: net.minecraft.server.packs.resources.ResourceProvider): net.minecraft.client.sounds.SoundBufferLibrary; + const TelemetryEventType: { + Builder: typeof net.minecraft.client.telemetry.TelemetryEventType$Builder; + CODEC: com.mojang.serialization.Codec; + GRAPHICS_CAPABILITIES: net.minecraft.client.telemetry.TelemetryEventType; + WORLD_LOADED: net.minecraft.client.telemetry.TelemetryEventType; + PERFORMANCE_METRICS: net.minecraft.client.telemetry.TelemetryEventType; + WORLD_LOAD_TIMES: net.minecraft.client.telemetry.TelemetryEventType; + WORLD_UNLOADED: net.minecraft.client.telemetry.TelemetryEventType; + ADVANCEMENT_MADE: net.minecraft.client.telemetry.TelemetryEventType; + GAME_LOAD_TIMES: net.minecraft.client.telemetry.TelemetryEventType; + builder(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryEventType$Builder; + values(): Array; + selfTest(): boolean; } - interface SoundBufferLibrary { - getCompleteBuffer(location: net.minecraft.resources.Identifier): java.util.concurrent.CompletableFuture; - getStream(location: net.minecraft.resources.Identifier, looping: boolean): java.util.concurrent.CompletableFuture; - clear(): void; - preload(sounds: Array): java.util.concurrent.CompletableFuture; - enumerate(debugOutput: net.minecraft.client.sounds.SoundBufferLibrary$DebugOutput): void; + interface TelemetryEventType { + id(): string; + properties(): Array>; + isOptIn(): boolean; + codec(): com.mojang.serialization.MapCodec; + contains(property: net.minecraft.client.telemetry.TelemetryProperty): boolean; + title(): net.minecraft.network.chat.MutableComponent; + description(): net.minecraft.network.chat.MutableComponent; } - const SoundBufferLibrary$DebugOutput: { - Counter: typeof net.minecraft.client.sounds.SoundBufferLibrary.SoundBufferLibrary$DebugOutput$Counter; + const TelemetryPropertyMap: { + Builder: typeof net.minecraft.client.telemetry.TelemetryPropertyMap$Builder; + builder(): net.minecraft.client.telemetry.TelemetryPropertyMap$Builder; + createCodec(properties: Array>): com.mojang.serialization.MapCodec; } - interface SoundBufferLibrary$DebugOutput { - accountBuffer(id: net.minecraft.resources.Identifier, size: number, format: javax.sound.sampled.AudioFormat): void; + interface TelemetryPropertyMap { + get(property: net.minecraft.client.telemetry.TelemetryProperty): T; + propertySet(): Set>; } - const SoundBufferLibrary$DebugOutput$Counter: { - new(): unknown; + const TelemetryProperty: { + GameMode: typeof net.minecraft.client.telemetry.TelemetryProperty$GameMode; + ServerType: typeof net.minecraft.client.telemetry.TelemetryProperty$ServerType; + USER_ID: net.minecraft.client.telemetry.TelemetryProperty; + CLIENT_ID: net.minecraft.client.telemetry.TelemetryProperty; + MINECRAFT_SESSION_ID: net.minecraft.client.telemetry.TelemetryProperty; + GAME_VERSION: net.minecraft.client.telemetry.TelemetryProperty; + OPERATING_SYSTEM: net.minecraft.client.telemetry.TelemetryProperty; + PLATFORM: net.minecraft.client.telemetry.TelemetryProperty; + CLIENT_MODDED: net.minecraft.client.telemetry.TelemetryProperty; + LAUNCHER_NAME: net.minecraft.client.telemetry.TelemetryProperty; + BACKEND_NAME: net.minecraft.client.telemetry.TelemetryProperty; + BACKEND_FAILURE_MESSAGE: net.minecraft.client.telemetry.TelemetryProperty; + BACKEND_FAILURE_REASON: net.minecraft.client.telemetry.TelemetryProperty; + BACKEND_FAILURE_MISSING_CAPABILITIES: net.minecraft.client.telemetry.TelemetryProperty; + WORLD_SESSION_ID: net.minecraft.client.telemetry.TelemetryProperty; + SERVER_SESSION_ID: net.minecraft.client.telemetry.TelemetryProperty; + SERVER_MODDED: net.minecraft.client.telemetry.TelemetryProperty; + SERVER_TYPE: net.minecraft.client.telemetry.TelemetryProperty; + OPT_IN: net.minecraft.client.telemetry.TelemetryProperty; + EVENT_TIMESTAMP_UTC: net.minecraft.client.telemetry.TelemetryProperty; + GAME_MODE: net.minecraft.client.telemetry.TelemetryProperty; + REALMS_MAP_CONTENT: net.minecraft.client.telemetry.TelemetryProperty; + SECONDS_SINCE_LOAD: net.minecraft.client.telemetry.TelemetryProperty; + TICKS_SINCE_LOAD: net.minecraft.client.telemetry.TelemetryProperty; + FRAME_RATE_SAMPLES: net.minecraft.client.telemetry.TelemetryProperty; + RENDER_TIME_SAMPLES: net.minecraft.client.telemetry.TelemetryProperty; + USED_MEMORY_SAMPLES: net.minecraft.client.telemetry.TelemetryProperty; + NUMBER_OF_SAMPLES: net.minecraft.client.telemetry.TelemetryProperty; + RENDER_DISTANCE: net.minecraft.client.telemetry.TelemetryProperty; + DEDICATED_MEMORY_KB: net.minecraft.client.telemetry.TelemetryProperty; + WORLD_LOAD_TIME_MS: net.minecraft.client.telemetry.TelemetryProperty; + NEW_WORLD: net.minecraft.client.telemetry.TelemetryProperty; + LOAD_TIME_TOTAL_TIME_MS: net.minecraft.client.telemetry.TelemetryProperty; + LOAD_TIME_PRE_WINDOW_MS: net.minecraft.client.telemetry.TelemetryProperty; + LOAD_TIME_BOOTSTRAP_MS: net.minecraft.client.telemetry.TelemetryProperty; + LOAD_TIME_LOADING_OVERLAY_MS: net.minecraft.client.telemetry.TelemetryProperty; + ADVANCEMENT_ID: net.minecraft.client.telemetry.TelemetryProperty; + ADVANCEMENT_GAME_TIME: net.minecraft.client.telemetry.TelemetryProperty; + new(id: string, exportKey: string, codec: com.mojang.serialization.Codec, exporter: net.minecraft.client.telemetry.TelemetryProperty$Exporter): net.minecraft.client.telemetry.TelemetryProperty; + create(id: string, exportKey: string, codec: com.mojang.serialization.Codec, exporter: net.minecraft.client.telemetry.TelemetryProperty$Exporter): net.minecraft.client.telemetry.TelemetryProperty; + bool(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; + string(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; + integer(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; + makeLong(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; + uuid(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; + gameLoadMeasurement(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; + longSamples(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; } - interface SoundBufferLibrary$DebugOutput$Counter extends net.minecraft.client.sounds.SoundBufferLibrary$DebugOutput { - totalCount(): number; - totalSize(): number; + interface TelemetryProperty extends java.lang.Record { + title(): net.minecraft.network.chat.MutableComponent; + id(): string; + exportKey(): string; + codec(): com.mojang.serialization.Codec; + exporter(): net.minecraft.client.telemetry.TelemetryProperty$Exporter; } - interface SoundEventListener { - onPlaySound(sound: net.minecraft.client.resources.sounds.SoundInstance, soundEvent: net.minecraft.client.sounds.WeighedSoundEvents, range: number): void; + interface TelemetryProperty$Exporter { + apply(output: com.mojang.authlib.minecraft.TelemetryPropertyContainer, key: string, value: T): void; } - const SoundEngine$PlayResult: { - STARTED: net.minecraft.client.sounds.SoundEngine$PlayResult; - STARTED_SILENTLY: net.minecraft.client.sounds.SoundEngine$PlayResult; - NOT_STARTED: net.minecraft.client.sounds.SoundEngine$PlayResult; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.client.sounds.SoundEngine$PlayResult; + const TelemetryProperty$GameMode: { + SURVIVAL: net.minecraft.client.telemetry.TelemetryProperty$GameMode; + CREATIVE: net.minecraft.client.telemetry.TelemetryProperty$GameMode; + ADVENTURE: net.minecraft.client.telemetry.TelemetryProperty$GameMode; + SPECTATOR: net.minecraft.client.telemetry.TelemetryProperty$GameMode; + HARDCORE: net.minecraft.client.telemetry.TelemetryProperty$GameMode; + CODEC: com.mojang.serialization.Codec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.telemetry.TelemetryProperty$GameMode; } - interface SoundEngine$PlayResult extends kotlin.Enum { + interface TelemetryProperty$GameMode extends kotlin.Enum, net.minecraft.util.StringRepresentable { + id(): number; } - const MusicManager: { - MusicFrequency: typeof net.minecraft.client.sounds.MusicManager$MusicFrequency; - new(minecraft: net.minecraft.client.Minecraft): net.minecraft.client.sounds.MusicManager; + const TelemetryProperty$ServerType: { + REALM: net.minecraft.client.telemetry.TelemetryProperty$ServerType; + LOCAL: net.minecraft.client.telemetry.TelemetryProperty$ServerType; + OTHER: net.minecraft.client.telemetry.TelemetryProperty$ServerType; + CODEC: com.mojang.serialization.Codec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.telemetry.TelemetryProperty$ServerType; } - interface MusicManager { - tick(): void; - startPlaying(music: net.minecraft.sounds.Music): void; - showNowPlayingToastIfNeeded(): void; - stopPlaying(music: net.minecraft.sounds.Music): void; - stopPlaying(): void; - isPlayingMusic(music: net.minecraft.sounds.Music): boolean; - getCurrentMusicTranslationKey(): string | null | undefined; - setMinutesBetweenSongs(musicFrequency: net.minecraft.client.sounds.MusicManager$MusicFrequency): void; + interface TelemetryProperty$ServerType extends kotlin.Enum, net.minecraft.util.StringRepresentable { } - const MusicManager$MusicFrequency: { - DEFAULT: net.minecraft.client.sounds.MusicManager$MusicFrequency; - FREQUENT: net.minecraft.client.sounds.MusicManager$MusicFrequency; - CONSTANT: net.minecraft.client.sounds.MusicManager$MusicFrequency; - CODEC: com.mojang.serialization.Codec; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.client.sounds.MusicManager$MusicFrequency; - } - interface MusicManager$MusicFrequency extends kotlin.Enum, net.minecraft.util.StringRepresentable { - caption(): net.minecraft.network.chat.Component; - } - } - namespace tutorial { - const TutorialSteps: { - MOVEMENT: net.minecraft.client.tutorial.TutorialSteps; - FIND_TREE: net.minecraft.client.tutorial.TutorialSteps; - PUNCH_TREE: net.minecraft.client.tutorial.TutorialSteps; - OPEN_INVENTORY: net.minecraft.client.tutorial.TutorialSteps; - CRAFT_PLANKS: net.minecraft.client.tutorial.TutorialSteps; - NONE: net.minecraft.client.tutorial.TutorialSteps; - entries: kotlin.enums.EnumEntries; - getByName(name: string): net.minecraft.client.tutorial.TutorialSteps; - values(): Array; - valueOf(value: string): net.minecraft.client.tutorial.TutorialSteps; - } - interface TutorialSteps extends kotlin.Enum { - create(tutorial: net.minecraft.client.tutorial.Tutorial): net.minecraft.client.tutorial.TutorialStepInstance; - getName(): string; + interface TelemetryPropertyMap$Builder { + put(property: net.minecraft.client.telemetry.TelemetryProperty, value: T): net.minecraft.client.telemetry.TelemetryPropertyMap$Builder; + putIfNotNull(property: net.minecraft.client.telemetry.TelemetryProperty, value: T): net.minecraft.client.telemetry.TelemetryPropertyMap$Builder; + putAll(properties: net.minecraft.client.telemetry.TelemetryPropertyMap): net.minecraft.client.telemetry.TelemetryPropertyMap$Builder; + build(): net.minecraft.client.telemetry.TelemetryPropertyMap; } - const Tutorial: { - new(minecraft: net.minecraft.client.Minecraft, options: net.minecraft.client.Options): net.minecraft.client.tutorial.Tutorial; - key(name: string): net.minecraft.network.chat.Component; + interface TelemetryEventType$Builder { + defineAll(properties: Array>): net.minecraft.client.telemetry.TelemetryEventType$Builder; + define(property: net.minecraft.client.telemetry.TelemetryProperty): net.minecraft.client.telemetry.TelemetryEventType$Builder; + optIn(): net.minecraft.client.telemetry.TelemetryEventType$Builder; + register(): net.minecraft.client.telemetry.TelemetryEventType; } - interface Tutorial { - onInput(input: net.minecraft.client.player.ClientInput): void; - onMouse(xd: number, yd: number): void; - onLookAt(level: net.minecraft.client.multiplayer.ClientLevel | null | undefined, hit: net.minecraft.world.phys.HitResult | null | undefined): void; - onDestroyBlock(level: net.minecraft.client.multiplayer.ClientLevel, pos: net.minecraft.core.BlockPos, state: net.minecraft.world.level.block.state.BlockState, percent: number): void; - onOpenInventory(): void; - onGetItem(itemStack: net.minecraft.world.item.ItemStack): void; - stop(): void; - start(): void; - tick(): void; - setStep(step: net.minecraft.client.tutorial.TutorialSteps): void; - getMinecraft(): net.minecraft.client.Minecraft; - isSurvival(): boolean; - onInventoryAction(itemCarried: net.minecraft.world.item.ItemStack, itemInSlot: net.minecraft.world.item.ItemStack, clickAction: net.minecraft.world.inventory.ClickAction): void; + const ClientTelemetryManager: { + new(minecraft: net.minecraft.client.Minecraft, userApiService: com.mojang.authlib.minecraft.UserApiService, user: net.minecraft.client.User): net.minecraft.client.telemetry.ClientTelemetryManager; } - interface TutorialStepInstance { - clear(): void; - tick(): void; - onInput(input: net.minecraft.client.player.ClientInput): void; - onMouse(xd: number, yd: number): void; - onLookAt(level: net.minecraft.client.multiplayer.ClientLevel, hit: net.minecraft.world.phys.HitResult): void; - onDestroyBlock(level: net.minecraft.client.multiplayer.ClientLevel, pos: net.minecraft.core.BlockPos, state: net.minecraft.world.level.block.state.BlockState, percent: number): void; - onOpenInventory(): void; - onGetItem(itemStack: net.minecraft.world.item.ItemStack): void; + interface ClientTelemetryManager extends java.lang.AutoCloseable { + createWorldSessionManager(newWorld: boolean, worldLoadDuration: java.time.Duration | null | undefined, minigameName: string | null | undefined, sessionId: java.util.UUID): net.minecraft.client.telemetry.WorldSessionTelemetryManager; + getOutsideSessionSender(): net.minecraft.client.telemetry.TelemetryEventSender; + getLogDirectory(): java.nio.file.Path; } } namespace player { @@ -16293,22 +16399,6 @@ declare global { isEmpty(): boolean; } } - const ClientInput: { - new(): net.minecraft.client.player.ClientInput; - } - interface ClientInput { - keyPresses: net.minecraft.world.entity.player.Input; - tick(): void; - getMoveVector(): net.minecraft.world.phys.Vec2; - hasForwardImpulse(): boolean; - makeJump(): void; - } - const AbstractClientPlayer: { - new(level: net.minecraft.client.multiplayer.ClientLevel, gameProfile: com.mojang.authlib.GameProfile): net.minecraft.client.player.AbstractClientPlayer; - } - interface AbstractClientPlayer extends net.minecraft.world.entity.player.Player, net.minecraft.client.entity.ClientAvatarEntity { - getFieldOfViewModifier(firstPerson: boolean, effectScale: number): number; - } const LocalPlayer: { LOGGER: org.slf4j.Logger; new(minecraft: net.minecraft.client.Minecraft, level: net.minecraft.client.multiplayer.ClientLevel, connection: net.minecraft.client.multiplayer.ClientPacketListener, stats: net.minecraft.stats.StatsCounter, recipeBook: net.minecraft.client.ClientRecipeBook, lastSentInput: net.minecraft.world.entity.player.Input, wasSprinting: boolean, chatAbilities: net.minecraft.client.multiplayer.chat.ChatAbilities): net.minecraft.client.player.LocalPlayer; @@ -16353,6 +16443,22 @@ declare global { getLastSentInput(): net.minecraft.world.entity.player.Input; raycastHitResult(a: number, cameraEntity: net.minecraft.world.entity.Entity): net.minecraft.world.phys.HitResult; } + const AbstractClientPlayer: { + new(level: net.minecraft.client.multiplayer.ClientLevel, gameProfile: com.mojang.authlib.GameProfile): net.minecraft.client.player.AbstractClientPlayer; + } + interface AbstractClientPlayer extends net.minecraft.world.entity.player.Player, net.minecraft.client.entity.ClientAvatarEntity { + getFieldOfViewModifier(firstPerson: boolean, effectScale: number): number; + } + const ClientInput: { + new(): net.minecraft.client.player.ClientInput; + } + interface ClientInput { + keyPresses: net.minecraft.world.entity.player.Input; + tick(): void; + getMoveVector(): net.minecraft.world.phys.Vec2; + hasForwardImpulse(): boolean; + makeJump(): void; + } } namespace entity { interface ClientAvatarEntity { @@ -16378,240 +16484,254 @@ declare global { getInterpolatedWalkDistance(partialTicks: number): number; } } - namespace particle { - const ParticleEngine: { - new(level: net.minecraft.client.multiplayer.ClientLevel, resourceManager: net.minecraft.client.particle.ParticleResources): net.minecraft.client.particle.ParticleEngine; + namespace searchtree { + const SearchTree: { + empty(): net.minecraft.client.searchtree.SearchTree; + plainText(elements: Array, idGetter: unknown): net.minecraft.client.searchtree.SearchTree; } - interface ParticleEngine { - createTrackingEmitter(entity: net.minecraft.world.entity.Entity, particle: net.minecraft.core.particles.ParticleOptions): void; - createTrackingEmitter(entity: net.minecraft.world.entity.Entity, particle: net.minecraft.core.particles.ParticleOptions, lifeTime: number): void; - createParticle(options: net.minecraft.core.particles.ParticleOptions, x: number, y: number, z: number, xa: number, ya: number, za: number): net.minecraft.client.particle.Particle | null | undefined; - add(p: net.minecraft.client.particle.Particle): void; - tick(): void; - extract(particlesRenderState: net.minecraft.client.renderer.state.level.ParticlesRenderState, frustum: net.minecraft.client.renderer.culling.Frustum, camera: net.minecraft.client.Camera, partialTickTime: number): void; - setLevel(level: net.minecraft.client.multiplayer.ClientLevel | null | undefined): void; - countParticles(): string; - clearParticles(): void; + interface SearchTree { + search(text: string): Array; + (text: string): Array; } - const Particle: { - LifetimeAlpha: typeof net.minecraft.client.particle.Particle$LifetimeAlpha; - new(level: net.minecraft.client.multiplayer.ClientLevel, x: number, y: number, z: number, xa: number, ya: number, za: number): net.minecraft.client.particle.Particle; + } + namespace waypoints { + const ClientWaypointManager: { + new(): net.minecraft.client.waypoints.ClientWaypointManager; } - interface Particle { - setPower(power: number): net.minecraft.client.particle.Particle; - setParticleSpeed(xd: number, yd: number, zd: number): void; - scale(scale: number): net.minecraft.client.particle.Particle; - setLifetime(lifetime: number): void; - getLifetime(): number; - tick(): void; - getGroup(): net.minecraft.client.particle.ParticleRenderType; - remove(): void; - setPos(x: number, y: number, z: number): void; - move(xa: number, ya: number, za: number): void; - isAlive(): boolean; - getBoundingBox(): net.minecraft.world.phys.AABB; - setBoundingBox(bb: net.minecraft.world.phys.AABB): void; - getParticleLimit(): java.util.Optional; + interface ClientWaypointManager extends net.minecraft.world.waypoints.TrackedWaypointManager { + hasWaypoints(): boolean; + forEachWaypoint(fromEntity: net.minecraft.world.entity.Entity, consumer: unknown): void; } - const ParticleRenderType: { - SINGLE_QUADS: net.minecraft.client.particle.ParticleRenderType; - ITEM_PICKUP: net.minecraft.client.particle.ParticleRenderType; - ELDER_GUARDIANS: net.minecraft.client.particle.ParticleRenderType; - NO_RENDER: net.minecraft.client.particle.ParticleRenderType; - new(name: string): net.minecraft.client.particle.ParticleRenderType; + } + namespace sounds { + const SoundManager: { + EMPTY_SOUND_LOCATION: net.minecraft.resources.Identifier; + EMPTY_SOUND: net.minecraft.client.resources.sounds.Sound; + INTENTIONALLY_EMPTY_SOUND_LOCATION: net.minecraft.resources.Identifier; + INTENTIONALLY_EMPTY_SOUND_EVENT: net.minecraft.client.sounds.WeighedSoundEvents; + INTENTIONALLY_EMPTY_SOUND: net.minecraft.client.resources.sounds.Sound; + new(options: net.minecraft.client.Options): net.minecraft.client.sounds.SoundManager; } - interface ParticleRenderType extends java.lang.Record { - name(): string; + interface SoundManager extends net.minecraft.server.packs.resources.SimplePreparableReloadListener { + getAvailableSoundDevices(): Array; + getListenerTransform(): com.mojang.blaze3d.audio.ListenerTransform; + getSoundEvent(location: net.minecraft.resources.Identifier): net.minecraft.client.sounds.WeighedSoundEvents | null | undefined; + getAvailableSounds(): Array; + queueTickingSound(instance: net.minecraft.client.resources.sounds.TickableSoundInstance): void; + play(instance: net.minecraft.client.resources.sounds.SoundInstance): net.minecraft.client.sounds.SoundEngine$PlayResult; + playDelayed(instance: net.minecraft.client.resources.sounds.SoundInstance, delay: number): void; + updateSource(camera: net.minecraft.client.Camera): void; + pauseAllExcept(ignoredSources: net.minecraft.sounds.SoundSource): void; + stop(): void; + stop(soundInstance: net.minecraft.client.resources.sounds.SoundInstance): void; + stop(sound: net.minecraft.resources.Identifier | null | undefined, source: net.minecraft.sounds.SoundSource | null | undefined): void; + destroy(): void; + emergencyShutdown(): void; + tick(paused: boolean): void; + resume(): void; + refreshCategoryVolume(category: net.minecraft.sounds.SoundSource): void; + updateCategoryVolume(source: net.minecraft.sounds.SoundSource, gain: number): void; + isActive(instance: net.minecraft.client.resources.sounds.SoundInstance): boolean; + addListener(listener: net.minecraft.client.sounds.SoundEventListener): void; + removeListener(listener: net.minecraft.client.sounds.SoundEventListener): void; + getChannelDebugString(): string; + getSoundCacheDebugStats(output: net.minecraft.client.sounds.SoundBufferLibrary$DebugOutput): void; + reload(): void; } - const Particle$LifetimeAlpha: { - ALWAYS_OPAQUE: net.minecraft.client.particle.Particle$LifetimeAlpha; - new(startAlpha: number, endAlpha: number, startAtNormalizedAge: number, endAtNormalizedAge: number): net.minecraft.client.particle.Particle$LifetimeAlpha; + const WeighedSoundEvents: { + new(location: net.minecraft.resources.Identifier, subtitle: string | null | undefined): net.minecraft.client.sounds.WeighedSoundEvents; } - interface Particle$LifetimeAlpha extends java.lang.Record { - isOpaque(): boolean; - currentAlphaForAge(age: number, lifetime: number, partialTickTime: number): number; - startAlpha(): number; - endAlpha(): number; - startAtNormalizedAge(): number; - endAtNormalizedAge(): number; + interface WeighedSoundEvents extends net.minecraft.client.sounds.Weighted { + addSound(sound: net.minecraft.client.sounds.Weighted): void; + getSubtitle(): net.minecraft.network.chat.Component | null | undefined; } - const ParticleResources: { - new(): net.minecraft.client.particle.ParticleResources; + interface Weighted { + getWeight(): number; + getSound(random: net.minecraft.util.RandomSource): T; + preloadIfRequired(soundEngine: net.minecraft.client.sounds.SoundEngine): void; } - interface ParticleResources extends net.minecraft.server.packs.resources.PreparableReloadListener { - onReload(onReload: java.lang.Runnable): void; - getProviders(): it.unimi.dsi.fastutil.ints.Int2ObjectMap; + const SoundEngine: { + PlayResult: typeof net.minecraft.client.sounds.SoundEngine$PlayResult; + MISSING_SOUND: string; + OPEN_AL_SOFT_PREFIX: string; + OPEN_AL_SOFT_PREFIX_LENGTH: number; + new(soundManager: net.minecraft.client.sounds.SoundManager, options: net.minecraft.client.Options, resourceProvider: net.minecraft.server.packs.resources.ResourceProvider): net.minecraft.client.sounds.SoundEngine; } - } - namespace quickplay { - const QuickPlayLog: { - Type: typeof net.minecraft.client.quickplay.QuickPlayLog$Type; - of(path: string | null | undefined): net.minecraft.client.quickplay.QuickPlayLog; + interface SoundEngine { + reload(): void; + refreshCategoryVolume(source: net.minecraft.sounds.SoundSource): void; + destroy(): void; + emergencyShutdown(): void; + stop(soundInstance: net.minecraft.client.resources.sounds.SoundInstance): void; + stop(sound: net.minecraft.resources.Identifier | null | undefined, source: net.minecraft.sounds.SoundSource | null | undefined): void; + updateCategoryVolume(source: net.minecraft.sounds.SoundSource, gain: number): void; + stopAll(): void; + addEventListener(listener: net.minecraft.client.sounds.SoundEventListener): void; + removeEventListener(listener: net.minecraft.client.sounds.SoundEventListener): void; + tick(paused: boolean): void; + isActive(instance: net.minecraft.client.resources.sounds.SoundInstance): boolean; + play(instance: net.minecraft.client.resources.sounds.SoundInstance): net.minecraft.client.sounds.SoundEngine$PlayResult; + queueTickingSound(tickableSoundInstance: net.minecraft.client.resources.sounds.TickableSoundInstance): void; + requestPreload(sound: net.minecraft.client.resources.sounds.Sound): void; + pauseAllExcept(ignoredSources: net.minecraft.sounds.SoundSource): void; + resume(): void; + playDelayed(instance: net.minecraft.client.resources.sounds.SoundInstance, delay: number): void; + updateSource(camera: net.minecraft.client.Camera): void; + getChannelDebugString(): string; + getSoundCacheDebugStats(output: net.minecraft.client.sounds.SoundBufferLibrary$DebugOutput): void; + getAvailableSoundDevices(): Array; + getListenerTransform(): com.mojang.blaze3d.audio.ListenerTransform; } - interface QuickPlayLog { - setWorldData(type: net.minecraft.client.quickplay.QuickPlayLog$Type, id: string, name: string): void; - log(minecraft: net.minecraft.client.Minecraft): void; + const SoundBufferLibrary: { + new(resourceProvider: net.minecraft.server.packs.resources.ResourceProvider): net.minecraft.client.sounds.SoundBufferLibrary; } - const QuickPlayLog$Type: { - SINGLEPLAYER: net.minecraft.client.quickplay.QuickPlayLog$Type; - MULTIPLAYER: net.minecraft.client.quickplay.QuickPlayLog$Type; - REALMS: net.minecraft.client.quickplay.QuickPlayLog$Type; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.client.quickplay.QuickPlayLog$Type; + interface SoundBufferLibrary { + getCompleteBuffer(location: net.minecraft.resources.Identifier): java.util.concurrent.CompletableFuture; + getStream(location: net.minecraft.resources.Identifier, looping: boolean): java.util.concurrent.CompletableFuture; + clear(): void; + preload(sounds: Array): java.util.concurrent.CompletableFuture; + enumerate(debugOutput: net.minecraft.client.sounds.SoundBufferLibrary$DebugOutput): void; } - interface QuickPlayLog$Type extends kotlin.Enum, net.minecraft.util.StringRepresentable { + const SoundBufferLibrary$DebugOutput: { + Counter: typeof net.minecraft.client.sounds.SoundBufferLibrary.SoundBufferLibrary$DebugOutput$Counter; } - } - namespace telemetry { - const ClientTelemetryManager: { - new(minecraft: net.minecraft.client.Minecraft, userApiService: com.mojang.authlib.minecraft.UserApiService, user: net.minecraft.client.User): net.minecraft.client.telemetry.ClientTelemetryManager; + interface SoundBufferLibrary$DebugOutput { + accountBuffer(id: net.minecraft.resources.Identifier, size: number, format: javax.sound.sampled.AudioFormat): void; } - interface ClientTelemetryManager extends java.lang.AutoCloseable { - createWorldSessionManager(newWorld: boolean, worldLoadDuration: java.time.Duration | null | undefined, minigameName: string | null | undefined): net.minecraft.client.telemetry.WorldSessionTelemetryManager; - getOutsideSessionSender(): net.minecraft.client.telemetry.TelemetryEventSender; - getLogDirectory(): java.nio.file.Path; + const SoundBufferLibrary$DebugOutput$Counter: { + new(): unknown; } - const WorldSessionTelemetryManager: { - new(eventSender: net.minecraft.client.telemetry.TelemetryEventSender, newWorld: boolean, worldLoadDuration: java.time.Duration | null | undefined, minigameName: string | null | undefined): net.minecraft.client.telemetry.WorldSessionTelemetryManager; + interface SoundBufferLibrary$DebugOutput$Counter extends net.minecraft.client.sounds.SoundBufferLibrary$DebugOutput { + totalCount(): number; + totalSize(): number; } - interface WorldSessionTelemetryManager { - tick(): void; - onPlayerInfoReceived(type: net.minecraft.world.level.GameType, hardcore: boolean): void; - onServerBrandReceived(serverBrand: string): void; - setTime(gameTime: number): void; - worldSessionStart(): void; - onDisconnect(): void; - onAdvancementDone(level: net.minecraft.world.level.Level, holder: net.minecraft.advancements.AdvancementHolder): void; + interface SoundEventListener { + onPlaySound(sound: net.minecraft.client.resources.sounds.SoundInstance, soundEvent: net.minecraft.client.sounds.WeighedSoundEvents, range: number): void; } - const TelemetryEventSender: { - DISABLED: net.minecraft.client.telemetry.TelemetryEventSender; + const SoundEngine$PlayResult: { + STARTED: net.minecraft.client.sounds.SoundEngine$PlayResult; + STARTED_SILENTLY: net.minecraft.client.sounds.SoundEngine$PlayResult; + NOT_STARTED: net.minecraft.client.sounds.SoundEngine$PlayResult; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.sounds.SoundEngine$PlayResult; } - interface TelemetryEventSender { - decorate(decorator: unknown): net.minecraft.client.telemetry.TelemetryEventSender; - send(type: net.minecraft.client.telemetry.TelemetryEventType, buildFunction: unknown): void; - (type: net.minecraft.client.telemetry.TelemetryEventType, buildFunction: unknown): void; + interface SoundEngine$PlayResult extends kotlin.Enum { } - const TelemetryEventType: { - Builder: typeof net.minecraft.client.telemetry.TelemetryEventType$Builder; - CODEC: com.mojang.serialization.Codec; - WORLD_LOADED: net.minecraft.client.telemetry.TelemetryEventType; - PERFORMANCE_METRICS: net.minecraft.client.telemetry.TelemetryEventType; - WORLD_LOAD_TIMES: net.minecraft.client.telemetry.TelemetryEventType; - WORLD_UNLOADED: net.minecraft.client.telemetry.TelemetryEventType; - ADVANCEMENT_MADE: net.minecraft.client.telemetry.TelemetryEventType; - GAME_LOAD_TIMES: net.minecraft.client.telemetry.TelemetryEventType; - builder(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryEventType$Builder; - values(): Array; + const MusicManager: { + MusicFrequency: typeof net.minecraft.client.sounds.MusicManager$MusicFrequency; + new(minecraft: net.minecraft.client.Minecraft): net.minecraft.client.sounds.MusicManager; } - interface TelemetryEventType { - id(): string; - properties(): Array>; - isOptIn(): boolean; - codec(): com.mojang.serialization.MapCodec; - contains(property: net.minecraft.client.telemetry.TelemetryProperty): boolean; - title(): net.minecraft.network.chat.MutableComponent; - description(): net.minecraft.network.chat.MutableComponent; + interface MusicManager { + tick(): void; + startPlaying(music: net.minecraft.sounds.Music): void; + showNowPlayingToastIfNeeded(): void; + stopPlaying(music: net.minecraft.sounds.Music): void; + stopPlaying(): void; + isPlayingMusic(music: net.minecraft.sounds.Music): boolean; + getCurrentMusicTranslationKey(): string | null | undefined; + setMinutesBetweenSongs(musicFrequency: net.minecraft.client.sounds.MusicManager$MusicFrequency): void; } - const TelemetryPropertyMap: { - Builder: typeof net.minecraft.client.telemetry.TelemetryPropertyMap$Builder; - builder(): net.minecraft.client.telemetry.TelemetryPropertyMap$Builder; - createCodec(properties: Array>): com.mojang.serialization.MapCodec; + const MusicManager$MusicFrequency: { + DEFAULT: net.minecraft.client.sounds.MusicManager$MusicFrequency; + FREQUENT: net.minecraft.client.sounds.MusicManager$MusicFrequency; + CONSTANT: net.minecraft.client.sounds.MusicManager$MusicFrequency; + CODEC: com.mojang.serialization.Codec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.sounds.MusicManager$MusicFrequency; } - interface TelemetryPropertyMap { - get(property: net.minecraft.client.telemetry.TelemetryProperty): T; - propertySet(): Set>; + interface MusicManager$MusicFrequency extends kotlin.Enum, net.minecraft.util.StringRepresentable { + caption(): net.minecraft.network.chat.Component; } - const TelemetryProperty: { - GameMode: typeof net.minecraft.client.telemetry.TelemetryProperty$GameMode; - ServerType: typeof net.minecraft.client.telemetry.TelemetryProperty$ServerType; - USER_ID: net.minecraft.client.telemetry.TelemetryProperty; - CLIENT_ID: net.minecraft.client.telemetry.TelemetryProperty; - MINECRAFT_SESSION_ID: net.minecraft.client.telemetry.TelemetryProperty; - GAME_VERSION: net.minecraft.client.telemetry.TelemetryProperty; - OPERATING_SYSTEM: net.minecraft.client.telemetry.TelemetryProperty; - PLATFORM: net.minecraft.client.telemetry.TelemetryProperty; - CLIENT_MODDED: net.minecraft.client.telemetry.TelemetryProperty; - LAUNCHER_NAME: net.minecraft.client.telemetry.TelemetryProperty; - WORLD_SESSION_ID: net.minecraft.client.telemetry.TelemetryProperty; - SERVER_MODDED: net.minecraft.client.telemetry.TelemetryProperty; - SERVER_TYPE: net.minecraft.client.telemetry.TelemetryProperty; - OPT_IN: net.minecraft.client.telemetry.TelemetryProperty; - EVENT_TIMESTAMP_UTC: net.minecraft.client.telemetry.TelemetryProperty; - GAME_MODE: net.minecraft.client.telemetry.TelemetryProperty; - REALMS_MAP_CONTENT: net.minecraft.client.telemetry.TelemetryProperty; - SECONDS_SINCE_LOAD: net.minecraft.client.telemetry.TelemetryProperty; - TICKS_SINCE_LOAD: net.minecraft.client.telemetry.TelemetryProperty; - FRAME_RATE_SAMPLES: net.minecraft.client.telemetry.TelemetryProperty; - RENDER_TIME_SAMPLES: net.minecraft.client.telemetry.TelemetryProperty; - USED_MEMORY_SAMPLES: net.minecraft.client.telemetry.TelemetryProperty; - NUMBER_OF_SAMPLES: net.minecraft.client.telemetry.TelemetryProperty; - RENDER_DISTANCE: net.minecraft.client.telemetry.TelemetryProperty; - DEDICATED_MEMORY_KB: net.minecraft.client.telemetry.TelemetryProperty; - WORLD_LOAD_TIME_MS: net.minecraft.client.telemetry.TelemetryProperty; - NEW_WORLD: net.minecraft.client.telemetry.TelemetryProperty; - LOAD_TIME_TOTAL_TIME_MS: net.minecraft.client.telemetry.TelemetryProperty; - LOAD_TIME_PRE_WINDOW_MS: net.minecraft.client.telemetry.TelemetryProperty; - LOAD_TIME_BOOTSTRAP_MS: net.minecraft.client.telemetry.TelemetryProperty; - LOAD_TIME_LOADING_OVERLAY_MS: net.minecraft.client.telemetry.TelemetryProperty; - ADVANCEMENT_ID: net.minecraft.client.telemetry.TelemetryProperty; - ADVANCEMENT_GAME_TIME: net.minecraft.client.telemetry.TelemetryProperty; - new(id: string, exportKey: string, codec: com.mojang.serialization.Codec, exporter: net.minecraft.client.telemetry.TelemetryProperty$Exporter): net.minecraft.client.telemetry.TelemetryProperty; - create(id: string, exportKey: string, codec: com.mojang.serialization.Codec, exporter: net.minecraft.client.telemetry.TelemetryProperty$Exporter): net.minecraft.client.telemetry.TelemetryProperty; - bool(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; - string(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; - integer(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; - makeLong(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; - uuid(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; - gameLoadMeasurement(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; - longSamples(id: string, exportKey: string): net.minecraft.client.telemetry.TelemetryProperty; + } + namespace tutorial { + const TutorialSteps: { + MOVEMENT: net.minecraft.client.tutorial.TutorialSteps; + FIND_TREE: net.minecraft.client.tutorial.TutorialSteps; + PUNCH_TREE: net.minecraft.client.tutorial.TutorialSteps; + OPEN_INVENTORY: net.minecraft.client.tutorial.TutorialSteps; + CRAFT_PLANKS: net.minecraft.client.tutorial.TutorialSteps; + NONE: net.minecraft.client.tutorial.TutorialSteps; + entries: kotlin.enums.EnumEntries; + getByName(name: string): net.minecraft.client.tutorial.TutorialSteps; + values(): Array; + valueOf(value: string): net.minecraft.client.tutorial.TutorialSteps; } - interface TelemetryProperty extends java.lang.Record { - title(): net.minecraft.network.chat.MutableComponent; - id(): string; - exportKey(): string; - codec(): com.mojang.serialization.Codec; - exporter(): net.minecraft.client.telemetry.TelemetryProperty$Exporter; + interface TutorialSteps extends kotlin.Enum { + create(tutorial: net.minecraft.client.tutorial.Tutorial): net.minecraft.client.tutorial.TutorialStepInstance; + getName(): string; } - interface TelemetryProperty$Exporter { - apply(output: com.mojang.authlib.minecraft.TelemetryPropertyContainer, key: string, value: T): void; + const Tutorial: { + new(minecraft: net.minecraft.client.Minecraft, options: net.minecraft.client.Options): net.minecraft.client.tutorial.Tutorial; + key(name: string): net.minecraft.network.chat.Component; } - const TelemetryProperty$GameMode: { - SURVIVAL: net.minecraft.client.telemetry.TelemetryProperty$GameMode; - CREATIVE: net.minecraft.client.telemetry.TelemetryProperty$GameMode; - ADVENTURE: net.minecraft.client.telemetry.TelemetryProperty$GameMode; - SPECTATOR: net.minecraft.client.telemetry.TelemetryProperty$GameMode; - HARDCORE: net.minecraft.client.telemetry.TelemetryProperty$GameMode; - CODEC: com.mojang.serialization.Codec; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.client.telemetry.TelemetryProperty$GameMode; + interface Tutorial { + onInput(input: net.minecraft.client.player.ClientInput): void; + onMouse(xd: number, yd: number): void; + onLookAt(level: net.minecraft.client.multiplayer.ClientLevel | null | undefined, hit: net.minecraft.world.phys.HitResult | null | undefined): void; + onDestroyBlock(level: net.minecraft.client.multiplayer.ClientLevel, pos: net.minecraft.core.BlockPos, state: net.minecraft.world.level.block.state.BlockState, percent: number): void; + onOpenInventory(): void; + onGetItem(itemStack: net.minecraft.world.item.ItemStack): void; + stop(): void; + start(): void; + tick(): void; + setStep(step: net.minecraft.client.tutorial.TutorialSteps): void; + getMinecraft(): net.minecraft.client.Minecraft; + isSurvival(): boolean; + onInventoryAction(itemCarried: net.minecraft.world.item.ItemStack, itemInSlot: net.minecraft.world.item.ItemStack, clickAction: net.minecraft.world.inventory.ClickAction): void; } - interface TelemetryProperty$GameMode extends kotlin.Enum, net.minecraft.util.StringRepresentable { - id(): number; + interface TutorialStepInstance { + clear(): void; + tick(): void; + onInput(input: net.minecraft.client.player.ClientInput): void; + onMouse(xd: number, yd: number): void; + onLookAt(level: net.minecraft.client.multiplayer.ClientLevel, hit: net.minecraft.world.phys.HitResult): void; + onDestroyBlock(level: net.minecraft.client.multiplayer.ClientLevel, pos: net.minecraft.core.BlockPos, state: net.minecraft.world.level.block.state.BlockState, percent: number): void; + onOpenInventory(): void; + onGetItem(itemStack: net.minecraft.world.item.ItemStack): void; } - const TelemetryProperty$ServerType: { - REALM: net.minecraft.client.telemetry.TelemetryProperty$ServerType; - LOCAL: net.minecraft.client.telemetry.TelemetryProperty$ServerType; - OTHER: net.minecraft.client.telemetry.TelemetryProperty$ServerType; - CODEC: com.mojang.serialization.Codec; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.client.telemetry.TelemetryProperty$ServerType; + } + namespace color { + namespace block { + const BlockColors: { + LILY_PAD_IN_WORLD: number; + LILY_PAD_DEFAULT: number; + new(): net.minecraft.client.color.block.BlockColors; + createDefault(): net.minecraft.client.color.block.BlockColors; + } + interface BlockColors { + getTintSources(state: net.minecraft.world.level.block.state.BlockState): Array; + getTintSource(state: net.minecraft.world.level.block.state.BlockState, layer: number): net.minecraft.client.color.block.BlockTintSource | null | undefined; + register(layers: Array, blocks: net.minecraft.world.level.block.Block): void; + getColoringProperties(block: net.minecraft.world.level.block.Block): Set>; + } + interface BlockTintSource { + color(state: net.minecraft.world.level.block.state.BlockState): number; + colorInWorld(state: net.minecraft.world.level.block.state.BlockState, level: net.minecraft.client.renderer.block.BlockAndTintGetter, pos: net.minecraft.core.BlockPos): number; + colorAsTerrainParticle(state: net.minecraft.world.level.block.state.BlockState, level: net.minecraft.client.renderer.block.BlockAndTintGetter, pos: net.minecraft.core.BlockPos): number; + relevantProperties(): Set>; + } } - interface TelemetryProperty$ServerType extends kotlin.Enum, net.minecraft.util.StringRepresentable { + } + namespace quickplay { + const QuickPlayLog: { + Type: typeof net.minecraft.client.quickplay.QuickPlayLog$Type; + of(path: string | null | undefined): net.minecraft.client.quickplay.QuickPlayLog; } - interface TelemetryPropertyMap$Builder { - put(property: net.minecraft.client.telemetry.TelemetryProperty, value: T): net.minecraft.client.telemetry.TelemetryPropertyMap$Builder; - putIfNotNull(property: net.minecraft.client.telemetry.TelemetryProperty, value: T): net.minecraft.client.telemetry.TelemetryPropertyMap$Builder; - putAll(properties: net.minecraft.client.telemetry.TelemetryPropertyMap): net.minecraft.client.telemetry.TelemetryPropertyMap$Builder; - build(): net.minecraft.client.telemetry.TelemetryPropertyMap; + interface QuickPlayLog { + setWorldData(type: net.minecraft.client.quickplay.QuickPlayLog$Type, id: string, name: string): void; + log(minecraft: net.minecraft.client.Minecraft): void; } - interface TelemetryEventType$Builder { - defineAll(properties: Array>): net.minecraft.client.telemetry.TelemetryEventType$Builder; - define(property: net.minecraft.client.telemetry.TelemetryProperty): net.minecraft.client.telemetry.TelemetryEventType$Builder; - optIn(): net.minecraft.client.telemetry.TelemetryEventType$Builder; - register(): net.minecraft.client.telemetry.TelemetryEventType; + const QuickPlayLog$Type: { + SINGLEPLAYER: net.minecraft.client.quickplay.QuickPlayLog$Type; + MULTIPLAYER: net.minecraft.client.quickplay.QuickPlayLog$Type; + REALMS: net.minecraft.client.quickplay.QuickPlayLog$Type; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.quickplay.QuickPlayLog$Type; + } + interface QuickPlayLog$Type extends kotlin.Enum, net.minecraft.util.StringRepresentable { } } namespace server { @@ -16620,27 +16740,16 @@ declare global { new(serverThread: java.lang.Thread, minecraft: net.minecraft.client.Minecraft, levelStorageAccess: net.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess, packRepository: net.minecraft.server.packs.repository.PackRepository, worldStem: net.minecraft.server.WorldStem, gameRules: java.util.Optional, services: net.minecraft.server.Services, levelLoadListener: net.minecraft.server.level.progress.LevelLoadListener): net.minecraft.client.server.IntegratedServer; } interface IntegratedServer extends net.minecraft.server.MinecraftServer { + commandsAllowedForOtherPlayers(): boolean; + publishServer(scope: net.minecraft.server.MinecraftServer$MultiplayerScope, port: number): boolean; + setWorldGameType(gameMode: net.minecraft.world.level.GameType): void; + getGameTypeForOtherPlayers(): net.minecraft.world.level.GameType; + setGameTypeForOtherPlayers(gameMode: net.minecraft.world.level.GameType): void; + setWorldAllowCommands(allowCommands: boolean): void; + setCommandsAllowedForOtherPlayers(allowCommands: boolean): void; setUUID(uuid: java.util.UUID): void; getPerTickGizmos(): Array; - } - } - namespace searchtree { - const SearchTree: { - empty(): net.minecraft.client.searchtree.SearchTree; - plainText(elements: Array, idGetter: unknown): net.minecraft.client.searchtree.SearchTree; - } - interface SearchTree { - search(text: string): Array; - (text: string): Array; - } - } - namespace waypoints { - const ClientWaypointManager: { - new(): net.minecraft.client.waypoints.ClientWaypointManager; - } - interface ClientWaypointManager extends net.minecraft.world.waypoints.TrackedWaypointManager { - hasWaypoints(): boolean; - forEachWaypoint(fromEntity: net.minecraft.world.entity.Entity, consumer: unknown): void; + getMultiplayerScope(): net.minecraft.server.MinecraftServer$MultiplayerScope; } } const KeyMapping: { @@ -16668,6 +16777,7 @@ declare global { same(that: net.minecraft.client.KeyMapping): boolean; isUnbound(): boolean; matches(event: net.minecraft.client.input.KeyEvent): boolean; + matches(key: com.mojang.blaze3d.platform.InputConstants$Key): boolean; matchesMouse(event: net.minecraft.client.input.MouseButtonEvent): boolean; getTranslatedKeyMessage(): net.minecraft.network.chat.Component; isDefault(): boolean; @@ -16716,31 +16826,22 @@ declare global { getWidth(codepoint: number, style: net.minecraft.network.chat.Style): number; (codepoint: number, style: net.minecraft.network.chat.Style): number; } - const ClientClockManager: { - new(): net.minecraft.client.ClientClockManager; - } - interface ClientClockManager extends net.minecraft.world.clock.ClockManager { - tick(gameTime: number): void; - handleUpdates(gameTime: number, updates: Map, unknown>): void; - } const Minecraft: { DEFAULT_FONT: net.minecraft.resources.Identifier; - UNIFORM_FONT: net.minecraft.resources.Identifier; - ALT_FONT: net.minecraft.resources.Identifier; UPDATE_DRIVERS_ADVICE: string; new(gameConfig: net.minecraft.client.main.GameConfig): net.minecraft.client.Minecraft; checkModStatus(): net.minecraft.util.ModCheck; - saveReport(gameDirectory: java.io.File, crash: net.minecraft.CrashReport): number; - crash(minecraft: net.minecraft.client.Minecraft | null | undefined, gameDirectory: java.io.File, crash: net.minecraft.CrashReport): void; - renderNames(): boolean; - useShaderTransparency(): boolean; - fillReport(minecraft: net.minecraft.client.Minecraft | null | undefined, languageManager: net.minecraft.client.resources.language.LanguageManager | null | undefined, launchedVersion: string, options: net.minecraft.client.Options | null | undefined, report: net.minecraft.CrashReport): void; + saveReport(gameDirectory: java.io.File, crash: net.minecraft.CrashReport): void; + saveReport(gameDirectory: java.io.File, crash: net.minecraft.CrashReport, reportExitCode: number): number; + crash(minecraft: net.minecraft.client.Minecraft | null | undefined, gameDirectory: java.io.File, crash: net.minecraft.CrashReport, exitCode: number): void; + saveReportAndShutdownSoundManager(minecraft: net.minecraft.client.Minecraft | null | undefined, gameDirectory: java.io.File, crash: net.minecraft.CrashReport, exitCode: number): number; + fillReport(minecraft: net.minecraft.client.Minecraft | null | undefined, languageManager: net.minecraft.client.resources.language.LanguageManager | null | undefined, launchedVersion: string | null | undefined, options: net.minecraft.client.Options | null | undefined, report: net.minecraft.CrashReport): void; getInstance(): net.minecraft.client.Minecraft; getLauncherBrand(): string | null | undefined; } interface Minecraft extends net.minecraft.util.thread.ReentrantBlockableEventLoop, com.mojang.blaze3d.platform.WindowEventHandler { + levelExtractor: net.minecraft.client.renderer.extract.LevelExtractor; levelRenderer: net.minecraft.client.renderer.LevelRenderer; - blockModelResolver: net.minecraft.client.renderer.block.BlockModelResolver; particleEngine: net.minecraft.client.particle.ParticleEngine; font: net.minecraft.client.gui.Font; fontFilterFishy: net.minecraft.client.gui.Font; @@ -16757,18 +16858,16 @@ declare global { crosshairPickEntity: net.minecraft.world.entity.Entity | null | undefined; hitResult: net.minecraft.world.phys.HitResult | null | undefined; missTime: number; - screen: net.minecraft.client.gui.screens.Screen | null | undefined; wireframe: boolean; smartCull: boolean; + windowSurface(): com.mojang.blaze3d.systems.GpuSurface; textInputManager(): com.mojang.blaze3d.platform.TextInputManager; - renderBuffers(): net.minecraft.client.renderer.RenderBuffers; allowsMultiplayer(): boolean; realmsDataFetcher(): com.mojang.realmsclient.gui.RealmsDataFetcher; quickPlayLog(): net.minecraft.client.quickplay.QuickPlayLog; services(): net.minecraft.server.Services; playerSkinRenderCache(): net.minecraft.client.renderer.PlayerSkinRenderCache; isLocalServer(): boolean; - commandHistory(): net.minecraft.client.CommandHistory; directoryValidator(): net.minecraft.world.level.validation.DirectoryValidator; packetProcessor(): net.minecraft.network.PacketProcessor; hasShiftDown(): boolean; @@ -16777,20 +16876,16 @@ declare global { isGameLoadFinished(): boolean; updateTitle(): void; isOfflineDeveloperMode(): boolean; - clearResourcePacksOnError(t: kotlin.Throwable, message: net.minecraft.network.chat.Component | null | undefined, loadCookie: unknown): void; + clearResourcePacksOnError(t: kotlin.Throwable, message: net.minecraft.network.chat.Component | null | undefined, loadCookie: net.minecraft.client.GameLoadCookie | null | undefined): void; triggerResourcePackRecovery(exception: java.lang.Exception): void; run(): void; - getMainRenderTarget(): com.mojang.blaze3d.pipeline.RenderTarget; getLaunchedVersion(): string; - getVersionType(): string; emergencySaveAndCrash(partialReport: net.minecraft.CrashReport): void; isEnforceUnicode(): boolean; reloadResourcePacks(): java.util.concurrent.CompletableFuture; getLevelSource(): net.minecraft.world.level.storage.LevelStorageSource; - openChatScreen(chatMethod: net.minecraft.client.gui.components.ChatComponent$ChatMethod): void; - setScreen(screen: net.minecraft.client.gui.screens.Screen | null | undefined): void; - setOverlay(overlay: net.minecraft.client.gui.screens.Overlay | null | undefined): void; - destroy(): void; + exitWorldAndClose(): void; + renderFrame(advanceGameTime: boolean): void; getFps(): number; getFrameTimeNs(): number; sendLowDiskSpaceWarning(): void; @@ -16800,7 +16895,9 @@ declare global { pauseGame(suppressPauseMenuIfWeReallyArePausing: boolean): void; getMusicManager(): net.minecraft.client.sounds.MusicManager; tick(): void; + isMultiplayerServer(): boolean; getTelemetryManager(): net.minecraft.client.telemetry.ClientTelemetryManager; + getMetricsRecorder(): net.minecraft.util.profiling.metrics.profiling.MetricsRecorder; getGpuUtilization(): number; getProfileKeyPairManager(): net.minecraft.client.multiplayer.ProfileKeyPairManager; createWorldOpenFlows(): net.minecraft.client.gui.screens.worldselection.WorldOpenFlows; @@ -16819,9 +16916,14 @@ declare global { extraTelemetryAvailable(): boolean; allowsTelemetry(): boolean; allowsRealms(): boolean; + friendsEnabled(): boolean; + handleGlobalKeyPress(key: com.mojang.blaze3d.platform.InputConstants$Key, controlDown: boolean): boolean; + allowFriendRequests(): boolean; + allowChatOnlyWithFriend(): boolean; multiplayerBan(): com.mojang.authlib.minecraft.BanDetails | null | undefined; isNameBanned(): boolean; isBlocked(uuid: java.util.UUID): boolean; + isFriendOnlyRestricted(uuid: java.util.UUID): boolean; computeChatAbilities(): net.minecraft.client.multiplayer.chat.ChatAbilities; isDemo(): boolean; canSwitchGameMode(): boolean; @@ -16832,9 +16934,9 @@ declare global { getCurrentServer(): net.minecraft.client.multiplayer.ServerData | null | undefined; hasSingleplayerServer(): boolean; getSingleplayerServer(): net.minecraft.client.server.IntegratedServer | null | undefined; - isSingleplayer(): boolean; isLocalPlayer(profileId: java.util.UUID): boolean; getUser(): net.minecraft.client.User; + getProfileResult(): com.mojang.authlib.yggdrasil.ProfileResult | null | undefined; getGameProfile(): com.mojang.authlib.GameProfile; getProxy(): java.net.Proxy; getTextureManager(): net.minecraft.client.renderer.texture.TextureManager; @@ -16861,17 +16963,13 @@ declare global { getDeltaTracker(): net.minecraft.client.DeltaTracker; getBlockColors(): net.minecraft.client.color.block.BlockColors; showOnlyReducedInfo(): boolean; - getToastManager(): net.minecraft.client.gui.components.toasts.ToastManager; getTutorial(): net.minecraft.client.tutorial.Tutorial; isWindowActive(): boolean; getHotbarManager(): net.minecraft.client.HotbarManager; getModelManager(): net.minecraft.client.resources.model.ModelManager; getAtlasManager(): net.minecraft.client.resources.model.sprite.AtlasManager; getMapTextureManager(): net.minecraft.client.resources.MapTextureManager; - getWaypointStyles(): net.minecraft.client.resources.WaypointStyleManager; grabPanoramixScreenshot(folder: java.io.File): net.minecraft.network.chat.Component; - getSplashManager(): net.minecraft.client.resources.SplashManager; - getOverlay(): net.minecraft.client.gui.screens.Overlay | null | undefined; getPlayerSocialManager(): net.minecraft.client.gui.screens.social.PlayerSocialManager; getWindow(): com.mojang.blaze3d.platform.Window; onTextInputFocusChange(element: net.minecraft.client.gui.components.events.GuiEventListener, isFocused: boolean): void; @@ -16884,12 +16982,35 @@ declare global { getLastInputType(): net.minecraft.client.InputType; setLastInputType(lastInputType: net.minecraft.client.InputType): void; getNarrator(): net.minecraft.client.GameNarrator; - getChatListener(): net.minecraft.client.multiplayer.chat.ChatListener; getReportingContext(): net.minecraft.client.multiplayer.chat.report.ReportingContext; getItemModelResolver(): net.minecraft.client.renderer.item.ItemModelResolver; canInterruptScreen(): boolean; + invalidateSurfaceConfiguration(): void; collectPerTickGizmos(): net.minecraft.gizmos.Gizmos$TemporaryCollection; getPerTickGizmos(): Array; + showDebugChat(message: net.minecraft.network.chat.Component): void; + } + const DeltaTracker: { + DefaultValue: typeof net.minecraft.client.DeltaTracker$DefaultValue; + Timer: typeof net.minecraft.client.DeltaTracker$Timer; + ZERO: net.minecraft.client.DeltaTracker; + ONE: net.minecraft.client.DeltaTracker; + } + interface DeltaTracker { + getGameTimeDeltaTicks(): number; + getGameTimeDeltaPartialTick(ignoreFrozenGame: boolean): number; + getRealtimeDeltaTicks(): number; + } + interface DeltaTracker$DefaultValue extends net.minecraft.client.DeltaTracker { + } + const DeltaTracker$Timer: { + new(ticksPerSecond: number, currentMs: number, targetMsptProvider: it.unimi.dsi.fastutil.floats.FloatUnaryOperator): net.minecraft.client.DeltaTracker$Timer; + } + interface DeltaTracker$Timer extends net.minecraft.client.DeltaTracker { + advanceGameTime(currentMs: number): number; + advanceRealTime(currentMs: number): void; + updatePauseState(pauseState: boolean): void; + updateFrozenState(frozen: boolean): void; } const Camera: { NearPlane: typeof net.minecraft.client.Camera$NearPlane; @@ -16930,28 +17051,6 @@ declare global { enablePanoramicMode(): void; disablePanoramicMode(): void; } - const DeltaTracker: { - DefaultValue: typeof net.minecraft.client.DeltaTracker$DefaultValue; - Timer: typeof net.minecraft.client.DeltaTracker$Timer; - ZERO: net.minecraft.client.DeltaTracker; - ONE: net.minecraft.client.DeltaTracker; - } - interface DeltaTracker { - getGameTimeDeltaTicks(): number; - getGameTimeDeltaPartialTick(ignoreFrozenGame: boolean): number; - getRealtimeDeltaTicks(): number; - } - interface DeltaTracker$DefaultValue extends net.minecraft.client.DeltaTracker { - } - const DeltaTracker$Timer: { - new(ticksPerSecond: number, currentMs: number, targetMsptProvider: it.unimi.dsi.fastutil.floats.FloatUnaryOperator): net.minecraft.client.DeltaTracker$Timer; - } - interface DeltaTracker$Timer extends net.minecraft.client.DeltaTracker { - advanceGameTime(currentMs: number): number; - advanceRealTime(currentMs: number): void; - updatePauseState(pauseState: boolean): void; - updateFrozenState(frozen: boolean): void; - } interface Camera$NearPlane { getTopLeft(): net.minecraft.world.phys.Vec3; getTopRight(): net.minecraft.world.phys.Vec3; @@ -16959,6 +17058,35 @@ declare global { getBottomRight(): net.minecraft.world.phys.Vec3; getPointOnPlane(x: number, y: number): net.minecraft.world.phys.Vec3; } + const ClientClockManager: { + new(): net.minecraft.client.ClientClockManager; + } + interface ClientClockManager extends net.minecraft.world.clock.ClockManager { + tick(gameTime: number): void; + handleUpdates(gameTime: number, updates: Map, unknown>): void; + } + const ClientRecipeBook: { + new(): net.minecraft.client.ClientRecipeBook; + } + interface ClientRecipeBook extends net.minecraft.stats.RecipeBook { + add(display: net.minecraft.world.item.crafting.display.RecipeDisplayEntry): void; + remove(id: net.minecraft.world.item.crafting.display.RecipeDisplayId): void; + clear(): void; + willHighlight(recipe: net.minecraft.world.item.crafting.display.RecipeDisplayId): boolean; + removeHighlight(id: net.minecraft.world.item.crafting.display.RecipeDisplayId): void; + addHighlight(id: net.minecraft.world.item.crafting.display.RecipeDisplayId): void; + rebuildCollections(): void; + getCollections(): Array; + getCollection(category: net.minecraft.world.item.crafting.ExtendedRecipeBookCategory): Array; + } + const DebugQueryHandler: { + new(connection: net.minecraft.client.multiplayer.ClientPacketListener): net.minecraft.client.DebugQueryHandler; + } + interface DebugQueryHandler { + handleResponse(transactionId: number, tag: net.minecraft.nbt.CompoundTag | null | undefined): boolean; + queryEntityTag(entityId: number, callback: unknown): void; + queryBlockEntityTag(blockPos: net.minecraft.core.BlockPos, callback: unknown): void; + } const Options: { RENDER_DISTANCE_SHORT: number; RENDER_DISTANCE_FAR: number; @@ -17001,6 +17129,7 @@ declare global { keyChat: net.minecraft.client.KeyMapping; keyPlayerList: net.minecraft.client.KeyMapping; keyCommand: net.minecraft.client.KeyMapping; + keyFriends: net.minecraft.client.KeyMapping; keySocialInteractions: net.minecraft.client.KeyMapping; keyScreenshot: net.minecraft.client.KeyMapping; keyTogglePerspective: net.minecraft.client.KeyMapping; @@ -17039,7 +17168,6 @@ declare global { keyDebugLightmapTexture: net.minecraft.client.KeyMapping; debugKeys: Array; keyMappings: Array; - hideGui: boolean; lastMpIp: string; smoothCamera: boolean; languageCode: string; @@ -17054,6 +17182,7 @@ declare global { simulationDistance(): net.minecraft.client.OptionInstance; entityDistanceScaling(): net.minecraft.client.OptionInstance; framerateLimit(): net.minecraft.client.OptionInstance; + preferredGraphicsBackend(): net.minecraft.client.OptionInstance; graphicsPreset(): net.minecraft.client.OptionInstance; inactivityFpsLimit(): net.minecraft.client.OptionInstance; cloudStatus(): net.minecraft.client.OptionInstance; @@ -17064,7 +17193,7 @@ declare global { improvedTransparency(): net.minecraft.client.OptionInstance; ambientOcclusion(): net.minecraft.client.OptionInstance; chunkSectionFadeInTime(): net.minecraft.client.OptionInstance; - prioritizeChunkUpdates(): net.minecraft.client.OptionInstance; + prioritizeChunkUpdates(): net.minecraft.client.OptionInstance; chatVisibility(): net.minecraft.client.OptionInstance; chatOpacity(): net.minecraft.client.OptionInstance; chatLineSpacing(): net.minecraft.client.OptionInstance; @@ -17105,10 +17234,11 @@ declare global { realmsNotifications(): net.minecraft.client.OptionInstance; allowServerListing(): net.minecraft.client.OptionInstance; reducedDebugInfo(): net.minecraft.client.OptionInstance; + inGameNotification(): net.minecraft.client.OptionInstance; + sharePresence(): net.minecraft.client.OptionInstance; showSubtitles(): net.minecraft.client.OptionInstance; directionalAudio(): net.minecraft.client.OptionInstance; backgroundForChatOnly(): net.minecraft.client.OptionInstance; - touchscreen(): net.minecraft.client.OptionInstance; fullscreen(): net.minecraft.client.OptionInstance; exclusiveFullscreen(): net.minecraft.client.OptionInstance; bobView(): net.minecraft.client.OptionInstance; @@ -17136,6 +17266,7 @@ declare global { soundDevice(): net.minecraft.client.OptionInstance; musicFrequency(): net.minecraft.client.OptionInstance; musicToast(): net.minecraft.client.OptionInstance; + isRestartRequiredToApplyVideoSettings(): boolean; applyGraphicsPreset(value: net.minecraft.client.GraphicsPreset): void; updateResourcePacks(packRepository: net.minecraft.server.packs.repository.PackRepository): void; getMenuBackgroundBlurriness(): number; @@ -17175,64 +17306,97 @@ declare global { AltEnum: typeof net.minecraft.client.OptionInstance$AltEnum; BOOLEAN_VALUES: net.minecraft.client.OptionInstance$Enum; BOOLEAN_TO_STRING: net.minecraft.client.OptionInstance$CaptionBasedToString; - new(captionId: string, tooltip: net.minecraft.client.OptionInstance$TooltipSupplier, toString: net.minecraft.client.OptionInstance$CaptionBasedToString, values: unknown, initialValue: T, onValueUpdate: unknown): net.minecraft.client.OptionInstance; - new(captionId: string, tooltip: net.minecraft.client.OptionInstance$TooltipSupplier, toString: net.minecraft.client.OptionInstance$CaptionBasedToString, values: unknown, codec: com.mojang.serialization.Codec, initialValue: T, onValueUpdate: unknown): net.minecraft.client.OptionInstance; - createBoolean(captionId: string, initialValue: boolean, onValueUpdate: unknown): net.minecraft.client.OptionInstance; + NO_ACTION: net.minecraft.client.OptionInstance$ValueUpdateListener; + new(captionId: string, tooltip: net.minecraft.client.OptionInstance$TooltipSupplier, toString: net.minecraft.client.OptionInstance$CaptionBasedToString, values: net.minecraft.client.OptionInstance$ValueSet, initialValue: T, onValueUpdate: net.minecraft.client.OptionInstance$ValueUpdateListener): net.minecraft.client.OptionInstance; + new(captionId: string, tooltip: net.minecraft.client.OptionInstance$TooltipSupplier, toString: net.minecraft.client.OptionInstance$CaptionBasedToString, values: net.minecraft.client.OptionInstance$ValueSet, codec: com.mojang.serialization.Codec, initialValue: T, onValueUpdate: net.minecraft.client.OptionInstance$ValueUpdateListener): net.minecraft.client.OptionInstance; + createBoolean(captionId: string, initialValue: boolean, onValueUpdate: net.minecraft.client.OptionInstance$ValueUpdateListener): net.minecraft.client.OptionInstance; createBoolean(captionId: string, initialValue: boolean): net.minecraft.client.OptionInstance; createBoolean(captionId: string, tooltip: net.minecraft.client.OptionInstance$TooltipSupplier, initialValue: boolean): net.minecraft.client.OptionInstance; - createBoolean(captionId: string, tooltip: net.minecraft.client.OptionInstance$TooltipSupplier, initialValue: boolean, onValueUpdate: unknown): net.minecraft.client.OptionInstance; - createBoolean(captionId: string, tooltip: net.minecraft.client.OptionInstance$TooltipSupplier, toString: net.minecraft.client.OptionInstance$CaptionBasedToString, initialValue: boolean, onValueUpdate: unknown): net.minecraft.client.OptionInstance; + createBoolean(captionId: string, tooltip: net.minecraft.client.OptionInstance$TooltipSupplier, initialValue: boolean, onValueUpdate: net.minecraft.client.OptionInstance$ValueUpdateListener): net.minecraft.client.OptionInstance; + createBoolean(captionId: string, tooltip: net.minecraft.client.OptionInstance$TooltipSupplier, toString: net.minecraft.client.OptionInstance$CaptionBasedToString, initialValue: boolean, onValueUpdate: net.minecraft.client.OptionInstance$ValueUpdateListener): net.minecraft.client.OptionInstance; noTooltip(): net.minecraft.client.OptionInstance$TooltipSupplier; cachedConstantTooltip(tooltipComponent: net.minecraft.network.chat.Component): net.minecraft.client.OptionInstance$TooltipSupplier; } interface OptionInstance { - values(): unknown; + values(): net.minecraft.client.OptionInstance$ValueSet; codec(): com.mojang.serialization.Codec; createButton(options: net.minecraft.client.Options): net.minecraft.client.gui.components.AbstractWidget; createButton(options: net.minecraft.client.Options, x: number, y: number, width: number): net.minecraft.client.gui.components.AbstractWidget; - createButton(options: net.minecraft.client.Options, x: number, y: number, width: number, onValueChanged: unknown): net.minecraft.client.gui.components.AbstractWidget; + createButton(options: net.minecraft.client.Options, x: number, y: number, width: number, onValueChanged: net.minecraft.client.OptionInstance$ValueUpdateListener): net.minecraft.client.gui.components.AbstractWidget; get(): T; set(value: T): void; } + interface OptionInstance$ValueSet { + createButton(tooltip: net.minecraft.client.OptionInstance$TooltipSupplier, options: net.minecraft.client.Options, x: number, y: number, width: number, onValueChanged: net.minecraft.client.OptionInstance$ValueUpdateListener): unknown; + validateValue(value: T): java.util.Optional; + codec(): com.mojang.serialization.Codec; + } interface OptionInstance$TooltipSupplier { apply(value: T): net.minecraft.client.gui.components.Tooltip | null | undefined; (value: T): net.minecraft.client.gui.components.Tooltip | null | undefined; } + interface OptionInstance$ValueUpdateListener { + valueChanged(newValue: T): void; + (newValue: T): void; + } interface OptionInstance$CaptionBasedToString { + (caption: net.minecraft.network.chat.Component, value: T): net.minecraft.network.chat.Component; } const OptionInstance$Enum: { new(values: Array, codec: com.mojang.serialization.Codec): net.minecraft.client.OptionInstance$Enum; } - interface OptionInstance$Enum extends java.lang.Record { + interface OptionInstance$Enum extends java.lang.Record, net.minecraft.client.OptionInstance$CycleableValueSet { values(): Array; } + interface OptionInstance$CycleableValueSet extends net.minecraft.client.OptionInstance$ValueSet { + valueListSupplier(): net.minecraft.client.gui.components.CycleButton$ValueListSupplier; + valueSetter(): unknown; + } + interface OptionInstance$CycleableValueSet$ValueSetter { + set(instance: net.minecraft.client.OptionInstance, value: T): void; + } const OptionInstance$UnitDouble: { INSTANCE: net.minecraft.client.OptionInstance$UnitDouble; entries: kotlin.enums.EnumEntries; values(): Array; valueOf(value: string): net.minecraft.client.OptionInstance$UnitDouble; } - interface OptionInstance$UnitDouble extends kotlin.Enum { - xmap(to: unknown, from: unknown): unknown; + interface OptionInstance$UnitDouble extends kotlin.Enum, net.minecraft.client.OptionInstance$SliderableValueSet { + xmap(to: unknown, from: unknown): net.minecraft.client.OptionInstance$SliderableValueSet; + } + interface OptionInstance$SliderableValueSet extends net.minecraft.client.OptionInstance$ValueSet { + toSliderValue(value: T): number; + next(current: T): java.util.Optional; + previous(current: T): java.util.Optional; + fromSliderValue(slider: number): T; + applyValueImmediately(): boolean; } const OptionInstance$SliderableEnum: { new(values: Array, codec: com.mojang.serialization.Codec): net.minecraft.client.OptionInstance$SliderableEnum; } - interface OptionInstance$SliderableEnum extends java.lang.Record { + interface OptionInstance$SliderableEnum extends java.lang.Record, net.minecraft.client.OptionInstance$SliderableValueSet { values(): Array; } const OptionInstance$ClampingLazyMaxIntRange: { new(minInclusive: number, maxSupplier: unknown, encodableMaxInclusive: number): net.minecraft.client.OptionInstance$ClampingLazyMaxIntRange; } - interface OptionInstance$ClampingLazyMaxIntRange extends java.lang.Record { + interface OptionInstance$ClampingLazyMaxIntRange extends java.lang.Record, net.minecraft.client.OptionInstance$IntRangeBase, net.minecraft.client.OptionInstance$SliderableOrCyclableValueSet { maxSupplier(): unknown; encodableMaxInclusive(): number; } + interface OptionInstance$IntRangeBase extends net.minecraft.client.OptionInstance$SliderableValueSet { + minInclusive(): number; + maxInclusive(): number; + xmap(to: unknown, from: unknown, discrete: boolean): net.minecraft.client.OptionInstance$SliderableValueSet; + } + interface OptionInstance$SliderableOrCyclableValueSet extends net.minecraft.client.OptionInstance$SliderableValueSet, net.minecraft.client.OptionInstance$CycleableValueSet { + createCycleButton(): boolean; + } const OptionInstance$IntRange: { new(minInclusive: number, maxInclusive: number): net.minecraft.client.OptionInstance$IntRange; new(minInclusive: number, maxInclusive: number, applyValueImmediately: boolean): net.minecraft.client.OptionInstance$IntRange; } - interface OptionInstance$IntRange extends java.lang.Record { + interface OptionInstance$IntRange extends java.lang.Record, net.minecraft.client.OptionInstance$IntRangeBase { } interface OptionInstance$OptionInstanceSliderButton extends net.minecraft.client.gui.components.AbstractOptionSliderButton, net.minecraft.client.gui.components.ResettableOptionWidget { applyUnsavedValue(): void; @@ -17240,21 +17404,18 @@ declare global { const OptionInstance$LazyEnum: { new(values: unknown, validateValue: unknown, codec: com.mojang.serialization.Codec): net.minecraft.client.OptionInstance$LazyEnum; } - interface OptionInstance$LazyEnum extends java.lang.Record { + interface OptionInstance$LazyEnum extends java.lang.Record, net.minecraft.client.OptionInstance$CycleableValueSet { validateValue(): unknown; values(): unknown; } const OptionInstance$AltEnum: { new(values: Array, altValues: Array, altCondition: unknown, valueSetter: unknown, codec: com.mojang.serialization.Codec): net.minecraft.client.OptionInstance$AltEnum; } - interface OptionInstance$AltEnum extends java.lang.Record { + interface OptionInstance$AltEnum extends java.lang.Record, net.minecraft.client.OptionInstance$CycleableValueSet { values(): Array; altValues(): Array; altCondition(): unknown; } - interface OptionInstance$CycleableValueSet$ValueSetter { - set(instance: net.minecraft.client.OptionInstance, value: T): void; - } const GraphicsPreset: { FAST: net.minecraft.client.GraphicsPreset; FANCY: net.minecraft.client.GraphicsPreset; @@ -17268,7 +17429,6 @@ declare global { interface GraphicsPreset extends kotlin.Enum, net.minecraft.util.StringRepresentable { getKey(): string; apply(minecraft: net.minecraft.client.Minecraft): void; - set(screen: net.minecraft.client.gui.screens.options.OptionsSubScreen | null | undefined, option: net.minecraft.client.OptionInstance, value: T): void; } const CloudStatus: { OFF: net.minecraft.client.CloudStatus; @@ -17302,19 +17462,9 @@ declare global { process(name: string, value: number): number; process(name: string, value: T, reader: unknown, writer: unknown): T; } - const ClientRecipeBook: { - new(): net.minecraft.client.ClientRecipeBook; - } - interface ClientRecipeBook extends net.minecraft.stats.RecipeBook { - add(display: net.minecraft.world.item.crafting.display.RecipeDisplayEntry): void; - remove(id: net.minecraft.world.item.crafting.display.RecipeDisplayId): void; - clear(): void; - willHighlight(recipe: net.minecraft.world.item.crafting.display.RecipeDisplayId): boolean; - removeHighlight(id: net.minecraft.world.item.crafting.display.RecipeDisplayId): void; - addHighlight(id: net.minecraft.world.item.crafting.display.RecipeDisplayId): void; - rebuildCollections(): void; - getCollections(): Array; - getCollection(category: net.minecraft.world.item.crafting.ExtendedRecipeBookCategory): Array; + interface RotatingSectionStorage$Value { + setSectionNode(sectionNode: number): void; + getSectionNode(): number; } const TextureFilteringMethod: { NONE: net.minecraft.client.TextureFilteringMethod; @@ -17328,6 +17478,51 @@ declare global { interface TextureFilteringMethod extends kotlin.Enum { caption(): net.minecraft.network.chat.Component; } + const PrioritizeChunkUpdates: { + NONE: net.minecraft.client.PrioritizeChunkUpdates; + PLAYER_AFFECTED: net.minecraft.client.PrioritizeChunkUpdates; + NEARBY: net.minecraft.client.PrioritizeChunkUpdates; + LEGACY_CODEC: com.mojang.serialization.Codec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.PrioritizeChunkUpdates; + } + interface PrioritizeChunkUpdates extends kotlin.Enum { + caption(): net.minecraft.network.chat.Component; + } + const User: { + new(name: string, uuid: java.util.UUID, accessToken: string, xuid: java.util.Optional, clientId: java.util.Optional): net.minecraft.client.User; + } + interface User { + getSessionId(): string; + getProfileId(): java.util.UUID; + getName(): string; + getAccessToken(): string; + getClientId(): java.util.Optional; + getXuid(): java.util.Optional; + } + const MusicToastDisplayState: { + NEVER: net.minecraft.client.MusicToastDisplayState; + PAUSE: net.minecraft.client.MusicToastDisplayState; + PAUSE_AND_TOAST: net.minecraft.client.MusicToastDisplayState; + CODEC: com.mojang.serialization.Codec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.MusicToastDisplayState; + } + interface MusicToastDisplayState extends kotlin.Enum, net.minecraft.util.StringRepresentable { + text(): net.minecraft.network.chat.Component; + tooltip(): net.minecraft.network.chat.Component; + renderInPauseScreen(): boolean; + renderToast(): boolean; + } + const GameLoadCookie: { + new(realmsClient: com.mojang.realmsclient.client.RealmsClient, quickPlayData: net.minecraft.client.main.GameConfig$QuickPlayData): net.minecraft.client.GameLoadCookie; + } + interface GameLoadCookie extends java.lang.Record { + realmsClient(): com.mojang.realmsclient.client.RealmsClient; + quickPlayData(): net.minecraft.client.main.GameConfig$QuickPlayData; + } const MouseHandler: { DOUBLE_CLICK_THRESHOLD_MS: number; new(minecraft: net.minecraft.client.Minecraft): net.minecraft.client.MouseHandler; @@ -17364,39 +17559,6 @@ declare global { setClipboard(clipboard: string): void; tick(): void; } - const CommandHistory: { - new(gameFolder: java.nio.file.Path): net.minecraft.client.CommandHistory; - } - interface CommandHistory { - addCommand(command: string): void; - history(): Array; - } - const User: { - new(name: string, uuid: java.util.UUID, accessToken: string, xuid: java.util.Optional, clientId: java.util.Optional): net.minecraft.client.User; - } - interface User { - getSessionId(): string; - getProfileId(): java.util.UUID; - getName(): string; - getAccessToken(): string; - getClientId(): java.util.Optional; - getXuid(): java.util.Optional; - } - const MusicToastDisplayState: { - NEVER: net.minecraft.client.MusicToastDisplayState; - PAUSE: net.minecraft.client.MusicToastDisplayState; - PAUSE_AND_TOAST: net.minecraft.client.MusicToastDisplayState; - CODEC: com.mojang.serialization.Codec; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.client.MusicToastDisplayState; - } - interface MusicToastDisplayState extends kotlin.Enum, net.minecraft.util.StringRepresentable { - text(): net.minecraft.network.chat.Component; - tooltip(): net.minecraft.network.chat.Component; - renderInPauseScreen(): boolean; - renderToast(): boolean; - } const HotbarManager: { NUM_HOTBAR_GROUPS: number; new(workingDirectory: java.nio.file.Path, fixerUpper: com.mojang.datafixers.DataFixer): net.minecraft.client.HotbarManager; @@ -17458,13 +17620,18 @@ declare global { } interface GameNarrator$NarratorInitException extends net.minecraft.client.main.SilentInitException { } - const DebugQueryHandler: { - new(connection: net.minecraft.client.multiplayer.ClientPacketListener): net.minecraft.client.DebugQueryHandler; + const PreferredGraphicsApi: { + DEFAULT: net.minecraft.client.PreferredGraphicsApi; + OPENGL: net.minecraft.client.PreferredGraphicsApi; + VULKAN: net.minecraft.client.PreferredGraphicsApi; + CODEC: com.mojang.serialization.Codec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.client.PreferredGraphicsApi; } - interface DebugQueryHandler { - handleResponse(transactionId: number, tag: net.minecraft.nbt.CompoundTag | null | undefined): boolean; - queryEntityTag(entityId: number, callback: unknown): void; - queryBlockEntityTag(blockPos: net.minecraft.core.BlockPos, callback: unknown): void; + interface PreferredGraphicsApi extends kotlin.Enum, net.minecraft.util.StringRepresentable { + caption(): net.minecraft.network.chat.Component; + getBackendsToTry(): Array; } } namespace network { @@ -17588,6 +17755,22 @@ declare global { } const TextColor: { CODEC: com.mojang.serialization.Codec; + BLACK: net.minecraft.network.chat.TextColor; + DARK_BLUE: net.minecraft.network.chat.TextColor; + DARK_GREEN: net.minecraft.network.chat.TextColor; + DARK_AQUA: net.minecraft.network.chat.TextColor; + DARK_RED: net.minecraft.network.chat.TextColor; + DARK_PURPLE: net.minecraft.network.chat.TextColor; + GOLD: net.minecraft.network.chat.TextColor; + GRAY: net.minecraft.network.chat.TextColor; + DARK_GRAY: net.minecraft.network.chat.TextColor; + BLUE: net.minecraft.network.chat.TextColor; + GREEN: net.minecraft.network.chat.TextColor; + AQUA: net.minecraft.network.chat.TextColor; + RED: net.minecraft.network.chat.TextColor; + LIGHT_PURPLE: net.minecraft.network.chat.TextColor; + YELLOW: net.minecraft.network.chat.TextColor; + WHITE: net.minecraft.network.chat.TextColor; fromLegacyFormat(format: net.minecraft.ChatFormatting): net.minecraft.network.chat.TextColor | null | undefined; fromRgb(rgb: number): net.minecraft.network.chat.TextColor; parseColor(color: string): com.mojang.serialization.DataResult; @@ -17739,6 +17922,7 @@ declare global { withStyle(formats: net.minecraft.ChatFormatting): net.minecraft.network.chat.MutableComponent; withStyle(format: net.minecraft.ChatFormatting): net.minecraft.network.chat.MutableComponent; withColor(color: number): net.minecraft.network.chat.MutableComponent; + withColor(color: net.minecraft.network.chat.TextColor): net.minecraft.network.chat.MutableComponent; withoutShadow(): net.minecraft.network.chat.MutableComponent; } interface ComponentContents { @@ -19022,7 +19206,7 @@ declare global { } const ClientboundLoginPacket: { STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - new(playerId: number, hardcore: boolean, levels: Set>, maxPlayers: number, chunkRadius: number, simulationDistance: number, reducedDebugInfo: boolean, showDeathScreen: boolean, doLimitedCrafting: boolean, commonPlayerSpawnInfo: net.minecraft.network.protocol.game.CommonPlayerSpawnInfo, enforcesSecureChat: boolean): net.minecraft.network.protocol.game.ClientboundLoginPacket; + new(playerId: number, hardcore: boolean, levels: Set>, maxPlayers: number, chunkRadius: number, simulationDistance: number, reducedDebugInfo: boolean, showDeathScreen: boolean, doLimitedCrafting: boolean, commonPlayerSpawnInfo: net.minecraft.network.protocol.game.CommonPlayerSpawnInfo, onlineMode: boolean, enforcesSecureChat: boolean): net.minecraft.network.protocol.game.ClientboundLoginPacket; } interface ClientboundLoginPacket extends java.lang.Record, net.minecraft.network.protocol.Packet { playerId(): number; @@ -19035,6 +19219,7 @@ declare global { showDeathScreen(): boolean; doLimitedCrafting(): boolean; commonPlayerSpawnInfo(): net.minecraft.network.protocol.game.CommonPlayerSpawnInfo; + onlineMode(): boolean; enforcesSecureChat(): boolean; } const CommonPlayerSpawnInfo: { @@ -19329,18 +19514,18 @@ declare global { interface ClientboundSetPlayerTeamPacket$Action extends kotlin.Enum { } const ClientboundSetPlayerTeamPacket$Parameters: { + STREAM_CODEC: net.minecraft.network.codec.StreamCodec; new(team: net.minecraft.world.scores.PlayerTeam): net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket$Parameters; - new(input: net.minecraft.network.RegistryFriendlyByteBuf): net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket$Parameters; + new(displayName: net.minecraft.network.chat.Component, playerPrefix: net.minecraft.network.chat.Component, playerSuffix: net.minecraft.network.chat.Component, nameTagVisibility: net.minecraft.world.scores.Team$Visibility, collisionRule: net.minecraft.world.scores.Team$CollisionRule, color: java.util.Optional, options: number): net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket$Parameters; } - interface ClientboundSetPlayerTeamPacket$Parameters { - getDisplayName(): net.minecraft.network.chat.Component; - getOptions(): number; - getColor(): net.minecraft.ChatFormatting; - getNametagVisibility(): net.minecraft.world.scores.Team$Visibility; - getCollisionRule(): net.minecraft.world.scores.Team$CollisionRule; - getPlayerPrefix(): net.minecraft.network.chat.Component; - getPlayerSuffix(): net.minecraft.network.chat.Component; - write(output: net.minecraft.network.RegistryFriendlyByteBuf): void; + interface ClientboundSetPlayerTeamPacket$Parameters extends java.lang.Record { + displayName(): net.minecraft.network.chat.Component; + playerPrefix(): net.minecraft.network.chat.Component; + playerSuffix(): net.minecraft.network.chat.Component; + nameTagVisibility(): net.minecraft.world.scores.Team$Visibility; + collisionRule(): net.minecraft.world.scores.Team$CollisionRule; + color(): java.util.Optional; + options(): number; } const ClientboundSetScorePacket: { STREAM_CODEC: net.minecraft.network.codec.StreamCodec; @@ -19978,7 +20163,7 @@ declare global { handleContainerClose(packet: net.minecraft.network.protocol.game.ServerboundContainerClosePacket): void; handleAttack(packet: net.minecraft.network.protocol.game.ServerboundAttackPacket): void; handleInteract(packet: net.minecraft.network.protocol.game.ServerboundInteractPacket): void; - handleSpectateEntity(packet: net.minecraft.network.protocol.game.ServerboundSpectateEntityPacket): void; + handleSpectatorAction(packet: net.minecraft.network.protocol.game.ServerboundSpectatorActionPacket): void; handleMovePlayer(packet: net.minecraft.network.protocol.game.ServerboundMovePlayerPacket): void; handlePlayerAbilities(packet: net.minecraft.network.protocol.game.ServerboundPlayerAbilitiesPacket): void; handlePlayerAction(packet: net.minecraft.network.protocol.game.ServerboundPlayerActionPacket): void; @@ -20140,12 +20325,12 @@ declare global { location(): net.minecraft.world.phys.Vec3; usingSecondaryAction(): boolean; } - const ServerboundSpectateEntityPacket: { - STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - new(entityId: number): net.minecraft.network.protocol.game.ServerboundSpectateEntityPacket; + const ServerboundSpectatorActionPacket: { + STREAM_CODEC: net.minecraft.network.codec.StreamCodec; + new(spectateEntityId: java.util.OptionalInt): net.minecraft.network.protocol.game.ServerboundSpectatorActionPacket; } - interface ServerboundSpectateEntityPacket extends java.lang.Record, net.minecraft.network.protocol.Packet { - entityId(): number; + interface ServerboundSpectatorActionPacket extends java.lang.Record, net.minecraft.network.protocol.Packet { + spectateEntityId(): java.util.OptionalInt; } const ServerboundMovePlayerPacket: { StatusOnly: typeof net.minecraft.network.protocol.game.ServerboundMovePlayerPacket$StatusOnly; @@ -20734,10 +20919,11 @@ declare global { } const ClientboundLoginFinishedPacket: { STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - new(gameProfile: com.mojang.authlib.GameProfile): net.minecraft.network.protocol.login.ClientboundLoginFinishedPacket; + new(gameProfile: com.mojang.authlib.GameProfile, sessionId: java.util.UUID): net.minecraft.network.protocol.login.ClientboundLoginFinishedPacket; } interface ClientboundLoginFinishedPacket extends java.lang.Record, net.minecraft.network.protocol.Packet { gameProfile(): com.mojang.authlib.GameProfile; + sessionId(): java.util.UUID; } const ClientboundLoginDisconnectPacket: { STREAM_CODEC: net.minecraft.network.codec.StreamCodec; @@ -20961,14 +21147,6 @@ declare global { } interface ClientboundPacketListener extends net.minecraft.network.PacketListener { } - const PacketProcessor: { - new(runningThread: java.lang.Thread): net.minecraft.network.PacketProcessor; - } - interface PacketProcessor extends java.lang.AutoCloseable { - isSameThread(): boolean; - scheduleIfPossible(listener: T, packet: net.minecraft.network.protocol.Packet): void; - processQueuedPackets(): void; - } const Connection: { ROOT_MARKER: org.slf4j.Marker; PACKET_MARKER: org.slf4j.Marker; @@ -20980,6 +21158,7 @@ declare global { configureSerialization(pipeline: io.netty.channel.ChannelPipeline, inboundDirection: net.minecraft.network.protocol.PacketFlow, local: boolean, monitor: net.minecraft.network.BandwidthDebugMonitor | null | undefined): void; configureInMemoryPipeline(pipeline: io.netty.channel.ChannelPipeline, packetFlow: net.minecraft.network.protocol.PacketFlow): void; connectToLocalServer(address: java.net.SocketAddress): net.minecraft.network.Connection; + fromChannel(channel: io.netty.channel.Channel, flow: net.minecraft.network.protocol.PacketFlow, bandwidthLogger: net.minecraft.util.debugchart.LocalSampleLogger | null | undefined): net.minecraft.network.Connection; } interface Connection extends io.netty.channel.SimpleChannelInboundHandler>, net.fabricmc.fabric.api.networking.v1.context.PacketContextProvider { setupInboundProtocol(protocol: net.minecraft.network.ProtocolInfo, packetListener: T): void; @@ -21003,7 +21182,6 @@ declare global { getSending(): net.minecraft.network.protocol.PacketFlow; configurePacketHandler(pipeline: io.netty.channel.ChannelPipeline): void; setEncryptionKey(decryptCipher: javax.crypto.Cipher, encryptCipher: javax.crypto.Cipher): void; - isEncrypted(): boolean; isConnected(): boolean; isConnecting(): boolean; getPacketListener(): net.minecraft.network.PacketListener | null | undefined; @@ -21014,6 +21192,8 @@ declare global { getAverageReceivedPackets(): number; getAverageSentPackets(): number; setBandwidthLogger(bandwidthLogger: net.minecraft.util.debugchart.LocalSampleLogger): void; + setIntendedProfileId(profileId: java.util.UUID): void; + getIntendedProfileId(): java.util.UUID | null | undefined; } interface ProtocolInfo { id(): net.minecraft.network.ConnectionProtocol; @@ -21040,6 +21220,14 @@ declare global { onReceive(bytes: number): void; tick(): void; } + const PacketProcessor: { + new(runningThread: java.lang.Thread): net.minecraft.network.PacketProcessor; + } + interface PacketProcessor extends java.lang.AutoCloseable { + isSameThread(): boolean; + scheduleIfPossible(listener: T, packet: net.minecraft.network.protocol.Packet): void; + processQueuedPackets(): void; + } const HashedStack: { ActualItem: typeof net.minecraft.network.HashedStack$ActualItem; EMPTY: net.minecraft.network.HashedStack; @@ -21289,6 +21477,17 @@ declare global { } namespace profiling { namespace metrics { + namespace profiling { + interface MetricsRecorder { + end(): void; + cancel(): void; + startTick(): void; + sampleDuringExtract(): void; + isRecording(): boolean; + getProfiler(): net.minecraft.util.profiling.ProfilerFiller; + endTick(): void; + } + } interface ProfilerMeasured { profiledMetrics(): Array; } @@ -21426,6 +21625,7 @@ declare global { Builder: typeof net.minecraft.util.random.WeightedList$Builder; of(): net.minecraft.util.random.WeightedList; of(value: E): net.minecraft.util.random.WeightedList; + of(items: E): net.minecraft.util.random.WeightedList; of(items: net.minecraft.util.random.Weighted): net.minecraft.util.random.WeightedList; of(items: Array>): net.minecraft.util.random.WeightedList; builder(): net.minecraft.util.random.WeightedList$Builder; @@ -21464,11 +21664,6 @@ declare global { } } namespace debugchart { - interface SampleLogger { - logFullSample(sample: Array): void; - logSample(sample: number): void; - logPartialSample(sample: number, dimension: number): void; - } const LocalSampleLogger: { CAPACITY: number; new(dimensions: number): net.minecraft.util.debugchart.LocalSampleLogger; @@ -21478,6 +21673,11 @@ declare global { } interface AbstractSampleLogger extends net.minecraft.util.debugchart.SampleLogger { } + interface SampleLogger { + logFullSample(sample: Array): void; + logSample(sample: number): void; + logPartialSample(sample: number, dimension: number): void; + } interface SampleStorage { capacity(): number; size(): number; @@ -21566,10 +21766,6 @@ declare global { minInclusive(): T; maxInclusive(): T; } - interface ToFloatFunction { - applyAsFloat(value: T): number; - (value: T): number; - } const KeyDispatchDataCodec: { new(codec: com.mojang.serialization.MapCodec): net.minecraft.util.KeyDispatchDataCodec; of(codec: com.mojang.serialization.MapCodec): net.minecraft.util.KeyDispatchDataCodec; @@ -21577,6 +21773,10 @@ declare global { interface KeyDispatchDataCodec extends java.lang.Record { codec(): com.mojang.serialization.MapCodec; } + interface ToFloatFunction { + applyAsFloat(value: T): number; + (value: T): number; + } const ProblemReporter: { ScopedCollector: typeof net.minecraft.util.ProblemReporter$ScopedCollector; Collector: typeof net.minecraft.util.ProblemReporter$Collector; @@ -21819,6 +22019,9 @@ declare global { tick(): void; isUnderThreshold(): boolean; } + interface RegistryContextSwapper { + swapTo(codec: com.mojang.serialization.Codec, value: T, newContext: net.minecraft.core.HolderLookup$Provider): com.mojang.serialization.DataResult; + } const ArrayListDeque: { new(): net.minecraft.util.ArrayListDeque; new(capacity: number): net.minecraft.util.ArrayListDeque; @@ -21828,15 +22031,15 @@ declare global { } interface ListAndDeque extends Array, java.util.RandomAccess, kotlin.Cloneable, java.io.Serializable, java.util.Deque { } + const TimeSource: { + constant(value: number): net.minecraft.util.TimeSource$NanoTimeSource; + } interface TimeSource { get(timeUnit: java.util.concurrent.TimeUnit): number; (timeUnit: java.util.concurrent.TimeUnit): number; } interface TimeSource$NanoTimeSource extends net.minecraft.util.TimeSource { } - interface RegistryContextSwapper { - swapTo(codec: com.mojang.serialization.Codec, value: T, newContext: net.minecraft.core.HolderLookup$Provider): com.mojang.serialization.DataResult; - } } namespace resources { const Identifier: { @@ -21887,6 +22090,8 @@ declare global { identifier(): net.minecraft.resources.Identifier; isFor(registry: net.minecraft.resources.ResourceKey>): boolean; cast(registry: net.minecraft.resources.ResourceKey>): java.util.Optional>; + dependent(registryKey: net.minecraft.resources.ResourceKey>, suffix: string): net.minecraft.resources.ResourceKey; + dependent(registryKey: net.minecraft.resources.ResourceKey>, decoration: unknown): net.minecraft.resources.ResourceKey; registry(): net.minecraft.resources.Identifier; registryKey(): net.minecraft.resources.ResourceKey>; } @@ -22194,6 +22399,7 @@ declare global { betweenClosedStream(boundingBox: net.minecraft.world.level.levelgen.structure.BoundingBox): java.util.stream.Stream; betweenClosedStream(box: net.minecraft.world.phys.AABB): java.util.stream.Stream; betweenClosedStream(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): java.util.stream.Stream; + neighborColumn(startX: number, startY: number, startZ: number, endY: number): kotlin.collections.MutableIterable; spiralAround(center: net.minecraft.core.BlockPos, radius: number, firstDirection: net.minecraft.core.Direction, secondDirection: net.minecraft.core.Direction): kotlin.collections.MutableIterable; breadthFirstTraversal(startPos: net.minecraft.core.BlockPos, maxDepth: number, maxCount: number, neighbourProvider: unknown, nodeProcessor: unknown): number; betweenCornersInDirection(aabb: net.minecraft.world.phys.AABB, direction: net.minecraft.world.phys.Vec3): kotlin.collections.MutableIterable; @@ -22202,8 +22408,6 @@ declare global { } interface BlockPos extends net.minecraft.core.Vec3i { asLong(): number; - getCenter(): net.minecraft.world.phys.Vec3; - getBottomCenter(): net.minecraft.world.phys.Vec3; rotate(rotation: net.minecraft.world.level.block.Rotation): net.minecraft.core.BlockPos; atY(y: number): net.minecraft.core.BlockPos; immutable(): net.minecraft.core.BlockPos; @@ -22601,6 +22805,7 @@ declare global { const SectionPos: { SECTION_BITS: number; SECTION_SIZE: number; + SECTION_BLOCK_COUNT: number; SECTION_MASK: number; SECTION_HALF_SIZE: number; SECTION_MAX_INDEX: number; @@ -22958,9 +23163,9 @@ declare global { const MoveControl: { MIN_SPEED: number; MIN_SPEED_SQR: number; - new(mob: net.minecraft.world.entity.Mob): net.minecraft.world.entity.ai.control.MoveControl; + new(mob: T): net.minecraft.world.entity.ai.control.MoveControl; } - interface MoveControl extends net.minecraft.world.entity.ai.control.Control { + interface MoveControl extends net.minecraft.world.entity.ai.control.Control { hasWanted(): boolean; getSpeedModifier(): number; setWantedPosition(x: number, y: number, z: number, speedModifier: number): void; @@ -23020,6 +23225,7 @@ declare global { canFloat(): boolean; shouldRecomputePath(pos: net.minecraft.core.BlockPos): boolean; getMaxDistanceToWaypoint(): number; + getMaxVerticalDistanceToWaypoint(): number; canNavigateGround(): boolean; setCanOpenDoors(canOpenDoors: boolean): void; } @@ -23553,10 +23759,6 @@ declare global { flyingSpeed(): number; walkingSpeed(): number; } - interface StackedContents$IngredientInfo { - acceptsItem(item: T): boolean; - (item: T): boolean; - } const ChatVisiblity: { FULL: net.minecraft.world.entity.player.ChatVisiblity; SYSTEM: net.minecraft.world.entity.player.ChatVisiblity; @@ -23583,6 +23785,10 @@ declare global { getBiggestCraftableStack(recipe: net.minecraft.world.item.crafting.Recipe, maxSize: number, output: net.minecraft.world.entity.player.StackedContents$Output> | null | undefined): number; clear(): void; } + interface StackedContents$IngredientInfo { + acceptsItem(item: T): boolean; + (item: T): boolean; + } interface StackedContents$Output { accept(item: T): void; (item: T): void; @@ -23854,6 +24060,7 @@ declare global { BREEDING_CROSS_FACTOR: number; INVENTORY_ROWS: number; createBaseHorseAttributes(): net.minecraft.world.entity.ai.attributes.AttributeSupplier$Builder; + createOffspringAttribute(parentAValue: number, parentBValue: number, attributeRangeMin: number, attributeRangeMax: number, random: net.minecraft.util.RandomSource): number; } interface AbstractHorse extends net.minecraft.world.entity.animal.Animal, net.minecraft.world.entity.PlayerRideableJumping, net.minecraft.world.entity.HasCustomInventoryScreen, net.minecraft.world.entity.OwnableEntity { tailCounter: number; @@ -24168,6 +24375,9 @@ declare global { } interface Raider$ObtainRaidLeaderBannerGoal extends net.minecraft.world.entity.ai.goal.Goal { } + const Raider$RaiderCelebration: { + new(mob: net.minecraft.world.entity.raid.Raider): net.minecraft.world.entity.raid.Raider$RaiderCelebration; + } interface Raider$RaiderCelebration extends net.minecraft.world.entity.ai.goal.Goal { } } @@ -24325,177 +24535,20 @@ declare global { Builder: typeof net.minecraft.world.entity.EntityType$Builder; CODEC: com.mojang.serialization.Codec>; STREAM_CODEC: net.minecraft.network.codec.StreamCodec>; - ACACIA_BOAT: net.minecraft.world.entity.EntityType; - ACACIA_CHEST_BOAT: net.minecraft.world.entity.EntityType; - ALLAY: net.minecraft.world.entity.EntityType; - AREA_EFFECT_CLOUD: net.minecraft.world.entity.EntityType; - ARMADILLO: net.minecraft.world.entity.EntityType; - ARMOR_STAND: net.minecraft.world.entity.EntityType; - ARROW: net.minecraft.world.entity.EntityType; - AXOLOTL: net.minecraft.world.entity.EntityType; - BAMBOO_CHEST_RAFT: net.minecraft.world.entity.EntityType; - BAMBOO_RAFT: net.minecraft.world.entity.EntityType; - BAT: net.minecraft.world.entity.EntityType; - BEE: net.minecraft.world.entity.EntityType; - BIRCH_BOAT: net.minecraft.world.entity.EntityType; - BIRCH_CHEST_BOAT: net.minecraft.world.entity.EntityType; - BLAZE: net.minecraft.world.entity.EntityType; - BLOCK_DISPLAY: net.minecraft.world.entity.EntityType; - BOGGED: net.minecraft.world.entity.EntityType; - BREEZE: net.minecraft.world.entity.EntityType; - BREEZE_WIND_CHARGE: net.minecraft.world.entity.EntityType; - CAMEL: net.minecraft.world.entity.EntityType; - CAMEL_HUSK: net.minecraft.world.entity.EntityType; - CAT: net.minecraft.world.entity.EntityType; - CAVE_SPIDER: net.minecraft.world.entity.EntityType; - CHERRY_BOAT: net.minecraft.world.entity.EntityType; - CHERRY_CHEST_BOAT: net.minecraft.world.entity.EntityType; - CHEST_MINECART: net.minecraft.world.entity.EntityType; - CHICKEN: net.minecraft.world.entity.EntityType; - COD: net.minecraft.world.entity.EntityType; - COPPER_GOLEM: net.minecraft.world.entity.EntityType; - COMMAND_BLOCK_MINECART: net.minecraft.world.entity.EntityType; - COW: net.minecraft.world.entity.EntityType; - CREAKING: net.minecraft.world.entity.EntityType; - CREEPER: net.minecraft.world.entity.EntityType; - DARK_OAK_BOAT: net.minecraft.world.entity.EntityType; - DARK_OAK_CHEST_BOAT: net.minecraft.world.entity.EntityType; - DOLPHIN: net.minecraft.world.entity.EntityType; - DONKEY: net.minecraft.world.entity.EntityType; - DRAGON_FIREBALL: net.minecraft.world.entity.EntityType; - DROWNED: net.minecraft.world.entity.EntityType; - EGG: net.minecraft.world.entity.EntityType; - ELDER_GUARDIAN: net.minecraft.world.entity.EntityType; - ENDERMAN: net.minecraft.world.entity.EntityType; - ENDERMITE: net.minecraft.world.entity.EntityType; - ENDER_DRAGON: net.minecraft.world.entity.EntityType; - ENDER_PEARL: net.minecraft.world.entity.EntityType; - END_CRYSTAL: net.minecraft.world.entity.EntityType; - EVOKER: net.minecraft.world.entity.EntityType; - EVOKER_FANGS: net.minecraft.world.entity.EntityType; - EXPERIENCE_BOTTLE: net.minecraft.world.entity.EntityType; - EXPERIENCE_ORB: net.minecraft.world.entity.EntityType; - EYE_OF_ENDER: net.minecraft.world.entity.EntityType; - FALLING_BLOCK: net.minecraft.world.entity.EntityType; - FIREBALL: net.minecraft.world.entity.EntityType; - FIREWORK_ROCKET: net.minecraft.world.entity.EntityType; - FOX: net.minecraft.world.entity.EntityType; - FROG: net.minecraft.world.entity.EntityType; - FURNACE_MINECART: net.minecraft.world.entity.EntityType; - GHAST: net.minecraft.world.entity.EntityType; - HAPPY_GHAST: net.minecraft.world.entity.EntityType; - GIANT: net.minecraft.world.entity.EntityType; - GLOW_ITEM_FRAME: net.minecraft.world.entity.EntityType; - GLOW_SQUID: net.minecraft.world.entity.EntityType; - GOAT: net.minecraft.world.entity.EntityType; - GUARDIAN: net.minecraft.world.entity.EntityType; - HOGLIN: net.minecraft.world.entity.EntityType; - HOPPER_MINECART: net.minecraft.world.entity.EntityType; - HORSE: net.minecraft.world.entity.EntityType; - HUSK: net.minecraft.world.entity.EntityType; - ILLUSIONER: net.minecraft.world.entity.EntityType; - INTERACTION: net.minecraft.world.entity.EntityType; - IRON_GOLEM: net.minecraft.world.entity.EntityType; - ITEM: net.minecraft.world.entity.EntityType; - ITEM_DISPLAY: net.minecraft.world.entity.EntityType; - ITEM_FRAME: net.minecraft.world.entity.EntityType; - JUNGLE_BOAT: net.minecraft.world.entity.EntityType; - JUNGLE_CHEST_BOAT: net.minecraft.world.entity.EntityType; - LEASH_KNOT: net.minecraft.world.entity.EntityType; - LIGHTNING_BOLT: net.minecraft.world.entity.EntityType; - LLAMA: net.minecraft.world.entity.EntityType; - LLAMA_SPIT: net.minecraft.world.entity.EntityType; - MAGMA_CUBE: net.minecraft.world.entity.EntityType; - MANGROVE_BOAT: net.minecraft.world.entity.EntityType; - MANGROVE_CHEST_BOAT: net.minecraft.world.entity.EntityType; - MANNEQUIN: net.minecraft.world.entity.EntityType; - MARKER: net.minecraft.world.entity.EntityType; - MINECART: net.minecraft.world.entity.EntityType; - MOOSHROOM: net.minecraft.world.entity.EntityType; - MULE: net.minecraft.world.entity.EntityType; - NAUTILUS: net.minecraft.world.entity.EntityType; - OAK_BOAT: net.minecraft.world.entity.EntityType; - OAK_CHEST_BOAT: net.minecraft.world.entity.EntityType; - OCELOT: net.minecraft.world.entity.EntityType; - OMINOUS_ITEM_SPAWNER: net.minecraft.world.entity.EntityType; - PAINTING: net.minecraft.world.entity.EntityType; - PALE_OAK_BOAT: net.minecraft.world.entity.EntityType; - PALE_OAK_CHEST_BOAT: net.minecraft.world.entity.EntityType; - PANDA: net.minecraft.world.entity.EntityType; - PARCHED: net.minecraft.world.entity.EntityType; - PARROT: net.minecraft.world.entity.EntityType; - PHANTOM: net.minecraft.world.entity.EntityType; - PIG: net.minecraft.world.entity.EntityType; - PIGLIN: net.minecraft.world.entity.EntityType; - PIGLIN_BRUTE: net.minecraft.world.entity.EntityType; - PILLAGER: net.minecraft.world.entity.EntityType; - POLAR_BEAR: net.minecraft.world.entity.EntityType; - SPLASH_POTION: net.minecraft.world.entity.EntityType; - LINGERING_POTION: net.minecraft.world.entity.EntityType; - PUFFERFISH: net.minecraft.world.entity.EntityType; - RABBIT: net.minecraft.world.entity.EntityType; - RAVAGER: net.minecraft.world.entity.EntityType; - SALMON: net.minecraft.world.entity.EntityType; - SHEEP: net.minecraft.world.entity.EntityType; - SHULKER: net.minecraft.world.entity.EntityType; - SHULKER_BULLET: net.minecraft.world.entity.EntityType; - SILVERFISH: net.minecraft.world.entity.EntityType; - SKELETON: net.minecraft.world.entity.EntityType; - SKELETON_HORSE: net.minecraft.world.entity.EntityType; - SLIME: net.minecraft.world.entity.EntityType; - SMALL_FIREBALL: net.minecraft.world.entity.EntityType; - SNIFFER: net.minecraft.world.entity.EntityType; - SNOWBALL: net.minecraft.world.entity.EntityType; - SNOW_GOLEM: net.minecraft.world.entity.EntityType; - SPAWNER_MINECART: net.minecraft.world.entity.EntityType; - SPECTRAL_ARROW: net.minecraft.world.entity.EntityType; - SPIDER: net.minecraft.world.entity.EntityType; - SPRUCE_BOAT: net.minecraft.world.entity.EntityType; - SPRUCE_CHEST_BOAT: net.minecraft.world.entity.EntityType; - SQUID: net.minecraft.world.entity.EntityType; - STRAY: net.minecraft.world.entity.EntityType; - STRIDER: net.minecraft.world.entity.EntityType; - TADPOLE: net.minecraft.world.entity.EntityType; - TEXT_DISPLAY: net.minecraft.world.entity.EntityType; - TNT: net.minecraft.world.entity.EntityType; - TNT_MINECART: net.minecraft.world.entity.EntityType; - TRADER_LLAMA: net.minecraft.world.entity.EntityType; - TRIDENT: net.minecraft.world.entity.EntityType; - TROPICAL_FISH: net.minecraft.world.entity.EntityType; - TURTLE: net.minecraft.world.entity.EntityType; - VEX: net.minecraft.world.entity.EntityType; - VILLAGER: net.minecraft.world.entity.EntityType; - VINDICATOR: net.minecraft.world.entity.EntityType; - WANDERING_TRADER: net.minecraft.world.entity.EntityType; - WARDEN: net.minecraft.world.entity.EntityType; - WIND_CHARGE: net.minecraft.world.entity.EntityType; - WITCH: net.minecraft.world.entity.EntityType; - WITHER: net.minecraft.world.entity.EntityType; - WITHER_SKELETON: net.minecraft.world.entity.EntityType; - WITHER_SKULL: net.minecraft.world.entity.EntityType; - WOLF: net.minecraft.world.entity.EntityType; - ZOGLIN: net.minecraft.world.entity.EntityType; - ZOMBIE: net.minecraft.world.entity.EntityType; - ZOMBIE_HORSE: net.minecraft.world.entity.EntityType; - ZOMBIE_NAUTILUS: net.minecraft.world.entity.EntityType; - ZOMBIE_VILLAGER: net.minecraft.world.entity.EntityType; - ZOMBIFIED_PIGLIN: net.minecraft.world.entity.EntityType; - PLAYER: net.minecraft.world.entity.EntityType; - FISHING_BOBBER: net.minecraft.world.entity.EntityType; - new(factory: net.minecraft.world.entity.EntityType$EntityFactory, category: net.minecraft.world.entity.MobCategory, serialize: boolean, summon: boolean, fireImmune: boolean, canSpawnFarFromPlayer: boolean, immuneTo: com.google.common.collect.ImmutableSet, dimensions: net.minecraft.world.entity.EntityDimensions, spawnDimensionsScale: number, clientTrackingRange: number, updateInterval: number, descriptionId: string, lootTable: java.util.Optional>, requiredFeatures: net.minecraft.world.flag.FeatureFlagSet, allowedInPeaceful: boolean): net.minecraft.world.entity.EntityType; + new(factory: net.minecraft.world.entity.EntityType$EntityFactory, category: net.minecraft.world.entity.MobCategory, serialize: boolean, summon: boolean, fireImmune: boolean, canSpawnFarFromPlayer: boolean, immuneTo: net.minecraft.tags.TagKey, dimensions: net.minecraft.world.entity.EntityDimensions, spawnDimensionsScale: number, clientTrackingRange: number, updateInterval: number, descriptionId: string, lootTable: java.util.Optional>, requiredFeatures: net.minecraft.world.flag.FeatureFlagSet, allowedInPeaceful: boolean): net.minecraft.world.entity.EntityType; getKey(type: net.minecraft.world.entity.EntityType): net.minecraft.resources.Identifier; - byString(id: string): java.util.Optional>; - createDefaultStackConfig(level: net.minecraft.world.level.Level, itemStack: net.minecraft.world.item.ItemStack, user: net.minecraft.world.entity.LivingEntity | null | undefined): unknown; - appendDefaultStackConfig(initialConfig: unknown, level: net.minecraft.world.level.Level, itemStack: net.minecraft.world.item.ItemStack, user: net.minecraft.world.entity.LivingEntity | null | undefined): unknown; - appendComponentsConfig(initialConfig: unknown, itemStack: net.minecraft.world.item.ItemStack): unknown; - appendCustomEntityStackConfig(initialConfig: unknown, level: net.minecraft.world.level.Level, itemStack: net.minecraft.world.item.ItemStack, user: net.minecraft.world.entity.LivingEntity | null | undefined): unknown; - create(input: net.minecraft.world.level.storage.ValueInput, level: net.minecraft.world.level.Level, reason: net.minecraft.world.entity.EntitySpawnReason): java.util.Optional; + createDefaultStackConfig(level: net.minecraft.world.level.Level, itemStack: net.minecraft.world.item.ItemStack, user: net.minecraft.world.entity.LivingEntity | null | undefined): net.minecraft.world.entity.PostSpawnProcessor; + appendDefaultStackConfig(initialConfig: net.minecraft.world.entity.PostSpawnProcessor, level: net.minecraft.world.level.Level, itemStack: net.minecraft.world.item.ItemStack, user: net.minecraft.world.entity.LivingEntity | null | undefined): net.minecraft.world.entity.PostSpawnProcessor; + appendComponentsConfig(initialConfig: net.minecraft.world.entity.PostSpawnProcessor, itemStack: net.minecraft.world.item.ItemStack): net.minecraft.world.entity.PostSpawnProcessor; + appendCustomEntityStackConfig(initialConfig: net.minecraft.world.entity.PostSpawnProcessor, level: net.minecraft.world.level.Level, itemStack: net.minecraft.world.item.ItemStack, user: net.minecraft.world.entity.LivingEntity | null | undefined): net.minecraft.world.entity.PostSpawnProcessor; + create(input: net.minecraft.world.level.storage.ValueInput, level: net.minecraft.world.level.Level, request: net.minecraft.world.entity.EntitySpawnRequest): java.util.Optional; create(type: net.minecraft.world.entity.EntityType, input: net.minecraft.world.level.storage.ValueInput, level: net.minecraft.world.level.Level, reason: net.minecraft.world.entity.EntitySpawnReason): java.util.Optional; updateCustomEntityTag(level: net.minecraft.world.level.Level, user: net.minecraft.world.entity.LivingEntity | null | undefined, entity: net.minecraft.world.entity.Entity | null | undefined, entityData: net.minecraft.world.item.component.TypedEntityData>): void; by(input: net.minecraft.world.level.storage.ValueInput): java.util.Optional>; - loadEntityRecursive(tag: net.minecraft.nbt.CompoundTag, level: net.minecraft.world.level.Level, reason: net.minecraft.world.entity.EntitySpawnReason, postLoad: net.minecraft.world.entity.EntityProcessor): net.minecraft.world.entity.Entity | null | undefined; + loadEntityRecursive(tag: net.minecraft.nbt.CompoundTag, level: net.minecraft.world.level.Level, request: net.minecraft.world.entity.EntitySpawnRequest, postLoad: net.minecraft.world.entity.EntityProcessor): net.minecraft.world.entity.Entity | null | undefined; loadEntityRecursive(type: net.minecraft.world.entity.EntityType, tag: net.minecraft.nbt.CompoundTag, level: net.minecraft.world.level.Level, reason: net.minecraft.world.entity.EntitySpawnReason, postLoad: net.minecraft.world.entity.EntityProcessor): net.minecraft.world.entity.Entity | null | undefined; loadEntityRecursive(input: net.minecraft.world.level.storage.ValueInput, level: net.minecraft.world.level.Level, reason: net.minecraft.world.entity.EntitySpawnReason, postLoad: net.minecraft.world.entity.EntityProcessor): net.minecraft.world.entity.Entity | null | undefined; + loadEntityRecursive(input: net.minecraft.world.level.storage.ValueInput, level: net.minecraft.world.level.Level, request: net.minecraft.world.entity.EntitySpawnRequest, postLoad: net.minecraft.world.entity.EntityProcessor): net.minecraft.world.entity.Entity | null | undefined; loadEntityRecursive(type: net.minecraft.world.entity.EntityType, input: net.minecraft.world.level.storage.ValueInput, level: net.minecraft.world.level.Level, reason: net.minecraft.world.entity.EntitySpawnReason, postLoad: net.minecraft.world.entity.EntityProcessor): net.minecraft.world.entity.Entity | null | undefined; loadEntitiesRecursive(entities: net.minecraft.world.level.storage.ValueInput$ValueInputList, level: net.minecraft.world.level.Level, reason: net.minecraft.world.entity.EntitySpawnReason): java.util.stream.Stream; } @@ -24507,9 +24560,10 @@ declare global { updateInterval(): number; spawn(level: net.minecraft.server.level.ServerLevel, itemStack: net.minecraft.world.item.ItemStack | null | undefined, user: net.minecraft.world.entity.LivingEntity | null | undefined, spawnPos: net.minecraft.core.BlockPos, spawnReason: net.minecraft.world.entity.EntitySpawnReason, tryMoveDown: boolean, movedUp: boolean): T; spawn(level: net.minecraft.server.level.ServerLevel, spawnPos: net.minecraft.core.BlockPos, spawnReason: net.minecraft.world.entity.EntitySpawnReason): T; - spawn(level: net.minecraft.server.level.ServerLevel, postSpawnConfig: unknown, spawnPos: net.minecraft.core.BlockPos, spawnReason: net.minecraft.world.entity.EntitySpawnReason, tryMoveDown: boolean, movedUp: boolean): T; - create(level: net.minecraft.server.level.ServerLevel, postSpawnConfig: unknown, spawnPos: net.minecraft.core.BlockPos, spawnReason: net.minecraft.world.entity.EntitySpawnReason, tryMoveDown: boolean, movedUp: boolean): T; + spawn(level: net.minecraft.server.level.ServerLevel, postSpawnConfig: net.minecraft.world.entity.PostSpawnProcessor | null | undefined, spawnPos: net.minecraft.core.BlockPos, spawnReason: net.minecraft.world.entity.EntitySpawnReason, tryMoveDown: boolean, movedUp: boolean): T; + create(level: net.minecraft.server.level.ServerLevel, postSpawnConfig: net.minecraft.world.entity.PostSpawnProcessor | null | undefined, spawnPos: net.minecraft.core.BlockPos, spawnReason: net.minecraft.world.entity.EntitySpawnReason, tryMoveDown: boolean, movedUp: boolean): T; create(level: net.minecraft.world.level.Level, reason: net.minecraft.world.entity.EntitySpawnReason): T; + create(level: net.minecraft.world.level.Level, request: net.minecraft.world.entity.EntitySpawnRequest): T; canSerialize(): boolean; canSummon(): boolean; getCategory(): net.minecraft.world.entity.MobCategory; @@ -24519,6 +24573,7 @@ declare global { getDefaultLootTable(): java.util.Optional>; getWidth(): number; getHeight(): number; + canSpawn(level: net.minecraft.world.level.Level): boolean; getSpawnAABB(x: number, y: number, z: number): net.minecraft.world.phys.AABB; isBlockDangerous(state: net.minecraft.world.level.block.state.BlockState): boolean; getDimensions(): net.minecraft.world.entity.EntityDimensions; @@ -24546,10 +24601,14 @@ declare global { TAG_GLOWING: string; TAG_INVULNERABLE: string; TAG_CUSTOM_NAME: string; + INVALID_ENTITY_ID: number; CONTENTS_SLOT_INDEX: number; BOARDING_COOLDOWN: number; TOTAL_AIR_SUPPLY: number; MAX_ENTITY_TAG_COUNT: number; + DEFAULT_NAME_TAG_DISTANCE: number; + DEFAULT_BELOW_NAME_DISTANCE: number; + MAX_NAME_TAG_DISTANCE: number; DELTA_AFFECTED_BY_BLOCKS_BELOW_0_2: number; DELTA_AFFECTED_BY_BLOCKS_BELOW_0_5: number; DELTA_AFFECTED_BY_BLOCKS_BELOW_1_0: number; @@ -24560,7 +24619,8 @@ declare global { DEFAULT_BB_HEIGHT: number; MAX_MOVEMENTS_HANDELED_PER_TICK: number; new(type: net.minecraft.world.entity.EntityType, level: net.minecraft.world.level.Level): net.minecraft.world.entity.Entity; - collideBoundingBox(source: net.minecraft.world.entity.Entity | null | undefined, movement: net.minecraft.world.phys.Vec3, boundingBox: net.minecraft.world.phys.AABB, level: net.minecraft.world.level.Level, entityColliders: Array): net.minecraft.world.phys.Vec3; + collideBoundingBox(source: net.minecraft.world.entity.Entity, movement: net.minecraft.world.phys.Vec3, boundingBox: net.minecraft.world.phys.AABB, level: net.minecraft.world.level.Level, entityColliders: Array): net.minecraft.world.phys.Vec3; + collideBoundingBox(source: net.minecraft.world.phys.shapes.CollisionContext, movement: net.minecraft.world.phys.Vec3, boundingBox: net.minecraft.world.phys.AABB, level: net.minecraft.world.level.Level, entityColliders: Array): net.minecraft.world.phys.Vec3; collectAllColliders(source: net.minecraft.world.entity.Entity | null | undefined, level: net.minecraft.world.level.Level, boundingBox: net.minecraft.world.phys.AABB): Array; getViewScale(): number; setViewScale(viewScale: number): void; @@ -24587,6 +24647,7 @@ declare global { tickCount: number; invulnerableTime: number; needsSync: boolean; + syncPosition: boolean; portalProcess: net.minecraft.world.entity.PortalProcessor | null | undefined; isInPowderSnow: boolean; wasInPowderSnow: boolean; @@ -24722,6 +24783,7 @@ declare global { pick(range: number, a: number, withLiquids: boolean): net.minecraft.world.phys.HitResult; canBeHitByProjectile(): boolean; isPickable(): boolean; + canBePickedFromInside(): boolean; isPushable(): boolean; awardKillScore(victim: net.minecraft.world.entity.Entity, killingBlow: net.minecraft.world.damagesource.DamageSource): void; shouldRender(camX: number, camY: number, camZ: number): boolean; @@ -24822,6 +24884,7 @@ declare global { isAttackable(): boolean; skipAttackInteraction(source: net.minecraft.world.entity.Entity): boolean; isInvulnerable(): boolean; + isInvulnerableToPiercingWeapon(): boolean; setInvulnerable(invulnerable: boolean): void; copyPosition(target: net.minecraft.world.entity.Entity): void; restoreFrom(oldEntity: net.minecraft.world.entity.Entity): void; @@ -24982,7 +25045,6 @@ declare global { TAG_FALL_FLYING: string; TAG_HURT_TIME: string; TAG_DEATH_TIME: string; - TAG_HURT_BY_TIMESTAMP: string; TAG_HEALTH: string; EQUIPMENT_SLOT_OFFSET: number; ARMOR_SLOT_OFFSET: number; @@ -24995,6 +25057,20 @@ declare global { BASE_JUMP_POWER: number; EXTRA_RENDER_CULLING_SIZE_WITH_BIG_HAT: number; DEFAULT_BABY_SCALE: number; + BASE_HORIZONTAL_AIR_DRAG: number; + BASE_VERTICAL_AIR_DRAG: number; + WATER_DRAG: number; + SPRINTING_WATER_DRAG: number; + LAVA_DRAG: number; + LAVA_SHALLOW_VERTICAL_DRAG: number; + DOLPHINS_GRACE_WATER_DRAG: number; + FLYING_AIR_DRAG: number; + FLYING_VERTICAL_AIR_DRAG: number; + FLYING_LAVA_DRAG: number; + FLYING_WATER_DRAG: number; + ELYTRA_HORIZONTAL_AIR_DRAG: number; + ELYTRA_VERTICAL_AIR_DRAG: number; + BASE_SWIM_SPEED: number; PLAYER_NOT_WEARING_DISGUISE_ITEM: unknown; createLivingAttributes(): net.minecraft.world.entity.ai.attributes.AttributeSupplier$Builder; areAllEffectsAmbient(effects: Array): boolean; @@ -25022,7 +25098,6 @@ declare global { yya: number; zza: number; currentImpulseImpactPos: net.minecraft.world.phys.Vec3 | null | undefined; - currentExplosionCause: net.minecraft.world.entity.Entity | null | undefined; skipDropExperience(): void; activeLocationDependentEnchantments(slot: net.minecraft.world.entity.EquipmentSlot): Map>; getBrain(): net.minecraft.world.entity.ai.Brain; @@ -25073,6 +25148,7 @@ declare global { getHealth(): number; setHealth(health: number): void; isDeadOrDying(): boolean; + dealDefaultKnockback(source: net.minecraft.world.damagesource.DamageSource, damage: number, blocked: boolean): void; applyItemBlocking(level: net.minecraft.server.level.ServerLevel, source: net.minecraft.world.damagesource.DamageSource, damage: number): number; getLastDamageSource(): net.minecraft.world.damagesource.DamageSource | null | undefined; makeSound(sound: net.minecraft.sounds.SoundEvent | null | undefined): void; @@ -25082,7 +25158,8 @@ declare global { dropFromLootTable(level: net.minecraft.server.level.ServerLevel, source: net.minecraft.world.damagesource.DamageSource, playerKilled: boolean, lootTable: net.minecraft.resources.ResourceKey, itemStackConsumer: unknown): void; dropFromEntityInteractLootTable(level: net.minecraft.server.level.ServerLevel, key: net.minecraft.resources.ResourceKey, interactingEntity: net.minecraft.world.entity.Entity | null | undefined, tool: net.minecraft.world.item.ItemInstance, consumer: unknown): boolean; dropFromGiftLootTable(level: net.minecraft.server.level.ServerLevel, key: net.minecraft.resources.ResourceKey, consumer: unknown): boolean; - knockback(power: number, xd: number, zd: number): void; + knockback(power: number, xd: number, zd: number, source: net.minecraft.world.damagesource.DamageSource, damage: number, comesFromEffect: boolean): void; + knockback(power: number, xd: number, zd: number, source: net.minecraft.world.damagesource.DamageSource, damage: number): void; indicateDamage(xd: number, zd: number): void; wasExperienceConsumed(): boolean; getHurtDir(): number; @@ -25142,7 +25219,7 @@ declare global { getSpeed(): number; setSpeed(speed: number): void; doHurtTarget(level: net.minecraft.server.level.ServerLevel, target: net.minecraft.world.entity.Entity): boolean; - causeExtraKnockback(target: net.minecraft.world.entity.Entity, knockback: number, oldMovement: net.minecraft.world.phys.Vec3): void; + causeExtraKnockback(target: net.minecraft.world.entity.Entity, knockback: number, oldMovement: net.minecraft.world.phys.Vec3, damageSource: net.minecraft.world.damagesource.DamageSource, damage: number, comesFromEffect: boolean): void; wasRecentlyStabbed(target: net.minecraft.world.entity.Entity, allowedTime: number): boolean; rememberStabbedEntity(target: net.minecraft.world.entity.Entity): void; stabbedEntities(filter: unknown): number; @@ -25203,6 +25280,7 @@ declare global { hasInfiniteMaterials(): boolean; isInvulnerableTo(level: net.minecraft.server.level.ServerLevel, source: net.minecraft.world.damagesource.DamageSource): boolean; getLastHurtByPlayerMemoryTime(): number; + createDamageSource(): net.minecraft.world.damagesource.DamageSource; } interface Attackable { getLastAttacker(): net.minecraft.world.entity.LivingEntity | null | undefined; @@ -25448,6 +25526,7 @@ declare global { isFriendly(): boolean; isPersistent(): boolean; getName(): string; + getDebugAbbreviation(): string; getMaxInstancesPerChunk(): number; getDespawnDistance(): number; getNoDespawnDistance(): number; @@ -25542,6 +25621,7 @@ declare global { TAG_LEFT_HANDED: string; TAG_CAN_PICK_UP_LOOT: string; TAG_NO_AI: string; + TAG_PERSISTENCE_REQUIRED: string; createMobAttributes(): net.minecraft.world.entity.ai.attributes.AttributeSupplier$Builder; checkMobSpawnRules(type: net.minecraft.world.entity.EntityType, level: net.minecraft.world.level.LevelAccessor, spawnReason: net.minecraft.world.entity.EntitySpawnReason, pos: net.minecraft.core.BlockPos, random: net.minecraft.util.RandomSource): boolean; getEquipmentForSlot(slot: net.minecraft.world.entity.EquipmentSlot, type: number): net.minecraft.world.item.Item | null | undefined; @@ -25553,7 +25633,7 @@ declare global { onPathfindingStart(): void; onPathfindingDone(): void; getLookControl(): net.minecraft.world.entity.ai.control.LookControl; - getMoveControl(): net.minecraft.world.entity.ai.control.MoveControl; + getMoveControl(): net.minecraft.world.entity.ai.control.MoveControl; getJumpControl(): net.minecraft.world.entity.ai.control.JumpControl; getNavigation(): net.minecraft.world.entity.ai.navigation.PathNavigation; getSensing(): net.minecraft.world.entity.ai.sensing.Sensing; @@ -25587,7 +25667,6 @@ declare global { getBodyArmorItem(): net.minecraft.world.item.ItemStack; isSaddled(): boolean; isWearingBodyArmor(): boolean; - setBodyArmorItem(item: net.minecraft.world.item.ItemStack): void; createEquipmentSlotContainer(slot: net.minecraft.world.entity.EquipmentSlot): net.minecraft.world.Container; getDropChances(): net.minecraft.world.entity.DropChances; dropPreservedEquipment(level: net.minecraft.server.level.ServerLevel): void; @@ -25617,6 +25696,7 @@ declare global { setBaby(baby: boolean): void; isWithinMeleeAttackRange(target: net.minecraft.world.entity.LivingEntity): boolean; removeFreeWill(): void; + getGoalSelector(): net.minecraft.world.entity.ai.goal.GoalSelector; removeAllGoals(predicate: unknown): void; chargeSpeedModifier(): number; } @@ -25701,7 +25781,10 @@ declare global { setLeashHolder(leashHolder: net.minecraft.world.entity.Entity): void; } const Leashable$Wrench: { + ZERO: net.minecraft.world.entity.Leashable$Wrench; new(force: net.minecraft.world.phys.Vec3, torque: number): net.minecraft.world.entity.Leashable$Wrench; + torqueFromForce(leverArm: net.minecraft.world.phys.Vec3, force: net.minecraft.world.phys.Vec3): number; + accumulate(wrenches: Array): net.minecraft.world.entity.Leashable$Wrench; } interface Leashable$Wrench extends java.lang.Record { scale(scale: number): net.minecraft.world.entity.Leashable$Wrench; @@ -25786,6 +25869,7 @@ declare global { } interface ConversionType extends kotlin.Enum { shouldDiscardAfterConversion(): boolean; + convert(from: net.minecraft.world.entity.Mob, to: net.minecraft.world.entity.Mob, params: net.minecraft.world.entity.ConversionParams): void; } interface ConversionParams$AfterConversion { finalizeConversion(mob: T): void; @@ -25955,6 +26039,20 @@ declare global { interface ReputationEventHandler { onReputationEventFrom(type: net.minecraft.world.entity.ai.village.ReputationEventType, source: net.minecraft.world.entity.Entity): void; } + const PostSpawnProcessor: { + nop(): net.minecraft.world.entity.PostSpawnProcessor; + } + interface PostSpawnProcessor { + apply(target: T): void; + andThen(after: net.minecraft.world.entity.PostSpawnProcessor): net.minecraft.world.entity.PostSpawnProcessor; + } + const EntitySpawnRequest: { + new(reason: net.minecraft.world.entity.EntitySpawnReason, ignoreChecks: boolean): net.minecraft.world.entity.EntitySpawnRequest; + } + interface EntitySpawnRequest extends java.lang.Record { + reason(): net.minecraft.world.entity.EntitySpawnReason; + ignoreChecks(): boolean; + } interface EntityType$EntityFactory { create(entityType: net.minecraft.world.entity.EntityType, level: net.minecraft.world.level.Level): T; (entityType: net.minecraft.world.entity.EntityType, level: net.minecraft.world.level.Level): T; @@ -25971,7 +26069,7 @@ declare global { createNothing(category: net.minecraft.world.entity.MobCategory): net.minecraft.world.entity.EntityType$Builder; } interface EntityType$Builder extends net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityType$Builder { - immuneTo(blocks: net.minecraft.world.level.block.Block): net.minecraft.world.entity.EntityType$Builder; + immuneTo(tag: net.minecraft.tags.TagKey): net.minecraft.world.entity.EntityType$Builder; fireImmune(): net.minecraft.world.entity.EntityType$Builder; canSpawnFarFromPlayer(): net.minecraft.world.entity.EntityType$Builder; clientTrackingRange(clientChunkRange: number): net.minecraft.world.entity.EntityType$Builder; @@ -26048,107 +26146,6 @@ declare global { } namespace levelgen { namespace structure { - namespace pieces { - const StructurePieceSerializationContext: { - new(resourceManager: net.minecraft.server.packs.resources.ResourceManager, registryAccess: net.minecraft.core.RegistryAccess, structureTemplateManager: net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager): net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; - fromLevel(level: net.minecraft.server.level.ServerLevel): net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; - } - interface StructurePieceSerializationContext extends java.lang.Record { - resourceManager(): net.minecraft.server.packs.resources.ResourceManager; - registryAccess(): net.minecraft.core.RegistryAccess; - structureTemplateManager(): net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; - } - const PiecesContainer: { - new(pieces: Array): net.minecraft.world.level.levelgen.structure.pieces.PiecesContainer; - load(children: net.minecraft.nbt.ListTag, context: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext): net.minecraft.world.level.levelgen.structure.pieces.PiecesContainer; - } - interface PiecesContainer extends java.lang.Record { - isEmpty(): boolean; - isInsidePiece(startPos: net.minecraft.core.BlockPos): boolean; - save(context: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext): net.minecraft.nbt.Tag; - calculateBoundingBox(): net.minecraft.world.level.levelgen.structure.BoundingBox; - pieces(): Array; - } - const StructurePiecesBuilder: { - new(): net.minecraft.world.level.levelgen.structure.pieces.StructurePiecesBuilder; - } - interface StructurePiecesBuilder extends net.minecraft.world.level.levelgen.structure.StructurePieceAccessor { - offsetPiecesVertically(dy: number): void; - moveBelowSeaLevel(seaLevel: number, minY: number, random: net.minecraft.util.RandomSource, offset: number): number; - moveInsideHeights(random: net.minecraft.util.RandomSource, lowestAllowed: number, highestAllowed: number): void; - build(): net.minecraft.world.level.levelgen.structure.pieces.PiecesContainer; - clear(): void; - isEmpty(): boolean; - getBoundingBox(): net.minecraft.world.level.levelgen.structure.BoundingBox; - } - const StructurePieceType: { - MINE_SHAFT_CORRIDOR: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - MINE_SHAFT_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - MINE_SHAFT_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - MINE_SHAFT_STAIRS: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_BRIDGE_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_BRIDGE_END_FILLER: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_BRIDGE_STRAIGHT: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_CASTLE_CORRIDOR_STAIRS: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_CASTLE_CORRIDOR_T_BALCONY: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_CASTLE_ENTRANCE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR_LEFT_TURN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR_RIGHT_TURN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_CASTLE_STALK_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_MONSTER_THRONE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_ROOM_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_STAIRS_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FORTRESS_START: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_CHEST_CORRIDOR: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_FILLER_CORRIDOR: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_FIVE_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_LEFT_TURN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_LIBRARY: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_PORTAL_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_PRISON_HALL: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_RIGHT_TURN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_ROOM_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_STAIRS_DOWN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_START: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_STRAIGHT: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - STRONGHOLD_STRAIGHT_STAIRS_DOWN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - JUNGLE_PYRAMID_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_RUIN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - IGLOO: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - RUINED_PORTAL: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - SWAMPLAND_HUT: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - DESERT_PYRAMID_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_BUILDING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_CORE_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_DOUBLE_X_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_DOUBLE_XY_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_DOUBLE_Y_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_DOUBLE_YZ_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_DOUBLE_Z_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_ENTRY_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_PENTHOUSE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_SIMPLE_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_SIMPLE_TOP_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - OCEAN_MONUMENT_WING_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - END_CITY_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - WOODLAND_MANSION_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - BURIED_TREASURE_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - SHIPWRECK_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - NETHER_FOSSIL: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - JIGSAW: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - } - interface StructurePieceType { - load(context: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext, tag: net.minecraft.nbt.CompoundTag): net.minecraft.world.level.levelgen.structure.StructurePiece; - } - interface StructurePieceType$ContextlessType extends net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType { - load(tag: net.minecraft.nbt.CompoundTag): net.minecraft.world.level.levelgen.structure.StructurePiece; - } - interface StructurePieceType$StructureTemplateType extends net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType { - load(structureTemplateManager: net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager, tag: net.minecraft.nbt.CompoundTag): net.minecraft.world.level.levelgen.structure.StructurePiece; - } - } namespace templatesystem { namespace loader { const TemplatePathFactory: { @@ -26260,12 +26257,11 @@ declare global { } interface LiquidSettings extends kotlin.Enum, net.minecraft.util.StringRepresentable { } - const StructureProcessor: { - new(): net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessor; - } interface StructureProcessor { - processBlock(level: net.minecraft.world.level.LevelReader, targetPosition: net.minecraft.core.BlockPos, referencePos: net.minecraft.core.BlockPos, originalBlockInfo: net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate$StructureBlockInfo, processedBlockInfo: net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate$StructureBlockInfo, settings: net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings): net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate$StructureBlockInfo | null | undefined; + processBlock(level: net.minecraft.world.level.LevelReader, targetPosition: net.minecraft.core.BlockPos, referencePos: net.minecraft.core.BlockPos, templateRelativePos: net.minecraft.core.BlockPos, processedBlockInfo: net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate$StructureBlockInfo, settings: net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings): net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate$StructureBlockInfo | null | undefined; + codec(): com.mojang.serialization.MapCodec; finalizeProcessing(level: net.minecraft.world.level.ServerLevelAccessor, position: net.minecraft.core.BlockPos, referencePos: net.minecraft.core.BlockPos, originalBlockInfoList: Array, processedBlockInfoList: Array, settings: net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings): Array; + evaluatesEntirePieceState(): boolean; } const StructureTemplate$StructureBlockInfo: { new(pos: net.minecraft.core.BlockPos, state: net.minecraft.world.level.block.state.BlockState, nbt: net.minecraft.nbt.CompoundTag | null | undefined): net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate$StructureBlockInfo; @@ -26275,27 +26271,6 @@ declare global { state(): net.minecraft.world.level.block.state.BlockState; nbt(): net.minecraft.nbt.CompoundTag | null | undefined; } - const StructureProcessorType: { - SINGLE_CODEC: com.mojang.serialization.Codec; - LIST_OBJECT_CODEC: com.mojang.serialization.Codec; - DIRECT_CODEC: com.mojang.serialization.Codec; - LIST_CODEC: com.mojang.serialization.Codec>; - BLOCK_IGNORE: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - BLOCK_ROT: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - GRAVITY: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - JIGSAW_REPLACEMENT: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - RULE: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - NOP: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - BLOCK_AGE: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - BLACKSTONE_REPLACE: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - LAVA_SUBMERGED_BLOCK: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - PROTECTED_BLOCKS: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - CAPPED: net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; - register

(id: string, codec: com.mojang.serialization.MapCodec

): net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType

; - } - interface StructureProcessorType

{ - codec(): com.mojang.serialization.MapCodec

; - } interface StructureTemplate$Palette { blocks(): Array; blocks(filter: net.minecraft.world.level.block.Block): Array; @@ -26325,6 +26300,17 @@ declare global { } } namespace placement { + const ConcentricRingsStructurePlacement: { + CODEC: com.mojang.serialization.MapCodec; + new(locateOffset: net.minecraft.core.Vec3i, frequencyReductionMethod: net.minecraft.world.level.levelgen.structure.placement.StructurePlacement$FrequencyReductionMethod, frequency: number, salt: number, exclusionZone: java.util.Optional, distance: number, spread: number, count: number, preferredBiomes: net.minecraft.core.HolderSet): net.minecraft.world.level.levelgen.structure.placement.ConcentricRingsStructurePlacement; + new(distance: number, spread: number, count: number, preferredBiomes: net.minecraft.core.HolderSet): net.minecraft.world.level.levelgen.structure.placement.ConcentricRingsStructurePlacement; + } + interface ConcentricRingsStructurePlacement extends net.minecraft.world.level.levelgen.structure.placement.StructurePlacement { + distance(): number; + spread(): number; + count(): number; + preferredBiomes(): net.minecraft.core.HolderSet; + } const StructurePlacement: { FrequencyReductionMethod: typeof net.minecraft.world.level.levelgen.structure.placement.StructurePlacement$FrequencyReductionMethod; ExclusionZone: typeof net.minecraft.world.level.levelgen.structure.placement.StructurePlacement$ExclusionZone; @@ -26350,17 +26336,6 @@ declare global { interface StructurePlacement$FrequencyReductionMethod extends kotlin.Enum, net.minecraft.util.StringRepresentable { shouldGenerate(seed: number, salt: number, sourceX: number, sourceZ: number, probability: number): boolean; } - const ConcentricRingsStructurePlacement: { - CODEC: com.mojang.serialization.MapCodec; - new(locateOffset: net.minecraft.core.Vec3i, frequencyReductionMethod: net.minecraft.world.level.levelgen.structure.placement.StructurePlacement$FrequencyReductionMethod, frequency: number, salt: number, exclusionZone: java.util.Optional, distance: number, spread: number, count: number, preferredBiomes: net.minecraft.core.HolderSet): net.minecraft.world.level.levelgen.structure.placement.ConcentricRingsStructurePlacement; - new(distance: number, spread: number, count: number, preferredBiomes: net.minecraft.core.HolderSet): net.minecraft.world.level.levelgen.structure.placement.ConcentricRingsStructurePlacement; - } - interface ConcentricRingsStructurePlacement extends net.minecraft.world.level.levelgen.structure.placement.StructurePlacement { - distance(): number; - spread(): number; - count(): number; - preferredBiomes(): net.minecraft.core.HolderSet; - } const StructurePlacementType: { RANDOM_SPREAD: net.minecraft.world.level.levelgen.structure.placement.StructurePlacementType; CONCENTRIC_RINGS: net.minecraft.world.level.levelgen.structure.placement.StructurePlacementType; @@ -26381,6 +26356,107 @@ declare global { (seed: number, salt: number, sourceX: number, sourceZ: number, probability: number): boolean; } } + namespace pieces { + const StructurePieceSerializationContext: { + new(resourceManager: net.minecraft.server.packs.resources.ResourceManager, registryAccess: net.minecraft.core.RegistryAccess, structureTemplateManager: net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager): net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; + fromLevel(level: net.minecraft.server.level.ServerLevel): net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; + } + interface StructurePieceSerializationContext extends java.lang.Record { + resourceManager(): net.minecraft.server.packs.resources.ResourceManager; + registryAccess(): net.minecraft.core.RegistryAccess; + structureTemplateManager(): net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; + } + const PiecesContainer: { + new(pieces: Array): net.minecraft.world.level.levelgen.structure.pieces.PiecesContainer; + load(children: net.minecraft.nbt.ListTag, context: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext): net.minecraft.world.level.levelgen.structure.pieces.PiecesContainer; + } + interface PiecesContainer extends java.lang.Record { + isEmpty(): boolean; + isInsidePiece(startPos: net.minecraft.core.BlockPos): boolean; + save(context: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext): net.minecraft.nbt.Tag; + calculateBoundingBox(): net.minecraft.world.level.levelgen.structure.BoundingBox; + pieces(): Array; + } + const StructurePiecesBuilder: { + new(): net.minecraft.world.level.levelgen.structure.pieces.StructurePiecesBuilder; + } + interface StructurePiecesBuilder extends net.minecraft.world.level.levelgen.structure.StructurePieceAccessor { + offsetPiecesVertically(dy: number): void; + moveBelowSeaLevel(seaLevel: number, minY: number, random: net.minecraft.util.RandomSource, offset: number): number; + moveInsideHeights(random: net.minecraft.util.RandomSource, lowestAllowed: number, highestAllowed: number): void; + build(): net.minecraft.world.level.levelgen.structure.pieces.PiecesContainer; + clear(): void; + isEmpty(): boolean; + getBoundingBox(): net.minecraft.world.level.levelgen.structure.BoundingBox; + } + const StructurePieceType: { + MINE_SHAFT_CORRIDOR: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + MINE_SHAFT_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + MINE_SHAFT_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + MINE_SHAFT_STAIRS: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_BRIDGE_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_BRIDGE_END_FILLER: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_BRIDGE_STRAIGHT: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_CASTLE_CORRIDOR_STAIRS: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_CASTLE_CORRIDOR_T_BALCONY: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_CASTLE_ENTRANCE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR_LEFT_TURN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_CASTLE_SMALL_CORRIDOR_RIGHT_TURN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_CASTLE_STALK_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_MONSTER_THRONE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_ROOM_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_STAIRS_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FORTRESS_START: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_CHEST_CORRIDOR: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_FILLER_CORRIDOR: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_FIVE_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_LEFT_TURN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_LIBRARY: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_PORTAL_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_PRISON_HALL: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_RIGHT_TURN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_ROOM_CROSSING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_STAIRS_DOWN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_START: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_STRAIGHT: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + STRONGHOLD_STRAIGHT_STAIRS_DOWN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + JUNGLE_PYRAMID_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_RUIN: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + IGLOO: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + RUINED_PORTAL: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + SWAMPLAND_HUT: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + DESERT_PYRAMID_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_BUILDING: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_CORE_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_DOUBLE_X_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_DOUBLE_XY_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_DOUBLE_Y_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_DOUBLE_YZ_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_DOUBLE_Z_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_ENTRY_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_PENTHOUSE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_SIMPLE_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_SIMPLE_TOP_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + OCEAN_MONUMENT_WING_ROOM: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + END_CITY_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + WOODLAND_MANSION_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + BURIED_TREASURE_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + SHIPWRECK_PIECE: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + NETHER_FOSSIL: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + JIGSAW: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + } + interface StructurePieceType { + load(context: net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext, tag: net.minecraft.nbt.CompoundTag): net.minecraft.world.level.levelgen.structure.StructurePiece; + } + interface StructurePieceType$ContextlessType extends net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType { + load(tag: net.minecraft.nbt.CompoundTag): net.minecraft.world.level.levelgen.structure.StructurePiece; + } + interface StructurePieceType$StructureTemplateType extends net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType { + load(structureTemplateManager: net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager, tag: net.minecraft.nbt.CompoundTag): net.minecraft.world.level.levelgen.structure.StructurePiece; + } + } const BoundingBox: { CODEC: com.mojang.serialization.Codec; STREAM_CODEC: net.minecraft.network.codec.StreamCodec; @@ -26591,51 +26667,6 @@ declare global { getNext(): net.minecraft.world.level.block.state.BlockState; } } - namespace blending { - const Blender: { - BlendingOutput: typeof net.minecraft.world.level.levelgen.blending.Blender$BlendingOutput; - empty(): net.minecraft.world.level.levelgen.blending.Blender; - of(region: net.minecraft.server.level.WorldGenRegion | null | undefined): net.minecraft.world.level.levelgen.blending.Blender; - generateBorderTicks(region: net.minecraft.server.level.WorldGenRegion, chunk: net.minecraft.world.level.chunk.ChunkAccess): void; - addAroundOldChunksCarvingMaskFilter(region: net.minecraft.world.level.WorldGenLevel, chunk: net.minecraft.world.level.chunk.ProtoChunk): void; - makeOldChunkDistanceGetter(centerBlendingData: net.minecraft.world.level.levelgen.blending.BlendingData | null | undefined, oldSidesBlendingData: Map): net.minecraft.world.level.levelgen.blending.Blender$DistanceGetter; - } - interface Blender { - isEmpty(): boolean; - blendOffsetAndFactor(blockX: number, blockZ: number): net.minecraft.world.level.levelgen.blending.Blender$BlendingOutput; - blendDensity(context: net.minecraft.world.level.levelgen.DensityFunction$FunctionContext, noiseValue: number): number; - getBiomeResolver(biomeResolver: net.minecraft.world.level.biome.BiomeResolver): net.minecraft.world.level.biome.BiomeResolver; - } - const Blender$BlendingOutput: { - new(alpha: number, blendingOffset: number): net.minecraft.world.level.levelgen.blending.Blender$BlendingOutput; - } - interface Blender$BlendingOutput extends java.lang.Record { - alpha(): number; - blendingOffset(): number; - } - const BlendingData: { - Packed: typeof net.minecraft.world.level.levelgen.blending.BlendingData$Packed; - unpack(packed: net.minecraft.world.level.levelgen.blending.BlendingData$Packed | null | undefined): net.minecraft.world.level.levelgen.blending.BlendingData | null | undefined; - getOrUpdateBlendingData(region: net.minecraft.server.level.WorldGenRegion, chunkX: number, chunkZ: number): net.minecraft.world.level.levelgen.blending.BlendingData | null | undefined; - sideByGenerationAge(region: net.minecraft.world.level.WorldGenLevel, chunkX: number, chunkZ: number, wantedOldGen: boolean): Set; - } - interface BlendingData { - pack(): net.minecraft.world.level.levelgen.blending.BlendingData$Packed; - getAreaWithOldGeneration(): net.minecraft.world.level.LevelHeightAccessor; - } - const BlendingData$Packed: { - CODEC: com.mojang.serialization.Codec; - new(minSection: number, maxSection: number, heights: java.util.Optional): net.minecraft.world.level.levelgen.blending.BlendingData$Packed; - } - interface BlendingData$Packed extends java.lang.Record { - minSection(): number; - maxSection(): number; - heights(): java.util.Optional; - } - interface Blender$DistanceGetter { - getDistance(x: number, y: number, z: number): number; - } - } namespace synth { const NormalNoise: { NoiseParameters: typeof net.minecraft.world.level.levelgen.synth.NormalNoise$NoiseParameters; @@ -26667,14 +26698,49 @@ declare global { getValue(x: number, y: number, useNoiseStart: boolean): number; } } - namespace carver { - const CarvingContext: { - new(generator: net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator, registryAccess: net.minecraft.core.RegistryAccess, heightAccessor: net.minecraft.world.level.LevelHeightAccessor, noiseChunk: net.minecraft.world.level.levelgen.NoiseChunk, randomState: net.minecraft.world.level.levelgen.RandomState, surfaceRule: net.minecraft.world.level.levelgen.SurfaceRules$RuleSource): net.minecraft.world.level.levelgen.carver.CarvingContext; + namespace blending { + const BlendingData: { + Packed: typeof net.minecraft.world.level.levelgen.blending.BlendingData$Packed; + unpack(packed: net.minecraft.world.level.levelgen.blending.BlendingData$Packed | null | undefined): net.minecraft.world.level.levelgen.blending.BlendingData | null | undefined; + getOrUpdateBlendingData(region: net.minecraft.server.level.WorldGenRegion, chunkX: number, chunkZ: number): net.minecraft.world.level.levelgen.blending.BlendingData | null | undefined; + sideByGenerationAge(region: net.minecraft.world.level.WorldGenLevel, chunkX: number, chunkZ: number, wantedOldGen: boolean): Set; } - interface CarvingContext extends net.minecraft.world.level.levelgen.WorldGenerationContext { - registryAccess(): net.minecraft.core.RegistryAccess; - randomState(): net.minecraft.world.level.levelgen.RandomState; - topMaterial(biomeGetter: unknown, chunk: net.minecraft.world.level.chunk.ChunkAccess, pos: net.minecraft.core.BlockPos, underFluid: boolean): java.util.Optional; + interface BlendingData { + pack(): net.minecraft.world.level.levelgen.blending.BlendingData$Packed; + getAreaWithOldGeneration(): net.minecraft.world.level.LevelHeightAccessor; + } + const BlendingData$Packed: { + CODEC: com.mojang.serialization.Codec; + new(minSection: number, maxSection: number, heights: java.util.Optional): net.minecraft.world.level.levelgen.blending.BlendingData$Packed; + } + interface BlendingData$Packed extends java.lang.Record { + minSection(): number; + maxSection(): number; + heights(): java.util.Optional; + } + const Blender: { + BlendingOutput: typeof net.minecraft.world.level.levelgen.blending.Blender$BlendingOutput; + empty(): net.minecraft.world.level.levelgen.blending.Blender; + of(region: net.minecraft.server.level.WorldGenRegion | null | undefined): net.minecraft.world.level.levelgen.blending.Blender; + generateBorderTicks(region: net.minecraft.server.level.WorldGenRegion, chunk: net.minecraft.world.level.chunk.ChunkAccess): void; + addAroundOldChunksCarvingMaskFilter(region: net.minecraft.world.level.WorldGenLevel, chunk: net.minecraft.world.level.chunk.ProtoChunk): void; + makeOldChunkDistanceGetter(centerBlendingData: net.minecraft.world.level.levelgen.blending.BlendingData | null | undefined, oldSidesBlendingData: Map): net.minecraft.world.level.levelgen.blending.Blender$DistanceGetter; + } + interface Blender { + isEmpty(): boolean; + blendOffsetAndFactor(blockX: number, blockZ: number): net.minecraft.world.level.levelgen.blending.Blender$BlendingOutput; + blendDensity(context: net.minecraft.world.level.levelgen.DensityFunction$FunctionContext, noiseValue: number): number; + getBiomeResolver(biomeResolver: net.minecraft.world.level.biome.BiomeResolver): net.minecraft.world.level.biome.BiomeResolver; + } + const Blender$BlendingOutput: { + new(alpha: number, blendingOffset: number): net.minecraft.world.level.levelgen.blending.Blender$BlendingOutput; + } + interface Blender$BlendingOutput extends java.lang.Record { + alpha(): number; + blendingOffset(): number; + } + interface Blender$DistanceGetter { + getDistance(x: number, y: number, z: number): number; } } namespace placement { @@ -26693,6 +26759,16 @@ declare global { placement(): Array; } } + namespace carver { + const CarvingContext: { + new(generator: net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator, registryAccess: net.minecraft.core.RegistryAccess, heightAccessor: net.minecraft.world.level.LevelHeightAccessor, noiseChunk: net.minecraft.world.level.levelgen.NoiseChunk, randomState: net.minecraft.world.level.levelgen.RandomState, surfaceRule: net.minecraft.world.level.levelgen.SurfaceRules$RuleSource): net.minecraft.world.level.levelgen.carver.CarvingContext; + } + interface CarvingContext extends net.minecraft.world.level.levelgen.WorldGenerationContext { + registryAccess(): net.minecraft.core.RegistryAccess; + randomState(): net.minecraft.world.level.levelgen.RandomState; + topMaterial(biomeGetter: unknown, chunk: net.minecraft.world.level.chunk.ChunkAccess, pos: net.minecraft.core.BlockPos, underFluid: boolean): java.util.Optional; + } + } namespace flat { const FlatLevelGeneratorSettings: { CODEC: com.mojang.serialization.Codec; @@ -26770,13 +26846,12 @@ declare global { const DensityFunction: { SinglePointContext: typeof net.minecraft.world.level.levelgen.DensityFunction$SinglePointContext; NoiseHolder: typeof net.minecraft.world.level.levelgen.DensityFunction$NoiseHolder; - DIRECT_CODEC: com.mojang.serialization.Codec; - CODEC: com.mojang.serialization.Codec>; - HOLDER_HELPER_CODEC: com.mojang.serialization.Codec; + CODEC: com.mojang.serialization.Codec; } interface DensityFunction { compute(context: net.minecraft.world.level.levelgen.DensityFunction$FunctionContext): number; fillArray(output: kotlin.DoubleArray, contextProvider: net.minecraft.world.level.levelgen.DensityFunction$ContextProvider): void; + mapChildren(visitor: net.minecraft.world.level.levelgen.DensityFunction$Visitor): net.minecraft.world.level.levelgen.DensityFunction; mapAll(visitor: net.minecraft.world.level.levelgen.DensityFunction$Visitor): net.minecraft.world.level.levelgen.DensityFunction; minValue(): number; maxValue(): number; @@ -26794,27 +26869,32 @@ declare global { blockX(): number; blockY(): number; blockZ(): number; - getBlender(): net.minecraft.world.level.levelgen.blending.Blender; } - const GenerationStep$Decoration: { - RAW_GENERATION: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - LAKES: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - LOCAL_MODIFICATIONS: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - UNDERGROUND_STRUCTURES: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - SURFACE_STRUCTURES: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - STRONGHOLDS: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - UNDERGROUND_ORES: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - UNDERGROUND_DECORATION: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - FLUID_SPRINGS: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - VEGETAL_DECORATION: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - TOP_LAYER_MODIFICATION: net.minecraft.world.level.levelgen.GenerationStep$Decoration; - CODEC: com.mojang.serialization.Codec; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.world.level.levelgen.GenerationStep$Decoration; + interface DensityFunction$ContextProvider { + forIndex(index: number): net.minecraft.world.level.levelgen.DensityFunction$FunctionContext; + fillAllDirectly(output: kotlin.DoubleArray, function_: net.minecraft.world.level.levelgen.DensityFunction): void; } - interface GenerationStep$Decoration extends kotlin.Enum, net.minecraft.util.StringRepresentable { - getName(): string; + interface DensityFunction$Visitor { + apply(input: net.minecraft.world.level.levelgen.DensityFunction): net.minecraft.world.level.levelgen.DensityFunction; + visitNoise(noise: net.minecraft.world.level.levelgen.DensityFunction$NoiseHolder): net.minecraft.world.level.levelgen.DensityFunction$NoiseHolder; + } + const DensityFunction$NoiseHolder: { + CODEC: com.mojang.serialization.Codec; + new(noiseData: net.minecraft.core.Holder): net.minecraft.world.level.levelgen.DensityFunction$NoiseHolder; + new(noiseData: net.minecraft.core.Holder, noise: net.minecraft.world.level.levelgen.synth.NormalNoise | null | undefined): net.minecraft.world.level.levelgen.DensityFunction$NoiseHolder; + } + interface DensityFunction$NoiseHolder extends java.lang.Record { + getValue(x: number, y: number, z: number): number; + maxValue(): number; + noiseData(): net.minecraft.core.Holder; + noise(): net.minecraft.world.level.levelgen.synth.NormalNoise | null | undefined; + } + const DensityFunction$SinglePointContext: { + new(blockX: number, blockY: number, blockZ: number): net.minecraft.world.level.levelgen.DensityFunction$SinglePointContext; + } + interface DensityFunction$SinglePointContext extends java.lang.Record, net.minecraft.world.level.levelgen.DensityFunction$FunctionContext { + } + interface DensityFunction$SimpleFunction extends net.minecraft.world.level.levelgen.DensityFunction { } const RandomState: { create(holders: net.minecraft.core.HolderGetter$Provider, noiseSettings: net.minecraft.resources.ResourceKey, seed: number): net.minecraft.world.level.levelgen.RandomState; @@ -26851,26 +26931,11 @@ declare global { veinRidged(): net.minecraft.world.level.levelgen.DensityFunction; veinGap(): net.minecraft.world.level.levelgen.DensityFunction; } - interface DensityFunction$Visitor { - apply(input: net.minecraft.world.level.levelgen.DensityFunction): net.minecraft.world.level.levelgen.DensityFunction; - visitNoise(noise: net.minecraft.world.level.levelgen.DensityFunction$NoiseHolder): net.minecraft.world.level.levelgen.DensityFunction$NoiseHolder; - } - const DensityFunction$NoiseHolder: { - CODEC: com.mojang.serialization.Codec; - new(noiseData: net.minecraft.core.Holder): net.minecraft.world.level.levelgen.DensityFunction$NoiseHolder; - new(noiseData: net.minecraft.core.Holder, noise: net.minecraft.world.level.levelgen.synth.NormalNoise | null | undefined): net.minecraft.world.level.levelgen.DensityFunction$NoiseHolder; - } - interface DensityFunction$NoiseHolder extends java.lang.Record { - getValue(x: number, y: number, z: number): number; - maxValue(): number; - noiseData(): net.minecraft.core.Holder; - noise(): net.minecraft.world.level.levelgen.synth.NormalNoise | null | undefined; - } const SurfaceSystem: { new(randomState: net.minecraft.world.level.levelgen.RandomState, defaultBlock: net.minecraft.world.level.block.state.BlockState, seaLevel: number, noiseRandom: net.minecraft.world.level.levelgen.PositionalRandomFactory): net.minecraft.world.level.levelgen.SurfaceSystem; } interface SurfaceSystem { - buildSurface(randomState: net.minecraft.world.level.levelgen.RandomState, biomeManager: net.minecraft.world.level.biome.BiomeManager, biomes: net.minecraft.core.Registry, useLegacyRandom: boolean, generationContext: net.minecraft.world.level.levelgen.WorldGenerationContext, protoChunk: net.minecraft.world.level.chunk.ChunkAccess, noiseChunk: net.minecraft.world.level.levelgen.NoiseChunk, ruleSource: net.minecraft.world.level.levelgen.SurfaceRules$RuleSource): void; + buildSurface(randomState: net.minecraft.world.level.levelgen.RandomState, biomeManager: net.minecraft.world.level.biome.BiomeManager, useLegacyRandom: boolean, generationContext: net.minecraft.world.level.levelgen.WorldGenerationContext, protoChunk: net.minecraft.world.level.chunk.ChunkAccess, noiseChunk: net.minecraft.world.level.levelgen.NoiseChunk, ruleSource: net.minecraft.world.level.levelgen.SurfaceRules$RuleSource, possibleBiomes: Set> | null | undefined): void; getSeaLevel(): number; topMaterial(ruleSource: net.minecraft.world.level.levelgen.SurfaceRules$RuleSource, carvingContext: net.minecraft.world.level.levelgen.carver.CarvingContext, biomeGetter: unknown, chunk: net.minecraft.world.level.chunk.ChunkAccess, noiseChunk: net.minecraft.world.level.levelgen.NoiseChunk, pos: net.minecraft.core.BlockPos, underFluid: boolean): java.util.Optional; } @@ -26881,6 +26946,120 @@ declare global { getMinGenY(): number; getGenDepth(): number; } + const GenerationStep$Decoration: { + RAW_GENERATION: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + LAKES: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + LOCAL_MODIFICATIONS: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + UNDERGROUND_STRUCTURES: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + SURFACE_STRUCTURES: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + STRONGHOLDS: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + UNDERGROUND_ORES: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + UNDERGROUND_DECORATION: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + FLUID_SPRINGS: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + VEGETAL_DECORATION: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + TOP_LAYER_MODIFICATION: net.minecraft.world.level.levelgen.GenerationStep$Decoration; + CODEC: com.mojang.serialization.Codec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.world.level.levelgen.GenerationStep$Decoration; + } + interface GenerationStep$Decoration extends kotlin.Enum, net.minecraft.util.StringRepresentable { + getName(): string; + } + const BelowZeroRetrogen: { + CODEC: com.mojang.serialization.Codec; + UPGRADE_HEIGHT_ACCESSOR: net.minecraft.world.level.LevelHeightAccessor; + replaceOldBedrock(chunk: net.minecraft.world.level.chunk.ProtoChunk): void; + getBiomeResolver(biomeResolver: net.minecraft.world.level.biome.BiomeResolver, protoChunk: net.minecraft.world.level.chunk.ChunkAccess): net.minecraft.world.level.biome.BiomeResolver; + } + interface BelowZeroRetrogen { + targetStatus(): net.minecraft.world.level.chunk.status.ChunkStatus; + applyBedrockMask(chunk: net.minecraft.world.level.chunk.ProtoChunk): void; + hasBedrockHoles(): boolean; + hasBedrockHole(x: number, z: number): boolean; + } + const Heightmap$Types: { + WORLD_SURFACE_WG: net.minecraft.world.level.levelgen.Heightmap$Types; + WORLD_SURFACE: net.minecraft.world.level.levelgen.Heightmap$Types; + OCEAN_FLOOR_WG: net.minecraft.world.level.levelgen.Heightmap$Types; + OCEAN_FLOOR: net.minecraft.world.level.levelgen.Heightmap$Types; + MOTION_BLOCKING: net.minecraft.world.level.levelgen.Heightmap$Types; + MOTION_BLOCKING_NO_LEAVES: net.minecraft.world.level.levelgen.Heightmap$Types; + CODEC: com.mojang.serialization.Codec; + STREAM_CODEC: net.minecraft.network.codec.StreamCodec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.world.level.levelgen.Heightmap$Types; + } + interface Heightmap$Types extends kotlin.Enum, net.minecraft.util.StringRepresentable { + isOpaque(): unknown; + getSerializationKey(): string; + sendToClient(): boolean; + keepAfterWorldgen(): boolean; + } + const Heightmap: { + Types: typeof net.minecraft.world.level.levelgen.Heightmap$Types; + Usage: typeof net.minecraft.world.level.levelgen.Heightmap$Usage; + new(chunk: net.minecraft.world.level.chunk.ChunkAccess, heightmapType: net.minecraft.world.level.levelgen.Heightmap$Types): net.minecraft.world.level.levelgen.Heightmap; + primeHeightmaps(chunk: net.minecraft.world.level.chunk.ChunkAccess, types: Set): void; + } + interface Heightmap { + update(localX: number, localY: number, localZ: number, state: net.minecraft.world.level.block.state.BlockState): boolean; + getFirstAvailable(x: number, z: number): number; + getHighestTaken(x: number, z: number): number; + setRawData(chunk: net.minecraft.world.level.chunk.ChunkAccess, type: net.minecraft.world.level.levelgen.Heightmap$Types, data: Array): void; + getRawData(): Array; + } + const Heightmap$Usage: { + WORLDGEN: net.minecraft.world.level.levelgen.Heightmap$Usage; + LIVE_WORLD: net.minecraft.world.level.levelgen.Heightmap$Usage; + CLIENT: net.minecraft.world.level.levelgen.Heightmap$Usage; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.world.level.levelgen.Heightmap$Usage; + } + interface Heightmap$Usage extends kotlin.Enum { + } + const WorldgenRandom: { + Algorithm: typeof net.minecraft.world.level.levelgen.WorldgenRandom$Algorithm; + new(randomSource: net.minecraft.util.RandomSource): net.minecraft.world.level.levelgen.WorldgenRandom; + seedSlimeChunk(x: number, z: number, seed: number, salt: number): net.minecraft.util.RandomSource; + } + interface WorldgenRandom extends net.minecraft.world.level.levelgen.LegacyRandomSource { + getCount(): number; + setDecorationSeed(seed: number, chunkX: number, chunkZ: number): number; + setFeatureSeed(seed: number, index: number, step: number): void; + setLargeFeatureSeed(seed: number, chunkX: number, chunkZ: number): void; + setLargeFeatureWithSalt(seed: number, x: number, z: number, blend: number): void; + } + const LegacyRandomSource: { + LegacyPositionalRandomFactory: typeof net.minecraft.world.level.levelgen.LegacyRandomSource$LegacyPositionalRandomFactory; + new(seed: number): net.minecraft.world.level.levelgen.LegacyRandomSource; + } + interface LegacyRandomSource extends net.minecraft.world.level.levelgen.BitRandomSource { + } + const BitRandomSource: { + FLOAT_MULTIPLIER: number; + DOUBLE_MULTIPLIER: number; + } + interface BitRandomSource extends net.minecraft.util.RandomSource { + next(bits: number): number; + } + const LegacyRandomSource$LegacyPositionalRandomFactory: { + new(seed: number): net.minecraft.world.level.levelgen.LegacyRandomSource$LegacyPositionalRandomFactory; + } + interface LegacyRandomSource$LegacyPositionalRandomFactory extends net.minecraft.world.level.levelgen.PositionalRandomFactory { + } + const WorldgenRandom$Algorithm: { + LEGACY: net.minecraft.world.level.levelgen.WorldgenRandom$Algorithm; + XOROSHIRO: net.minecraft.world.level.levelgen.WorldgenRandom$Algorithm; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.world.level.levelgen.WorldgenRandom$Algorithm; + } + interface WorldgenRandom$Algorithm extends kotlin.Enum { + newInstance(seed: number): net.minecraft.util.RandomSource; + } const NoiseChunk: { NoiseInterpolator: typeof net.minecraft.world.level.levelgen.NoiseChunk$NoiseInterpolator; new(cellCountXZ: number, randomState: net.minecraft.world.level.levelgen.RandomState, chunkMinBlockX: number, chunkMinBlockZ: number, noiseSettings: net.minecraft.world.level.levelgen.NoiseSettings, beardifier: net.minecraft.world.level.levelgen.DensityFunctions$BeardifierOrMarker, settings: net.minecraft.world.level.levelgen.NoiseGeneratorSettings, globalFluidPicker: net.minecraft.world.level.levelgen.Aquifer$FluidPicker, blender: net.minecraft.world.level.levelgen.blending.Blender): net.minecraft.world.level.levelgen.NoiseChunk; @@ -26899,10 +27078,6 @@ declare global { stopInterpolation(): void; swapSlices(): void; } - interface DensityFunction$ContextProvider { - forIndex(index: number): net.minecraft.world.level.levelgen.DensityFunction$FunctionContext; - fillAllDirectly(output: kotlin.DoubleArray, function_: net.minecraft.world.level.levelgen.DensityFunction): void; - } const Aquifer: { NoiseBasedAquifer: typeof net.minecraft.world.level.levelgen.Aquifer$NoiseBasedAquifer; FluidStatus: typeof net.minecraft.world.level.levelgen.Aquifer$FluidStatus; @@ -26932,6 +27107,19 @@ declare global { type(): unknown; wrapped(): net.minecraft.world.level.levelgen.DensityFunction; } + const DensityFunctions$Marker$Type: { + Interpolated: net.minecraft.world.level.levelgen.DensityFunctions.DensityFunctions$Marker$Type; + FlatCache: net.minecraft.world.level.levelgen.DensityFunctions.DensityFunctions$Marker$Type; + Cache2D: net.minecraft.world.level.levelgen.DensityFunctions.DensityFunctions$Marker$Type; + CacheOnce: net.minecraft.world.level.levelgen.DensityFunctions.DensityFunctions$Marker$Type; + CacheAllInCell: net.minecraft.world.level.levelgen.DensityFunctions.DensityFunctions$Marker$Type; + BlendDensity: net.minecraft.world.level.levelgen.DensityFunctions.DensityFunctions$Marker$Type; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): unknown; + } + interface DensityFunctions$Marker$Type extends kotlin.Enum, net.minecraft.util.StringRepresentable { + } const NoiseSettings: { CODEC: com.mojang.serialization.Codec; new(minY: number, height: number, noiseSizeHorizontal: number, noiseSizeVertical: number): net.minecraft.world.level.levelgen.NoiseSettings; @@ -26951,8 +27139,6 @@ declare global { } interface DensityFunctions$BeardifierOrMarker extends net.minecraft.world.level.levelgen.DensityFunction$SimpleFunction { } - interface DensityFunction$SimpleFunction extends net.minecraft.world.level.levelgen.DensityFunction { - } const NoiseGeneratorSettings: { DIRECT_CODEC: com.mojang.serialization.Codec; CODEC: com.mojang.serialization.Codec>; @@ -26982,22 +27168,12 @@ declare global { aquifersEnabled(): boolean; useLegacyRandomSource(): boolean; } - const WorldgenRandom$Algorithm: { - LEGACY: net.minecraft.world.level.levelgen.WorldgenRandom$Algorithm; - XOROSHIRO: net.minecraft.world.level.levelgen.WorldgenRandom$Algorithm; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.world.level.levelgen.WorldgenRandom$Algorithm; - } - interface WorldgenRandom$Algorithm extends kotlin.Enum { - newInstance(seed: number): net.minecraft.util.RandomSource; - } const SurfaceRules$RuleSource: { CODEC: com.mojang.serialization.Codec; bootstrap(registry: net.minecraft.core.Registry>): com.mojang.serialization.MapCodec; } interface SurfaceRules$RuleSource { - codec(): net.minecraft.util.KeyDispatchDataCodec; + codec(): com.mojang.serialization.MapCodec; } interface NoiseChunk$BlockStateFiller { calculate(context: net.minecraft.world.level.levelgen.DensityFunction$FunctionContext): net.minecraft.world.level.block.state.BlockState | null | undefined; @@ -27011,96 +27187,7 @@ declare global { generatorSettings(): net.minecraft.core.Holder; stable(expectedPreset: net.minecraft.resources.ResourceKey): boolean; getInterpolatedNoiseValue(randomState: net.minecraft.world.level.levelgen.RandomState, context: net.minecraft.world.level.levelgen.DensityFunction$FunctionContext): number; - buildSurface(protoChunk: net.minecraft.world.level.chunk.ChunkAccess, context: net.minecraft.world.level.levelgen.WorldGenerationContext, randomState: net.minecraft.world.level.levelgen.RandomState, structureManager: net.minecraft.world.level.StructureManager, biomeManager: net.minecraft.world.level.biome.BiomeManager, biomeRegistry: net.minecraft.core.Registry, blender: net.minecraft.world.level.levelgen.blending.Blender): void; - } - const Heightmap$Types: { - WORLD_SURFACE_WG: net.minecraft.world.level.levelgen.Heightmap$Types; - WORLD_SURFACE: net.minecraft.world.level.levelgen.Heightmap$Types; - OCEAN_FLOOR_WG: net.minecraft.world.level.levelgen.Heightmap$Types; - OCEAN_FLOOR: net.minecraft.world.level.levelgen.Heightmap$Types; - MOTION_BLOCKING: net.minecraft.world.level.levelgen.Heightmap$Types; - MOTION_BLOCKING_NO_LEAVES: net.minecraft.world.level.levelgen.Heightmap$Types; - CODEC: com.mojang.serialization.Codec; - STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.world.level.levelgen.Heightmap$Types; - } - interface Heightmap$Types extends kotlin.Enum, net.minecraft.util.StringRepresentable { - isOpaque(): unknown; - getSerializationKey(): string; - sendToClient(): boolean; - keepAfterWorldgen(): boolean; - } - const WorldgenRandom: { - Algorithm: typeof net.minecraft.world.level.levelgen.WorldgenRandom$Algorithm; - new(randomSource: net.minecraft.util.RandomSource): net.minecraft.world.level.levelgen.WorldgenRandom; - seedSlimeChunk(x: number, z: number, seed: number, salt: number): net.minecraft.util.RandomSource; - } - interface WorldgenRandom extends net.minecraft.world.level.levelgen.LegacyRandomSource { - getCount(): number; - setDecorationSeed(seed: number, chunkX: number, chunkZ: number): number; - setFeatureSeed(seed: number, index: number, step: number): void; - setLargeFeatureSeed(seed: number, chunkX: number, chunkZ: number): void; - setLargeFeatureWithSalt(seed: number, x: number, z: number, blend: number): void; - } - const LegacyRandomSource: { - LegacyPositionalRandomFactory: typeof net.minecraft.world.level.levelgen.LegacyRandomSource$LegacyPositionalRandomFactory; - new(seed: number): net.minecraft.world.level.levelgen.LegacyRandomSource; - } - interface LegacyRandomSource extends net.minecraft.world.level.levelgen.BitRandomSource { - } - const BitRandomSource: { - FLOAT_MULTIPLIER: number; - DOUBLE_MULTIPLIER: number; - } - interface BitRandomSource extends net.minecraft.util.RandomSource { - next(bits: number): number; - } - const LegacyRandomSource$LegacyPositionalRandomFactory: { - new(seed: number): net.minecraft.world.level.levelgen.LegacyRandomSource$LegacyPositionalRandomFactory; - } - interface LegacyRandomSource$LegacyPositionalRandomFactory extends net.minecraft.world.level.levelgen.PositionalRandomFactory { - } - const BelowZeroRetrogen: { - CODEC: com.mojang.serialization.Codec; - UPGRADE_HEIGHT_ACCESSOR: net.minecraft.world.level.LevelHeightAccessor; - replaceOldBedrock(chunk: net.minecraft.world.level.chunk.ProtoChunk): void; - getBiomeResolver(biomeResolver: net.minecraft.world.level.biome.BiomeResolver, protoChunk: net.minecraft.world.level.chunk.ChunkAccess): net.minecraft.world.level.biome.BiomeResolver; - } - interface BelowZeroRetrogen { - targetStatus(): net.minecraft.world.level.chunk.status.ChunkStatus; - applyBedrockMask(chunk: net.minecraft.world.level.chunk.ProtoChunk): void; - hasBedrockHoles(): boolean; - hasBedrockHole(x: number, z: number): boolean; - } - const Heightmap: { - Types: typeof net.minecraft.world.level.levelgen.Heightmap$Types; - Usage: typeof net.minecraft.world.level.levelgen.Heightmap$Usage; - new(chunk: net.minecraft.world.level.chunk.ChunkAccess, heightmapType: net.minecraft.world.level.levelgen.Heightmap$Types): net.minecraft.world.level.levelgen.Heightmap; - primeHeightmaps(chunk: net.minecraft.world.level.chunk.ChunkAccess, types: Set): void; - } - interface Heightmap { - update(localX: number, localY: number, localZ: number, state: net.minecraft.world.level.block.state.BlockState): boolean; - getFirstAvailable(x: number, z: number): number; - getHighestTaken(x: number, z: number): number; - setRawData(chunk: net.minecraft.world.level.chunk.ChunkAccess, type: net.minecraft.world.level.levelgen.Heightmap$Types, data: Array): void; - getRawData(): Array; - } - const Heightmap$Usage: { - WORLDGEN: net.minecraft.world.level.levelgen.Heightmap$Usage; - LIVE_WORLD: net.minecraft.world.level.levelgen.Heightmap$Usage; - CLIENT: net.minecraft.world.level.levelgen.Heightmap$Usage; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.world.level.levelgen.Heightmap$Usage; - } - interface Heightmap$Usage extends kotlin.Enum { - } - const DensityFunction$SinglePointContext: { - new(blockX: number, blockY: number, blockZ: number): net.minecraft.world.level.levelgen.DensityFunction$SinglePointContext; - } - interface DensityFunction$SinglePointContext extends java.lang.Record, net.minecraft.world.level.levelgen.DensityFunction$FunctionContext { + buildSurface(protoChunk: net.minecraft.world.level.chunk.ChunkAccess, context: net.minecraft.world.level.levelgen.WorldGenerationContext, randomState: net.minecraft.world.level.levelgen.RandomState, structureManager: net.minecraft.world.level.StructureManager, biomeManager: net.minecraft.world.level.biome.BiomeManager, blender: net.minecraft.world.level.levelgen.blending.Blender, possibleBiomes: Set> | null | undefined): void; } const WorldDimensions$Complete: { new(dimensions: net.minecraft.core.Registry, specialWorldProperty: net.minecraft.world.level.storage.PrimaryLevelData$SpecialWorldProperty): net.minecraft.world.level.levelgen.WorldDimensions$Complete; @@ -27275,9 +27362,19 @@ declare global { const LootPoolEntryContainer: { Builder: typeof net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer$Builder; } - interface LootPoolEntryContainer extends net.minecraft.world.level.storage.loot.Validatable { + interface LootPoolEntryContainer extends net.minecraft.world.level.storage.loot.entries.ComposableEntryContainer, net.minecraft.world.level.storage.loot.Validatable { codec(): com.mojang.serialization.MapCodec; } + const ComposableEntryContainer: { + ALWAYS_FALSE: net.minecraft.world.level.storage.loot.entries.ComposableEntryContainer; + ALWAYS_TRUE: net.minecraft.world.level.storage.loot.entries.ComposableEntryContainer; + } + interface ComposableEntryContainer { + expand(context: net.minecraft.world.level.storage.loot.LootContext, output: unknown): boolean; + and(other: net.minecraft.world.level.storage.loot.entries.ComposableEntryContainer): net.minecraft.world.level.storage.loot.entries.ComposableEntryContainer; + or(other: net.minecraft.world.level.storage.loot.entries.ComposableEntryContainer): net.minecraft.world.level.storage.loot.entries.ComposableEntryContainer; + (context: net.minecraft.world.level.storage.loot.LootContext, output: unknown): boolean; + } const LootPoolEntryContainer$Builder: { new(): net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer$Builder; } @@ -27500,6 +27597,7 @@ declare global { setRolls(rolls: net.minecraft.world.level.storage.loot.providers.number.NumberProvider): net.minecraft.world.level.storage.loot.LootPool$Builder; setBonusRolls(bonusRolls: net.minecraft.world.level.storage.loot.providers.number.NumberProvider): net.minecraft.world.level.storage.loot.LootPool$Builder; add(entry: net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer$Builder): net.minecraft.world.level.storage.loot.LootPool$Builder; + addAll(entries: Array): net.minecraft.world.level.storage.loot.LootPool$Builder; build(): net.minecraft.world.level.storage.loot.LootPool; } const LootContext$ItemStackTarget: { @@ -27727,6 +27825,7 @@ declare global { getGameType(): net.minecraft.world.level.GameType; setGameType(gameType: net.minecraft.world.level.GameType): void; isAllowCommands(): boolean; + setAllowCommands(allowCommands: boolean): void; getDifficulty(): net.minecraft.world.Difficulty; setDifficulty(difficulty: net.minecraft.world.Difficulty): void; isDifficultyLocked(): boolean; @@ -27743,6 +27842,7 @@ declare global { isInitialized(): boolean; setInitialized(initialized: boolean): void; isAllowCommands(): boolean; + setAllowCommands(allowCommands: boolean): void; setGameType(gameType: net.minecraft.world.level.GameType): void; setGameTime(time: number): void; } @@ -28039,81 +28139,6 @@ declare global { getName(): string; isSlope(): boolean; } - const WoodType: { - CODEC: com.mojang.serialization.Codec; - OAK: net.minecraft.world.level.block.state.properties.WoodType; - SPRUCE: net.minecraft.world.level.block.state.properties.WoodType; - BIRCH: net.minecraft.world.level.block.state.properties.WoodType; - ACACIA: net.minecraft.world.level.block.state.properties.WoodType; - CHERRY: net.minecraft.world.level.block.state.properties.WoodType; - JUNGLE: net.minecraft.world.level.block.state.properties.WoodType; - DARK_OAK: net.minecraft.world.level.block.state.properties.WoodType; - PALE_OAK: net.minecraft.world.level.block.state.properties.WoodType; - CRIMSON: net.minecraft.world.level.block.state.properties.WoodType; - WARPED: net.minecraft.world.level.block.state.properties.WoodType; - MANGROVE: net.minecraft.world.level.block.state.properties.WoodType; - BAMBOO: net.minecraft.world.level.block.state.properties.WoodType; - new(name: string, setType: net.minecraft.world.level.block.state.properties.BlockSetType): net.minecraft.world.level.block.state.properties.WoodType; - new(name: string, setType: net.minecraft.world.level.block.state.properties.BlockSetType, soundType: net.minecraft.world.level.block.SoundType, hangingSignSoundType: net.minecraft.world.level.block.SoundType, fenceGateClose: net.minecraft.sounds.SoundEvent, fenceGateOpen: net.minecraft.sounds.SoundEvent): net.minecraft.world.level.block.state.properties.WoodType; - values(): java.util.stream.Stream; - } - interface WoodType extends java.lang.Record { - name(): string; - setType(): net.minecraft.world.level.block.state.properties.BlockSetType; - soundType(): net.minecraft.world.level.block.SoundType; - hangingSignSoundType(): net.minecraft.world.level.block.SoundType; - fenceGateClose(): net.minecraft.sounds.SoundEvent; - fenceGateOpen(): net.minecraft.sounds.SoundEvent; - } - const BlockSetType: { - PressurePlateSensitivity: typeof net.minecraft.world.level.block.state.properties.BlockSetType$PressurePlateSensitivity; - CODEC: com.mojang.serialization.Codec; - IRON: net.minecraft.world.level.block.state.properties.BlockSetType; - COPPER: net.minecraft.world.level.block.state.properties.BlockSetType; - GOLD: net.minecraft.world.level.block.state.properties.BlockSetType; - STONE: net.minecraft.world.level.block.state.properties.BlockSetType; - POLISHED_BLACKSTONE: net.minecraft.world.level.block.state.properties.BlockSetType; - OAK: net.minecraft.world.level.block.state.properties.BlockSetType; - SPRUCE: net.minecraft.world.level.block.state.properties.BlockSetType; - BIRCH: net.minecraft.world.level.block.state.properties.BlockSetType; - ACACIA: net.minecraft.world.level.block.state.properties.BlockSetType; - CHERRY: net.minecraft.world.level.block.state.properties.BlockSetType; - JUNGLE: net.minecraft.world.level.block.state.properties.BlockSetType; - DARK_OAK: net.minecraft.world.level.block.state.properties.BlockSetType; - PALE_OAK: net.minecraft.world.level.block.state.properties.BlockSetType; - CRIMSON: net.minecraft.world.level.block.state.properties.BlockSetType; - WARPED: net.minecraft.world.level.block.state.properties.BlockSetType; - MANGROVE: net.minecraft.world.level.block.state.properties.BlockSetType; - BAMBOO: net.minecraft.world.level.block.state.properties.BlockSetType; - new(name: string): net.minecraft.world.level.block.state.properties.BlockSetType; - new(name: string, canOpenByHand: boolean, canOpenByWindCharge: boolean, canButtonBeActivatedByArrows: boolean, pressurePlateSensitivity: net.minecraft.world.level.block.state.properties.BlockSetType$PressurePlateSensitivity, soundType: net.minecraft.world.level.block.SoundType, doorClose: net.minecraft.sounds.SoundEvent, doorOpen: net.minecraft.sounds.SoundEvent, trapdoorClose: net.minecraft.sounds.SoundEvent, trapdoorOpen: net.minecraft.sounds.SoundEvent, pressurePlateClickOff: net.minecraft.sounds.SoundEvent, pressurePlateClickOn: net.minecraft.sounds.SoundEvent, buttonClickOff: net.minecraft.sounds.SoundEvent, buttonClickOn: net.minecraft.sounds.SoundEvent): net.minecraft.world.level.block.state.properties.BlockSetType; - values(): java.util.stream.Stream; - } - interface BlockSetType extends java.lang.Record { - name(): string; - canOpenByHand(): boolean; - canOpenByWindCharge(): boolean; - canButtonBeActivatedByArrows(): boolean; - pressurePlateSensitivity(): net.minecraft.world.level.block.state.properties.BlockSetType$PressurePlateSensitivity; - soundType(): net.minecraft.world.level.block.SoundType; - doorClose(): net.minecraft.sounds.SoundEvent; - doorOpen(): net.minecraft.sounds.SoundEvent; - trapdoorClose(): net.minecraft.sounds.SoundEvent; - trapdoorOpen(): net.minecraft.sounds.SoundEvent; - pressurePlateClickOff(): net.minecraft.sounds.SoundEvent; - pressurePlateClickOn(): net.minecraft.sounds.SoundEvent; - buttonClickOff(): net.minecraft.sounds.SoundEvent; - buttonClickOn(): net.minecraft.sounds.SoundEvent; - } - const BlockSetType$PressurePlateSensitivity: { - EVERYTHING: net.minecraft.world.level.block.state.properties.BlockSetType$PressurePlateSensitivity; - MOBS: net.minecraft.world.level.block.state.properties.BlockSetType$PressurePlateSensitivity; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.world.level.block.state.properties.BlockSetType$PressurePlateSensitivity; - } - interface BlockSetType$PressurePlateSensitivity extends kotlin.Enum { - } } namespace pattern { const BlockInWorld: { @@ -28143,7 +28168,7 @@ declare global { isRedstoneConductor(level: net.minecraft.world.level.BlockGetter, pos: net.minecraft.core.BlockPos): boolean; isSuffocating(level: net.minecraft.world.level.BlockGetter, pos: net.minecraft.core.BlockPos): boolean; isViewBlocking(level: net.minecraft.world.level.BlockGetter, pos: net.minecraft.core.BlockPos): boolean; - emissiveRendering(level: net.minecraft.world.level.BlockGetter, pos: net.minecraft.core.BlockPos): boolean; + emissiveRendering(): boolean; instrument(): net.minecraft.world.level.block.state.properties.NoteBlockInstrument; isRandomlyTicking(): boolean; propagatesSkylightDown(): boolean; @@ -28163,6 +28188,7 @@ declare global { getRenderShape(): net.minecraft.world.level.block.RenderShape; getShadeBrightness(level: net.minecraft.world.level.BlockGetter, pos: net.minecraft.core.BlockPos): number; isSignalSource(): boolean; + getOwnSignal(level: net.minecraft.world.level.BlockGetter, pos: net.minecraft.core.BlockPos): number; getSignal(level: net.minecraft.world.level.BlockGetter, pos: net.minecraft.core.BlockPos, direction: net.minecraft.core.Direction): number; hasAnalogOutputSignal(): boolean; getAnalogOutputSignal(level: net.minecraft.world.level.Level, pos: net.minecraft.core.BlockPos, direction: net.minecraft.core.Direction): number; @@ -28270,6 +28296,7 @@ declare global { friction(friction: number): net.minecraft.world.level.block.state.BlockBehaviour$Properties; speedFactor(speedFactor: number): net.minecraft.world.level.block.state.BlockBehaviour$Properties; jumpFactor(jumpFactor: number): net.minecraft.world.level.block.state.BlockBehaviour$Properties; + bounceRestitution(bounceRestitution: number): net.minecraft.world.level.block.state.BlockBehaviour$Properties; ignitedByLava(): net.minecraft.world.level.block.state.BlockBehaviour$Properties; liquid(): net.minecraft.world.level.block.state.BlockBehaviour$Properties; forceSolidOff(): net.minecraft.world.level.block.state.BlockBehaviour$Properties; @@ -28282,7 +28309,7 @@ declare global { isSuffocating(isSuffocating: net.minecraft.world.level.block.state.BlockBehaviour$StatePredicate): net.minecraft.world.level.block.state.BlockBehaviour$Properties; isViewBlocking(isViewBlocking: net.minecraft.world.level.block.state.BlockBehaviour$StatePredicate): net.minecraft.world.level.block.state.BlockBehaviour$Properties; postProcess(postProcess: net.minecraft.world.level.block.state.BlockBehaviour$PostProcess): net.minecraft.world.level.block.state.BlockBehaviour$Properties; - emissiveRendering(emissiveRendering: net.minecraft.world.level.block.state.BlockBehaviour$StatePredicate): net.minecraft.world.level.block.state.BlockBehaviour$Properties; + emissiveRendering(emissiveRendering: unknown): net.minecraft.world.level.block.state.BlockBehaviour$Properties; dynamicShape(): net.minecraft.world.level.block.state.BlockBehaviour$Properties; requiredFeatures(flags: net.minecraft.world.flag.FeatureFlag): net.minecraft.world.level.block.state.BlockBehaviour$Properties; noCollision(): net.minecraft.world.level.block.state.BlockBehaviour$Properties; @@ -28406,55 +28433,7 @@ declare global { problemPath(): net.minecraft.util.ProblemReporter$PathElement; } const BlockEntityType: { - FURNACE: net.minecraft.world.level.block.entity.BlockEntityType; - CHEST: net.minecraft.world.level.block.entity.BlockEntityType; - TRAPPED_CHEST: net.minecraft.world.level.block.entity.BlockEntityType; - ENDER_CHEST: net.minecraft.world.level.block.entity.BlockEntityType; - JUKEBOX: net.minecraft.world.level.block.entity.BlockEntityType; - DISPENSER: net.minecraft.world.level.block.entity.BlockEntityType; - DROPPER: net.minecraft.world.level.block.entity.BlockEntityType; - SIGN: net.minecraft.world.level.block.entity.BlockEntityType; - HANGING_SIGN: net.minecraft.world.level.block.entity.BlockEntityType; - MOB_SPAWNER: net.minecraft.world.level.block.entity.BlockEntityType; - CREAKING_HEART: net.minecraft.world.level.block.entity.BlockEntityType; - PISTON: net.minecraft.world.level.block.entity.BlockEntityType; - BREWING_STAND: net.minecraft.world.level.block.entity.BlockEntityType; - ENCHANTING_TABLE: net.minecraft.world.level.block.entity.BlockEntityType; - END_PORTAL: net.minecraft.world.level.block.entity.BlockEntityType; - BEACON: net.minecraft.world.level.block.entity.BlockEntityType; - SKULL: net.minecraft.world.level.block.entity.BlockEntityType; - DAYLIGHT_DETECTOR: net.minecraft.world.level.block.entity.BlockEntityType; - HOPPER: net.minecraft.world.level.block.entity.BlockEntityType; - COMPARATOR: net.minecraft.world.level.block.entity.BlockEntityType; - BANNER: net.minecraft.world.level.block.entity.BlockEntityType; - STRUCTURE_BLOCK: net.minecraft.world.level.block.entity.BlockEntityType; - END_GATEWAY: net.minecraft.world.level.block.entity.BlockEntityType; - COMMAND_BLOCK: net.minecraft.world.level.block.entity.BlockEntityType; - SHULKER_BOX: net.minecraft.world.level.block.entity.BlockEntityType; - BED: net.minecraft.world.level.block.entity.BlockEntityType; - CONDUIT: net.minecraft.world.level.block.entity.BlockEntityType; - BARREL: net.minecraft.world.level.block.entity.BlockEntityType; - SMOKER: net.minecraft.world.level.block.entity.BlockEntityType; - BLAST_FURNACE: net.minecraft.world.level.block.entity.BlockEntityType; - LECTERN: net.minecraft.world.level.block.entity.BlockEntityType; - BELL: net.minecraft.world.level.block.entity.BlockEntityType; - JIGSAW: net.minecraft.world.level.block.entity.BlockEntityType; - CAMPFIRE: net.minecraft.world.level.block.entity.BlockEntityType; - BEEHIVE: net.minecraft.world.level.block.entity.BlockEntityType; - SCULK_SENSOR: net.minecraft.world.level.block.entity.BlockEntityType; - CALIBRATED_SCULK_SENSOR: net.minecraft.world.level.block.entity.BlockEntityType; - SCULK_CATALYST: net.minecraft.world.level.block.entity.BlockEntityType; - SCULK_SHRIEKER: net.minecraft.world.level.block.entity.BlockEntityType; - CHISELED_BOOKSHELF: net.minecraft.world.level.block.entity.BlockEntityType; - SHELF: net.minecraft.world.level.block.entity.BlockEntityType; - BRUSHABLE_BLOCK: net.minecraft.world.level.block.entity.BlockEntityType; - DECORATED_POT: net.minecraft.world.level.block.entity.BlockEntityType; - CRAFTER: net.minecraft.world.level.block.entity.BlockEntityType; - TRIAL_SPAWNER: net.minecraft.world.level.block.entity.BlockEntityType; - VAULT: net.minecraft.world.level.block.entity.BlockEntityType; - TEST_BLOCK: net.minecraft.world.level.block.entity.BlockEntityType; - TEST_INSTANCE_BLOCK: net.minecraft.world.level.block.entity.BlockEntityType; - COPPER_GOLEM_STATUE: net.minecraft.world.level.block.entity.BlockEntityType; + new(factory: net.minecraft.world.level.block.entity.BlockEntityType$BlockEntitySupplier, validBlocks: Set): net.minecraft.world.level.block.entity.BlockEntityType; } interface BlockEntityType extends net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityType { builtInRegistryHolder(): net.minecraft.core.Holder$Reference>; @@ -28463,6 +28442,10 @@ declare global { getBlockEntity(level: net.minecraft.world.level.BlockGetter, pos: net.minecraft.core.BlockPos): T; onlyOpCanSetNbt(): boolean; } + interface BlockEntityType$BlockEntitySupplier { + create(worldPosition: net.minecraft.core.BlockPos, blockState: net.minecraft.world.level.block.state.BlockState): T; + (worldPosition: net.minecraft.core.BlockPos, blockState: net.minecraft.world.level.block.state.BlockState): T; + } const JigsawBlockEntity$JointType: { ROLLABLE: net.minecraft.world.level.block.entity.JigsawBlockEntity$JointType; ALIGNED: net.minecraft.world.level.block.entity.JigsawBlockEntity$JointType; @@ -28495,6 +28478,7 @@ declare global { } interface BlockEntityTicker { tick(level: net.minecraft.world.level.Level, pos: net.minecraft.core.BlockPos, state: net.minecraft.world.level.block.state.BlockState, entity: T): void; + andThen(after: net.minecraft.world.level.block.entity.BlockEntityTicker): net.minecraft.world.level.block.entity.BlockEntityTicker; (level: net.minecraft.world.level.Level, pos: net.minecraft.core.BlockPos, state: net.minecraft.world.level.block.state.BlockState, entity: T): void; } const CommandBlockEntity$Mode: { @@ -28906,7 +28890,7 @@ declare global { isPossibleToRespawnInThis(state: net.minecraft.world.level.block.state.BlockState): boolean; getName(): net.minecraft.network.chat.MutableComponent; fallOn(level: net.minecraft.world.level.Level, state: net.minecraft.world.level.block.state.BlockState, pos: net.minecraft.core.BlockPos, entity: net.minecraft.world.entity.Entity, fallDistance: number): void; - updateEntityMovementAfterFallOn(level: net.minecraft.world.level.BlockGetter, entity: net.minecraft.world.entity.Entity): void; + getBounceRestitution(): number; getFriction(): number; getSpeedFactor(): number; getJumpFactor(): number; @@ -29041,6 +29025,10 @@ declare global { RESIN_BRICKS: net.minecraft.world.level.block.SoundType; IRON: net.minecraft.world.level.block.SoundType; DRIED_GHAST: net.minecraft.world.level.block.SoundType; + SULFUR: net.minecraft.world.level.block.SoundType; + POTENT_SULFUR: net.minecraft.world.level.block.SoundType; + SULFUR_SPIKE: net.minecraft.world.level.block.SoundType; + CINNABAR: net.minecraft.world.level.block.SoundType; new(volume: number, pitch: number, breakSound: net.minecraft.sounds.SoundEvent, stepSound: net.minecraft.sounds.SoundEvent, placeSound: net.minecraft.sounds.SoundEvent, hitSound: net.minecraft.sounds.SoundEvent, fallSound: net.minecraft.sounds.SoundEvent): net.minecraft.world.level.block.SoundType; } interface SoundType { @@ -29550,9 +29538,6 @@ declare global { dimension(): net.minecraft.resources.ResourceKey; type(): string; } - interface ChunkScanAccess { - scanChunk(pos: net.minecraft.world.level.ChunkPos, visitor: net.minecraft.nbt.StreamTagVisitor): java.util.concurrent.CompletableFuture; - } const SimpleRegionStorage: { new(info: net.minecraft.world.level.chunk.storage.RegionStorageInfo, folder: java.nio.file.Path, fixerUpper: com.mojang.datafixers.DataFixer, syncWrites: boolean, dataFixType: net.minecraft.util.datafix.DataFixTypes): net.minecraft.world.level.chunk.storage.SimpleRegionStorage; injectDatafixingContext(chunkTag: net.minecraft.nbt.CompoundTag, contextTag: net.minecraft.nbt.CompoundTag | null | undefined): void; @@ -29569,6 +29554,9 @@ declare global { chunkScanner(): net.minecraft.world.level.chunk.storage.ChunkScanAccess; storageInfo(): net.minecraft.world.level.chunk.storage.RegionStorageInfo; } + interface ChunkScanAccess { + scanChunk(pos: net.minecraft.world.level.ChunkPos, visitor: net.minecraft.nbt.StreamTagVisitor): java.util.concurrent.CompletableFuture; + } const SectionStorage: { new(simpleRegionStorage: net.minecraft.world.level.chunk.storage.SimpleRegionStorage, codec: com.mojang.serialization.Codec

, packer: unknown, unpacker: unknown, factory: unknown, registryAccess: net.minecraft.core.RegistryAccess, errorReporter: net.minecraft.world.level.chunk.storage.ChunkIOErrorReporter, levelHeightAccessor: net.minecraft.world.level.LevelHeightAccessor): net.minecraft.world.level.chunk.storage.SectionStorage; } @@ -29731,7 +29719,7 @@ declare global { getPersistedStatus(): net.minecraft.world.level.chunk.status.ChunkStatus; getHighestGeneratedStatus(): net.minecraft.world.level.chunk.status.ChunkStatus; removeBlockEntity(pos: net.minecraft.core.BlockPos): void; - markPosForPostprocessing(blockPos: net.minecraft.core.BlockPos): void; + markPosForPostProcessing(blockPos: net.minecraft.core.BlockPos): void; getPostProcessing(): Array; addPackedPostProcess(packedOffsets: it.unimi.dsi.fastutil.shorts.ShortList, sectionIndex: number): void; setBlockEntityNbt(entityTag: net.minecraft.nbt.CompoundTag): void; @@ -29740,6 +29728,7 @@ declare global { findBlocks(predicate: unknown, consumer: unknown): void; getBlockTicks(): net.minecraft.world.ticks.TickContainerAccess; getFluidTicks(): net.minecraft.world.ticks.TickContainerAccess; + collectBiomesInPalette(output: Set>): void; canBeSerialized(): boolean; getTicksForSerialization(currentTick: number): net.minecraft.world.level.chunk.ChunkAccess$PackedTicks; getUpgradeData(): net.minecraft.world.level.chunk.UpgradeData; @@ -29771,32 +29760,48 @@ declare global { getAllReferences(): Map; setAllReferences(data: Map): void; } - const ChunkGeneratorStructureState: { - createForFlat(randomState: net.minecraft.world.level.levelgen.RandomState, levelSeed: number, biomeSource: net.minecraft.world.level.biome.BiomeSource, structureOverrides: java.util.stream.Stream>): net.minecraft.world.level.chunk.ChunkGeneratorStructureState; - createForNormal(randomState: net.minecraft.world.level.levelgen.RandomState, levelSeed: number, biomeSource: net.minecraft.world.level.biome.BiomeSource, allStructures: net.minecraft.core.HolderLookup): net.minecraft.world.level.chunk.ChunkGeneratorStructureState; + const DataLayer: { + LAYER_COUNT: number; + LAYER_SIZE: number; + SIZE: number; + new(): net.minecraft.world.level.chunk.DataLayer; + new(defaultValue: number): net.minecraft.world.level.chunk.DataLayer; + new(data: Array): net.minecraft.world.level.chunk.DataLayer; } - interface ChunkGeneratorStructureState { - randomState(): net.minecraft.world.level.levelgen.RandomState; - possibleStructureSets(): Array>; - ensureStructuresGenerated(): void; - getRingPositionsFor(placement: net.minecraft.world.level.levelgen.structure.placement.ConcentricRingsStructurePlacement): Array | null | undefined; - getPlacementsForStructure(structure: net.minecraft.core.Holder): Array; - hasStructureChunkInRange(structureSet: net.minecraft.core.Holder, sourceX: number, sourceZ: number, range: number): boolean; - getLevelSeed(): number; + interface DataLayer { + get(x: number, y: number, z: number): number; + get(index: number): number; + set(x: number, y: number, z: number, val: number): void; + set(index: number, val: number): void; + fill(value: number): void; + getData(): Array; + copy(): net.minecraft.world.level.chunk.DataLayer; + layerToString(layer: number): string; + isDefinitelyHomogenous(): boolean; + isDefinitelyFilledWith(value: number): boolean; + isEmpty(): boolean; } - interface BlockColumn { - getBlock(blockY: number): net.minecraft.world.level.block.state.BlockState; - setBlock(blockY: number, state: net.minecraft.world.level.block.state.BlockState): void; + interface LightChunkGetter { + getChunkForLighting(x: number, z: number): net.minecraft.world.level.chunk.LightChunk | null | undefined; + onLightUpdate(layer: net.minecraft.world.level.LightLayer, pos: net.minecraft.core.SectionPos): void; + getLevel(): net.minecraft.world.level.BlockGetter; } - const UpgradeData: { - EMPTY: net.minecraft.world.level.chunk.UpgradeData; - new(tag: net.minecraft.nbt.CompoundTag, levelHeightAccessor: net.minecraft.world.level.LevelHeightAccessor): net.minecraft.world.level.chunk.UpgradeData; + const ChunkSource: { + new(): net.minecraft.world.level.chunk.ChunkSource; } - interface UpgradeData { - upgrade(chunk: net.minecraft.world.level.chunk.LevelChunk): void; - isEmpty(): boolean; - write(): net.minecraft.nbt.CompoundTag; - copy(): net.minecraft.world.level.chunk.UpgradeData; + interface ChunkSource extends java.lang.AutoCloseable, net.minecraft.world.level.chunk.LightChunkGetter { + getChunk(x: number, z: number, loadOrGenerate: boolean): net.minecraft.world.level.chunk.LevelChunk | null | undefined; + getChunk(x: number, z: number, targetStatus: net.minecraft.world.level.chunk.status.ChunkStatus, loadOrGenerate: boolean): net.minecraft.world.level.chunk.ChunkAccess | null | undefined; + getChunkNow(x: number, z: number): net.minecraft.world.level.chunk.LevelChunk | null | undefined; + hasChunk(x: number, z: number): boolean; + tick(haveTime: unknown, tickChunks: boolean): void; + onSectionEmptinessChanged(sectionX: number, sectionY: number, sectionZ: number, empty: boolean): void; + gatherStats(): string; + getLoadedChunksCount(): number; + getLightEngine(): net.minecraft.world.level.lighting.LevelLightEngine; + setSpawnSettings(spawnEnemies: boolean): void; + updateChunkForced(pos: net.minecraft.world.level.ChunkPos, forced: boolean): boolean; + getForceLoadedChunks(): it.unimi.dsi.fastutil.longs.LongSet; } const LevelChunk: { EntityCreationType: typeof net.minecraft.world.level.chunk.LevelChunk$EntityCreationType; @@ -29846,6 +29851,20 @@ declare global { } interface LevelChunk$EntityCreationType extends kotlin.Enum { } + const UpgradeData: { + EMPTY: net.minecraft.world.level.chunk.UpgradeData; + new(tag: net.minecraft.nbt.CompoundTag, levelHeightAccessor: net.minecraft.world.level.LevelHeightAccessor): net.minecraft.world.level.chunk.UpgradeData; + } + interface UpgradeData { + upgrade(chunk: net.minecraft.world.level.chunk.LevelChunk): void; + isEmpty(): boolean; + write(): net.minecraft.nbt.CompoundTag; + copy(): net.minecraft.world.level.chunk.UpgradeData; + } + interface UpgradeData$BlockFixer { + updateShape(state: net.minecraft.world.level.block.state.BlockState, direction: net.minecraft.core.Direction, neighbour: net.minecraft.world.level.block.state.BlockState, level: net.minecraft.world.level.LevelAccessor, pos: net.minecraft.core.BlockPos, neighbourPos: net.minecraft.core.BlockPos): net.minecraft.world.level.block.state.BlockState; + processChunk(level: net.minecraft.world.level.LevelAccessor): void; + } interface LevelChunk$PostLoadProcessor { run(levelChunk: net.minecraft.world.level.chunk.LevelChunk): void; (levelChunk: net.minecraft.world.level.chunk.LevelChunk): void; @@ -29853,8 +29872,8 @@ declare global { const ProtoChunk: { new(chunkPos: net.minecraft.world.level.ChunkPos, upgradeData: net.minecraft.world.level.chunk.UpgradeData, levelHeightAccessor: net.minecraft.world.level.LevelHeightAccessor, containerFactory: net.minecraft.world.level.chunk.PalettedContainerFactory, blendingData: net.minecraft.world.level.levelgen.blending.BlendingData | null | undefined): net.minecraft.world.level.chunk.ProtoChunk; new(chunkPos: net.minecraft.world.level.ChunkPos, upgradeData: net.minecraft.world.level.chunk.UpgradeData, sections: Array | null | undefined, blockTicks: net.minecraft.world.ticks.ProtoChunkTicks, fluidTicks: net.minecraft.world.ticks.ProtoChunkTicks, levelHeightAccessor: net.minecraft.world.level.LevelHeightAccessor, containerFactory: net.minecraft.world.level.chunk.PalettedContainerFactory, blendingData: net.minecraft.world.level.levelgen.blending.BlendingData | null | undefined): net.minecraft.world.level.chunk.ProtoChunk; - packOffsetCoordinates(blockPos: net.minecraft.core.BlockPos): number; - unpackOffsetCoordinates(packedCoord: number, sectionY: number, chunkPos: net.minecraft.world.level.ChunkPos): net.minecraft.core.BlockPos; + packOffsetCoordinates(pos: net.minecraft.core.BlockPos): number; + unpackOffsetCoordinates(packedData: number, sectionY: number, chunkPos: net.minecraft.world.level.ChunkPos): net.minecraft.core.BlockPos; } interface ProtoChunk extends net.minecraft.world.level.chunk.ChunkAccess { getBlockEntities(): Map; @@ -29884,32 +29903,6 @@ declare global { interface CarvingMask$Mask { test(x: number, y: number, z: number): boolean; } - const DataLayer: { - LAYER_COUNT: number; - LAYER_SIZE: number; - SIZE: number; - new(): net.minecraft.world.level.chunk.DataLayer; - new(defaultValue: number): net.minecraft.world.level.chunk.DataLayer; - new(data: Array): net.minecraft.world.level.chunk.DataLayer; - } - interface DataLayer { - get(x: number, y: number, z: number): number; - get(index: number): number; - set(x: number, y: number, z: number, val: number): void; - set(index: number, val: number): void; - fill(value: number): void; - getData(): Array; - copy(): net.minecraft.world.level.chunk.DataLayer; - layerToString(layer: number): string; - isDefinitelyHomogenous(): boolean; - isDefinitelyFilledWith(value: number): boolean; - isEmpty(): boolean; - } - interface LightChunkGetter { - getChunkForLighting(x: number, z: number): net.minecraft.world.level.chunk.LightChunk | null | undefined; - onLightUpdate(layer: net.minecraft.world.level.LightLayer, pos: net.minecraft.core.SectionPos): void; - getLevel(): net.minecraft.world.level.BlockGetter; - } const PalettedContainerFactory: { new(blockStatesStrategy: net.minecraft.world.level.chunk.Strategy, defaultBlockState: net.minecraft.world.level.block.state.BlockState, blockStatesContainerCodec: com.mojang.serialization.Codec>, biomeStrategy: net.minecraft.world.level.chunk.Strategy>, defaultBiome: net.minecraft.core.Holder, biomeContainerCodec: com.mojang.serialization.Codec>>): net.minecraft.world.level.chunk.PalettedContainerFactory; create(registries: net.minecraft.core.RegistryAccess): net.minecraft.world.level.chunk.PalettedContainerFactory; @@ -29956,6 +29949,7 @@ declare global { getSerializedSize(): number; bitsPerEntry(): number; maybeHas(predicate: unknown): boolean; + forEachInPalette(consumer: unknown): void; count(output: net.minecraft.world.level.chunk.PalettedContainer$CountConsumer): void; copy(): net.minecraft.world.level.chunk.PalettedContainer; recreate(): net.minecraft.world.level.chunk.PalettedContainer; @@ -30028,14 +30022,13 @@ declare global { interface PalettedContainerRO$Unpacker { read(strategy: net.minecraft.world.level.chunk.Strategy, discData: net.minecraft.world.level.chunk.PalettedContainerRO$PackedData): com.mojang.serialization.DataResult; } - interface UpgradeData$BlockFixer { - updateShape(state: net.minecraft.world.level.block.state.BlockState, direction: net.minecraft.core.Direction, neighbour: net.minecraft.world.level.block.state.BlockState, level: net.minecraft.world.level.LevelAccessor, pos: net.minecraft.core.BlockPos, neighbourPos: net.minecraft.core.BlockPos): net.minecraft.world.level.block.state.BlockState; - processChunk(level: net.minecraft.world.level.LevelAccessor): void; + const ImposterProtoChunk: { + new(wrapped: net.minecraft.world.level.chunk.LevelChunk, allowWrites: boolean): net.minecraft.world.level.chunk.ImposterProtoChunk; + } + interface ImposterProtoChunk extends net.minecraft.world.level.chunk.ProtoChunk { + getWrapped(): net.minecraft.world.level.chunk.LevelChunk; } const LevelChunkSection: { - SECTION_WIDTH: number; - SECTION_HEIGHT: number; - SECTION_SIZE: number; BIOME_CONTAINER_BITS: number; new(states: net.minecraft.world.level.chunk.PalettedContainer, biomes: net.minecraft.world.level.chunk.PalettedContainerRO>): net.minecraft.world.level.chunk.LevelChunkSection; new(containerFactory: net.minecraft.world.level.chunk.PalettedContainerFactory): net.minecraft.world.level.chunk.LevelChunkSection; @@ -30064,28 +30057,22 @@ declare global { fillBiomesFromNoise(biomeResolver: net.minecraft.world.level.biome.BiomeResolver, sampler: net.minecraft.world.level.biome.Climate$Sampler, quartMinX: number, quartMinY: number, quartMinZ: number): void; copy(): net.minecraft.world.level.chunk.LevelChunkSection; } - const ChunkSource: { - new(): net.minecraft.world.level.chunk.ChunkSource; - } - interface ChunkSource extends java.lang.AutoCloseable, net.minecraft.world.level.chunk.LightChunkGetter { - getChunk(x: number, z: number, loadOrGenerate: boolean): net.minecraft.world.level.chunk.LevelChunk | null | undefined; - getChunk(x: number, z: number, targetStatus: net.minecraft.world.level.chunk.status.ChunkStatus, loadOrGenerate: boolean): net.minecraft.world.level.chunk.ChunkAccess | null | undefined; - getChunkNow(x: number, z: number): net.minecraft.world.level.chunk.LevelChunk | null | undefined; - hasChunk(x: number, z: number): boolean; - tick(haveTime: unknown, tickChunks: boolean): void; - onSectionEmptinessChanged(sectionX: number, sectionY: number, sectionZ: number, empty: boolean): void; - gatherStats(): string; - getLoadedChunksCount(): number; - getLightEngine(): net.minecraft.world.level.lighting.LevelLightEngine; - setSpawnSettings(spawnEnemies: boolean): void; - updateChunkForced(pos: net.minecraft.world.level.ChunkPos, forced: boolean): boolean; - getForceLoadedChunks(): it.unimi.dsi.fastutil.longs.LongSet; + const ChunkGeneratorStructureState: { + createForFlat(randomState: net.minecraft.world.level.levelgen.RandomState, levelSeed: number, biomeSource: net.minecraft.world.level.biome.BiomeSource, structureOverrides: java.util.stream.Stream>): net.minecraft.world.level.chunk.ChunkGeneratorStructureState; + createForNormal(randomState: net.minecraft.world.level.levelgen.RandomState, levelSeed: number, biomeSource: net.minecraft.world.level.biome.BiomeSource, allStructures: net.minecraft.core.HolderLookup): net.minecraft.world.level.chunk.ChunkGeneratorStructureState; } - const ImposterProtoChunk: { - new(wrapped: net.minecraft.world.level.chunk.LevelChunk, allowWrites: boolean): net.minecraft.world.level.chunk.ImposterProtoChunk; + interface ChunkGeneratorStructureState { + randomState(): net.minecraft.world.level.levelgen.RandomState; + possibleStructureSets(): Array>; + ensureStructuresGenerated(): void; + getRingPositionsFor(placement: net.minecraft.world.level.levelgen.structure.placement.ConcentricRingsStructurePlacement): Array | null | undefined; + getPlacementsForStructure(structure: net.minecraft.core.Holder): Array; + hasStructureChunkInRange(structureSet: net.minecraft.core.Holder, sourceX: number, sourceZ: number, range: number): boolean; + getLevelSeed(): number; } - interface ImposterProtoChunk extends net.minecraft.world.level.chunk.ProtoChunk { - getWrapped(): net.minecraft.world.level.chunk.LevelChunk; + interface BlockColumn { + getBlock(blockY: number): net.minecraft.world.level.block.state.BlockState; + setBlock(blockY: number, state: net.minecraft.world.level.block.state.BlockState): void; } } namespace validation { @@ -30328,6 +30315,72 @@ declare global { build(): net.minecraft.world.level.biome.Biome; } } + namespace lighting { + const ChunkSkyLightSources: { + NEGATIVE_INFINITY: number; + new(level: net.minecraft.world.level.LevelHeightAccessor): net.minecraft.world.level.lighting.ChunkSkyLightSources; + } + interface ChunkSkyLightSources { + fillFrom(chunk: net.minecraft.world.level.chunk.ChunkAccess): void; + update(level: net.minecraft.world.level.BlockGetter, x: number, y: number, z: number): boolean; + getLowestSourceY(x: number, z: number): number; + getHighestLowestSourceY(): number; + set(index: number, value: number): void; + get(index: number): number; + } + const LevelLightEngine: { + LIGHT_SECTION_PADDING: number; + EMPTY: net.minecraft.world.level.lighting.LevelLightEngine; + new(chunkSource: net.minecraft.world.level.chunk.LightChunkGetter, hasBlockLight: boolean, hasSkyLight: boolean): net.minecraft.world.level.lighting.LevelLightEngine; + } + interface LevelLightEngine extends net.minecraft.world.level.lighting.LightEventListener { + getLayerListener(layer: net.minecraft.world.level.LightLayer): net.minecraft.world.level.lighting.LayerLightEventListener; + getDebugData(layer: net.minecraft.world.level.LightLayer, pos: net.minecraft.core.SectionPos): string; + getDebugSectionType(layer: net.minecraft.world.level.LightLayer, pos: net.minecraft.core.SectionPos): net.minecraft.world.level.lighting.LayerLightSectionStorage$SectionType; + queueSectionData(layer: net.minecraft.world.level.LightLayer, pos: net.minecraft.core.SectionPos, data: net.minecraft.world.level.chunk.DataLayer | null | undefined): void; + retainData(pos: net.minecraft.world.level.ChunkPos, retain: boolean): void; + getRawBrightness(pos: net.minecraft.core.BlockPos, skyDampen: number): number; + lightOnInColumn(sectionZeroNode: number): boolean; + getLightSectionCount(): number; + getMinLightSection(): number; + getMaxLightSection(): number; + } + interface LightEventListener { + checkBlock(pos: net.minecraft.core.BlockPos): void; + hasLightWork(): boolean; + runLightUpdates(): number; + updateSectionStatus(pos: net.minecraft.core.BlockPos, sectionEmpty: boolean): void; + updateSectionStatus(pos: net.minecraft.core.SectionPos, sectionEmpty: boolean): void; + setLightEnabled(pos: net.minecraft.world.level.ChunkPos, enable: boolean): void; + propagateLightSources(pos: net.minecraft.world.level.ChunkPos): void; + } + const LayerLightEventListener: { + DummyLightLayerEventListener: typeof net.minecraft.world.level.lighting.LayerLightEventListener$DummyLightLayerEventListener; + } + interface LayerLightEventListener extends net.minecraft.world.level.lighting.LightEventListener { + getDataLayerData(pos: net.minecraft.core.SectionPos): net.minecraft.world.level.chunk.DataLayer | null | undefined; + getLightValue(pos: net.minecraft.core.BlockPos): number; + } + const LayerLightEventListener$DummyLightLayerEventListener: { + INSTANCE: net.minecraft.world.level.lighting.LayerLightEventListener$DummyLightLayerEventListener; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.world.level.lighting.LayerLightEventListener$DummyLightLayerEventListener; + } + interface LayerLightEventListener$DummyLightLayerEventListener extends kotlin.Enum, net.minecraft.world.level.lighting.LayerLightEventListener { + } + const LayerLightSectionStorage$SectionType: { + EMPTY: net.minecraft.world.level.lighting.LayerLightSectionStorage$SectionType; + LIGHT_ONLY: net.minecraft.world.level.lighting.LayerLightSectionStorage$SectionType; + LIGHT_AND_DATA: net.minecraft.world.level.lighting.LayerLightSectionStorage$SectionType; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.world.level.lighting.LayerLightSectionStorage$SectionType; + } + interface LayerLightSectionStorage$SectionType extends kotlin.Enum { + display(): string; + } + } namespace dimension { namespace end { const EnderDragonFight: { @@ -30383,7 +30436,7 @@ declare global { STREAM_CODEC: net.minecraft.network.codec.StreamCodec>; MOON_BRIGHTNESS_PER_PHASE: kotlin.FloatArray; CODEC: com.mojang.serialization.Codec>; - new(hasFixedTime: boolean, hasSkyLight: boolean, hasCeiling: boolean, hasEnderDragonFight: boolean, coordinateScale: number, minY: number, height: number, logicalHeight: number, infiniburn: net.minecraft.tags.TagKey, ambientLight: number, monsterSettings: net.minecraft.world.level.dimension.DimensionType$MonsterSettings, skybox: net.minecraft.world.level.dimension.DimensionType$Skybox, cardinalLightType: net.minecraft.world.level.CardinalLighting$Type, attributes: net.minecraft.world.attribute.EnvironmentAttributeMap, timelines: net.minecraft.core.HolderSet, defaultClock: java.util.Optional>): net.minecraft.world.level.dimension.DimensionType; + new(hasFixedTime: boolean, hasSkyLight: boolean, hasCeiling: boolean, hasEnderDragonFight: boolean, coordinateScale: number, minY: number, height: number, logicalHeight: number, infiniburn: net.minecraft.core.HolderSet, ambientLight: number, monsterSettings: net.minecraft.world.level.dimension.DimensionType$MonsterSettings, skybox: net.minecraft.world.level.dimension.DimensionType$Skybox, cardinalLightType: net.minecraft.world.level.CardinalLighting$Type, attributes: net.minecraft.world.attribute.EnvironmentAttributeMap, timelines: net.minecraft.core.HolderSet, defaultClock: java.util.Optional>): net.minecraft.world.level.dimension.DimensionType; getTeleportationScale(lastDimensionType: net.minecraft.world.level.dimension.DimensionType, newDimensionType: net.minecraft.world.level.dimension.DimensionType): number; getStorageFolder(name: net.minecraft.resources.ResourceKey, baseFolder: java.nio.file.Path): java.nio.file.Path; } @@ -30399,7 +30452,7 @@ declare global { minY(): number; height(): number; logicalHeight(): number; - infiniburn(): net.minecraft.tags.TagKey; + infiniburn(): net.minecraft.core.HolderSet; ambientLight(): number; monsterSettings(): net.minecraft.world.level.dimension.DimensionType$MonsterSettings; skybox(): net.minecraft.world.level.dimension.DimensionType$Skybox; @@ -30439,135 +30492,6 @@ declare global { generator(): net.minecraft.world.level.chunk.ChunkGenerator; } } - namespace lighting { - const ChunkSkyLightSources: { - NEGATIVE_INFINITY: number; - new(level: net.minecraft.world.level.LevelHeightAccessor): net.minecraft.world.level.lighting.ChunkSkyLightSources; - } - interface ChunkSkyLightSources { - fillFrom(chunk: net.minecraft.world.level.chunk.ChunkAccess): void; - update(level: net.minecraft.world.level.BlockGetter, x: number, y: number, z: number): boolean; - getLowestSourceY(x: number, z: number): number; - getHighestLowestSourceY(): number; - set(index: number, value: number): void; - get(index: number): number; - } - const LevelLightEngine: { - LIGHT_SECTION_PADDING: number; - EMPTY: net.minecraft.world.level.lighting.LevelLightEngine; - new(chunkSource: net.minecraft.world.level.chunk.LightChunkGetter, hasBlockLight: boolean, hasSkyLight: boolean): net.minecraft.world.level.lighting.LevelLightEngine; - } - interface LevelLightEngine extends net.minecraft.world.level.lighting.LightEventListener { - getLayerListener(layer: net.minecraft.world.level.LightLayer): net.minecraft.world.level.lighting.LayerLightEventListener; - getDebugData(layer: net.minecraft.world.level.LightLayer, pos: net.minecraft.core.SectionPos): string; - getDebugSectionType(layer: net.minecraft.world.level.LightLayer, pos: net.minecraft.core.SectionPos): net.minecraft.world.level.lighting.LayerLightSectionStorage$SectionType; - queueSectionData(layer: net.minecraft.world.level.LightLayer, pos: net.minecraft.core.SectionPos, data: net.minecraft.world.level.chunk.DataLayer | null | undefined): void; - retainData(pos: net.minecraft.world.level.ChunkPos, retain: boolean): void; - getRawBrightness(pos: net.minecraft.core.BlockPos, skyDampen: number): number; - lightOnInColumn(sectionZeroNode: number): boolean; - getLightSectionCount(): number; - getMinLightSection(): number; - getMaxLightSection(): number; - } - interface LightEventListener { - checkBlock(pos: net.minecraft.core.BlockPos): void; - hasLightWork(): boolean; - runLightUpdates(): number; - updateSectionStatus(pos: net.minecraft.core.BlockPos, sectionEmpty: boolean): void; - updateSectionStatus(pos: net.minecraft.core.SectionPos, sectionEmpty: boolean): void; - setLightEnabled(pos: net.minecraft.world.level.ChunkPos, enable: boolean): void; - propagateLightSources(pos: net.minecraft.world.level.ChunkPos): void; - } - const LayerLightEventListener: { - DummyLightLayerEventListener: typeof net.minecraft.world.level.lighting.LayerLightEventListener$DummyLightLayerEventListener; - } - interface LayerLightEventListener extends net.minecraft.world.level.lighting.LightEventListener { - getDataLayerData(pos: net.minecraft.core.SectionPos): net.minecraft.world.level.chunk.DataLayer | null | undefined; - getLightValue(pos: net.minecraft.core.BlockPos): number; - } - const LayerLightEventListener$DummyLightLayerEventListener: { - INSTANCE: net.minecraft.world.level.lighting.LayerLightEventListener$DummyLightLayerEventListener; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.world.level.lighting.LayerLightEventListener$DummyLightLayerEventListener; - } - interface LayerLightEventListener$DummyLightLayerEventListener extends kotlin.Enum, net.minecraft.world.level.lighting.LayerLightEventListener { - } - const LayerLightSectionStorage$SectionType: { - EMPTY: net.minecraft.world.level.lighting.LayerLightSectionStorage$SectionType; - LIGHT_ONLY: net.minecraft.world.level.lighting.LayerLightSectionStorage$SectionType; - LIGHT_AND_DATA: net.minecraft.world.level.lighting.LayerLightSectionStorage$SectionType; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.world.level.lighting.LayerLightSectionStorage$SectionType; - } - interface LayerLightSectionStorage$SectionType extends kotlin.Enum { - display(): string; - } - } - namespace gameevent { - const GameEventListenerRegistry: { - NOOP: net.minecraft.world.level.gameevent.GameEventListenerRegistry; - } - interface GameEventListenerRegistry { - isEmpty(): boolean; - register(listener: net.minecraft.world.level.gameevent.GameEventListener): void; - unregister(listener: net.minecraft.world.level.gameevent.GameEventListener): void; - visitInRangeListeners(event: net.minecraft.core.Holder, sourcePosition: net.minecraft.world.phys.Vec3, context: net.minecraft.world.level.gameevent.GameEvent$Context, action: net.minecraft.world.level.gameevent.GameEventListenerRegistry$ListenerVisitor): boolean; - } - const GameEventListener: { - DeliveryMode: typeof net.minecraft.world.level.gameevent.GameEventListener$DeliveryMode; - } - interface GameEventListener { - getListenerSource(): net.minecraft.world.level.gameevent.PositionSource; - getListenerRadius(): number; - handleGameEvent(level: net.minecraft.server.level.ServerLevel, event: net.minecraft.core.Holder, context: net.minecraft.world.level.gameevent.GameEvent$Context, sourcePosition: net.minecraft.world.phys.Vec3): boolean; - getDeliveryMode(): net.minecraft.world.level.gameevent.GameEventListener$DeliveryMode; - } - const PositionSource: { - CODEC: com.mojang.serialization.Codec; - STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - } - interface PositionSource { - getPosition(level: net.minecraft.world.level.Level): java.util.Optional; - getType(): net.minecraft.world.level.gameevent.PositionSourceType; - } - const PositionSourceType: { - BLOCK: net.minecraft.world.level.gameevent.PositionSourceType; - ENTITY: net.minecraft.world.level.gameevent.PositionSourceType; - register(name: string, serializer: S): S; - } - interface PositionSourceType { - codec(): com.mojang.serialization.MapCodec; - streamCodec(): net.minecraft.network.codec.StreamCodec; - } - const GameEvent$Context: { - new(sourceEntity: net.minecraft.world.entity.Entity | null | undefined, affectedState: net.minecraft.world.level.block.state.BlockState | null | undefined): net.minecraft.world.level.gameevent.GameEvent$Context; - of(sourceEntity: net.minecraft.world.entity.Entity | null | undefined): net.minecraft.world.level.gameevent.GameEvent$Context; - of(state: net.minecraft.world.level.block.state.BlockState | null | undefined): net.minecraft.world.level.gameevent.GameEvent$Context; - of(sourceEntity: net.minecraft.world.entity.Entity | null | undefined, state: net.minecraft.world.level.block.state.BlockState | null | undefined): net.minecraft.world.level.gameevent.GameEvent$Context; - } - interface GameEvent$Context extends java.lang.Record { - sourceEntity(): net.minecraft.world.entity.Entity | null | undefined; - affectedState(): net.minecraft.world.level.block.state.BlockState | null | undefined; - } - const GameEventListener$DeliveryMode: { - UNSPECIFIED: net.minecraft.world.level.gameevent.GameEventListener$DeliveryMode; - BY_DISTANCE: net.minecraft.world.level.gameevent.GameEventListener$DeliveryMode; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.world.level.gameevent.GameEventListener$DeliveryMode; - } - interface GameEventListener$DeliveryMode extends kotlin.Enum { - } - interface GameEventListener$Provider { - getListener(): T; - } - interface GameEventListenerRegistry$ListenerVisitor { - visit(listener: net.minecraft.world.level.gameevent.GameEventListener, position: net.minecraft.world.phys.Vec3): void; - (listener: net.minecraft.world.level.gameevent.GameEventListener, position: net.minecraft.world.phys.Vec3): void; - } - } namespace border { const WorldBorder: { Settings: typeof net.minecraft.world.level.border.WorldBorder$Settings; @@ -30665,6 +30589,69 @@ declare global { lerpTarget(): number; } } + namespace gameevent { + const GameEventListenerRegistry: { + NOOP: net.minecraft.world.level.gameevent.GameEventListenerRegistry; + } + interface GameEventListenerRegistry { + isEmpty(): boolean; + register(listener: net.minecraft.world.level.gameevent.GameEventListener): void; + unregister(listener: net.minecraft.world.level.gameevent.GameEventListener): void; + visitInRangeListeners(event: net.minecraft.core.Holder, sourcePosition: net.minecraft.world.phys.Vec3, context: net.minecraft.world.level.gameevent.GameEvent$Context, action: net.minecraft.world.level.gameevent.GameEventListenerRegistry$ListenerVisitor): boolean; + } + const GameEventListener: { + DeliveryMode: typeof net.minecraft.world.level.gameevent.GameEventListener$DeliveryMode; + } + interface GameEventListener { + getListenerSource(): net.minecraft.world.level.gameevent.PositionSource; + getListenerRadius(): number; + handleGameEvent(level: net.minecraft.server.level.ServerLevel, event: net.minecraft.core.Holder, context: net.minecraft.world.level.gameevent.GameEvent$Context, sourcePosition: net.minecraft.world.phys.Vec3): boolean; + getDeliveryMode(): net.minecraft.world.level.gameevent.GameEventListener$DeliveryMode; + } + const PositionSource: { + CODEC: com.mojang.serialization.Codec; + STREAM_CODEC: net.minecraft.network.codec.StreamCodec; + } + interface PositionSource { + getPosition(level: net.minecraft.world.level.Level): java.util.Optional; + getType(): net.minecraft.world.level.gameevent.PositionSourceType; + } + const PositionSourceType: { + BLOCK: net.minecraft.world.level.gameevent.PositionSourceType; + ENTITY: net.minecraft.world.level.gameevent.PositionSourceType; + register(name: string, serializer: S): S; + } + interface PositionSourceType { + codec(): com.mojang.serialization.MapCodec; + streamCodec(): net.minecraft.network.codec.StreamCodec; + } + const GameEvent$Context: { + new(sourceEntity: net.minecraft.world.entity.Entity | null | undefined, affectedState: net.minecraft.world.level.block.state.BlockState | null | undefined): net.minecraft.world.level.gameevent.GameEvent$Context; + of(sourceEntity: net.minecraft.world.entity.Entity | null | undefined): net.minecraft.world.level.gameevent.GameEvent$Context; + of(state: net.minecraft.world.level.block.state.BlockState | null | undefined): net.minecraft.world.level.gameevent.GameEvent$Context; + of(sourceEntity: net.minecraft.world.entity.Entity | null | undefined, state: net.minecraft.world.level.block.state.BlockState | null | undefined): net.minecraft.world.level.gameevent.GameEvent$Context; + } + interface GameEvent$Context extends java.lang.Record { + sourceEntity(): net.minecraft.world.entity.Entity | null | undefined; + affectedState(): net.minecraft.world.level.block.state.BlockState | null | undefined; + } + const GameEventListener$DeliveryMode: { + UNSPECIFIED: net.minecraft.world.level.gameevent.GameEventListener$DeliveryMode; + BY_DISTANCE: net.minecraft.world.level.gameevent.GameEventListener$DeliveryMode; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.world.level.gameevent.GameEventListener$DeliveryMode; + } + interface GameEventListener$DeliveryMode extends kotlin.Enum { + } + interface GameEventListener$Provider { + getListener(): T; + } + interface GameEventListenerRegistry$ListenerVisitor { + visit(listener: net.minecraft.world.level.gameevent.GameEventListener, position: net.minecraft.world.phys.Vec3): void; + (listener: net.minecraft.world.level.gameevent.GameEventListener, position: net.minecraft.world.phys.Vec3): void; + } + } namespace gamerules { const GameRules: { ADVANCE_TIME: net.minecraft.world.level.gamerules.GameRule; @@ -30921,6 +30908,7 @@ declare global { NETHER: net.minecraft.resources.ResourceKey; END: net.minecraft.resources.ResourceKey; MAX_LEVEL_SIZE: number; + ACROSS_THE_WHOLE_WORLD: number; LONG_PARTICLE_CLIP_RANGE: number; SHORT_PARTICLE_CLIP_RANGE: number; MAX_BRIGHTNESS: number; @@ -30934,6 +30922,7 @@ declare global { dimension(): net.minecraft.resources.ResourceKey; damageSources(): net.minecraft.world.damagesource.DamageSources; palettedContainerFactory(): net.minecraft.world.level.chunk.PalettedContainerFactory; + getNextEntityId(): number; isInWorldBounds(pos: net.minecraft.core.BlockPos): boolean; isInValidBounds(pos: net.minecraft.core.BlockPos): boolean; getChunkAt(pos: net.minecraft.core.BlockPos): net.minecraft.world.level.chunk.LevelChunk; @@ -31135,7 +31124,6 @@ declare global { CODEC: com.mojang.serialization.Codec; STREAM_CODEC: net.minecraft.network.codec.StreamCodec; INVALID_CHUNK_POS: number; - MAX_COORDINATE_VALUE: number; ZERO: net.minecraft.world.level.ChunkPos; REGION_SIZE: number; REGION_MAX_INDEX: number; @@ -31147,6 +31135,7 @@ declare global { isValid(x: number, z: number): boolean; pack(x: number, z: number): number; pack(pos: net.minecraft.core.BlockPos): number; + fromSectionNode(sectionNode: number): number; getX(pos: number): number; getZ(pos: number): number; hash(x: number, z: number): number; @@ -31275,6 +31264,7 @@ declare global { } interface LevelSettings extends java.lang.Record { withGameType(gameType: net.minecraft.world.level.GameType): net.minecraft.world.level.LevelSettings; + withAllowCommands(allowCommands: boolean): net.minecraft.world.level.LevelSettings; withDifficulty(difficulty: net.minecraft.world.Difficulty): net.minecraft.world.level.LevelSettings; withDifficultyLock(locked: boolean): net.minecraft.world.level.LevelSettings; withDataConfiguration(dataConfiguration: net.minecraft.world.level.WorldDataConfiguration): net.minecraft.world.level.LevelSettings; @@ -31295,41 +31285,15 @@ declare global { hardcore(): boolean; locked(): boolean; } - interface WorldGenLevel extends net.minecraft.world.level.ServerLevelAccessor { - getSeed(): number; - ensureCanWrite(pos: net.minecraft.core.BlockPos): boolean; - setCurrentlyGenerating(currentlyGenerating: unknown): void; - } interface ServerLevelAccessor extends net.minecraft.world.level.LevelAccessor { getLevel(): net.minecraft.server.level.ServerLevel; getCurrentDifficultyAt(pos: net.minecraft.core.BlockPos): net.minecraft.world.DifficultyInstance; addFreshEntityWithPassengers(entity: net.minecraft.world.entity.Entity): void; } - const CardinalLighting$Type: { - DEFAULT: net.minecraft.world.level.CardinalLighting$Type; - NETHER: net.minecraft.world.level.CardinalLighting$Type; - CODEC: com.mojang.serialization.Codec; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): net.minecraft.world.level.CardinalLighting$Type; - } - interface CardinalLighting$Type extends kotlin.Enum, net.minecraft.util.StringRepresentable { - get(): net.minecraft.world.level.CardinalLighting; - } - const CardinalLighting: { - Type: typeof net.minecraft.world.level.CardinalLighting$Type; - DEFAULT: net.minecraft.world.level.CardinalLighting; - NETHER: net.minecraft.world.level.CardinalLighting; - new(down: number, up: number, north: number, south: number, west: number, east: number): net.minecraft.world.level.CardinalLighting; - } - interface CardinalLighting extends java.lang.Record { - byFace(direction: net.minecraft.core.Direction): number; - down(): number; - up(): number; - north(): number; - south(): number; - west(): number; - east(): number; + interface WorldGenLevel extends net.minecraft.world.level.ServerLevelAccessor { + getSeed(): number; + ensureCanWrite(pos: net.minecraft.core.BlockPos): boolean; + setCurrentlyGenerating(currentlyGenerating: unknown): void; } const StructureManager: { new(level: net.minecraft.world.level.LevelAccessor, worldOptions: net.minecraft.world.level.levelgen.WorldOptions, structureCheck: net.minecraft.world.level.levelgen.structure.StructureCheck): net.minecraft.world.level.StructureManager; @@ -31355,10 +31319,31 @@ declare global { addReference(start: net.minecraft.world.level.levelgen.structure.StructureStart): void; registryAccess(): net.minecraft.core.RegistryAccess; } - const NoiseColumn: { - new(minY: number, column: Array): net.minecraft.world.level.NoiseColumn; + const CardinalLighting$Type: { + DEFAULT: net.minecraft.world.level.CardinalLighting$Type; + NETHER: net.minecraft.world.level.CardinalLighting$Type; + CODEC: com.mojang.serialization.Codec; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.world.level.CardinalLighting$Type; } - interface NoiseColumn extends net.minecraft.world.level.chunk.BlockColumn { + interface CardinalLighting$Type extends kotlin.Enum, net.minecraft.util.StringRepresentable { + get(): net.minecraft.world.level.CardinalLighting; + } + const CardinalLighting: { + Type: typeof net.minecraft.world.level.CardinalLighting$Type; + DEFAULT: net.minecraft.world.level.CardinalLighting; + NETHER: net.minecraft.world.level.CardinalLighting; + new(down: number, up: number, north: number, south: number, west: number, east: number): net.minecraft.world.level.CardinalLighting; + } + interface CardinalLighting extends java.lang.Record { + byFace(direction: net.minecraft.core.Direction): number; + down(): number; + up(): number; + north(): number; + south(): number; + west(): number; + east(): number; } const LightLayer: { SKY: net.minecraft.world.level.LightLayer; @@ -31403,6 +31388,11 @@ declare global { interface TicketStorage$TicketPredicate { test(ticket: net.minecraft.server.level.Ticket, chunkPos: number): boolean; } + const NoiseColumn: { + new(minY: number, column: Array): net.minecraft.world.level.NoiseColumn; + } + interface NoiseColumn extends net.minecraft.world.level.chunk.BlockColumn { + } interface CollisionGetter extends net.minecraft.world.level.BlockGetter { getWorldBorder(): net.minecraft.world.level.border.WorldBorder; getChunkForCollisions(chunkX: number, chunkZ: number): net.minecraft.world.level.BlockGetter | null | undefined; @@ -31422,6 +31412,7 @@ declare global { getPreMoveCollisions(source: net.minecraft.world.entity.Entity | null | undefined, box: net.minecraft.world.phys.AABB, oldPos: net.minecraft.world.phys.Vec3): kotlin.collections.MutableIterable; getBlockCollisions(source: net.minecraft.world.entity.Entity | null | undefined, box: net.minecraft.world.phys.AABB): kotlin.collections.MutableIterable; getBlockAndLiquidCollisions(source: net.minecraft.world.entity.Entity | null | undefined, box: net.minecraft.world.phys.AABB): kotlin.collections.MutableIterable; + getBlockCollisionsFromContext(source: net.minecraft.world.phys.shapes.CollisionContext, box: net.minecraft.world.phys.AABB): kotlin.collections.MutableIterable; clipIncludingBorder(c: net.minecraft.world.level.ClipContext): net.minecraft.world.phys.BlockHitResult; collidesWithSuffocatingBlock(source: net.minecraft.world.entity.Entity | null | undefined, box: net.minecraft.world.phys.AABB): boolean; findSupportingBlock(source: net.minecraft.world.entity.Entity, box: net.minecraft.world.phys.AABB): java.util.Optional; @@ -31513,6 +31504,7 @@ declare global { getControlInputSignal(pos: net.minecraft.core.BlockPos, direction: net.minecraft.core.Direction, onlyDiodes: boolean): number; hasSignal(pos: net.minecraft.core.BlockPos, direction: net.minecraft.core.Direction): boolean; getSignal(pos: net.minecraft.core.BlockPos, direction: net.minecraft.core.Direction): number; + getBestOwnOrNeighbourSignal(pos: net.minecraft.core.BlockPos): number; hasNeighborSignal(blockPos: net.minecraft.core.BlockPos): boolean; getBestNeighborSignal(pos: net.minecraft.core.BlockPos): number; } @@ -31683,6 +31675,7 @@ declare global { emptyWithFluidCollisions(): net.minecraft.world.phys.shapes.CollisionContext; of(entity: net.minecraft.world.entity.Entity): net.minecraft.world.phys.shapes.CollisionContext; of(entity: net.minecraft.world.entity.Entity, alwaysCollideWithFluid: boolean): net.minecraft.world.phys.shapes.CollisionContext; + positionContext(y: number): net.minecraft.world.phys.shapes.CollisionContext; placementContext(player: net.minecraft.world.entity.player.Player | null | undefined): net.minecraft.world.phys.shapes.CollisionContext; withPosition(entity: net.minecraft.world.entity.Entity | null | undefined, position: number): net.minecraft.world.phys.shapes.CollisionContext; } @@ -31784,6 +31777,7 @@ declare global { lengthSquared(): number; distanceToSqr(p: net.minecraft.world.phys.Vec2): number; negated(): net.minecraft.world.phys.Vec2; + rotate(angleRadians: number): net.minecraft.world.phys.Vec2; } const AABB: { Builder: typeof net.minecraft.world.phys.AABB$Builder; @@ -31921,8 +31915,8 @@ declare global { ARMOR: net.minecraft.world.scores.criteria.ObjectiveCriteria; EXPERIENCE: net.minecraft.world.scores.criteria.ObjectiveCriteria; LEVEL: net.minecraft.world.scores.criteria.ObjectiveCriteria; - TEAM_KILL: Array; - KILLED_BY_TEAM: Array; + TEAM_KILL: Map; + KILLED_BY_TEAM: Map; registerCustom(name: string, readOnly: boolean, renderType: net.minecraft.world.scores.criteria.ObjectiveCriteria$RenderType): net.minecraft.world.scores.criteria.ObjectiveCriteria; registerCustom(name: string): net.minecraft.world.scores.criteria.ObjectiveCriteria; getCustomCriteriaNames(): Set; @@ -32019,9 +32013,6 @@ declare global { display(display: net.minecraft.network.chat.Component | null | undefined): void; numberFormatOverride(numberFormat: net.minecraft.network.chat.numbers.NumberFormat | null | undefined): void; } - const ReadOnlyScoreInfo: { - safeFormatValue(scoreInfo: net.minecraft.world.scores.ReadOnlyScoreInfo | null | undefined, defaultFormat: net.minecraft.network.chat.numbers.NumberFormat): net.minecraft.network.chat.MutableComponent; - } interface ReadOnlyScoreInfo { value(): number; isLocked(): boolean; @@ -32051,7 +32042,6 @@ declare global { CODEC: net.minecraft.util.StringRepresentable$EnumCodec; BY_ID: unknown; entries: kotlin.enums.EnumEntries; - teamColorToSlot(color: net.minecraft.ChatFormatting): net.minecraft.world.scores.DisplaySlot | null | undefined; values(): Array; valueOf(value: string): net.minecraft.world.scores.DisplaySlot; } @@ -32080,7 +32070,7 @@ declare global { setCollisionRule(collisionRule: net.minecraft.world.scores.Team$CollisionRule): void; packOptions(): number; unpackOptions(options: number): void; - setColor(color: net.minecraft.ChatFormatting): void; + setColor(color: java.util.Optional): void; } const Team: { CollisionRule: typeof net.minecraft.world.scores.Team$CollisionRule; @@ -32094,7 +32084,7 @@ declare global { canSeeFriendlyInvisibles(): boolean; isAllowFriendlyFire(): boolean; getNameTagVisibility(): net.minecraft.world.scores.Team$Visibility; - getColor(): net.minecraft.ChatFormatting; + getColor(): java.util.Optional; getPlayers(): Array; getDeathMessageVisibility(): net.minecraft.world.scores.Team$Visibility; getCollisionRule(): net.minecraft.world.scores.Team$CollisionRule; @@ -32133,12 +32123,12 @@ declare global { } const PlayerTeam$Packed: { CODEC: com.mojang.serialization.Codec; - new(name: string, displayName: java.util.Optional, color: java.util.Optional, allowFriendlyFire: boolean, seeFriendlyInvisibles: boolean, memberNamePrefix: net.minecraft.network.chat.Component, memberNameSuffix: net.minecraft.network.chat.Component, nameTagVisibility: net.minecraft.world.scores.Team$Visibility, deathMessageVisibility: net.minecraft.world.scores.Team$Visibility, collisionRule: net.minecraft.world.scores.Team$CollisionRule, players: Array): net.minecraft.world.scores.PlayerTeam$Packed; + new(name: string, displayName: java.util.Optional, color: java.util.Optional, allowFriendlyFire: boolean, seeFriendlyInvisibles: boolean, memberNamePrefix: net.minecraft.network.chat.Component, memberNameSuffix: net.minecraft.network.chat.Component, nameTagVisibility: net.minecraft.world.scores.Team$Visibility, deathMessageVisibility: net.minecraft.world.scores.Team$Visibility, collisionRule: net.minecraft.world.scores.Team$CollisionRule, players: Array): net.minecraft.world.scores.PlayerTeam$Packed; } interface PlayerTeam$Packed extends java.lang.Record { name(): string; displayName(): java.util.Optional; - color(): java.util.Optional; + color(): java.util.Optional; allowFriendlyFire(): boolean; seeFriendlyInvisibles(): boolean; memberNamePrefix(): net.minecraft.network.chat.Component; @@ -32148,6 +32138,11 @@ declare global { collisionRule(): net.minecraft.world.scores.Team$CollisionRule; players(): Array; } + const PlayerTeam$OptionFlags: { + new(): net.minecraft.world.scores.PlayerTeam$OptionFlags; + } + interface PlayerTeam$OptionFlags extends kotlin.Annotation { + } const Score: { Packed: typeof net.minecraft.world.scores.Score$Packed; new(): net.minecraft.world.scores.Score; @@ -32230,7 +32225,6 @@ declare global { } const Waypoint: { Icon: typeof net.minecraft.world.waypoints.Waypoint$Icon; - MAX_RANGE: number; WAYPOINT_TRANSMIT_RANGE_HIDE_MODIFIER: net.minecraft.world.entity.ai.attributes.AttributeModifier; addHideAttribute(properties: net.minecraft.world.item.Item$Properties): net.minecraft.world.item.Item$Properties; } @@ -32605,37 +32599,28 @@ declare global { slots(): net.minecraft.world.item.slot.SlotCollection; } } - namespace alchemy { - const PotionBrewing: { - Builder: typeof net.minecraft.world.item.alchemy.PotionBrewing$Builder; - BREWING_TIME_SECONDS: number; - EMPTY: net.minecraft.world.item.alchemy.PotionBrewing; - bootstrap(enabledFeatures: net.minecraft.world.flag.FeatureFlagSet): net.minecraft.world.item.alchemy.PotionBrewing; - addVanillaMixes(builder: net.minecraft.world.item.alchemy.PotionBrewing$Builder): void; - } - interface PotionBrewing { - isIngredient(ingredient: net.minecraft.world.item.ItemStack): boolean; - isContainerIngredient(ingredient: net.minecraft.world.item.ItemStack): boolean; - isPotionIngredient(ingredient: net.minecraft.world.item.ItemStack): boolean; - isBrewablePotion(potion: net.minecraft.core.Holder): boolean; - hasMix(source: net.minecraft.world.item.ItemStack, ingredient: net.minecraft.world.item.ItemStack): boolean; - hasContainerMix(source: net.minecraft.world.item.ItemStack, ingredient: net.minecraft.world.item.ItemStack): boolean; - hasPotionMix(source: net.minecraft.world.item.ItemStack, ingredient: net.minecraft.world.item.ItemStack): boolean; - mix(ingredient: net.minecraft.world.item.ItemStack, source: net.minecraft.world.item.ItemStack): net.minecraft.world.item.ItemStack; - } - const PotionBrewing$Builder: { - new(enabledFeatures: net.minecraft.world.flag.FeatureFlagSet): net.minecraft.world.item.alchemy.PotionBrewing$Builder; - } - interface PotionBrewing$Builder extends net.fabricmc.fabric.api.registry.FabricPotionBrewingBuilder { - addContainerRecipe(from: net.minecraft.world.item.Item, ingredient: net.minecraft.world.item.Item, to: net.minecraft.world.item.Item): void; - addContainer(item: net.minecraft.world.item.Item): void; - addMix(from: net.minecraft.core.Holder, ingredient: net.minecraft.world.item.Item, to: net.minecraft.core.Holder): void; - addStartMix(ingredient: net.minecraft.world.item.Item, potion: net.minecraft.core.Holder): void; - build(): net.minecraft.world.item.alchemy.PotionBrewing; - } - } namespace crafting { namespace display { + const RecipeDisplayId: { + STREAM_CODEC: net.minecraft.network.codec.StreamCodec; + new(index: number): net.minecraft.world.item.crafting.display.RecipeDisplayId; + } + interface RecipeDisplayId extends java.lang.Record { + index(): number; + } + const RecipeDisplayEntry: { + STREAM_CODEC: net.minecraft.network.codec.StreamCodec; + new(id: net.minecraft.world.item.crafting.display.RecipeDisplayId, display: net.minecraft.world.item.crafting.display.RecipeDisplay, group: java.util.OptionalInt, category: net.minecraft.world.item.crafting.RecipeBookCategory, craftingRequirements: java.util.Optional>): net.minecraft.world.item.crafting.display.RecipeDisplayEntry; + } + interface RecipeDisplayEntry extends java.lang.Record { + resultItems(context: net.minecraft.util.context.ContextMap): Array; + canCraft(providedContents: net.minecraft.world.entity.player.StackedItemContents): boolean; + id(): net.minecraft.world.item.crafting.display.RecipeDisplayId; + display(): net.minecraft.world.item.crafting.display.RecipeDisplay; + group(): java.util.OptionalInt; + category(): net.minecraft.world.item.crafting.RecipeBookCategory; + craftingRequirements(): java.util.Optional>; + } const SlotDisplay: { ItemStackContentsFactory: typeof net.minecraft.world.item.crafting.display.SlotDisplay$ItemStackContentsFactory; WithRemainder: typeof net.minecraft.world.item.crafting.display.SlotDisplay$WithRemainder; @@ -32786,26 +32771,6 @@ declare global { } interface SlotDisplay$Empty extends net.minecraft.world.item.crafting.display.SlotDisplay { } - const RecipeDisplayId: { - STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - new(index: number): net.minecraft.world.item.crafting.display.RecipeDisplayId; - } - interface RecipeDisplayId extends java.lang.Record { - index(): number; - } - const RecipeDisplayEntry: { - STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - new(id: net.minecraft.world.item.crafting.display.RecipeDisplayId, display: net.minecraft.world.item.crafting.display.RecipeDisplay, group: java.util.OptionalInt, category: net.minecraft.world.item.crafting.RecipeBookCategory, craftingRequirements: java.util.Optional>): net.minecraft.world.item.crafting.display.RecipeDisplayEntry; - } - interface RecipeDisplayEntry extends java.lang.Record { - resultItems(context: net.minecraft.util.context.ContextMap): Array; - canCraft(providedContents: net.minecraft.world.entity.player.StackedItemContents): boolean; - id(): net.minecraft.world.item.crafting.display.RecipeDisplayId; - display(): net.minecraft.world.item.crafting.display.RecipeDisplay; - group(): java.util.OptionalInt; - category(): net.minecraft.world.item.crafting.RecipeBookCategory; - craftingRequirements(): java.util.Optional>; - } const RecipeDisplay: { Type: typeof net.minecraft.world.item.crafting.display.RecipeDisplay$Type; CODEC: com.mojang.serialization.Codec; @@ -32825,23 +32790,6 @@ declare global { streamCodec(): net.minecraft.network.codec.StreamCodec; } } - const Ingredient: { - CONTENTS_STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - OPTIONAL_CONTENTS_STREAM_CODEC: net.minecraft.network.codec.StreamCodec>; - NON_AIR_HOLDER_SET_CODEC: com.mojang.serialization.Codec>; - CODEC: com.mojang.serialization.Codec; - testOptionalIngredient(ingredient: java.util.Optional, stack: net.minecraft.world.item.ItemStack): boolean; - of(itemLike: net.minecraft.world.level.ItemLike): net.minecraft.world.item.crafting.Ingredient; - of(items: net.minecraft.world.level.ItemLike): net.minecraft.world.item.crafting.Ingredient; - of(stream: java.util.stream.Stream): net.minecraft.world.item.crafting.Ingredient; - of(tag: net.minecraft.core.HolderSet): net.minecraft.world.item.crafting.Ingredient; - optionalIngredientToDisplay(ingredient: java.util.Optional): net.minecraft.world.item.crafting.display.SlotDisplay; - } - interface Ingredient extends net.minecraft.world.entity.player.StackedContents$IngredientInfo>, net.fabricmc.fabric.api.recipe.v1.ingredient.FabricIngredient { - items(): java.util.stream.Stream>; - isEmpty(): boolean; - display(): net.minecraft.world.item.crafting.display.SlotDisplay; - } const RecipeManager: { ServerDisplayInfo: typeof net.minecraft.world.item.crafting.RecipeManager$ServerDisplayInfo; IngredientCollector: typeof net.minecraft.world.item.crafting.RecipeManager$IngredientCollector; @@ -32895,6 +32843,7 @@ declare global { CAMPFIRE_INPUT: net.minecraft.resources.ResourceKey; STREAM_CODEC: net.minecraft.network.codec.StreamCodec; EMPTY: net.minecraft.world.item.crafting.RecipePropertySet; + create(ingredients: Array): net.minecraft.world.item.crafting.RecipePropertySet; } interface RecipePropertySet { test(itemStack: net.minecraft.world.item.ItemStack): boolean; @@ -32965,6 +32914,23 @@ declare global { slotsToIngredientIndex(): it.unimi.dsi.fastutil.ints.IntList; isImpossibleToPlace(): boolean; } + const Ingredient: { + CONTENTS_STREAM_CODEC: net.minecraft.network.codec.StreamCodec; + OPTIONAL_CONTENTS_STREAM_CODEC: net.minecraft.network.codec.StreamCodec>; + NON_AIR_HOLDER_SET_CODEC: com.mojang.serialization.Codec>; + CODEC: com.mojang.serialization.Codec; + testOptionalIngredient(ingredient: java.util.Optional, stack: net.minecraft.world.item.ItemStack): boolean; + of(itemLike: net.minecraft.world.level.ItemLike): net.minecraft.world.item.crafting.Ingredient; + of(items: net.minecraft.world.level.ItemLike): net.minecraft.world.item.crafting.Ingredient; + of(stream: java.util.stream.Stream): net.minecraft.world.item.crafting.Ingredient; + of(tag: net.minecraft.core.HolderSet): net.minecraft.world.item.crafting.Ingredient; + optionalIngredientToDisplay(ingredient: java.util.Optional): net.minecraft.world.item.crafting.display.SlotDisplay; + } + interface Ingredient extends net.minecraft.world.entity.player.StackedContents$IngredientInfo>, net.fabricmc.fabric.api.recipe.v1.ingredient.FabricIngredient { + items(): java.util.stream.Stream>; + isEmpty(): boolean; + display(): net.minecraft.world.item.crafting.display.SlotDisplay; + } const RecipeBookCategory: { new(): net.minecraft.world.item.crafting.RecipeBookCategory; } @@ -33029,6 +32995,35 @@ declare global { top(): number; } } + namespace alchemy { + const PotionBrewing: { + Builder: typeof net.minecraft.world.item.alchemy.PotionBrewing$Builder; + BREWING_TIME_SECONDS: number; + EMPTY: net.minecraft.world.item.alchemy.PotionBrewing; + bootstrap(enabledFeatures: net.minecraft.world.flag.FeatureFlagSet): net.minecraft.world.item.alchemy.PotionBrewing; + addVanillaMixes(builder: net.minecraft.world.item.alchemy.PotionBrewing$Builder): void; + } + interface PotionBrewing { + isIngredient(ingredient: net.minecraft.world.item.ItemStack): boolean; + isContainerIngredient(ingredient: net.minecraft.world.item.ItemStack): boolean; + isPotionIngredient(ingredient: net.minecraft.world.item.ItemStack): boolean; + isBrewablePotion(potion: net.minecraft.core.Holder): boolean; + hasMix(source: net.minecraft.world.item.ItemStack, ingredient: net.minecraft.world.item.ItemStack): boolean; + hasContainerMix(source: net.minecraft.world.item.ItemStack, ingredient: net.minecraft.world.item.ItemStack): boolean; + hasPotionMix(source: net.minecraft.world.item.ItemStack, ingredient: net.minecraft.world.item.ItemStack): boolean; + mix(ingredient: net.minecraft.world.item.ItemStack, source: net.minecraft.world.item.ItemStack): net.minecraft.world.item.ItemStack; + } + const PotionBrewing$Builder: { + new(enabledFeatures: net.minecraft.world.flag.FeatureFlagSet): net.minecraft.world.item.alchemy.PotionBrewing$Builder; + } + interface PotionBrewing$Builder extends net.fabricmc.fabric.api.registry.FabricPotionBrewingBuilder { + addContainerRecipe(from: net.minecraft.world.item.Item, ingredient: net.minecraft.world.item.Item, to: net.minecraft.world.item.Item): void; + addContainer(item: net.minecraft.world.item.Item): void; + addMix(from: net.minecraft.core.Holder, ingredient: net.minecraft.world.item.Item, to: net.minecraft.core.Holder): void; + addStartMix(ingredient: net.minecraft.world.item.Item, potion: net.minecraft.core.Holder): void; + build(): net.minecraft.world.item.alchemy.PotionBrewing; + } + } namespace trading { const MerchantOffers: { CODEC: com.mojang.serialization.Codec; @@ -33379,7 +33374,7 @@ declare global { canBeHurtBy(source: net.minecraft.world.damagesource.DamageSource): boolean; isValidRepairItem(repairItem: net.minecraft.world.item.ItemStack): boolean; canDestroyBlock(state: net.minecraft.world.level.block.state.BlockState, level: net.minecraft.world.level.Level, pos: net.minecraft.core.BlockPos, player: net.minecraft.world.entity.player.Player): boolean; - getDamageSource(attacker: net.minecraft.world.entity.LivingEntity, defaultSource: unknown): net.minecraft.world.damagesource.DamageSource; + getDamageSource(attacker: net.minecraft.world.entity.LivingEntity): net.minecraft.world.damagesource.DamageSource; } const ItemInstance: { FIELD_ID: string; @@ -33399,6 +33394,7 @@ declare global { new(item: net.minecraft.world.item.Item, patch: net.minecraft.core.component.DataComponentPatch): net.minecraft.world.item.ItemStackTemplate; new(item: net.minecraft.core.Holder, count: number, components: net.minecraft.core.component.DataComponentPatch): net.minecraft.world.item.ItemStackTemplate; fromNonEmptyStack(itemStack: net.minecraft.world.item.ItemStack): net.minecraft.world.item.ItemStackTemplate; + fromStack(itemStack: net.minecraft.world.item.ItemStack): net.minecraft.world.item.ItemStackTemplate; } interface ItemStackTemplate extends java.lang.Record, net.minecraft.world.item.ItemInstance { withCount(count: number): net.minecraft.world.item.ItemStackTemplate; @@ -33526,6 +33522,7 @@ declare global { getName(): string; getTextureDiffuseColor(): number; getMapColor(): net.minecraft.world.level.material.MapColor; + getTerracottaColor(): net.minecraft.world.level.material.MapColor; getFireworkColor(): number; getTextColor(): number; } @@ -34006,6 +34003,7 @@ declare global { isActive(): boolean; tryRemove(amount: number, maxAmount: number, player: net.minecraft.world.entity.player.Player): java.util.Optional; safeTake(amount: number, maxAmount: number, player: net.minecraft.world.entity.player.Player): net.minecraft.world.item.ItemStack; + safeClone(player: net.minecraft.world.entity.player.Player): net.minecraft.world.item.ItemStack; safeInsert(stack: net.minecraft.world.item.ItemStack): net.minecraft.world.item.ItemStack; safeInsert(inputStack: net.minecraft.world.item.ItemStack, inputAmount: number): net.minecraft.world.item.ItemStack; allowModification(player: net.minecraft.world.entity.player.Player): boolean; @@ -34267,6 +34265,7 @@ declare global { partialTickLerp(): net.minecraft.world.attribute.LerpFunction; } const LerpFunction: { + CONSTANT: net.minecraft.world.attribute.LerpFunction; ofFloat(): net.minecraft.world.attribute.LerpFunction; ofInteger(): net.minecraft.world.attribute.LerpFunction; ofDegrees(maxDelta: number): net.minecraft.world.attribute.LerpFunction; @@ -34448,13 +34447,13 @@ declare global { getBlendOutDurationTicks(): number; getBlendOutAdvanceTicks(): number; applyEffectTick(serverLevel: net.minecraft.server.level.ServerLevel, mob: net.minecraft.world.entity.LivingEntity, amplification: number): boolean; - applyInstantenousEffect(level: net.minecraft.server.level.ServerLevel, source: net.minecraft.world.entity.Entity | null | undefined, owner: net.minecraft.world.entity.Entity | null | undefined, mob: net.minecraft.world.entity.LivingEntity, amplification: number, scale: number): void; + applyInstantaneousEffect(level: net.minecraft.server.level.ServerLevel, source: net.minecraft.world.entity.Entity | null | undefined, owner: net.minecraft.world.entity.Entity | null | undefined, mob: net.minecraft.world.entity.LivingEntity, amplification: number, scale: number): void; shouldApplyEffectTickThisTick(tickCount: number, amplification: number): boolean; onEffectStarted(mob: net.minecraft.world.entity.LivingEntity, amplifier: number): void; onEffectAdded(mob: net.minecraft.world.entity.LivingEntity, amplifier: number): void; onMobRemoved(level: net.minecraft.server.level.ServerLevel, mob: net.minecraft.world.entity.LivingEntity, amplifier: number, reason: net.minecraft.world.entity.Entity$RemovalReason): void; onMobHurt(level: net.minecraft.server.level.ServerLevel, mob: net.minecraft.world.entity.LivingEntity, amplifier: number, source: net.minecraft.world.damagesource.DamageSource, damage: number): void; - isInstantenous(): boolean; + isInstantaneous(): boolean; getDescriptionId(): string; getDisplayName(): net.minecraft.network.chat.Component; getCategory(): net.minecraft.world.effect.MobEffectCategory; @@ -34566,6 +34565,8 @@ declare global { interface InteractionResult$SwingSource extends kotlin.Enum { } const InteractionResult$ItemContext: { + NONE: net.minecraft.world.InteractionResult$ItemContext; + DEFAULT: net.minecraft.world.InteractionResult$ItemContext; new(wasItemInteraction: boolean, heldItemTransformedTo: net.minecraft.world.item.ItemStack | null | undefined): net.minecraft.world.InteractionResult$ItemContext; } interface InteractionResult$ItemContext extends java.lang.Record { @@ -35026,6 +35027,7 @@ declare global { interface WorldGenRegion extends net.minecraft.world.level.WorldGenLevel { isOldChunkAround(pos: net.minecraft.world.level.ChunkPos, range: number): boolean; getCenter(): net.minecraft.world.level.ChunkPos; + isWithinWriteZone(pos: net.minecraft.core.BlockPos): boolean; } const FullChunkStatus: { INACCESSIBLE: net.minecraft.server.level.FullChunkStatus; @@ -35069,8 +35071,13 @@ declare global { getChunkToSend(key: number): net.minecraft.world.level.chunk.LevelChunk | null | undefined; size(): number; getDistanceManager(): net.minecraft.server.level.DistanceManager; + collectSpawningChunks(output: Array): void; + forEachBlockTickingChunk(tickingChunkConsumer: unknown): void; + anyPlayerCloseEnoughForSpawning(pos: net.minecraft.world.level.ChunkPos): boolean; + anyPlayerCloseEnoughTo(pos: net.minecraft.core.BlockPos, maxDistance: number): boolean; getPlayersCloseForSpawning(pos: net.minecraft.world.level.ChunkPos): Array; move(player: net.minecraft.server.level.ServerPlayer): void; + hasEntityWithId(id: number): boolean; sendToTrackingPlayers(entity: net.minecraft.world.entity.Entity, packet: net.minecraft.network.protocol.Packet): void; sendToTrackingPlayersFiltered(entity: net.minecraft.world.entity.Entity, packet: net.minecraft.network.protocol.Packet, targetPredicate: unknown): void; isTrackedByAnyPlayer(entity: net.minecraft.world.entity.Entity): boolean; @@ -35355,6 +35362,7 @@ declare global { getNearestPlayer(targetConditions: net.minecraft.world.entity.ai.targeting.TargetingConditions, x: number, y: number, z: number): net.minecraft.world.entity.player.Player | null | undefined; getNearestEntity(type: java.lang.Class, targetConditions: net.minecraft.world.entity.ai.targeting.TargetingConditions, source: net.minecraft.world.entity.LivingEntity | null | undefined, x: number, y: number, z: number, bb: net.minecraft.world.phys.AABB): T; getNearestEntity(tag: net.minecraft.tags.TagKey>, targetConditions: net.minecraft.world.entity.ai.targeting.TargetingConditions, source: net.minecraft.world.entity.LivingEntity | null | undefined, x: number, y: number, z: number, bb: net.minecraft.world.phys.AABB): net.minecraft.world.entity.LivingEntity | null | undefined; + getNearestEntity(entities: Array, x: number, y: number, z: number): T; getNearestEntity(entities: Array, targetConditions: net.minecraft.world.entity.ai.targeting.TargetingConditions, source: net.minecraft.world.entity.LivingEntity | null | undefined, x: number, y: number, z: number): T; getNearbyPlayers(targetConditions: net.minecraft.world.entity.ai.targeting.TargetingConditions, source: net.minecraft.world.entity.LivingEntity, bb: net.minecraft.world.phys.AABB): Array; getNearbyEntities(type: java.lang.Class, targetConditions: net.minecraft.world.entity.ai.targeting.TargetingConditions, source: net.minecraft.world.entity.LivingEntity, bb: net.minecraft.world.phys.AABB): Array; @@ -35379,6 +35387,7 @@ declare global { addTicketWithRadius(type: net.minecraft.server.level.TicketType, pos: net.minecraft.world.level.ChunkPos, radius: number): void; removeTicketWithRadius(type: net.minecraft.server.level.TicketType, pos: net.minecraft.world.level.ChunkPos, radius: number): void; move(player: net.minecraft.server.level.ServerPlayer): void; + hasEntityWithId(id: number): boolean; removeEntity(entity: net.minecraft.world.entity.Entity): void; addEntity(entity: net.minecraft.world.entity.Entity): void; sendToTrackingPlayersAndSelf(entity: net.minecraft.world.entity.Entity, packet: net.minecraft.network.protocol.Packet): void; @@ -35448,6 +35457,15 @@ declare global { clientInformation(): net.minecraft.server.level.ClientInformation; transferred(): boolean; } + const TextFilter: { + DUMMY: net.minecraft.server.network.TextFilter; + } + interface TextFilter { + join(): void; + leave(): void; + processStreamMessage(message: string): java.util.concurrent.CompletableFuture; + processMessageBundle(messages: Array): java.util.concurrent.CompletableFuture>; + } const ServerConnectionListener: { new(server: net.minecraft.server.MinecraftServer): net.minecraft.server.network.ServerConnectionListener; } @@ -35455,19 +35473,13 @@ declare global { running: boolean; startTcpServerListener(address: java.net.InetAddress | null | undefined, port: number): void; startMemoryChannel(): java.net.SocketAddress; + acceptChannel(channel: io.netty.channel.Channel, profileId: java.util.UUID): void; stop(): void; + stopTcpServerListener(): void; tick(): void; getServer(): net.minecraft.server.MinecraftServer; getConnections(): Array; - } - const TextFilter: { - DUMMY: net.minecraft.server.network.TextFilter; - } - interface TextFilter { - join(): void; - leave(): void; - processStreamMessage(message: string): java.util.concurrent.CompletableFuture; - processMessageBundle(messages: Array): java.util.concurrent.CompletableFuture>; + getSessionId(): java.util.UUID; } interface ServerPlayerConnection { getPlayer(): net.minecraft.server.level.ServerPlayer; @@ -35842,6 +35854,19 @@ declare global { interface ResourceManagerReloadListener extends net.minecraft.server.packs.resources.PreparableReloadListener { onResourceManagerReload(resourceManager: net.minecraft.server.packs.resources.ResourceManager): void; } + const ReloadableResourceManager: { + new(type: net.minecraft.server.packs.PackType): net.minecraft.server.packs.resources.ReloadableResourceManager; + } + interface ReloadableResourceManager extends java.lang.AutoCloseable, net.minecraft.server.packs.resources.ResourceManager { + registerReloadListener(listener: net.minecraft.server.packs.resources.PreparableReloadListener): void; + createReload(backgroundExecutor: java.util.concurrent.Executor, mainThreadExecutor: java.util.concurrent.Executor, initialTask: java.util.concurrent.CompletableFuture, resourcePacks: Array): net.minecraft.server.packs.resources.ReloadInstance; + } + interface ReloadInstance { + done(): java.util.concurrent.CompletableFuture; + getActualProgress(): number; + isDone(): boolean; + checkExceptions(): void; + } } const PackLocationInfo: { new(id: string, title: net.minecraft.network.chat.Component, source: net.minecraft.server.packs.repository.PackSource, knownPackInfo: java.util.Optional): net.minecraft.server.packs.PackLocationInfo; @@ -35939,6 +35964,7 @@ declare global { } interface StoredUserEntry { getUser(): T; + hasExpired(): boolean; } const IpBanListEntry: { new(address: string): net.minecraft.server.players.IpBanListEntry; @@ -36028,6 +36054,7 @@ declare global { setViewDistance(viewDistance: number): void; setSimulationDistance(simulationDistance: number): void; getPlayers(): Array; + getPlayersByUUID(): Map; getPlayer(uuid: java.util.UUID): net.minecraft.server.level.ServerPlayer | null | undefined; getPlayer(playerName: string): net.minecraft.server.level.ServerPlayer | null | undefined; canBypassPlayerLimit(nameAndId: net.minecraft.server.players.NameAndId): boolean; @@ -36089,7 +36116,9 @@ declare global { new(): net.minecraft.server.notifications.NotificationManager; } interface NotificationManager extends net.minecraft.server.notifications.NotificationService { + server(): net.minecraft.server.dedicated.DedicatedServer | null | undefined; registerService(notificationService: net.minecraft.server.notifications.NotificationService): void; + setServer(server: net.minecraft.server.dedicated.DedicatedServer): void; } interface NotificationService { playerJoined(player: net.minecraft.server.level.ServerPlayer): void; @@ -36118,6 +36147,327 @@ declare global { reportLoginActivity(): void; } } + namespace dedicated { + const DedicatedServer: { + new(serverThread: java.lang.Thread, levelStorageSource: net.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess, packRepository: net.minecraft.server.packs.repository.PackRepository, worldStem: net.minecraft.server.WorldStem, gameRules: java.util.Optional, settings: net.minecraft.server.dedicated.DedicatedServerSettings, fixerUpper: com.mojang.datafixers.DataFixer, services: net.minecraft.server.Services, jsonRpcServer: net.minecraft.server.jsonrpc.ManagementServer | null | undefined, notificationManager: net.minecraft.server.notifications.NotificationManager): net.minecraft.server.dedicated.DedicatedServer; + } + interface DedicatedServer extends net.minecraft.server.MinecraftServer, net.minecraft.server.ServerInterface { + setAllowFlight(allowed: boolean): void; + setDifficulty(difficulty: net.minecraft.world.Difficulty): void; + viewDistance(): number; + setViewDistance(viewDistance: number): void; + simulationDistance(): number; + setSimulationDistance(simulationDistance: number): void; + handleConsoleInput(msg: string, source: net.minecraft.commands.CommandSourceStack): void; + handleConsoleInputs(): void; + setMaxPlayers(maxPlayers: number): void; + showGui(): void; + spawnProtectionRadius(): number; + setSpawnProtectionRadius(spawnProtectionRadius: number): void; + setRepliesToStatus(enable: boolean): void; + setHidesOnlinePlayers(hide: boolean): void; + setOperatorUserPermissions(permissions: net.minecraft.server.permissions.LevelBasedPermissionSet): void; + statusHeartbeatInterval(): number; + setStatusHeartbeatInterval(statusHeartbeatInterval: number): boolean; + getMaxTickLength(): number; + entityBroadcastRangePercentage(): number; + setEntityBroadcastRangePercentage(range: number): void; + forceGameMode(): boolean; + setForceGameMode(forceGameMode: boolean): void; + gameMode(): net.minecraft.world.level.GameType; + setGameMode(gameMode: net.minecraft.world.level.GameType): void; + setAcceptsTransfers(acceptTransfers: boolean): void; + setPauseWhenEmptySeconds(seconds: number): void; + } + const DedicatedServerProperties: { + MANAGEMENT_SERVER_TLS_ENABLED_KEY: string; + MANAGEMENT_SERVER_TLS_KEYSTORE_KEY: string; + MANAGEMENT_SERVER_TLS_KEYSTORE_PASSWORD_KEY: string; + new(settings: java.util.Properties): net.minecraft.server.dedicated.DedicatedServerProperties; + fromFile(file: java.nio.file.Path): net.minecraft.server.dedicated.DedicatedServerProperties; + deserializePermission(value: string): net.minecraft.server.permissions.LevelBasedPermissionSet | null | undefined; + serializePermission(permission: net.minecraft.server.permissions.LevelBasedPermissionSet): string; + } + interface DedicatedServerProperties extends net.minecraft.server.dedicated.Settings { + onlineMode: boolean; + preventProxyConnections: boolean; + serverIp: string; + allowFlight: net.minecraft.server.dedicated.Settings$MutableValue; + motd: net.minecraft.server.dedicated.Settings$MutableValue; + codeOfConduct: boolean; + bugReportLink: string; + forceGameMode: net.minecraft.server.dedicated.Settings$MutableValue; + enforceWhitelist: net.minecraft.server.dedicated.Settings$MutableValue; + difficulty: net.minecraft.server.dedicated.Settings$MutableValue; + gameMode: net.minecraft.server.dedicated.Settings$MutableValue; + levelName: string; + serverPort: number; + managementServerEnabled: boolean; + managementServerHost: string; + managementServerPort: number; + managementServerSecret: string; + managementServerTlsEnabled: boolean; + managementServerTlsKeystore: string; + managementServerTlsKeystorePassword: string; + managementServerAllowedOrigins: string; + announcePlayerAchievements: boolean | null | undefined; + enableQuery: boolean; + queryPort: number; + enableRcon: boolean; + rconPort: number; + rconPassword: string; + hardcore: boolean; + useNativeTransport: boolean; + spawnProtection: net.minecraft.server.dedicated.Settings$MutableValue; + opPermissions: net.minecraft.server.dedicated.Settings$MutableValue; + functionPermissions: net.minecraft.server.permissions.LevelBasedPermissionSet; + maxTickTime: number; + maxChainedNeighborUpdates: number; + rateLimitPacketsPerSecond: number; + commandSpamThresholdSeconds: number; + chatSpamThresholdSeconds: number; + viewDistance: net.minecraft.server.dedicated.Settings$MutableValue; + simulationDistance: net.minecraft.server.dedicated.Settings$MutableValue; + maxPlayers: net.minecraft.server.dedicated.Settings$MutableValue; + networkCompressionThreshold: number; + broadcastRconToOps: boolean; + broadcastConsoleToOps: boolean; + maxWorldSize: number; + syncChunkWrites: boolean; + regionFileComression: string; + enableJmxMonitoring: boolean; + enableStatus: net.minecraft.server.dedicated.Settings$MutableValue; + hideOnlinePlayers: net.minecraft.server.dedicated.Settings$MutableValue; + entityBroadcastRangePercentage: net.minecraft.server.dedicated.Settings$MutableValue; + textFilteringConfig: string; + textFilteringVersion: number; + serverResourcePackInfo: java.util.Optional; + initialDataPackConfiguration: net.minecraft.world.level.DataPackConfig; + playerIdleTimeout: net.minecraft.server.dedicated.Settings$MutableValue; + statusHeartbeatInterval: net.minecraft.server.dedicated.Settings$MutableValue; + whiteList: net.minecraft.server.dedicated.Settings$MutableValue; + enforceSecureProfile: boolean; + logIPs: boolean; + pauseWhenEmptySeconds: net.minecraft.server.dedicated.Settings$MutableValue; + worldOptions: net.minecraft.world.level.levelgen.WorldOptions; + acceptsTransfers: net.minecraft.server.dedicated.Settings$MutableValue; + createDimensions(registries: net.minecraft.core.HolderLookup$Provider): net.minecraft.world.level.levelgen.WorldDimensions; + } + const Settings: { + MutableValue: typeof net.minecraft.server.dedicated.Settings$MutableValue; + new(properties: java.util.Properties): net.minecraft.server.dedicated.Settings; + loadFromFile(file: java.nio.file.Path): java.util.Properties; + } + interface Settings { + store(output: java.nio.file.Path): void; + get(key: string, deserializer: unknown, serializer: unknown, defaultValue: V): V; + get(key: string, deserializer: unknown, validator: unknown, serializer: unknown, defaultValue: V): V; + get(key: string, deserializer: unknown, defaultValue: V): V; + get(key: string, defaultValue: string): string; + get(key: string, defaultValue: number): number; + get(key: string, validator: unknown, defaultValue: number): number; + get(key: string, defaultValue: number): number; + get(key: string, defaultValue: boolean): boolean; + } + interface Settings$MutableValue { + update(registryAccess: net.minecraft.core.RegistryAccess, value: V): T; + } + const DedicatedPlayerList: { + new(server: net.minecraft.server.dedicated.DedicatedServer, registries: net.minecraft.core.LayeredRegistryAccess, playerDataStorage: net.minecraft.world.level.storage.PlayerDataStorage): net.minecraft.server.dedicated.DedicatedPlayerList; + } + interface DedicatedPlayerList extends net.minecraft.server.players.PlayerList { + } + const DedicatedServerSettings: { + new(source: java.nio.file.Path): net.minecraft.server.dedicated.DedicatedServerSettings; + } + interface DedicatedServerSettings { + getProperties(): net.minecraft.server.dedicated.DedicatedServerProperties; + forceSave(): void; + update(mutator: unknown): net.minecraft.server.dedicated.DedicatedServerSettings; + } + } + namespace jsonrpc { + namespace internalapi { + const MinecraftApi: { + new(notificationManager: net.minecraft.server.notifications.NotificationManager, allowListService: net.minecraft.server.jsonrpc.internalapi.MinecraftAllowListService, banListService: net.minecraft.server.jsonrpc.internalapi.MinecraftBanListService, minecraftPlayerListService: net.minecraft.server.jsonrpc.internalapi.MinecraftPlayerListService, gameRuleService: net.minecraft.server.jsonrpc.internalapi.MinecraftGameRuleService, minecraftOperatorListService: net.minecraft.server.jsonrpc.internalapi.MinecraftOperatorListService, minecraftServerSettingsService: net.minecraft.server.jsonrpc.internalapi.MinecraftServerSettingsService, minecraftServerStateService: net.minecraft.server.jsonrpc.internalapi.MinecraftServerStateService, executorService: net.minecraft.server.jsonrpc.internalapi.MinecraftExecutorService): net.minecraft.server.jsonrpc.internalapi.MinecraftApi; + of(notificationManager: net.minecraft.server.notifications.NotificationManager): net.minecraft.server.jsonrpc.internalapi.MinecraftApi; + } + interface MinecraftApi { + notificationManager(): net.minecraft.server.notifications.NotificationManager; + allowListService(): net.minecraft.server.jsonrpc.internalapi.MinecraftAllowListService; + banListService(): net.minecraft.server.jsonrpc.internalapi.MinecraftBanListService; + gameRuleService(): net.minecraft.server.jsonrpc.internalapi.MinecraftGameRuleService; + submit(supplier: unknown): java.util.concurrent.CompletableFuture; + submit(runnable: java.lang.Runnable): java.util.concurrent.CompletableFuture; + playerListService(): net.minecraft.server.jsonrpc.internalapi.MinecraftPlayerListService; + operatorListService(): net.minecraft.server.jsonrpc.internalapi.MinecraftOperatorListService; + serverSettingsService(): net.minecraft.server.jsonrpc.internalapi.MinecraftServerSettingsService; + serverStateService(): net.minecraft.server.jsonrpc.internalapi.MinecraftServerStateService; + } + interface MinecraftAllowListService { + getEntries(): Array; + add(infos: net.minecraft.server.players.UserWhiteListEntry, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): boolean; + clear(clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + remove(nameAndId: net.minecraft.server.players.NameAndId, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + kickUnlistedPlayers(clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + } + interface MinecraftBanListService { + addUserBan(ban: net.minecraft.server.players.UserBanListEntry, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + removeUserBan(nameAndId: net.minecraft.server.players.NameAndId, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + getUserBanEntries(): Array; + getIpBanEntries(): Array; + addIpBan(ipBanEntry: net.minecraft.server.players.IpBanListEntry, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + clearIpBans(clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + removeIpBan(ip: string, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + clearUserBans(clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + } + interface MinecraftGameRuleService { + updateGameRule(update: net.minecraft.server.jsonrpc.methods.GameRulesService$GameRuleUpdate, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): net.minecraft.server.jsonrpc.methods.GameRulesService$GameRuleUpdate; + getRuleValue(gameRule: net.minecraft.world.level.gamerules.GameRule): T; + getTypedRule(gameRule: net.minecraft.world.level.gamerules.GameRule, value: T): net.minecraft.server.jsonrpc.methods.GameRulesService$GameRuleUpdate; + getAvailableGameRules(): java.util.stream.Stream>; + } + interface MinecraftPlayerListService { + getPlayers(): Array; + getPlayer(uuid: java.util.UUID): net.minecraft.server.level.ServerPlayer | null | undefined; + getPlayer(id: java.util.Optional, name: java.util.Optional): java.util.Optional; + getUser(id: java.util.Optional, name: java.util.Optional): java.util.concurrent.CompletableFuture>; + fetchUserByName(name: string): java.util.Optional; + fetchUserById(id: java.util.UUID): java.util.Optional; + getCachedUserById(id: java.util.UUID): java.util.Optional; + getPlayersWithAddress(ip: string): Array; + getPlayerByName(name: string): net.minecraft.server.level.ServerPlayer | null | undefined; + remove(player: net.minecraft.server.level.ServerPlayer, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + } + interface MinecraftOperatorListService { + getEntries(): Array; + op(nameAndId: net.minecraft.server.players.NameAndId, permissionLevel: java.util.Optional, canBypassPlayerLimit: java.util.Optional, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + op(nameAndId: net.minecraft.server.players.NameAndId, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + deop(nameAndId: net.minecraft.server.players.NameAndId, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + clear(clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + } + interface MinecraftServerSettingsService { + isAutoSave(): boolean; + setAutoSave(enabled: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): boolean; + getDifficulty(): net.minecraft.world.Difficulty; + setDifficulty(difficulty: net.minecraft.world.Difficulty, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): net.minecraft.world.Difficulty; + isEnforceWhitelist(): boolean; + setEnforceWhitelist(enforce: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): boolean; + isUsingWhitelist(): boolean; + setUsingWhitelist(use: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): boolean; + getMaxPlayers(): number; + setMaxPlayers(maxPlayers: number, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): number; + getPauseWhenEmptySeconds(): number; + setPauseWhenEmptySeconds(emptySeconds: number, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): number; + getPlayerIdleTimeout(): number; + setPlayerIdleTimeout(idleTime: number, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): number; + allowFlight(): boolean; + setAllowFlight(allow: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): boolean; + getSpawnProtectionRadius(): number; + setSpawnProtectionRadius(spawnProtection: number, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): number; + getMotd(): string; + setMotd(motd: string, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): string; + forceGameMode(): boolean; + setForceGameMode(force: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): boolean; + getGameMode(): net.minecraft.world.level.GameType; + setGameMode(gameMode: net.minecraft.world.level.GameType, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): net.minecraft.world.level.GameType; + getViewDistance(): number; + setViewDistance(viewDistance: number, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): number; + getSimulationDistance(): number; + setSimulationDistance(simulationDistance: number, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): number; + acceptsTransfers(): boolean; + setAcceptsTransfers(accept: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): boolean; + getStatusHeartbeatInterval(): number; + setStatusHeartbeatInterval(statusHeartbeatInterval: number, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): number; + getOperatorUserPermissions(): net.minecraft.server.permissions.LevelBasedPermissionSet; + setOperatorUserPermissions(level: net.minecraft.server.permissions.LevelBasedPermissionSet, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): net.minecraft.server.permissions.LevelBasedPermissionSet; + hidesOnlinePlayers(): boolean; + setHidesOnlinePlayers(hide: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): boolean; + repliesToStatus(): boolean; + setRepliesToStatus(enable: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): boolean; + getEntityBroadcastRangePercentage(): number; + setEntityBroadcastRangePercentage(percentage: number, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): number; + } + interface MinecraftServerStateService { + isReady(): boolean; + saveEverything(suppressLogs: boolean, flush: boolean, force: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): boolean; + halt(waitForShutdown: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + sendSystemMessage(message: net.minecraft.network.chat.Component, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + sendSystemMessage(message: net.minecraft.network.chat.Component, overlay: boolean, players: Array, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + broadcastSystemMessage(message: net.minecraft.network.chat.Component, overlay: boolean, clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo): void; + } + interface MinecraftExecutorService { + submit(supplier: unknown): java.util.concurrent.CompletableFuture; + submit(runnable: java.lang.Runnable): java.util.concurrent.CompletableFuture; + } + } + namespace methods { + const ClientInfo: { + new(connectionId: number): net.minecraft.server.jsonrpc.methods.ClientInfo; + of(connectionId: number): net.minecraft.server.jsonrpc.methods.ClientInfo; + } + interface ClientInfo extends java.lang.Record { + connectionId(): number; + } + const GameRulesService$GameRuleUpdate: { + TYPED_CODEC: com.mojang.serialization.Codec>; + CODEC: com.mojang.serialization.Codec>; + new(gameRule: net.minecraft.world.level.gamerules.GameRule, value: T): net.minecraft.server.jsonrpc.methods.GameRulesService$GameRuleUpdate; + } + interface GameRulesService$GameRuleUpdate extends java.lang.Record { + gameRule(): net.minecraft.world.level.gamerules.GameRule; + value(): T; + } + } + namespace security { + const AuthenticationHandler: { + BEARER_PREFIX: string; + new(securityConfig: net.minecraft.server.jsonrpc.security.SecurityConfig, allowedOrigins: string): net.minecraft.server.jsonrpc.security.AuthenticationHandler; + } + interface AuthenticationHandler extends io.netty.channel.ChannelDuplexHandler { + isValidApiKey(suppliedKey: string): boolean; + } + const SecurityConfig: { + new(secretKey: string): net.minecraft.server.jsonrpc.security.SecurityConfig; + isValid(secretKey: string): boolean; + generateSecretKey(): string; + } + interface SecurityConfig extends java.lang.Record { + secretKey(): string; + } + } + const ManagementServer: { + new(hostAndPort: com.google.common.net.HostAndPort, authenticationHandler: net.minecraft.server.jsonrpc.security.AuthenticationHandler): net.minecraft.server.jsonrpc.ManagementServer; + new(hostAndPort: com.google.common.net.HostAndPort, authenticationHandler: net.minecraft.server.jsonrpc.security.AuthenticationHandler, eventLoopGroup: io.netty.channel.EventLoopGroup): net.minecraft.server.jsonrpc.ManagementServer; + } + interface ManagementServer { + scheduleHeartbeat(notificationManager: net.minecraft.server.notifications.NotificationManager, period: number): boolean; + onConnected(connection: net.minecraft.server.jsonrpc.Connection): void; + onDisconnected(connection: net.minecraft.server.jsonrpc.Connection): void; + startWithoutTls(minecraftApi: net.minecraft.server.jsonrpc.internalapi.MinecraftApi): void; + startWithTls(minecraftApi: net.minecraft.server.jsonrpc.internalapi.MinecraftApi, sslContext: io.netty.handler.ssl.SslContext): void; + stop(closeNioEventLoopGroup: boolean): void; + tick(): void; + getPort(): number; + } + const Connection: { + new(channel: io.netty.channel.Channel, managementServer: net.minecraft.server.jsonrpc.ManagementServer, minecraftApi: net.minecraft.server.jsonrpc.internalapi.MinecraftApi, jsonrpcLogger: net.minecraft.server.jsonrpc.JsonRpcLogger): net.minecraft.server.jsonrpc.Connection; + } + interface Connection extends io.netty.channel.SimpleChannelInboundHandler { + tick(): void; + sendNotification(method: net.minecraft.core.Holder$Reference): void; + sendNotification(method: net.minecraft.core.Holder$Reference, params: Params): void; + sendRequest(method: net.minecraft.core.Holder$Reference): java.util.concurrent.CompletableFuture; + sendRequest(method: net.minecraft.core.Holder$Reference, params: Params): java.util.concurrent.CompletableFuture; + dispatchIncomingRequest(method: string, params: com.google.gson.JsonElement | null | undefined): com.google.gson.JsonElement | null | undefined; + } + const JsonRpcLogger: { + new(): net.minecraft.server.jsonrpc.JsonRpcLogger; + } + interface JsonRpcLogger { + log(clientInfo: net.minecraft.server.jsonrpc.methods.ClientInfo, message: string, args: any): void; + } + } namespace bossevents { const CustomBossEvents: { TYPE: net.minecraft.world.level.saveddata.SavedDataType; @@ -36181,13 +36531,15 @@ declare global { } const MinecraftServer: { ServerResourcePackInfo: typeof net.minecraft.server.MinecraftServer$ServerResourcePackInfo; + MultiplayerScope: typeof net.minecraft.server.MinecraftServer$MultiplayerScope; VANILLA_BRAND: string; SPAWN_POSITION_SEARCH_RADIUS: number; ABSOLUTE_MAX_WORLD_SIZE: number; DEMO_SETTINGS: net.minecraft.world.level.LevelSettings; DEFAULT_GAME_RULES: unknown; ANONYMOUS_PLAYER_PROFILE: net.minecraft.server.players.NameAndId; - new(serverThread: java.lang.Thread, storageSource: net.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess, packRepository: net.minecraft.server.packs.repository.PackRepository, worldStem: net.minecraft.server.WorldStem, gameRules: java.util.Optional, proxy: java.net.Proxy, fixerUpper: com.mojang.datafixers.DataFixer, services: net.minecraft.server.Services, levelLoadListener: net.minecraft.server.level.progress.LevelLoadListener, propagatesCrashes: boolean): net.minecraft.server.MinecraftServer; + SERVER_THREAD_NAME: string; + new(serverThread: java.lang.Thread, storageSource: net.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess, packRepository: net.minecraft.server.packs.repository.PackRepository, worldStem: net.minecraft.server.WorldStem, gameRules: java.util.Optional, proxy: java.net.Proxy, fixerUpper: com.mojang.datafixers.DataFixer, services: net.minecraft.server.Services, levelLoadListener: net.minecraft.server.level.progress.LevelLoadListener, propagatesCrashes: boolean, notificationManager: net.minecraft.server.notifications.NotificationManager): net.minecraft.server.MinecraftServer; spin(factory: unknown): S; configurePackRepository(packRepository: net.minecraft.server.packs.repository.PackRepository, initialDataConfig: net.minecraft.world.level.WorldDataConfiguration, initMode: boolean, safeMode: boolean): net.minecraft.world.level.WorldDataConfiguration; } @@ -36251,6 +36603,8 @@ declare global { isResourcePackRequired(): boolean; isDedicatedServer(): boolean; getRateLimitPacketsPerSecond(): number; + getCommandSpamThresholdSeconds(): number; + getChatSpamThresholdSeconds(): number; usesAuthentication(): boolean; setUsesAuthentication(onlineMode: boolean): void; getPreventProxyConnections(): boolean; @@ -36265,7 +36619,8 @@ declare global { setDefaultGameType(gameType: net.minecraft.world.level.GameType): void; enforceGameTypeForPlayers(gameType: net.minecraft.world.level.GameType | null | undefined): number; getConnection(): net.minecraft.server.network.ServerConnectionListener; - publishServer(gameMode: net.minecraft.world.level.GameType | null | undefined, allowCommands: boolean, port: number): boolean; + publishServer(scope: net.minecraft.server.MinecraftServer$MultiplayerScope, gameMode: net.minecraft.world.level.GameType | null | undefined, allowCommands: boolean, port: number): boolean; + unpublishServer(): boolean; getTickCount(): number; isUnderSpawnProtection(level: net.minecraft.server.level.ServerLevel, pos: net.minecraft.core.BlockPos, player: net.minecraft.world.entity.player.Player): boolean; repliesToStatus(): boolean; @@ -36375,89 +36730,15 @@ declare global { nameToIdCache(): net.minecraft.server.players.UserNameToIdResolver; profileResolver(): net.minecraft.server.players.ProfileResolver; } - const ServerTickRateManager: { - new(server: net.minecraft.server.MinecraftServer): net.minecraft.server.ServerTickRateManager; - } - interface ServerTickRateManager extends net.minecraft.world.TickRateManager { - isSprinting(): boolean; - stepGameIfPaused(ticks: number): boolean; - stopStepping(): boolean; - stopSprinting(): boolean; - requestGameToSprint(time: number): boolean; - checkShouldSprintThisTick(): boolean; - endTickWork(): void; - updateJoiningPlayer(player: net.minecraft.server.level.ServerPlayer): void; - } - const TickTask: { - new(tick: number, runnable: java.lang.Runnable): net.minecraft.server.TickTask; - } - interface TickTask extends java.lang.Runnable { - getTick(): number; - } - const ServerScoreboard: { - new(server: net.minecraft.server.MinecraftServer): net.minecraft.server.ServerScoreboard; - } - interface ServerScoreboard extends net.minecraft.world.scores.Scoreboard { - load(data: net.minecraft.world.scores.ScoreboardSaveData$Packed): void; - storeToSaveDataIfDirty(saveData: net.minecraft.world.scores.ScoreboardSaveData): void; - getStartTrackingPackets(objective: net.minecraft.world.scores.Objective): Array>; - startTrackingObjective(objective: net.minecraft.world.scores.Objective): void; - getStopTrackingPackets(objective: net.minecraft.world.scores.Objective): Array>; - stopTrackingObjective(objective: net.minecraft.world.scores.Objective): void; - getObjectiveDisplaySlotCount(objective: net.minecraft.world.scores.Objective): number; - } - const PlayerAdvancements: { - new(dataFixer: com.mojang.datafixers.DataFixer, playerList: net.minecraft.server.players.PlayerList, manager: net.minecraft.server.ServerAdvancementManager, playerSavePath: java.nio.file.Path, player: net.minecraft.server.level.ServerPlayer): net.minecraft.server.PlayerAdvancements; - } - interface PlayerAdvancements { - setPlayer(player: net.minecraft.server.level.ServerPlayer): void; - stopListening(): void; - reload(manager: net.minecraft.server.ServerAdvancementManager): void; - save(): void; - award(holder: net.minecraft.advancements.AdvancementHolder, criterion: string): boolean; - revoke(advancement: net.minecraft.advancements.AdvancementHolder, criterion: string): boolean; - flushDirty(player: net.minecraft.server.level.ServerPlayer, showAdvancements: boolean): void; - setSelectedTab(holder: net.minecraft.advancements.AdvancementHolder | null | undefined): void; - getOrStartProgress(advancement: net.minecraft.advancements.AdvancementHolder): net.minecraft.advancements.AdvancementProgress; - } - const ServerAdvancementManager: { - new(registries: net.minecraft.core.HolderLookup$Provider): net.minecraft.server.ServerAdvancementManager; - } - interface ServerAdvancementManager extends net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener { - tree(): net.minecraft.advancements.AdvancementTree; - get(id: net.minecraft.resources.Identifier): net.minecraft.advancements.AdvancementHolder | null | undefined; - getAllAdvancements(): Array; - } - const ServerFunctionManager: { - new(server: net.minecraft.server.MinecraftServer, library: net.minecraft.server.ServerFunctionLibrary): net.minecraft.server.ServerFunctionManager; - } - interface ServerFunctionManager { - getDispatcher(): com.mojang.brigadier.CommandDispatcher; - tick(): void; - execute(functionIn: net.minecraft.commands.functions.CommandFunction, sender: net.minecraft.commands.CommandSourceStack): void; - replaceLibrary(library: net.minecraft.server.ServerFunctionLibrary): void; - getGameLoopSender(): net.minecraft.commands.CommandSourceStack; - get(id: net.minecraft.resources.Identifier): java.util.Optional>; - getTag(id: net.minecraft.resources.Identifier): Array>; - getFunctionNames(): kotlin.collections.MutableIterable; - getTagNames(): kotlin.collections.MutableIterable; - } - const ServerFunctionLibrary: { - TYPE_KEY: net.minecraft.resources.ResourceKey>>; - new(functionCompilationPermissions: net.minecraft.server.permissions.PermissionSet, dispatcher: com.mojang.brigadier.CommandDispatcher): net.minecraft.server.ServerFunctionLibrary; - } - interface ServerFunctionLibrary extends net.minecraft.server.packs.resources.PreparableReloadListener { - getFunction(id: net.minecraft.resources.Identifier): java.util.Optional>; - getFunctions(): Map>; - getTag(tag: net.minecraft.resources.Identifier): Array>; - getAvailableTags(): kotlin.collections.MutableIterable; - } - const ReloadableServerRegistries$Holder: { - new(registries: net.minecraft.core.HolderLookup$Provider): net.minecraft.server.ReloadableServerRegistries$Holder; - } - interface ReloadableServerRegistries$Holder { - lookup(): net.minecraft.core.HolderLookup$Provider; - getLootTable(id: net.minecraft.resources.ResourceKey): net.minecraft.world.level.storage.loot.LootTable; + interface ServerInterface extends net.minecraft.server.ServerInfo { + getProperties(): net.minecraft.server.dedicated.DedicatedServerProperties; + getServerIp(): string; + getServerPort(): number; + getServerName(): string; + getPlayerNames(): Array; + getLevelIdName(): string; + getPluginNames(): string; + runCommand(command: string): string; } const ServerLinks: { KnownLinkType: typeof net.minecraft.server.ServerLinks$KnownLinkType; @@ -36511,6 +36792,49 @@ declare global { type(): com.mojang.datafixers.util.Either; link(): string; } + const ServerScoreboard: { + new(server: net.minecraft.server.MinecraftServer): net.minecraft.server.ServerScoreboard; + } + interface ServerScoreboard extends net.minecraft.world.scores.Scoreboard { + load(data: net.minecraft.world.scores.ScoreboardSaveData$Packed): void; + storeToSaveDataIfDirty(saveData: net.minecraft.world.scores.ScoreboardSaveData): void; + getStartTrackingPackets(objective: net.minecraft.world.scores.Objective): Array>; + startTrackingObjective(objective: net.minecraft.world.scores.Objective): void; + getStopTrackingPackets(objective: net.minecraft.world.scores.Objective): Array>; + stopTrackingObjective(objective: net.minecraft.world.scores.Objective): void; + getObjectiveDisplaySlotCount(objective: net.minecraft.world.scores.Objective): number; + } + const PlayerAdvancements: { + TriggerInstanceKey: typeof net.minecraft.server.PlayerAdvancements$TriggerInstanceKey; + new(dataFixer: com.mojang.datafixers.DataFixer, playerList: net.minecraft.server.players.PlayerList, manager: net.minecraft.server.ServerAdvancementManager, playerSavePath: java.nio.file.Path, player: net.minecraft.server.level.ServerPlayer): net.minecraft.server.PlayerAdvancements; + } + interface PlayerAdvancements { + setPlayer(player: net.minecraft.server.level.ServerPlayer): void; + clearTriggers(): void; + reload(manager: net.minecraft.server.ServerAdvancementManager): void; + save(): void; + award(holder: net.minecraft.advancements.AdvancementHolder, criterion: string): boolean; + revoke(advancement: net.minecraft.advancements.AdvancementHolder, criterion: string): boolean; + flushDirty(player: net.minecraft.server.level.ServerPlayer, showAdvancements: boolean): void; + setSelectedTab(holder: net.minecraft.advancements.AdvancementHolder | null | undefined): void; + getOrStartProgress(advancement: net.minecraft.advancements.AdvancementHolder): net.minecraft.advancements.AdvancementProgress; + getTriggerMapForType(type: net.minecraft.advancements.triggers.CriterionTrigger): Map | null | undefined; + } + const ServerAdvancementManager: { + new(registries: net.minecraft.core.HolderLookup$Provider): net.minecraft.server.ServerAdvancementManager; + } + interface ServerAdvancementManager extends net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener { + tree(): net.minecraft.advancements.AdvancementTree; + get(id: net.minecraft.resources.Identifier): net.minecraft.advancements.AdvancementHolder | null | undefined; + getAllAdvancements(): Array; + } + const PlayerAdvancements$TriggerInstanceKey: { + new(advancement: net.minecraft.advancements.AdvancementHolder, criterion: string): net.minecraft.server.PlayerAdvancements$TriggerInstanceKey; + } + interface PlayerAdvancements$TriggerInstanceKey extends java.lang.Record { + advancement(): net.minecraft.advancements.AdvancementHolder; + criterion(): string; + } const WorldStem: { new(resourceManager: net.minecraft.server.packs.resources.CloseableResourceManager, dataPackResources: net.minecraft.server.ReloadableServerResources, registries: net.minecraft.core.LayeredRegistryAccess, worldDataAndGenSettings: net.minecraft.world.level.storage.LevelDataAndDimensions$WorldDataAndGenSettings): net.minecraft.server.WorldStem; } @@ -36532,6 +36856,67 @@ declare global { listeners(): Array; updateComponentsAndStaticRegistryTags(): void; } + const ServerFunctionLibrary: { + TYPE_KEY: net.minecraft.resources.ResourceKey>>; + new(functionCompilationPermissions: net.minecraft.server.permissions.PermissionSet, dispatcher: com.mojang.brigadier.CommandDispatcher): net.minecraft.server.ServerFunctionLibrary; + } + interface ServerFunctionLibrary extends net.minecraft.server.packs.resources.PreparableReloadListener { + getFunction(id: net.minecraft.resources.Identifier): java.util.Optional>; + getFunctions(): Map>; + getTag(tag: net.minecraft.resources.Identifier): Array>; + getAvailableTags(): kotlin.collections.MutableIterable; + } + const ReloadableServerRegistries$Holder: { + new(registries: net.minecraft.core.HolderLookup$Provider): net.minecraft.server.ReloadableServerRegistries$Holder; + } + interface ReloadableServerRegistries$Holder { + lookup(): net.minecraft.core.HolderLookup$Provider; + getLootTable(id: net.minecraft.resources.ResourceKey): net.minecraft.world.level.storage.loot.LootTable; + } + const ServerTickRateManager: { + new(server: net.minecraft.server.MinecraftServer): net.minecraft.server.ServerTickRateManager; + } + interface ServerTickRateManager extends net.minecraft.world.TickRateManager { + isSprinting(): boolean; + stepGameIfPaused(ticks: number): boolean; + stopStepping(): boolean; + stopSprinting(): boolean; + requestGameToSprint(time: number): boolean; + checkShouldSprintThisTick(): boolean; + endTickWork(): void; + updateJoiningPlayer(player: net.minecraft.server.level.ServerPlayer): void; + } + const TickTask: { + new(tick: number, runnable: java.lang.Runnable): net.minecraft.server.TickTask; + } + interface TickTask extends java.lang.Runnable { + getTick(): number; + } + const MinecraftServer$MultiplayerScope: { + OFF: net.minecraft.server.MinecraftServer$MultiplayerScope; + LAN: net.minecraft.server.MinecraftServer$MultiplayerScope; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): net.minecraft.server.MinecraftServer$MultiplayerScope; + } + interface MinecraftServer$MultiplayerScope extends kotlin.Enum { + getDisplayName(): net.minecraft.network.chat.Component; + getTooltip(): net.minecraft.network.chat.Component; + } + const ServerFunctionManager: { + new(server: net.minecraft.server.MinecraftServer, library: net.minecraft.server.ServerFunctionLibrary): net.minecraft.server.ServerFunctionManager; + } + interface ServerFunctionManager { + getDispatcher(): com.mojang.brigadier.CommandDispatcher; + tick(): void; + execute(functionIn: net.minecraft.commands.functions.CommandFunction, sender: net.minecraft.commands.CommandSourceStack): void; + replaceLibrary(library: net.minecraft.server.ServerFunctionLibrary): void; + getGameLoopSender(): net.minecraft.commands.CommandSourceStack; + get(id: net.minecraft.resources.Identifier): java.util.Optional>; + getTag(id: net.minecraft.resources.Identifier): Array>; + getFunctionNames(): kotlin.collections.MutableIterable; + getTagNames(): kotlin.collections.MutableIterable; + } const MinecraftServer$ServerResourcePackInfo: { new(id: java.util.UUID, url: string, hash: string, isRequired: boolean, prompt: net.minecraft.network.chat.Component | null | undefined): net.minecraft.server.MinecraftServer$ServerResourcePackInfo; } @@ -37029,7 +37414,7 @@ declare global { INFINITE: number; ORDER_ARBITRARY: unknown; COMPILABLE_CODEC: com.mojang.serialization.Codec>; - new(maxResults: number, includesEntities: boolean, worldLimited: boolean, contextFreePredicates: Array, range: net.minecraft.advancements.criterion.MinMaxBounds$Doubles | null | undefined, position: unknown, aabb: net.minecraft.world.phys.AABB | null | undefined, order: unknown, currentEntity: boolean, playerName: string | null | undefined, entityUUID: java.util.UUID | null | undefined, type: net.minecraft.world.entity.EntityType | null | undefined, usesSelector: boolean): net.minecraft.commands.arguments.selector.EntitySelector; + new(maxResults: number, includesEntities: boolean, worldLimited: boolean, contextFreePredicates: Array, range: net.minecraft.advancements.predicates.MinMaxBounds$Doubles | null | undefined, position: unknown, aabb: net.minecraft.world.phys.AABB | null | undefined, order: unknown, currentEntity: boolean, playerName: string | null | undefined, entityUUID: java.util.UUID | null | undefined, type: net.minecraft.world.entity.EntityType | null | undefined, usesSelector: boolean): net.minecraft.commands.arguments.selector.EntitySelector; joinNames(entities: Array): net.minecraft.network.chat.Component; } interface EntitySelector { @@ -37090,18 +37475,11 @@ declare global { name(): string; signature(): net.minecraft.network.chat.MessageSignature; } - const ColorArgument: { - ERROR_INVALID_VALUE: com.mojang.brigadier.exceptions.DynamicCommandExceptionType; - color(): net.minecraft.commands.arguments.ColorArgument; - getColor(context: com.mojang.brigadier.context.CommandContext, name: string): net.minecraft.ChatFormatting; - } - interface ColorArgument extends com.mojang.brigadier.arguments.ArgumentType { - } const RangeArgument$Floats: { new(): net.minecraft.commands.arguments.RangeArgument$Floats; - getRange(context: com.mojang.brigadier.context.CommandContext, name: string): net.minecraft.advancements.criterion.MinMaxBounds$Doubles; + getRange(context: com.mojang.brigadier.context.CommandContext, name: string): net.minecraft.advancements.predicates.MinMaxBounds$Doubles; } - interface RangeArgument$Floats extends net.minecraft.commands.arguments.RangeArgument { + interface RangeArgument$Floats extends net.minecraft.commands.arguments.RangeArgument { } const RangeArgument: { Ints: typeof net.minecraft.commands.arguments.RangeArgument$Ints; @@ -37113,9 +37491,9 @@ declare global { } const RangeArgument$Ints: { new(): net.minecraft.commands.arguments.RangeArgument$Ints; - getRange(context: com.mojang.brigadier.context.CommandContext, name: string): net.minecraft.advancements.criterion.MinMaxBounds$Ints; + getRange(context: com.mojang.brigadier.context.CommandContext, name: string): net.minecraft.advancements.predicates.MinMaxBounds$Ints; } - interface RangeArgument$Ints extends net.minecraft.commands.arguments.RangeArgument { + interface RangeArgument$Ints extends net.minecraft.commands.arguments.RangeArgument { } const GameModeArgument: { new(): net.minecraft.commands.arguments.GameModeArgument; @@ -37526,81 +37904,97 @@ declare global { } } namespace advancements { - namespace criterion { + namespace triggers { + const Criterion: { + CODEC: com.mojang.serialization.Codec>; + new(trigger: net.minecraft.advancements.triggers.CriterionTrigger, triggerInstance: T): net.minecraft.advancements.triggers.Criterion; + } + interface Criterion extends java.lang.Record { + trigger(): net.minecraft.advancements.triggers.CriterionTrigger; + triggerInstance(): T; + } + interface CriterionTrigger { + codec(): com.mojang.serialization.Codec; + createCriterion(instance: T): net.minecraft.advancements.triggers.Criterion; + } + } + namespace predicates { const MinMaxBounds$Ints: { - ANY: net.minecraft.advancements.criterion.MinMaxBounds$Ints; - CODEC: com.mojang.serialization.Codec; - STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - new(bounds: net.minecraft.advancements.criterion.MinMaxBounds$Bounds, boundsSqr: net.minecraft.advancements.criterion.MinMaxBounds$Bounds): net.minecraft.advancements.criterion.MinMaxBounds$Ints; - exactly(value: number): net.minecraft.advancements.criterion.MinMaxBounds$Ints; - between(min: number, max: number): net.minecraft.advancements.criterion.MinMaxBounds$Ints; - atLeast(value: number): net.minecraft.advancements.criterion.MinMaxBounds$Ints; - atMost(value: number): net.minecraft.advancements.criterion.MinMaxBounds$Ints; - fromReader(reader: com.mojang.brigadier.StringReader): net.minecraft.advancements.criterion.MinMaxBounds$Ints; - } - interface MinMaxBounds$Ints extends java.lang.Record, net.minecraft.advancements.criterion.MinMaxBounds { + ANY: net.minecraft.advancements.predicates.MinMaxBounds$Ints; + CODEC: com.mojang.serialization.Codec; + STREAM_CODEC: net.minecraft.network.codec.StreamCodec; + new(bounds: net.minecraft.advancements.predicates.MinMaxBounds$Bounds, boundsSqr: net.minecraft.advancements.predicates.MinMaxBounds$Bounds): net.minecraft.advancements.predicates.MinMaxBounds$Ints; + exactly(value: number): net.minecraft.advancements.predicates.MinMaxBounds$Ints; + between(min: number, max: number): net.minecraft.advancements.predicates.MinMaxBounds$Ints; + atLeast(value: number): net.minecraft.advancements.predicates.MinMaxBounds$Ints; + atMost(value: number): net.minecraft.advancements.predicates.MinMaxBounds$Ints; + fromReader(reader: com.mojang.brigadier.StringReader): net.minecraft.advancements.predicates.MinMaxBounds$Ints; + } + interface MinMaxBounds$Ints extends java.lang.Record, net.minecraft.advancements.predicates.MinMaxBounds { matches(value: number): boolean; matchesSqr(valueSqr: number): boolean; - boundsSqr(): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; + boundsSqr(): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; } const MinMaxBounds: { - Bounds: typeof net.minecraft.advancements.criterion.MinMaxBounds$Bounds; - FloatDegrees: typeof net.minecraft.advancements.criterion.MinMaxBounds$FloatDegrees; - Doubles: typeof net.minecraft.advancements.criterion.MinMaxBounds$Doubles; - Ints: typeof net.minecraft.advancements.criterion.MinMaxBounds$Ints; + Bounds: typeof net.minecraft.advancements.predicates.MinMaxBounds$Bounds; + FloatDegrees: typeof net.minecraft.advancements.predicates.MinMaxBounds$FloatDegrees; + Doubles: typeof net.minecraft.advancements.predicates.MinMaxBounds$Doubles; + Ints: typeof net.minecraft.advancements.predicates.MinMaxBounds$Ints; ERROR_EMPTY: com.mojang.brigadier.exceptions.SimpleCommandExceptionType; ERROR_SWAPPED: com.mojang.brigadier.exceptions.SimpleCommandExceptionType; - validateContainedInRange(allowed: net.minecraft.advancements.criterion.MinMaxBounds): unknown; + validateContainedInRange(allowed: net.minecraft.advancements.predicates.MinMaxBounds): unknown; } interface MinMaxBounds { - bounds(): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; + bounds(): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; min(): java.util.Optional; max(): java.util.Optional; isAny(): boolean; } const MinMaxBounds$Bounds: { - new(min: java.util.Optional, max: java.util.Optional): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; - any(): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; - exactly(value: T): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; - between(min: T, max: T): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; - atLeast(value: T): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; - atMost(value: T): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; - fromReader(reader: com.mojang.brigadier.StringReader, converter: unknown, parseExc: unknown): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; + new(min: java.util.Optional, max: java.util.Optional): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; + any(): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; + exactly(value: T): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; + between(min: T, max: T): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; + atLeast(value: T): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; + atMost(value: T): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; + createCodec(numberCodec: com.mojang.serialization.Codec): com.mojang.serialization.Codec>; + createStreamCodec(numberCodec: net.minecraft.network.codec.StreamCodec): net.minecraft.network.codec.StreamCodec>; + fromReader(reader: com.mojang.brigadier.StringReader, converter: unknown, parseExc: unknown): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; } interface MinMaxBounds$Bounds extends java.lang.Record { isAny(): boolean; - validateSwappedBoundsInCodec(): com.mojang.serialization.DataResult>; + validateSwappedBoundsInCodec(): com.mojang.serialization.DataResult>; areSwapped(): boolean; asRange(): com.google.common.collect.Range; asPoint(): java.util.Optional; - map(mapper: unknown): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; + map(mapper: unknown): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; min(): java.util.Optional; max(): java.util.Optional; } const MinMaxBounds$FloatDegrees: { - ANY: net.minecraft.advancements.criterion.MinMaxBounds$FloatDegrees; - CODEC: com.mojang.serialization.Codec; - STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - new(bounds: net.minecraft.advancements.criterion.MinMaxBounds$Bounds): net.minecraft.advancements.criterion.MinMaxBounds$FloatDegrees; - fromReader(reader: com.mojang.brigadier.StringReader): net.minecraft.advancements.criterion.MinMaxBounds$FloatDegrees; + ANY: net.minecraft.advancements.predicates.MinMaxBounds$FloatDegrees; + CODEC: com.mojang.serialization.Codec; + STREAM_CODEC: net.minecraft.network.codec.StreamCodec; + new(bounds: net.minecraft.advancements.predicates.MinMaxBounds$Bounds): net.minecraft.advancements.predicates.MinMaxBounds$FloatDegrees; + fromReader(reader: com.mojang.brigadier.StringReader): net.minecraft.advancements.predicates.MinMaxBounds$FloatDegrees; } - interface MinMaxBounds$FloatDegrees extends java.lang.Record, net.minecraft.advancements.criterion.MinMaxBounds { + interface MinMaxBounds$FloatDegrees extends java.lang.Record, net.minecraft.advancements.predicates.MinMaxBounds { } const MinMaxBounds$Doubles: { - ANY: net.minecraft.advancements.criterion.MinMaxBounds$Doubles; - CODEC: com.mojang.serialization.Codec; - STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - new(bounds: net.minecraft.advancements.criterion.MinMaxBounds$Bounds, boundsSqr: net.minecraft.advancements.criterion.MinMaxBounds$Bounds): net.minecraft.advancements.criterion.MinMaxBounds$Doubles; - exactly(value: number): net.minecraft.advancements.criterion.MinMaxBounds$Doubles; - between(min: number, max: number): net.minecraft.advancements.criterion.MinMaxBounds$Doubles; - atLeast(value: number): net.minecraft.advancements.criterion.MinMaxBounds$Doubles; - atMost(value: number): net.minecraft.advancements.criterion.MinMaxBounds$Doubles; - fromReader(reader: com.mojang.brigadier.StringReader): net.minecraft.advancements.criterion.MinMaxBounds$Doubles; - } - interface MinMaxBounds$Doubles extends java.lang.Record, net.minecraft.advancements.criterion.MinMaxBounds { + ANY: net.minecraft.advancements.predicates.MinMaxBounds$Doubles; + CODEC: com.mojang.serialization.Codec; + STREAM_CODEC: net.minecraft.network.codec.StreamCodec; + new(bounds: net.minecraft.advancements.predicates.MinMaxBounds$Bounds, boundsSqr: net.minecraft.advancements.predicates.MinMaxBounds$Bounds): net.minecraft.advancements.predicates.MinMaxBounds$Doubles; + exactly(value: number): net.minecraft.advancements.predicates.MinMaxBounds$Doubles; + between(min: number, max: number): net.minecraft.advancements.predicates.MinMaxBounds$Doubles; + atLeast(value: number): net.minecraft.advancements.predicates.MinMaxBounds$Doubles; + atMost(value: number): net.minecraft.advancements.predicates.MinMaxBounds$Doubles; + fromReader(reader: com.mojang.brigadier.StringReader): net.minecraft.advancements.predicates.MinMaxBounds$Doubles; + } + interface MinMaxBounds$Doubles extends java.lang.Record, net.minecraft.advancements.predicates.MinMaxBounds { matches(value: number): boolean; matchesSqr(valueSqr: number): boolean; - boundsSqr(): net.minecraft.advancements.criterion.MinMaxBounds$Bounds; + boundsSqr(): net.minecraft.advancements.predicates.MinMaxBounds$Bounds; } } const AdvancementTree: { @@ -37641,8 +38035,8 @@ declare global { Builder: typeof net.minecraft.advancements.Advancement$Builder; CODEC: com.mojang.serialization.Codec; STREAM_CODEC: net.minecraft.network.codec.StreamCodec; - new(parent: java.util.Optional, display: java.util.Optional, rewards: net.minecraft.advancements.AdvancementRewards, criteria: Map>, requirements: net.minecraft.advancements.AdvancementRequirements, sendsTelemetryEvent: boolean): net.minecraft.advancements.Advancement; - new(parent: java.util.Optional, display: java.util.Optional, rewards: net.minecraft.advancements.AdvancementRewards, criteria: Map>, requirements: net.minecraft.advancements.AdvancementRequirements, sendsTelemetryEvent: boolean, name: java.util.Optional): net.minecraft.advancements.Advancement; + new(parent: java.util.Optional, display: java.util.Optional, rewards: net.minecraft.advancements.AdvancementRewards, criteria: Map>, requirements: net.minecraft.advancements.AdvancementRequirements, sendsTelemetryEvent: boolean): net.minecraft.advancements.Advancement; + new(parent: java.util.Optional, display: java.util.Optional, rewards: net.minecraft.advancements.AdvancementRewards, criteria: Map>, requirements: net.minecraft.advancements.AdvancementRequirements, sendsTelemetryEvent: boolean, name: java.util.Optional): net.minecraft.advancements.Advancement; name(holder: net.minecraft.advancements.AdvancementHolder): net.minecraft.network.chat.Component; } interface Advancement extends java.lang.Record { @@ -37652,7 +38046,7 @@ declare global { parent(): java.util.Optional; display(): java.util.Optional; rewards(): net.minecraft.advancements.AdvancementRewards; - criteria(): Map>; + criteria(): Map>; requirements(): net.minecraft.advancements.AdvancementRequirements; sendsTelemetryEvent(): boolean; } @@ -37722,7 +38116,7 @@ declare global { requirements(strategy: net.minecraft.advancements.AdvancementRequirements$Strategy): net.minecraft.advancements.Advancement$Builder; requirements(requirements: net.minecraft.advancements.AdvancementRequirements): net.minecraft.advancements.Advancement$Builder; sendsTelemetryEvent(): net.minecraft.advancements.Advancement$Builder; - addCriterion(name: string, criterion: net.minecraft.advancements.Criterion): net.minecraft.advancements.Advancement$Builder; + addCriterion(name: string, criterion: net.minecraft.advancements.triggers.Criterion): net.minecraft.advancements.Advancement$Builder; build(id: net.minecraft.resources.Identifier): net.minecraft.advancements.AdvancementHolder; save(output: unknown, name: string): net.minecraft.advancements.AdvancementHolder; } @@ -37758,33 +38152,6 @@ declare global { shouldAnnounceChat(): boolean; isHidden(): boolean; } - const Criterion: { - CODEC: com.mojang.serialization.Codec>; - new(trigger: net.minecraft.advancements.CriterionTrigger, triggerInstance: T): net.minecraft.advancements.Criterion; - } - interface Criterion extends java.lang.Record { - trigger(): net.minecraft.advancements.CriterionTrigger; - triggerInstance(): T; - } - const CriterionTrigger: { - Listener: typeof net.minecraft.advancements.CriterionTrigger$Listener; - } - interface CriterionTrigger { - addPlayerListener(player: net.minecraft.server.PlayerAdvancements, listener: net.minecraft.advancements.CriterionTrigger$Listener): void; - removePlayerListener(player: net.minecraft.server.PlayerAdvancements, listener: net.minecraft.advancements.CriterionTrigger$Listener): void; - removePlayerListeners(player: net.minecraft.server.PlayerAdvancements): void; - codec(): com.mojang.serialization.Codec; - createCriterion(instance: T): net.minecraft.advancements.Criterion; - } - const CriterionTrigger$Listener: { - new(trigger: T, advancement: net.minecraft.advancements.AdvancementHolder, criterion: string): net.minecraft.advancements.CriterionTrigger$Listener; - } - interface CriterionTrigger$Listener extends java.lang.Record { - run(player: net.minecraft.server.PlayerAdvancements): void; - trigger(): T; - advancement(): net.minecraft.advancements.AdvancementHolder; - criterion(): string; - } interface AdvancementTree$Listener { onAddAdvancementRoot(root: net.minecraft.advancements.AdvancementNode): void; onRemoveAdvancementRoot(root: net.minecraft.advancements.AdvancementNode): void; @@ -37851,25 +38218,14 @@ declare global { UNDERLINE: net.minecraft.ChatFormatting; ITALIC: net.minecraft.ChatFormatting; RESET: net.minecraft.ChatFormatting; - CODEC: com.mojang.serialization.Codec; - COLOR_CODEC: com.mojang.serialization.Codec; PREFIX_CODE: number; entries: kotlin.enums.EnumEntries; stripFormatting(input: string | null | undefined): string | null | undefined; - getByName(name: string | null | undefined): net.minecraft.ChatFormatting | null | undefined; - getById(id: number): net.minecraft.ChatFormatting | null | undefined; getByCode(code: number): net.minecraft.ChatFormatting | null | undefined; - getNames(getColors: boolean, getFormats: boolean): Array; values(): Array; valueOf(value: string): net.minecraft.ChatFormatting; } - interface ChatFormatting extends kotlin.Enum, net.minecraft.util.StringRepresentable { - isFormat(): boolean; - getChar(): number; - getId(): number; - isColor(): boolean; - getColor(): number | null | undefined; - getName(): string; + interface ChatFormatting extends kotlin.Enum { } const CrashReport: { new(title: string, t: kotlin.Throwable): net.minecraft.CrashReport; @@ -37912,13 +38268,15 @@ declare global { } interface SystemReport { setDetail(key: string, value: string): void; - setDetail(key: string, valueSupplier: unknown): void; + setDetail(key: string, valueSupplier: net.minecraft.CrashReportDetail): void; appendToCrashReportString(sb: java.lang.StringBuilder): void; toLineSeparatedString(): string; } + interface CrashReportDetail extends java.util.concurrent.Callable { + } const CrashReportCategory: { + Entry: typeof net.minecraft.CrashReportCategory$Entry; new(title: string): net.minecraft.CrashReportCategory; - formatLocation(x: number, y: number, z: number): string; formatLocation(levelHeightAccessor: net.minecraft.world.level.LevelHeightAccessor, x: number, y: number, z: number): string; formatLocation(levelHeightAccessor: net.minecraft.world.level.LevelHeightAccessor, pos: net.minecraft.core.BlockPos): string; formatLocation(levelHeightAccessor: net.minecraft.world.level.LevelHeightAccessor, x: number, y: number, z: number): string; @@ -37927,22 +38285,27 @@ declare global { } interface CrashReportCategory { setDetail(key: string, callback: net.minecraft.CrashReportDetail): net.minecraft.CrashReportCategory; - setDetail(key: string, value: any): net.minecraft.CrashReportCategory; + setDetail(key: string, value: any | null | undefined): net.minecraft.CrashReportCategory; setDetailError(key: string, t: kotlin.Throwable): void; fillInStackTrace(nestedOffset: number): number; - validateStackTrace(source: java.lang.StackTraceElement, next: java.lang.StackTraceElement): boolean; - trimStacktrace(length: number): void; + validateStackTrace(source: java.lang.StackTraceElement | null | undefined, next: java.lang.StackTraceElement | null | undefined): boolean; getDetails(builder: java.lang.StringBuilder): void; getStacktrace(): Array; } - interface CrashReportDetail extends java.util.concurrent.Callable { - } const ReportedException: { new(report: net.minecraft.CrashReport): net.minecraft.ReportedException; } interface ReportedException extends java.lang.RuntimeException { getReport(): net.minecraft.CrashReport; } + const CrashReportCategory$Entry: { + new(key: string, rawValue: any | null | undefined): net.minecraft.CrashReportCategory$Entry; + new(key: string, value: string): net.minecraft.CrashReportCategory$Entry; + } + interface CrashReportCategory$Entry extends java.lang.Record { + key(): string; + value(): string; + } const TracingExecutor: { new(service: java.util.concurrent.ExecutorService): net.minecraft.TracingExecutor; } @@ -38287,23 +38650,29 @@ declare global { } } } - namespace registry { - const FabricPotionBrewingBuilder: { - BUILD: net.fabricmc.fabric.api.event.Event; - } - interface FabricPotionBrewingBuilder { - registerItemRecipe(p0: net.minecraft.world.item.Item, p1: net.minecraft.world.item.crafting.Ingredient, p2: net.minecraft.world.item.Item): void; - registerPotionRecipe(p0: net.minecraft.core.Holder, p1: net.minecraft.world.item.crafting.Ingredient, p2: net.minecraft.core.Holder): void; - registerRecipes(p0: net.minecraft.world.item.crafting.Ingredient, p1: net.minecraft.core.Holder): void; - getEnabledFeatures(): net.minecraft.world.flag.FeatureFlagSet; - } - interface FabricPotionBrewingBuilder$BuildCallback { - build(p0: net.minecraft.world.item.alchemy.PotionBrewing$Builder): void; - (p0: net.minecraft.world.item.alchemy.PotionBrewing$Builder): void; + namespace datagen { + namespace v1 { + namespace advancement { + interface FabricAdvancementBuilder { + save(p0: unknown, p1: net.minecraft.resources.Identifier): net.minecraft.advancements.AdvancementHolder; + } + } } } namespace recipe { namespace v1 { + namespace sync { + interface SynchronizedRecipes { + getAllMatches(p0: net.minecraft.world.item.crafting.RecipeType, p1: I, p2: net.minecraft.world.level.Level): java.util.stream.Stream>; + getAllOfType(p0: net.minecraft.world.item.crafting.RecipeType): Array>; + getFirstMatch(p0: net.minecraft.world.item.crafting.RecipeType, p1: I, p2: net.minecraft.world.level.Level, p3: net.minecraft.resources.ResourceKey> | null | undefined): java.util.Optional>; + getFirstMatch(p0: net.minecraft.world.item.crafting.RecipeType, p1: I, p2: net.minecraft.world.level.Level, p3: net.minecraft.world.item.crafting.RecipeHolder | null | undefined): java.util.Optional>; + getFirstMatch(p0: net.minecraft.world.item.crafting.RecipeType, p1: I, p2: net.minecraft.world.level.Level): java.util.Optional>; + get(p0: net.minecraft.resources.ResourceKey>): net.minecraft.world.item.crafting.RecipeHolder | null | undefined; + get(p0: net.minecraft.world.item.crafting.RecipeType, p1: net.minecraft.resources.ResourceKey>): net.minecraft.world.item.crafting.RecipeHolder | null | undefined; + recipes(): Array>; + } + } namespace ingredient { interface FabricIngredient { getCustomIngredient(): net.fabricmc.fabric.api.recipe.v1.ingredient.CustomIngredient | null | undefined; @@ -38327,18 +38696,6 @@ declare global { getStreamCodec(): net.minecraft.network.codec.StreamCodec; } } - namespace sync { - interface SynchronizedRecipes { - getAllMatches(p0: net.minecraft.world.item.crafting.RecipeType, p1: I, p2: net.minecraft.world.level.Level): java.util.stream.Stream>; - getAllOfType(p0: net.minecraft.world.item.crafting.RecipeType): Array>; - getFirstMatch(p0: net.minecraft.world.item.crafting.RecipeType, p1: I, p2: net.minecraft.world.level.Level, p3: net.minecraft.resources.ResourceKey> | null | undefined): java.util.Optional>; - getFirstMatch(p0: net.minecraft.world.item.crafting.RecipeType, p1: I, p2: net.minecraft.world.level.Level, p3: net.minecraft.world.item.crafting.RecipeHolder | null | undefined): java.util.Optional>; - getFirstMatch(p0: net.minecraft.world.item.crafting.RecipeType, p1: I, p2: net.minecraft.world.level.Level): java.util.Optional>; - get(p0: net.minecraft.resources.ResourceKey>): net.minecraft.world.item.crafting.RecipeHolder | null | undefined; - get(p0: net.minecraft.world.item.crafting.RecipeType, p1: net.minecraft.resources.ResourceKey>): net.minecraft.world.item.crafting.RecipeHolder | null | undefined; - recipes(): Array>; - } - } interface FabricRecipeAccess { getSynchronizedRecipes(): net.fabricmc.fabric.api.recipe.v1.sync.SynchronizedRecipes; } @@ -38348,13 +38705,19 @@ declare global { } } } - namespace datagen { - namespace v1 { - namespace advancement { - interface FabricAdvancementBuilder { - save(p0: unknown, p1: net.minecraft.resources.Identifier): net.minecraft.advancements.AdvancementHolder; - } - } + namespace registry { + const FabricPotionBrewingBuilder: { + BUILD: net.fabricmc.fabric.api.event.Event; + } + interface FabricPotionBrewingBuilder { + registerItemRecipe(p0: net.minecraft.world.item.Item, p1: net.minecraft.world.item.crafting.Ingredient, p2: net.minecraft.world.item.Item): void; + registerPotionRecipe(p0: net.minecraft.core.Holder, p1: net.minecraft.world.item.crafting.Ingredient, p2: net.minecraft.core.Holder): void; + registerRecipes(p0: net.minecraft.world.item.crafting.Ingredient, p1: net.minecraft.core.Holder): void; + getEnabledFeatures(): net.minecraft.world.flag.FeatureFlagSet; + } + interface FabricPotionBrewingBuilder$BuildCallback { + build(p0: net.minecraft.world.item.alchemy.PotionBrewing$Builder): void; + (p0: net.minecraft.world.item.alchemy.PotionBrewing$Builder): void; } } namespace util { @@ -38419,6 +38782,15 @@ declare global { withUsePipelineDrawModeForGui(p0: boolean): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; withoutUsePipelineDrawModeForGui(): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; } + interface FabricOrderedSubmitNodeCollector { + submitCustom(p0: net.fabricmc.fabric.api.client.rendering.v1.SubmitRenderPhase, p1: T): void; + } + const SubmitRenderPhase: { + new(p0: unknown): net.fabricmc.fabric.api.client.rendering.v1.SubmitRenderPhase; + } + interface SubmitRenderPhase { + submit(p0: net.minecraft.client.renderer.SubmitNodeCollection, p1: T): void; + } interface FabricModel { getChildPart(p0: string): net.minecraft.client.model.geom.ModelPart | null | undefined; copyTransforms(p0: net.minecraft.client.model.Model): void; @@ -38433,47 +38805,12 @@ declare global { } interface FabricOrderedSubmitNodeCollector { submitBlockModel(p0: com.mojang.blaze3d.vertex.PoseStack, p1: unknown, p2: boolean, p3: Array, p4: net.fabricmc.fabric.api.client.renderer.v1.mesh.Mesh | null | undefined, p5: Array, p6: number, p7: number, p8: number): void; + submitBreakingBlockModel(p0: com.mojang.blaze3d.vertex.PoseStack, p1: Array, p2: net.fabricmc.fabric.api.client.renderer.v1.mesh.Mesh, p3: number): void; submitItem(p0: com.mojang.blaze3d.vertex.PoseStack, p1: net.minecraft.world.item.ItemDisplayContext, p2: number, p3: number, p4: number, p5: Array, p6: Array, p7: net.fabricmc.fabric.api.client.renderer.v1.mesh.MeshView, p8: net.minecraft.client.renderer.item.ItemStackRenderState$FoilType): void; } interface FabricBlockModelRenderState { setupMesh(p0: org.joml.Matrix4fc, p1: boolean): net.fabricmc.fabric.api.client.renderer.v1.mesh.QuadEmitter; } - const FabricSubmitNodeCollection: { - ExtendedItemSubmit: typeof net.fabricmc.fabric.api.client.renderer.v1.render.FabricSubmitNodeCollection$ExtendedItemSubmit; - ExtendedBlockModelSubmit: typeof net.fabricmc.fabric.api.client.renderer.v1.render.FabricSubmitNodeCollection$ExtendedBlockModelSubmit; - } - interface FabricSubmitNodeCollection { - getExtendedBlockModelSubmits(): Array; - getExtendedItemSubmits(): Array; - } - const FabricSubmitNodeCollection$ExtendedItemSubmit: { - new(pose: com.mojang.blaze3d.vertex.PoseStack$Pose, displayContext: net.minecraft.world.item.ItemDisplayContext, lightCoords: number, overlayCoords: number, outlineColor: number, tintLayers: Array, quads: Array, mesh: net.fabricmc.fabric.api.client.renderer.v1.mesh.MeshView, foilType: net.minecraft.client.renderer.item.ItemStackRenderState$FoilType): net.fabricmc.fabric.api.client.renderer.v1.render.FabricSubmitNodeCollection$ExtendedItemSubmit; - } - interface FabricSubmitNodeCollection$ExtendedItemSubmit extends java.lang.Record { - pose(): com.mojang.blaze3d.vertex.PoseStack$Pose; - displayContext(): net.minecraft.world.item.ItemDisplayContext; - lightCoords(): number; - overlayCoords(): number; - outlineColor(): number; - tintLayers(): Array; - quads(): Array; - mesh(): net.fabricmc.fabric.api.client.renderer.v1.mesh.MeshView; - foilType(): net.minecraft.client.renderer.item.ItemStackRenderState$FoilType; - } - const FabricSubmitNodeCollection$ExtendedBlockModelSubmit: { - new(pose: com.mojang.blaze3d.vertex.PoseStack$Pose, renderTypeFunction: unknown, translucent: boolean, modelParts: Array, mesh: net.fabricmc.fabric.api.client.renderer.v1.mesh.Mesh | null | undefined, tintLayers: Array, lightCoords: number, overlayCoords: number, outlineColor: number): net.fabricmc.fabric.api.client.renderer.v1.render.FabricSubmitNodeCollection$ExtendedBlockModelSubmit; - } - interface FabricSubmitNodeCollection$ExtendedBlockModelSubmit extends java.lang.Record { - pose(): com.mojang.blaze3d.vertex.PoseStack$Pose; - renderTypeFunction(): unknown; - translucent(): boolean; - modelParts(): Array; - mesh(): net.fabricmc.fabric.api.client.renderer.v1.mesh.Mesh | null | undefined; - tintLayers(): Array; - lightCoords(): number; - overlayCoords(): number; - outlineColor(): number; - } } namespace mesh { interface QuadEmitter extends net.fabricmc.fabric.api.client.renderer.v1.mesh.MutableQuadView { @@ -38600,6 +38937,12 @@ declare global { } } namespace model { + interface FabricBlockStateModelPart { + emitQuads(p0: net.fabricmc.fabric.api.client.renderer.v1.mesh.QuadEmitter, p1: unknown): void; + } + interface FabricBlockStateModelSet { + getParticleMaterial(p0: net.minecraft.world.level.block.state.BlockState, p1: net.minecraft.client.renderer.block.BlockAndTintGetter, p2: net.minecraft.core.BlockPos): net.minecraft.client.resources.model.sprite.Material$Baked; + } interface FabricBlockStateModel { emitQuads(p0: net.fabricmc.fabric.api.client.renderer.v1.mesh.QuadEmitter, p1: net.minecraft.client.renderer.block.BlockAndTintGetter, p2: net.minecraft.core.BlockPos, p3: net.minecraft.world.level.block.state.BlockState, p4: net.minecraft.util.RandomSource, p5: unknown): void; createGeometryKey(p0: net.minecraft.client.renderer.block.BlockAndTintGetter, p1: net.minecraft.core.BlockPos, p2: net.minecraft.world.level.block.state.BlockState, p3: net.minecraft.util.RandomSource): any | null | undefined; @@ -38607,12 +38950,6 @@ declare global { materialFlags(p0: net.minecraft.client.renderer.block.BlockAndTintGetter, p1: net.minecraft.core.BlockPos, p2: net.minecraft.world.level.block.state.BlockState, p3: net.minecraft.util.RandomSource): number; hasMaterialFlag(p0: net.minecraft.client.renderer.block.BlockAndTintGetter, p1: net.minecraft.core.BlockPos, p2: net.minecraft.world.level.block.state.BlockState, p3: net.minecraft.util.RandomSource, p4: number): boolean; } - interface FabricBlockStateModelPart { - emitQuads(p0: net.fabricmc.fabric.api.client.renderer.v1.mesh.QuadEmitter, p1: unknown): void; - } - interface FabricBlockStateModelSet { - getParticleMaterial(p0: net.minecraft.world.level.block.state.BlockState, p1: net.minecraft.client.renderer.block.BlockAndTintGetter, p2: net.minecraft.core.BlockPos): net.minecraft.client.resources.model.sprite.Material$Baked; - } } namespace sprite { interface FabricMaterialBaker extends net.fabricmc.fabric.api.client.renderer.v1.sprite.SpriteFinderGetter { @@ -38626,15 +38963,25 @@ declare global { find(p0: net.fabricmc.fabric.api.client.renderer.v1.mesh.QuadView): net.minecraft.client.renderer.texture.TextureAtlasSprite; find(p0: number, p1: number): net.minecraft.client.renderer.texture.TextureAtlasSprite; } - interface FabricTextureAtlas { + interface FabricPreparations { spriteFinder(): net.fabricmc.fabric.api.client.renderer.v1.sprite.SpriteFinder; } - interface FabricPreparations { + interface FabricTextureAtlas { spriteFinder(): net.fabricmc.fabric.api.client.renderer.v1.sprite.SpriteFinder; } } } } + namespace sound { + namespace v1 { + const FabricSoundInstance: { + EMPTY_SOUND: net.minecraft.resources.Identifier; + } + interface FabricSoundInstance { + getAudioStream(p0: net.minecraft.client.sounds.SoundBufferLibrary, p1: net.minecraft.resources.Identifier, p2: boolean): java.util.concurrent.CompletableFuture; + } + } + } namespace model { namespace loading { namespace v1 { @@ -38650,16 +38997,6 @@ declare global { } } } - namespace sound { - namespace v1 { - const FabricSoundInstance: { - EMPTY_SOUND: net.minecraft.resources.Identifier; - } - interface FabricSoundInstance { - getAudioStream(p0: net.minecraft.client.sounds.SoundBufferLibrary, p1: net.minecraft.resources.Identifier, p2: boolean): java.util.concurrent.CompletableFuture; - } - } - } } namespace entity { namespace event { @@ -38676,12 +39013,6 @@ declare global { } } } - namespace api { - interface ClientModInitializer { - onInitializeClient(): void; - (): void; - } - } namespace loader { namespace api { namespace entrypoint { @@ -38692,6 +39023,12 @@ declare global { } } } + namespace api { + interface ClientModInitializer { + onInitializeClient(): void; + (): void; + } + } } } namespace com { @@ -38734,48 +39071,39 @@ declare global { } interface PolygonMode extends kotlin.Enum { } - const SourceFactor: { - CONSTANT_ALPHA: com.mojang.blaze3d.platform.SourceFactor; - CONSTANT_COLOR: com.mojang.blaze3d.platform.SourceFactor; - DST_ALPHA: com.mojang.blaze3d.platform.SourceFactor; - DST_COLOR: com.mojang.blaze3d.platform.SourceFactor; - ONE: com.mojang.blaze3d.platform.SourceFactor; - ONE_MINUS_CONSTANT_ALPHA: com.mojang.blaze3d.platform.SourceFactor; - ONE_MINUS_CONSTANT_COLOR: com.mojang.blaze3d.platform.SourceFactor; - ONE_MINUS_DST_ALPHA: com.mojang.blaze3d.platform.SourceFactor; - ONE_MINUS_DST_COLOR: com.mojang.blaze3d.platform.SourceFactor; - ONE_MINUS_SRC_ALPHA: com.mojang.blaze3d.platform.SourceFactor; - ONE_MINUS_SRC_COLOR: com.mojang.blaze3d.platform.SourceFactor; - SRC_ALPHA: com.mojang.blaze3d.platform.SourceFactor; - SRC_ALPHA_SATURATE: com.mojang.blaze3d.platform.SourceFactor; - SRC_COLOR: com.mojang.blaze3d.platform.SourceFactor; - ZERO: com.mojang.blaze3d.platform.SourceFactor; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.mojang.blaze3d.platform.SourceFactor; - } - interface SourceFactor extends kotlin.Enum { - } - const DestFactor: { - CONSTANT_ALPHA: com.mojang.blaze3d.platform.DestFactor; - CONSTANT_COLOR: com.mojang.blaze3d.platform.DestFactor; - DST_ALPHA: com.mojang.blaze3d.platform.DestFactor; - DST_COLOR: com.mojang.blaze3d.platform.DestFactor; - ONE: com.mojang.blaze3d.platform.DestFactor; - ONE_MINUS_CONSTANT_ALPHA: com.mojang.blaze3d.platform.DestFactor; - ONE_MINUS_CONSTANT_COLOR: com.mojang.blaze3d.platform.DestFactor; - ONE_MINUS_DST_ALPHA: com.mojang.blaze3d.platform.DestFactor; - ONE_MINUS_DST_COLOR: com.mojang.blaze3d.platform.DestFactor; - ONE_MINUS_SRC_ALPHA: com.mojang.blaze3d.platform.DestFactor; - ONE_MINUS_SRC_COLOR: com.mojang.blaze3d.platform.DestFactor; - SRC_ALPHA: com.mojang.blaze3d.platform.DestFactor; - SRC_COLOR: com.mojang.blaze3d.platform.DestFactor; - ZERO: com.mojang.blaze3d.platform.DestFactor; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.mojang.blaze3d.platform.DestFactor; - } - interface DestFactor extends kotlin.Enum { + const BlendFactor: { + CONSTANT_ALPHA: com.mojang.blaze3d.platform.BlendFactor; + CONSTANT_COLOR: com.mojang.blaze3d.platform.BlendFactor; + DST_ALPHA: com.mojang.blaze3d.platform.BlendFactor; + DST_COLOR: com.mojang.blaze3d.platform.BlendFactor; + ONE: com.mojang.blaze3d.platform.BlendFactor; + ONE_MINUS_CONSTANT_ALPHA: com.mojang.blaze3d.platform.BlendFactor; + ONE_MINUS_CONSTANT_COLOR: com.mojang.blaze3d.platform.BlendFactor; + ONE_MINUS_DST_ALPHA: com.mojang.blaze3d.platform.BlendFactor; + ONE_MINUS_DST_COLOR: com.mojang.blaze3d.platform.BlendFactor; + ONE_MINUS_SRC_ALPHA: com.mojang.blaze3d.platform.BlendFactor; + ONE_MINUS_SRC_COLOR: com.mojang.blaze3d.platform.BlendFactor; + SRC_ALPHA: com.mojang.blaze3d.platform.BlendFactor; + SRC_ALPHA_SATURATE: com.mojang.blaze3d.platform.BlendFactor; + SRC_COLOR: com.mojang.blaze3d.platform.BlendFactor; + ZERO: com.mojang.blaze3d.platform.BlendFactor; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.mojang.blaze3d.platform.BlendFactor; + } + interface BlendFactor extends kotlin.Enum { + } + const BlendOp: { + ADD: com.mojang.blaze3d.platform.BlendOp; + SUBTRACT: com.mojang.blaze3d.platform.BlendOp; + REVERSE_SUBTRACT: com.mojang.blaze3d.platform.BlendOp; + MIN: com.mojang.blaze3d.platform.BlendOp; + MAX: com.mojang.blaze3d.platform.BlendOp; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.mojang.blaze3d.platform.BlendOp; + } + interface BlendOp extends kotlin.Enum { } const CompareOp: { ALWAYS_PASS: com.mojang.blaze3d.platform.CompareOp; @@ -38840,6 +39168,7 @@ declare global { resizeSubRectTo(sourceX: number, sourceY: number, sizeX: number, sizeY: number, to: com.mojang.blaze3d.platform.NativeImage): void; untrack(): void; getPointer(): number; + getPixelBytes(): java.nio.ByteBuffer; computeTransparency(x0: number, y0: number, x1: number, y1: number): com.mojang.blaze3d.platform.Transparency; computeTransparency(): com.mojang.blaze3d.platform.Transparency; } @@ -38878,7 +39207,7 @@ declare global { WindowInitFailed: typeof com.mojang.blaze3d.platform.Window$WindowInitFailed; BASE_WIDTH: number; BASE_HEIGHT: number; - new(eventHandler: com.mojang.blaze3d.platform.WindowEventHandler, displayData: com.mojang.blaze3d.platform.DisplayData, fullscreenVideoModeString: string | null | undefined, title: string, backend: com.mojang.blaze3d.systems.GpuBackend): com.mojang.blaze3d.platform.Window; + new(eventHandler: com.mojang.blaze3d.platform.WindowEventHandler, displayData: com.mojang.blaze3d.platform.DisplayData, fullscreenVideoModeString: string | null | undefined, exclusiveFullscreen: boolean, title: string, monitorManager: com.mojang.blaze3d.platform.MonitorManager, backend: com.mojang.blaze3d.systems.GpuBackend): com.mojang.blaze3d.platform.Window; createGlfwWindow(width: number, height: number, title: string, monitor: number, backend: com.mojang.blaze3d.systems.GpuBackend): number; getPlatform(): string; checkGlfwError(errorConsumer: unknown): void; @@ -38886,14 +39215,12 @@ declare global { interface Window extends java.lang.AutoCloseable { defaultErrorCallback(errorCode: number, description: number): void; handle(): number; - isResized(): boolean; backend(): com.mojang.blaze3d.systems.GpuBackend; getRefreshRate(): number; shouldClose(): boolean; setIcon(resources: net.minecraft.server.packs.PackResources, iconSet: com.mojang.blaze3d.platform.IconSet): void; setErrorSection(string: string): void; setDefaultErrorCallback(): void; - updateVsync(enableVsync: boolean): void; updateFullscreenIfChanged(): void; getPreferredFullscreenVideoMode(): java.util.Optional; setPreferredFullscreenVideoMode(preferredFullscreenVideoMode: java.util.Optional): void; @@ -38920,7 +39247,6 @@ declare global { findBestMonitor(): com.mojang.blaze3d.platform.Monitor | null | undefined; updateRawMouseInput(value: boolean): void; setWindowCloseCallback(task: java.lang.Runnable): void; - resetIsResized(): void; isMinimized(): boolean; setAllowCursorChanges(value: boolean): void; selectCursor(cursor: com.mojang.blaze3d.platform.cursor.CursorType): void; @@ -38938,18 +39264,20 @@ declare global { getMacIcon(resources: net.minecraft.server.packs.PackResources): net.minecraft.server.packs.resources.IoSupplier; } const Monitor: { - new(monitor: number): com.mojang.blaze3d.platform.Monitor; + new(monitorName: string, monitor: number, videoModes: Array, currentMode: com.mojang.blaze3d.platform.VideoMode, x: number, y: number): com.mojang.blaze3d.platform.Monitor; + tryCreate(monitor: number): com.mojang.blaze3d.platform.Monitor | null | undefined; } - interface Monitor { - refreshVideoModes(): void; + interface Monitor extends java.lang.Record { getPreferredVidMode(expectedMode: java.util.Optional): com.mojang.blaze3d.platform.VideoMode; - getVideoModeIndex(videoMode: com.mojang.blaze3d.platform.VideoMode): number; - getCurrentMode(): com.mojang.blaze3d.platform.VideoMode; - getX(): number; - getY(): number; - getMode(mode: number): com.mojang.blaze3d.platform.VideoMode; - getModeCount(): number; - getMonitor(): number; + indexOfMode(videoMode: com.mojang.blaze3d.platform.VideoMode): number; + mode(mode: number): com.mojang.blaze3d.platform.VideoMode; + modeCount(): number; + monitorName(): string; + monitor(): number; + videoModes(): Array; + currentMode(): com.mojang.blaze3d.platform.VideoMode; + x(): number; + y(): number; } const VideoMode: { new(width: number, height: number, redBits: number, greenBits: number, blueBits: number, refreshRate: number): com.mojang.blaze3d.platform.VideoMode; @@ -38967,6 +39295,7 @@ declare global { write(): string; } interface WindowEventHandler { + framebufferSizeChanged(): void; resizeGui(): void; cursorEntered(): void; } @@ -38982,6 +39311,14 @@ declare global { fullscreenHeight(): java.util.OptionalInt; isFullscreen(): boolean; } + const MonitorManager: { + new(): com.mojang.blaze3d.platform.MonitorManager; + clamp(value: number, min: number, max: number): number; + } + interface MonitorManager extends java.lang.AutoCloseable { + getMonitor(monitor: number): com.mojang.blaze3d.platform.Monitor | null | undefined; + findBestMonitor(window: com.mojang.blaze3d.platform.Window): com.mojang.blaze3d.platform.Monitor | null | undefined; + } const Window$WindowInitFailed: { new(message: string): com.mojang.blaze3d.platform.Window$WindowInitFailed; } @@ -39047,7 +39384,6 @@ declare global { const RenderPipeline: { Builder: typeof com.mojang.blaze3d.pipeline.RenderPipeline$Builder; Snippet: typeof com.mojang.blaze3d.pipeline.RenderPipeline$Snippet; - UniformDescription: typeof com.mojang.blaze3d.pipeline.RenderPipeline$UniformDescription; updateSortKeySeed(): void; builder(snippets: com.mojang.blaze3d.pipeline.RenderPipeline$Snippet): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; } @@ -39055,33 +39391,34 @@ declare global { getSortKey(): number; getPolygonMode(): com.mojang.blaze3d.platform.PolygonMode; isCull(): boolean; - getColorTargetState(): com.mojang.blaze3d.pipeline.ColorTargetState; + getColorTargetStates(): Array; + getColorTargetState(): com.mojang.blaze3d.pipeline.ColorTargetState | null | undefined; getDepthStencilState(): com.mojang.blaze3d.pipeline.DepthStencilState | null | undefined; getLocation(): net.minecraft.resources.Identifier; - getVertexFormat(): com.mojang.blaze3d.vertex.VertexFormat; - getVertexFormatMode(): com.mojang.blaze3d.vertex.VertexFormat$Mode; + getVertexFormatBindings(): Array; + getVertexFormatBinding(bindingIndex: number): com.mojang.blaze3d.vertex.VertexFormat | null | undefined; + getPrimitiveTopology(): com.mojang.blaze3d.PrimitiveTopology; getVertexShader(): net.minecraft.resources.Identifier; getFragmentShader(): net.minecraft.resources.Identifier; getShaderDefines(): net.minecraft.client.renderer.ShaderDefines; - getSamplers(): Array; - getUniforms(): Array; + getBindGroupLayouts(): Array; wantsDepthTexture(): boolean; } const RenderPipeline$Snippet: { - new(vertexShader: java.util.Optional, fragmentShader: java.util.Optional, shaderDefines: java.util.Optional, samplers: java.util.Optional>, uniforms: java.util.Optional>, colorTargetState: java.util.Optional, depthStencilState: java.util.Optional, polygonMode: java.util.Optional, cull: java.util.Optional, vertexFormat: java.util.Optional, vertexFormatMode: java.util.Optional): com.mojang.blaze3d.pipeline.RenderPipeline$Snippet; + new(vertexShader: java.util.Optional, fragmentShader: java.util.Optional, shaderDefines: java.util.Optional, bindGroupLayouts: java.util.Optional>, colorTargetStates: Array, activeColorTargetStateCount: number, depthStencilState: java.util.Optional, polygonMode: java.util.Optional, cull: java.util.Optional, vertexFormatPerBuffer: Array, vertexFormatMode: java.util.Optional): com.mojang.blaze3d.pipeline.RenderPipeline$Snippet; } interface RenderPipeline$Snippet extends java.lang.Record, net.fabricmc.fabric.api.client.rendering.v1.FabricRenderPipeline$Snippet { vertexShader(): java.util.Optional; fragmentShader(): java.util.Optional; shaderDefines(): java.util.Optional; - samplers(): java.util.Optional>; - uniforms(): java.util.Optional>; - colorTargetState(): java.util.Optional; + bindGroupLayouts(): java.util.Optional>; + colorTargetStates(): Array; + activeColorTargetStateCount(): number; depthStencilState(): java.util.Optional; polygonMode(): java.util.Optional; cull(): java.util.Optional; - vertexFormat(): java.util.Optional; - vertexFormatMode(): java.util.Optional; + vertexFormatPerBuffer(): Array; + vertexFormatMode(): java.util.Optional; } interface RenderPipeline$Builder extends net.fabricmc.fabric.api.client.rendering.v1.FabricRenderPipeline$Builder { withLocation(location: string): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; @@ -39093,18 +39430,47 @@ declare global { withShaderDefine(key: string): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; withShaderDefine(key: string, value: number): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; withShaderDefine(key: string, value: number): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; - withSampler(sampler: string): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; - withUniform(name: string, type: com.mojang.blaze3d.shaders.UniformType): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; - withUniform(name: string, type: com.mojang.blaze3d.shaders.UniformType, format: com.mojang.blaze3d.textures.TextureFormat): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; + withBindGroupLayout(bindGroupLayout: com.mojang.blaze3d.pipeline.BindGroupLayout): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; withPolygonMode(polygonMode: com.mojang.blaze3d.platform.PolygonMode): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; withCull(cull: boolean): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; + withColorTargetState(index: number, colorTargetState: com.mojang.blaze3d.pipeline.ColorTargetState): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; withColorTargetState(colorTargetState: com.mojang.blaze3d.pipeline.ColorTargetState): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; + withUnusedColorTargetState(index: number): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; withDepthStencilState(depthStencilState: com.mojang.blaze3d.pipeline.DepthStencilState): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; withDepthStencilState(depthStencilState: java.util.Optional): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; - withVertexFormat(vertexFormat: com.mojang.blaze3d.vertex.VertexFormat, vertexFormatMode: com.mojang.blaze3d.vertex.VertexFormat$Mode): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; + withVertexBinding(bindingIndex: number, vertexFormat: com.mojang.blaze3d.vertex.VertexFormat): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; + withPrimitiveTopology(primitiveTopology: com.mojang.blaze3d.PrimitiveTopology): com.mojang.blaze3d.pipeline.RenderPipeline$Builder; buildSnippet(): com.mojang.blaze3d.pipeline.RenderPipeline$Snippet; build(): com.mojang.blaze3d.pipeline.RenderPipeline; } + const BindGroupLayout: { + Builder: typeof com.mojang.blaze3d.pipeline.BindGroupLayout$Builder; + UniformDescription: typeof com.mojang.blaze3d.pipeline.BindGroupLayout$UniformDescription; + builder(): com.mojang.blaze3d.pipeline.BindGroupLayout$Builder; + flattenSamplers(bindGroupLayouts: Array): Array; + flattenUniforms(bindGroupLayouts: Array): Array; + ensureCompatible(bindGroupLayouts: Array): void; + } + interface BindGroupLayout { + getSamplers(): Array; + getUniforms(): Array; + } + interface BindGroupLayout$Builder { + withSampler(sampler: string): com.mojang.blaze3d.pipeline.BindGroupLayout$Builder; + withUniform(name: string, type: com.mojang.blaze3d.shaders.UniformType): com.mojang.blaze3d.pipeline.BindGroupLayout$Builder; + withUniform(name: string, type: com.mojang.blaze3d.shaders.UniformType, format: com.mojang.blaze3d.GpuFormat): com.mojang.blaze3d.pipeline.BindGroupLayout$Builder; + build(): com.mojang.blaze3d.pipeline.BindGroupLayout; + } + const BindGroupLayout$UniformDescription: { + new(name: string, type: com.mojang.blaze3d.shaders.UniformType): com.mojang.blaze3d.pipeline.BindGroupLayout$UniformDescription; + new(name: string, gpuFormat: com.mojang.blaze3d.GpuFormat): com.mojang.blaze3d.pipeline.BindGroupLayout$UniformDescription; + new(name: string, type: com.mojang.blaze3d.shaders.UniformType, gpuFormat: com.mojang.blaze3d.GpuFormat | null | undefined): com.mojang.blaze3d.pipeline.BindGroupLayout$UniformDescription; + } + interface BindGroupLayout$UniformDescription extends java.lang.Record { + name(): string; + type(): com.mojang.blaze3d.shaders.UniformType; + gpuFormat(): com.mojang.blaze3d.GpuFormat | null | undefined; + } const ColorTargetState: { WRITE_RED: number; WRITE_GREEN: number; @@ -39114,8 +39480,9 @@ declare global { WRITE_ALL: number; WRITE_NONE: number; DEFAULT: com.mojang.blaze3d.pipeline.ColorTargetState; + MAX_COLOR_TARGETS: number; new(blendFunction: com.mojang.blaze3d.pipeline.BlendFunction): com.mojang.blaze3d.pipeline.ColorTargetState; - new(blendFunction: java.util.Optional, writeMask: number): com.mojang.blaze3d.pipeline.ColorTargetState; + new(blendFunction: java.util.Optional, format: com.mojang.blaze3d.GpuFormat, writeMask: number): com.mojang.blaze3d.pipeline.ColorTargetState; } interface ColorTargetState extends java.lang.Record { writeRed(): boolean; @@ -39123,6 +39490,7 @@ declare global { writeBlue(): boolean; writeAlpha(): boolean; blendFunction(): java.util.Optional; + format(): com.mojang.blaze3d.GpuFormat; writeMask(): number; } const BlendFunction: { @@ -39134,14 +39502,24 @@ declare global { ADDITIVE: com.mojang.blaze3d.pipeline.BlendFunction; ENTITY_OUTLINE_BLIT: com.mojang.blaze3d.pipeline.BlendFunction; INVERT: com.mojang.blaze3d.pipeline.BlendFunction; - new(source: com.mojang.blaze3d.platform.SourceFactor, dest: com.mojang.blaze3d.platform.DestFactor): com.mojang.blaze3d.pipeline.BlendFunction; - new(sourceColor: com.mojang.blaze3d.platform.SourceFactor, destColor: com.mojang.blaze3d.platform.DestFactor, sourceAlpha: com.mojang.blaze3d.platform.SourceFactor, destAlpha: com.mojang.blaze3d.platform.DestFactor): com.mojang.blaze3d.pipeline.BlendFunction; + new(srcColorFactor: com.mojang.blaze3d.platform.BlendFactor, dstColorFactor: com.mojang.blaze3d.platform.BlendFactor, colorOp: com.mojang.blaze3d.platform.BlendOp, srcAlphaFactor: com.mojang.blaze3d.platform.BlendFactor, dstAlphaFactor: com.mojang.blaze3d.platform.BlendFactor, alphaOp: com.mojang.blaze3d.platform.BlendOp): com.mojang.blaze3d.pipeline.BlendFunction; + new(srcColorFactor: com.mojang.blaze3d.platform.BlendFactor, dstColorFactor: com.mojang.blaze3d.platform.BlendFactor, srcAlphaFactor: com.mojang.blaze3d.platform.BlendFactor, dstAlphaFactor: com.mojang.blaze3d.platform.BlendFactor): com.mojang.blaze3d.pipeline.BlendFunction; + new(equation: com.mojang.blaze3d.pipeline.BlendEquation): com.mojang.blaze3d.pipeline.BlendFunction; + new(srcFactor: com.mojang.blaze3d.platform.BlendFactor, dstFactor: com.mojang.blaze3d.platform.BlendFactor, op: com.mojang.blaze3d.platform.BlendOp): com.mojang.blaze3d.pipeline.BlendFunction; + new(srcFactor: com.mojang.blaze3d.platform.BlendFactor, dstFactor: com.mojang.blaze3d.platform.BlendFactor): com.mojang.blaze3d.pipeline.BlendFunction; + new(color: com.mojang.blaze3d.pipeline.BlendEquation, alpha: com.mojang.blaze3d.pipeline.BlendEquation): com.mojang.blaze3d.pipeline.BlendFunction; } interface BlendFunction extends java.lang.Record { - sourceColor(): com.mojang.blaze3d.platform.SourceFactor; - destColor(): com.mojang.blaze3d.platform.DestFactor; - sourceAlpha(): com.mojang.blaze3d.platform.SourceFactor; - destAlpha(): com.mojang.blaze3d.platform.DestFactor; + color(): com.mojang.blaze3d.pipeline.BlendEquation; + alpha(): com.mojang.blaze3d.pipeline.BlendEquation; + } + const BlendEquation: { + new(sourceFactor: com.mojang.blaze3d.platform.BlendFactor, destFactor: com.mojang.blaze3d.platform.BlendFactor, op: com.mojang.blaze3d.platform.BlendOp): com.mojang.blaze3d.pipeline.BlendEquation; + } + interface BlendEquation extends java.lang.Record { + sourceFactor(): com.mojang.blaze3d.platform.BlendFactor; + destFactor(): com.mojang.blaze3d.platform.BlendFactor; + op(): com.mojang.blaze3d.platform.BlendOp; } const ColorTargetState$WriteMask: { new(): com.mojang.blaze3d.pipeline.ColorTargetState$WriteMask; @@ -39159,18 +39537,8 @@ declare global { depthBiasScaleFactor(): number; depthBiasConstant(): number; } - const RenderPipeline$UniformDescription: { - new(name: string, type: com.mojang.blaze3d.shaders.UniformType): com.mojang.blaze3d.pipeline.RenderPipeline$UniformDescription; - new(name: string, textureFormat: com.mojang.blaze3d.textures.TextureFormat): com.mojang.blaze3d.pipeline.RenderPipeline$UniformDescription; - new(name: string, type: com.mojang.blaze3d.shaders.UniformType, textureFormat: com.mojang.blaze3d.textures.TextureFormat | null | undefined): com.mojang.blaze3d.pipeline.RenderPipeline$UniformDescription; - } - interface RenderPipeline$UniformDescription extends java.lang.Record { - name(): string; - type(): com.mojang.blaze3d.shaders.UniformType; - textureFormat(): com.mojang.blaze3d.textures.TextureFormat | null | undefined; - } const RenderTarget: { - new(label: string | null | undefined, useDepth: boolean): com.mojang.blaze3d.pipeline.RenderTarget; + new(label: string | null | undefined, useDepth: boolean, format: com.mojang.blaze3d.GpuFormat): com.mojang.blaze3d.pipeline.RenderTarget; } interface RenderTarget { width: number; @@ -39180,8 +39548,7 @@ declare global { destroyBuffers(): void; copyDepthFrom(source: com.mojang.blaze3d.pipeline.RenderTarget): void; createBuffers(width: number, height: number): void; - blitToScreen(): void; - blitAndBlendToTexture(output: com.mojang.blaze3d.textures.GpuTextureView): void; + blitAndBlendToTexture(output: com.mojang.blaze3d.textures.GpuTextureView, outputDepth: com.mojang.blaze3d.textures.GpuTextureView): void; getColorTexture(): com.mojang.blaze3d.textures.GpuTexture | null | undefined; getColorTextureView(): com.mojang.blaze3d.textures.GpuTextureView | null | undefined; getDepthTexture(): com.mojang.blaze3d.textures.GpuTexture | null | undefined; @@ -39218,255 +39585,43 @@ declare global { idConverter(): net.minecraft.resources.FileToIdConverter; } const GpuDebugOptions: { - new(logLevel: number, synchronousLogs: boolean, useLabels: boolean): com.mojang.blaze3d.shaders.GpuDebugOptions; + new(logLevel: number, synchronousLogs: boolean, useLabels: boolean, useValidationLayers: boolean): com.mojang.blaze3d.shaders.GpuDebugOptions; } interface GpuDebugOptions extends java.lang.Record { logLevel(): number; synchronousLogs(): boolean; useLabels(): boolean; - } - } - namespace textures { - const TextureFormat: { - RGBA8: com.mojang.blaze3d.textures.TextureFormat; - RED8: com.mojang.blaze3d.textures.TextureFormat; - RED8I: com.mojang.blaze3d.textures.TextureFormat; - DEPTH32: com.mojang.blaze3d.textures.TextureFormat; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.mojang.blaze3d.textures.TextureFormat; - } - interface TextureFormat extends kotlin.Enum { - pixelSize(): number; - hasColorAspect(): boolean; - hasDepthAspect(): boolean; - } - const GpuTexture: { - USAGE_COPY_DST: number; - USAGE_COPY_SRC: number; - USAGE_TEXTURE_BINDING: number; - USAGE_RENDER_ATTACHMENT: number; - USAGE_CUBEMAP_COMPATIBLE: number; - new(usage: number, label: string, format: com.mojang.blaze3d.textures.TextureFormat, width: number, height: number, depthOrLayers: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTexture; - } - interface GpuTexture extends java.lang.AutoCloseable { - usage(): number; - getWidth(mipLevel: number): number; - getHeight(mipLevel: number): number; - getDepthOrLayers(): number; - getMipLevels(): number; - getFormat(): com.mojang.blaze3d.textures.TextureFormat; - getLabel(): string; - isClosed(): boolean; - } - const GpuTexture$Usage: { - new(): com.mojang.blaze3d.textures.GpuTexture$Usage; - } - interface GpuTexture$Usage extends kotlin.Annotation { - } - interface GpuTextureView extends java.lang.AutoCloseable { - texture(): com.mojang.blaze3d.textures.GpuTexture; - baseMipLevel(): number; - mipLevels(): number; - getWidth(mipLevel: number): number; - getHeight(mipLevel: number): number; - isClosed(): boolean; - } - const GpuSampler: { - new(): com.mojang.blaze3d.textures.GpuSampler; - } - interface GpuSampler extends java.lang.AutoCloseable { - getAddressModeU(): com.mojang.blaze3d.textures.AddressMode; - getAddressModeV(): com.mojang.blaze3d.textures.AddressMode; - getMinFilter(): com.mojang.blaze3d.textures.FilterMode; - getMagFilter(): com.mojang.blaze3d.textures.FilterMode; - getMaxAnisotropy(): number; - getMaxLod(): java.util.OptionalDouble; - } - const AddressMode: { - REPEAT: com.mojang.blaze3d.textures.AddressMode; - CLAMP_TO_EDGE: com.mojang.blaze3d.textures.AddressMode; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.mojang.blaze3d.textures.AddressMode; - } - interface AddressMode extends kotlin.Enum { - } - const FilterMode: { - NEAREST: com.mojang.blaze3d.textures.FilterMode; - LINEAR: com.mojang.blaze3d.textures.FilterMode; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.mojang.blaze3d.textures.FilterMode; - } - interface FilterMode extends kotlin.Enum { + useValidationLayers(): boolean; } } namespace vertex { const VertexFormat: { Builder: typeof com.mojang.blaze3d.vertex.VertexFormat$Builder; - Mode: typeof com.mojang.blaze3d.vertex.VertexFormat$Mode; - IndexType: typeof com.mojang.blaze3d.vertex.VertexFormat$IndexType; - UNKNOWN_ELEMENT: number; - builder(): com.mojang.blaze3d.vertex.VertexFormat$Builder; + MAX_VERTEX_ELEMENTS: number; + builder(stepRate: number): com.mojang.blaze3d.vertex.VertexFormat$Builder; } interface VertexFormat { getVertexSize(): number; + getStepRate(): number; getElements(): Array; - getElementAttributeNames(): Array; - getOffsetsByElement(): Array; - getOffset(element: com.mojang.blaze3d.vertex.VertexFormatElement): number; - contains(element: com.mojang.blaze3d.vertex.VertexFormatElement): boolean; - getElementsMask(): number; - getElementName(element: com.mojang.blaze3d.vertex.VertexFormatElement): string; - uploadImmediateVertexBuffer(buffer: java.nio.ByteBuffer): com.mojang.blaze3d.buffers.GpuBuffer; - uploadImmediateIndexBuffer(buffer: java.nio.ByteBuffer): com.mojang.blaze3d.buffers.GpuBuffer; + getElement(attributeName: string): com.mojang.blaze3d.vertex.VertexFormatElement | null | undefined; + contains(attributeName: string): boolean; } const VertexFormatElement: { - Type: typeof com.mojang.blaze3d.vertex.VertexFormatElement$Type; - MAX_COUNT: number; - POSITION: com.mojang.blaze3d.vertex.VertexFormatElement; - COLOR: com.mojang.blaze3d.vertex.VertexFormatElement; - UV0: com.mojang.blaze3d.vertex.VertexFormatElement; - UV: com.mojang.blaze3d.vertex.VertexFormatElement; - UV1: com.mojang.blaze3d.vertex.VertexFormatElement; - UV2: com.mojang.blaze3d.vertex.VertexFormatElement; - NORMAL: com.mojang.blaze3d.vertex.VertexFormatElement; - LINE_WIDTH: com.mojang.blaze3d.vertex.VertexFormatElement; - new(id: number, index: number, type: com.mojang.blaze3d.vertex.VertexFormatElement$Type, normalized: boolean, count: number): com.mojang.blaze3d.vertex.VertexFormatElement; - register(id: number, index: number, type: com.mojang.blaze3d.vertex.VertexFormatElement$Type, normalized: boolean, count: number): com.mojang.blaze3d.vertex.VertexFormatElement; - byId(id: number): com.mojang.blaze3d.vertex.VertexFormatElement | null | undefined; - elementsFromMask(mask: number): java.util.stream.Stream; + new(name: string, offset: number, format: com.mojang.blaze3d.GpuFormat): com.mojang.blaze3d.vertex.VertexFormatElement; } interface VertexFormatElement extends java.lang.Record { - mask(): number; - byteSize(): number; - id(): number; - index(): number; - type(): com.mojang.blaze3d.vertex.VertexFormatElement$Type; - normalized(): boolean; - count(): number; - } - const VertexFormatElement$Type: { - FLOAT: com.mojang.blaze3d.vertex.VertexFormatElement$Type; - UBYTE: com.mojang.blaze3d.vertex.VertexFormatElement$Type; - BYTE: com.mojang.blaze3d.vertex.VertexFormatElement$Type; - USHORT: com.mojang.blaze3d.vertex.VertexFormatElement$Type; - SHORT: com.mojang.blaze3d.vertex.VertexFormatElement$Type; - UINT: com.mojang.blaze3d.vertex.VertexFormatElement$Type; - INT: com.mojang.blaze3d.vertex.VertexFormatElement$Type; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.mojang.blaze3d.vertex.VertexFormatElement$Type; - } - interface VertexFormatElement$Type extends kotlin.Enum { - size(): number; + name(): string; + offset(): number; + format(): com.mojang.blaze3d.GpuFormat; } interface VertexFormat$Builder { - add(name: string, element: com.mojang.blaze3d.vertex.VertexFormatElement): com.mojang.blaze3d.vertex.VertexFormat$Builder; - padding(bytes: number): com.mojang.blaze3d.vertex.VertexFormat$Builder; + addAttribute(name: string, elementFormat: com.mojang.blaze3d.GpuFormat): com.mojang.blaze3d.vertex.VertexFormat$Builder; + addAttribute(name: string, stride: number, elementFormat: com.mojang.blaze3d.GpuFormat): com.mojang.blaze3d.vertex.VertexFormat$Builder; + addAttribute(name: string, elementFormat: com.mojang.blaze3d.GpuFormat, columnCount: number): com.mojang.blaze3d.vertex.VertexFormat$Builder; + addAttribute(name: string, offset: number, stride: number, elementFormat: com.mojang.blaze3d.GpuFormat, columnCount: number): com.mojang.blaze3d.vertex.VertexFormat$Builder; build(): com.mojang.blaze3d.vertex.VertexFormat; } - const VertexFormat$Mode: { - LINES: com.mojang.blaze3d.vertex.VertexFormat$Mode; - DEBUG_LINES: com.mojang.blaze3d.vertex.VertexFormat$Mode; - DEBUG_LINE_STRIP: com.mojang.blaze3d.vertex.VertexFormat$Mode; - POINTS: com.mojang.blaze3d.vertex.VertexFormat$Mode; - TRIANGLES: com.mojang.blaze3d.vertex.VertexFormat$Mode; - TRIANGLE_STRIP: com.mojang.blaze3d.vertex.VertexFormat$Mode; - TRIANGLE_FAN: com.mojang.blaze3d.vertex.VertexFormat$Mode; - QUADS: com.mojang.blaze3d.vertex.VertexFormat$Mode; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.mojang.blaze3d.vertex.VertexFormat$Mode; - } - interface VertexFormat$Mode extends kotlin.Enum { - primitiveLength: number; - primitiveStride: number; - connectedPrimitives: boolean; - indexCount(vertexCount: number): number; - } - const VertexFormat$IndexType: { - SHORT: com.mojang.blaze3d.vertex.VertexFormat$IndexType; - INT: com.mojang.blaze3d.vertex.VertexFormat$IndexType; - entries: kotlin.enums.EnumEntries; - least(length: number): com.mojang.blaze3d.vertex.VertexFormat$IndexType; - values(): Array; - valueOf(value: string): com.mojang.blaze3d.vertex.VertexFormat$IndexType; - } - interface VertexFormat$IndexType extends kotlin.Enum { - bytes: number; - } - const MeshData: { - DrawState: typeof com.mojang.blaze3d.vertex.MeshData$DrawState; - SortState: typeof com.mojang.blaze3d.vertex.MeshData$SortState; - new(vertexBuffer: com.mojang.blaze3d.vertex.ByteBufferBuilder$Result, drawState: com.mojang.blaze3d.vertex.MeshData$DrawState): com.mojang.blaze3d.vertex.MeshData; - } - interface MeshData extends java.lang.AutoCloseable { - vertexBuffer(): java.nio.ByteBuffer; - indexBuffer(): java.nio.ByteBuffer | null | undefined; - drawState(): com.mojang.blaze3d.vertex.MeshData$DrawState; - sortQuads(indexBufferTarget: com.mojang.blaze3d.vertex.ByteBufferBuilder, sorting: com.mojang.blaze3d.vertex.VertexSorting): com.mojang.blaze3d.vertex.MeshData$SortState | null | undefined; - } - const MeshData$DrawState: { - new(format: com.mojang.blaze3d.vertex.VertexFormat, vertexCount: number, indexCount: number, mode: com.mojang.blaze3d.vertex.VertexFormat$Mode, indexType: com.mojang.blaze3d.vertex.VertexFormat$IndexType): com.mojang.blaze3d.vertex.MeshData$DrawState; - } - interface MeshData$DrawState extends java.lang.Record { - format(): com.mojang.blaze3d.vertex.VertexFormat; - vertexCount(): number; - indexCount(): number; - mode(): com.mojang.blaze3d.vertex.VertexFormat$Mode; - indexType(): com.mojang.blaze3d.vertex.VertexFormat$IndexType; - } - const ByteBufferBuilder: { - Result: typeof com.mojang.blaze3d.vertex.ByteBufferBuilder$Result; - new(initialCapacity: number, maxCapacity: number): com.mojang.blaze3d.vertex.ByteBufferBuilder; - new(initialCapacity: number): com.mojang.blaze3d.vertex.ByteBufferBuilder; - exactlySized(capacity: number): com.mojang.blaze3d.vertex.ByteBufferBuilder; - } - interface ByteBufferBuilder extends java.lang.AutoCloseable { - reserve(size: number): number; - build(): com.mojang.blaze3d.vertex.ByteBufferBuilder$Result | null | undefined; - clear(): void; - discard(): void; - } - interface ByteBufferBuilder$Result extends java.lang.AutoCloseable { - byteBuffer(): java.nio.ByteBuffer; - } - const VertexSorting: { - DISTANCE_TO_ORIGIN: com.mojang.blaze3d.vertex.VertexSorting; - ORTHOGRAPHIC_Z: com.mojang.blaze3d.vertex.VertexSorting; - byDistance(x: number, y: number, z: number): com.mojang.blaze3d.vertex.VertexSorting; - byDistance(origin: org.joml.Vector3fc): com.mojang.blaze3d.vertex.VertexSorting; - byDistance(function_: com.mojang.blaze3d.vertex.VertexSorting$DistanceFunction): com.mojang.blaze3d.vertex.VertexSorting; - } - interface VertexSorting { - sort(points: com.mojang.blaze3d.vertex.CompactVectorArray): Array; - } - const CompactVectorArray: { - new(count: number): com.mojang.blaze3d.vertex.CompactVectorArray; - } - interface CompactVectorArray { - size(): number; - set(index: number, v: org.joml.Vector3fc): void; - set(index: number, x: number, y: number, z: number): void; - get(index: number, output: org.joml.Vector3f): org.joml.Vector3f; - getX(index: number): number; - getY(index: number): number; - getZ(index: number): number; - } - interface VertexSorting$DistanceFunction { - apply(value: org.joml.Vector3f): number; - (value: org.joml.Vector3f): number; - } - const MeshData$SortState: { - new(centroids: com.mojang.blaze3d.vertex.CompactVectorArray, indexType: com.mojang.blaze3d.vertex.VertexFormat$IndexType): com.mojang.blaze3d.vertex.MeshData$SortState; - } - interface MeshData$SortState extends java.lang.Record { - buildSortedIndexBuffer(target: com.mojang.blaze3d.vertex.ByteBufferBuilder, sorting: com.mojang.blaze3d.vertex.VertexSorting): com.mojang.blaze3d.vertex.ByteBufferBuilder$Result | null | undefined; - centroids(): com.mojang.blaze3d.vertex.CompactVectorArray; - indexType(): com.mojang.blaze3d.vertex.VertexFormat$IndexType; - } interface VertexConsumer { addVertex(x: number, y: number, z: number): com.mojang.blaze3d.vertex.VertexConsumer; addVertex(x: number, y: number, z: number, color: number, u: number, v: number, overlayCoords: number, lightCoords: number, nx: number, ny: number, nz: number): void; @@ -39543,6 +39698,119 @@ declare global { isEmpty(): boolean; setIdentity(): void; } + const ByteBufferBuilder: { + Result: typeof com.mojang.blaze3d.vertex.ByteBufferBuilder$Result; + new(initialCapacity: number, maxCapacity: number): com.mojang.blaze3d.vertex.ByteBufferBuilder; + new(initialCapacity: number): com.mojang.blaze3d.vertex.ByteBufferBuilder; + exactlySized(capacity: number): com.mojang.blaze3d.vertex.ByteBufferBuilder; + } + interface ByteBufferBuilder extends java.lang.AutoCloseable { + reserve(size: number): number; + build(): com.mojang.blaze3d.vertex.ByteBufferBuilder$Result | null | undefined; + clear(): void; + discard(): void; + } + interface ByteBufferBuilder$Result extends java.lang.AutoCloseable { + size(): number; + byteBuffer(): java.nio.ByteBuffer; + } + const VertexSorting: { + DISTANCE_TO_ORIGIN: com.mojang.blaze3d.vertex.VertexSorting; + ORTHOGRAPHIC_Z: com.mojang.blaze3d.vertex.VertexSorting; + byDistance(x: number, y: number, z: number): com.mojang.blaze3d.vertex.VertexSorting; + byDistance(origin: org.joml.Vector3fc): com.mojang.blaze3d.vertex.VertexSorting; + byDistance(function_: com.mojang.blaze3d.vertex.VertexSorting$DistanceFunction): com.mojang.blaze3d.vertex.VertexSorting; + } + interface VertexSorting { + sort(points: com.mojang.blaze3d.vertex.CompactVectorArray): Array; + } + const CompactVectorArray: { + new(count: number): com.mojang.blaze3d.vertex.CompactVectorArray; + } + interface CompactVectorArray { + size(): number; + set(index: number, v: org.joml.Vector3fc): void; + set(index: number, x: number, y: number, z: number): void; + get(index: number, output: org.joml.Vector3f): org.joml.Vector3f; + getX(index: number): number; + getY(index: number): number; + getZ(index: number): number; + } + interface VertexSorting$DistanceFunction { + apply(value: org.joml.Vector3f): number; + (value: org.joml.Vector3f): number; + } + const MeshData$SortState: { + new(centroids: com.mojang.blaze3d.vertex.CompactVectorArray, indexType: com.mojang.blaze3d.IndexType): com.mojang.blaze3d.vertex.MeshData$SortState; + } + interface MeshData$SortState extends java.lang.Record { + buildSortedIndexBuffer(target: com.mojang.blaze3d.vertex.ByteBufferBuilder, sorting: com.mojang.blaze3d.vertex.VertexSorting): com.mojang.blaze3d.vertex.ByteBufferBuilder$Result | null | undefined; + writeSortedIndexBuffer(target: java.nio.ByteBuffer, sorting: com.mojang.blaze3d.vertex.VertexSorting): void; + centroids(): com.mojang.blaze3d.vertex.CompactVectorArray; + indexType(): com.mojang.blaze3d.IndexType; + } + } + namespace textures { + const GpuTexture: { + USAGE_COPY_DST: number; + USAGE_COPY_SRC: number; + USAGE_TEXTURE_BINDING: number; + USAGE_RENDER_ATTACHMENT: number; + USAGE_CUBEMAP_COMPATIBLE: number; + new(usage: number, label: string, format: com.mojang.blaze3d.GpuFormat, width: number, height: number, depthOrLayers: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTexture; + } + interface GpuTexture extends java.lang.AutoCloseable { + usage(): number; + getWidth(mipLevel: number): number; + getHeight(mipLevel: number): number; + getDepthOrLayers(): number; + getMipLevels(): number; + getFormat(): com.mojang.blaze3d.GpuFormat; + getLabel(): string; + isClosed(): boolean; + } + const GpuTexture$Usage: { + new(): com.mojang.blaze3d.textures.GpuTexture$Usage; + } + interface GpuTexture$Usage extends kotlin.Annotation { + } + interface GpuTextureView extends java.lang.AutoCloseable { + texture(): com.mojang.blaze3d.textures.GpuTexture; + baseMipLevel(): number; + mipLevels(): number; + getWidth(mipLevel: number): number; + getHeight(mipLevel: number): number; + isClosed(): boolean; + } + const GpuSampler: { + new(): com.mojang.blaze3d.textures.GpuSampler; + } + interface GpuSampler extends java.lang.AutoCloseable { + getAddressModeU(): com.mojang.blaze3d.textures.AddressMode; + getAddressModeV(): com.mojang.blaze3d.textures.AddressMode; + getMinFilter(): com.mojang.blaze3d.textures.FilterMode; + getMagFilter(): com.mojang.blaze3d.textures.FilterMode; + getMaxAnisotropy(): number; + getMaxLod(): java.util.OptionalDouble; + } + const AddressMode: { + REPEAT: com.mojang.blaze3d.textures.AddressMode; + CLAMP_TO_EDGE: com.mojang.blaze3d.textures.AddressMode; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.mojang.blaze3d.textures.AddressMode; + } + interface AddressMode extends kotlin.Enum { + } + const FilterMode: { + NEAREST: com.mojang.blaze3d.textures.FilterMode; + LINEAR: com.mojang.blaze3d.textures.FilterMode; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.mojang.blaze3d.textures.FilterMode; + } + interface FilterMode extends kotlin.Enum { + } } namespace buffers { const GpuBuffer: { @@ -39555,6 +39823,7 @@ declare global { USAGE_INDEX: number; USAGE_UNIFORM: number; USAGE_UNIFORM_TEXEL_BUFFER: number; + USAGE_INDIRECT_PARAMETERS: number; new(usage: number, size: number): com.mojang.blaze3d.buffers.GpuBuffer; } interface GpuBuffer extends java.lang.AutoCloseable { @@ -39563,49 +39832,98 @@ declare global { isClosed(): boolean; slice(offset: number, length: number): com.mojang.blaze3d.buffers.GpuBufferSlice; slice(): com.mojang.blaze3d.buffers.GpuBufferSlice; + map(read: boolean, write: boolean): com.mojang.blaze3d.buffers.GpuBufferSlice$MappedView; + map(offset: number, length: number, read: boolean, write: boolean): com.mojang.blaze3d.buffers.GpuBufferSlice$MappedView; } const GpuBufferSlice: { + MappedView: typeof com.mojang.blaze3d.buffers.GpuBufferSlice$MappedView; new(buffer: com.mojang.blaze3d.buffers.GpuBuffer, offset: number, length: number): com.mojang.blaze3d.buffers.GpuBufferSlice; } interface GpuBufferSlice extends java.lang.Record { slice(offset: number, length: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + map(read: boolean, write: boolean): com.mojang.blaze3d.buffers.GpuBufferSlice$MappedView; buffer(): com.mojang.blaze3d.buffers.GpuBuffer; offset(): number; length(): number; } + const GpuBufferSlice$MappedView: { + new(slice: com.mojang.blaze3d.buffers.GpuBufferSlice, data: java.nio.ByteBuffer, onClose: java.lang.Runnable): com.mojang.blaze3d.buffers.GpuBufferSlice$MappedView; + } + interface GpuBufferSlice$MappedView extends java.lang.Record, java.lang.AutoCloseable { + slice(): com.mojang.blaze3d.buffers.GpuBufferSlice; + data(): java.nio.ByteBuffer; + onClose(): java.lang.Runnable; + } const GpuBuffer$Usage: { new(): com.mojang.blaze3d.buffers.GpuBuffer$Usage; } interface GpuBuffer$Usage extends kotlin.Annotation { } - interface GpuBuffer$MappedView extends java.lang.AutoCloseable { - data(): java.nio.ByteBuffer; - } interface GpuFence extends java.lang.AutoCloseable { - awaitCompletion(timeoutMs: number): boolean; + awaitCompletion(timeoutNS: number): boolean; } } namespace systems { + const ScissorState: { + new(): com.mojang.blaze3d.systems.ScissorState; + new(state: com.mojang.blaze3d.systems.ScissorState): com.mojang.blaze3d.systems.ScissorState; + } + interface ScissorState { + enabled(): boolean; + x(): number; + y(): number; + width(): number; + height(): number; + enable(x: number, y: number, width: number, height: number): void; + disable(): void; + setFrom(state: com.mojang.blaze3d.systems.ScissorState): void; + } + const SamplerCache: { + new(): com.mojang.blaze3d.systems.SamplerCache; + } + interface SamplerCache { + initialize(): void; + getSampler(addressModeU: com.mojang.blaze3d.textures.AddressMode, addressModeV: com.mojang.blaze3d.textures.AddressMode, minFilter: com.mojang.blaze3d.textures.FilterMode, magFilter: com.mojang.blaze3d.textures.FilterMode, useMipmaps: boolean): com.mojang.blaze3d.textures.GpuSampler; + getClampToEdge(minMag: com.mojang.blaze3d.textures.FilterMode): com.mojang.blaze3d.textures.GpuSampler; + getClampToEdge(minMag: com.mojang.blaze3d.textures.FilterMode, mipmaps: boolean): com.mojang.blaze3d.textures.GpuSampler; + getRepeat(minMag: com.mojang.blaze3d.textures.FilterMode): com.mojang.blaze3d.textures.GpuSampler; + getRepeat(minMag: com.mojang.blaze3d.textures.FilterMode, mipmaps: boolean): com.mojang.blaze3d.textures.GpuSampler; + close(): void; + } const RenderPass: { + RenderArea: typeof com.mojang.blaze3d.systems.RenderPass$RenderArea; Draw: typeof com.mojang.blaze3d.systems.RenderPass$Draw; - new(backend: com.mojang.blaze3d.systems.RenderPassBackend, device: com.mojang.blaze3d.systems.GpuDeviceBackend): com.mojang.blaze3d.systems.RenderPass; + MAX_VERTEX_BUFFERS: number; + new(backend: com.mojang.blaze3d.systems.RenderPassBackend, device: com.mojang.blaze3d.systems.GpuDeviceBackend, colorAttachments: Array> | null | undefined>, onFinish: java.lang.Runnable, renderArea: com.mojang.blaze3d.systems.RenderPass$RenderArea | null | undefined): com.mojang.blaze3d.systems.RenderPass; } interface RenderPass extends java.lang.AutoCloseable { pushDebugGroup(label: unknown): void; popDebugGroup(): void; + writeTimestamp(pool: com.mojang.blaze3d.systems.GpuQueryPool, index: number): void; setPipeline(pipeline: com.mojang.blaze3d.pipeline.RenderPipeline): void; bindTexture(name: string, textureView: com.mojang.blaze3d.textures.GpuTextureView | null | undefined, sampler: com.mojang.blaze3d.textures.GpuSampler | null | undefined): void; setUniform(name: string, value: com.mojang.blaze3d.buffers.GpuBuffer): void; setUniform(name: string, value: com.mojang.blaze3d.buffers.GpuBufferSlice): void; enableScissor(x: number, y: number, width: number, height: number): void; disableScissor(): void; - setVertexBuffer(slot: number, vertexBuffer: com.mojang.blaze3d.buffers.GpuBuffer): void; - setIndexBuffer(indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexType: com.mojang.blaze3d.vertex.VertexFormat$IndexType): void; - drawIndexed(baseVertex: number, firstIndex: number, indexCount: number, instanceCount: number): void; - drawMultipleIndexed(draws: Array>, defaultIndexBuffer: com.mojang.blaze3d.buffers.GpuBuffer | null | undefined, defaultIndexType: com.mojang.blaze3d.vertex.VertexFormat$IndexType | null | undefined, dynamicUniforms: Array, uniformArgument: T): void; - draw(firstVertex: number, vertexCount: number): void; + setVertexBuffer(slot: number, vertexBuffer: com.mojang.blaze3d.buffers.GpuBufferSlice | null | undefined): void; + setIndexBuffer(indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexType: com.mojang.blaze3d.IndexType): void; + drawIndexed(indexCount: number, instanceCount: number, firstIndex: number, vertexOffset: number, firstInstance: number): void; + multiDrawIndexed(drawParameters: java.nio.IntBuffer, instanceCount: number, firstInstance: number, drawCount: number): void; + multiDrawIndexed(firstIndexOffsets: org.lwjgl.PointerBuffer, indexCounts: java.nio.IntBuffer, vertexOffsets: java.nio.IntBuffer, drawCount: number): void; + drawIndexedIndirect(commands: com.mojang.blaze3d.buffers.GpuBufferSlice, drawCount: number): void; + drawMultipleIndexed(draws: Array>, defaultIndexBuffer: com.mojang.blaze3d.buffers.GpuBuffer | null | undefined, defaultIndexType: com.mojang.blaze3d.IndexType | null | undefined, dynamicUniforms: Array, uniformArgument: T): void; + draw(vertexCount: number, instanceCount: number, firstVertex: number, firstInstance: number): void; + multiDraw(drawParameters: java.nio.IntBuffer, instanceCount: number, firstInstance: number, drawCount: number): void; + multiDraw(firstVertices: java.nio.IntBuffer, vertexCounts: java.nio.IntBuffer, drawCount: number): void; + drawIndirect(commands: com.mojang.blaze3d.buffers.GpuBufferSlice, drawCount: number): void; + } + interface GpuQueryPool extends java.lang.AutoCloseable { + size(): number; + getValue(index: number): java.util.OptionalLong; + getValues(index: number, count: number): Array; } - interface RenderPassBackend extends java.lang.AutoCloseable { + interface RenderPassBackend { pushDebugGroup(label: unknown): void; popDebugGroup(): void; setPipeline(pipeline: com.mojang.blaze3d.pipeline.RenderPipeline): void; @@ -39614,73 +39932,206 @@ declare global { setUniform(name: string, value: com.mojang.blaze3d.buffers.GpuBufferSlice): void; enableScissor(x: number, y: number, width: number, height: number): void; disableScissor(): void; - setVertexBuffer(slot: number, vertexBuffer: com.mojang.blaze3d.buffers.GpuBuffer): void; - setIndexBuffer(indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexType: com.mojang.blaze3d.vertex.VertexFormat$IndexType): void; - drawIndexed(baseVertex: number, firstIndex: number, indexCount: number, instanceCount: number): void; - drawMultipleIndexed(draws: Array>, defaultIndexBuffer: com.mojang.blaze3d.buffers.GpuBuffer | null | undefined, defaultIndexType: com.mojang.blaze3d.vertex.VertexFormat$IndexType | null | undefined, dynamicUniforms: Array, uniformArgument: T): void; - draw(firstVertex: number, vertexCount: number): void; - isClosed(): boolean; + setVertexBuffer(slot: number, vertexBuffer: com.mojang.blaze3d.buffers.GpuBufferSlice | null | undefined): void; + setIndexBuffer(indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexType: com.mojang.blaze3d.IndexType): void; + drawIndexed(indexCount: number, instanceCount: number, firstIndex: number, vertexOffset: number, firstInstance: number): void; + multiDrawIndexed(drawParameters: java.nio.IntBuffer, instanceCount: number, firstInstance: number, drawCount: number): void; + multiDrawIndexed(firstIndexOffsets: org.lwjgl.PointerBuffer, indexCounts: java.nio.IntBuffer, vertexOffsets: java.nio.IntBuffer, drawCount: number): void; + drawIndexedIndirect(commands: com.mojang.blaze3d.buffers.GpuBufferSlice, drawCount: number): void; + drawMultipleIndexed(draws: Array>, defaultIndexBuffer: com.mojang.blaze3d.buffers.GpuBuffer | null | undefined, defaultIndexType: com.mojang.blaze3d.IndexType | null | undefined, dynamicUniforms: Array, uniformArgument: T): void; + draw(vertexCount: number, instanceCount: number, firstVertex: number, firstInstance: number): void; + multiDraw(drawParameters: java.nio.IntBuffer, instanceCount: number, firstInstance: number, drawCount: number): void; + multiDraw(firstVertices: java.nio.IntBuffer, vertexCounts: java.nio.IntBuffer, drawCount: number): void; + drawIndirect(commands: com.mojang.blaze3d.buffers.GpuBufferSlice, drawCount: number): void; + writeTimestamp(pool: com.mojang.blaze3d.systems.GpuQueryPool, index: number): void; } interface GpuDeviceBackend { + createSurface(windowHandle: number): com.mojang.blaze3d.systems.GpuSurfaceBackend; createCommandEncoder(): com.mojang.blaze3d.systems.CommandEncoderBackend; createSampler(addressModeU: com.mojang.blaze3d.textures.AddressMode, addressModeV: com.mojang.blaze3d.textures.AddressMode, minFilter: com.mojang.blaze3d.textures.FilterMode, magFilter: com.mojang.blaze3d.textures.FilterMode, maxAnisotropy: number, maxLod: java.util.OptionalDouble): com.mojang.blaze3d.textures.GpuSampler; - createTexture(label: unknown, usage: number, format: com.mojang.blaze3d.textures.TextureFormat, width: number, height: number, depthOrLayers: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTexture; - createTexture(label: string | null | undefined, usage: number, format: com.mojang.blaze3d.textures.TextureFormat, width: number, height: number, depthOrLayers: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTexture; + createTexture(label: unknown, usage: number, format: com.mojang.blaze3d.GpuFormat, width: number, height: number, depthOrLayers: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTexture; + createTexture(label: string | null | undefined, usage: number, format: com.mojang.blaze3d.GpuFormat, width: number, height: number, depthOrLayers: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTexture; createTextureView(texture: com.mojang.blaze3d.textures.GpuTexture): com.mojang.blaze3d.textures.GpuTextureView; createTextureView(texture: com.mojang.blaze3d.textures.GpuTexture, baseMipLevel: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTextureView; createBuffer(label: unknown, usage: number, size: number): com.mojang.blaze3d.buffers.GpuBuffer; createBuffer(label: unknown, usage: number, data: java.nio.ByteBuffer): com.mojang.blaze3d.buffers.GpuBuffer; - getImplementationInformation(): string; getLastDebugMessages(): Array; isDebuggingEnabled(): boolean; - getVendor(): string; - getBackendName(): string; - getVersion(): string; - getRenderer(): string; - getMaxTextureSize(): number; - getUniformOffsetAlignment(): number; precompilePipeline(pipeline: com.mojang.blaze3d.pipeline.RenderPipeline, shaderSource: com.mojang.blaze3d.shaders.ShaderSource | null | undefined): com.mojang.blaze3d.pipeline.CompiledRenderPipeline; clearPipelineCache(): void; - getEnabledExtensions(): Array; - getMaxSupportedAnisotropy(): number; close(): void; - setVsync(enabled: boolean): void; - presentFrame(): void; - isZZeroToOne(): boolean; + createTimestampQueryPool(size: number): com.mojang.blaze3d.systems.GpuQueryPool; + getTimestampNow(): number; + getDeviceInfo(): com.mojang.blaze3d.systems.DeviceInfo; + } + interface GpuSurfaceBackend extends java.lang.AutoCloseable { + configure(config: com.mojang.blaze3d.systems.GpuSurface$Configuration): void; + isSuboptimal(): boolean; + acquireNextTexture(): void; + blitFromTexture(commandEncoder: com.mojang.blaze3d.systems.CommandEncoderBackend, textureView: com.mojang.blaze3d.textures.GpuTextureView): void; + present(): void; + supportedPresentModes(): Array; + } + const GpuSurface$Configuration: { + new(width: number, height: number, presentMode: com.mojang.blaze3d.systems.GpuSurface$PresentMode): com.mojang.blaze3d.systems.GpuSurface$Configuration; + } + interface GpuSurface$Configuration extends java.lang.Record { + width(): number; + height(): number; + presentMode(): com.mojang.blaze3d.systems.GpuSurface$PresentMode; + } + const GpuSurface$PresentMode: { + IMMEDIATE: com.mojang.blaze3d.systems.GpuSurface$PresentMode; + MAILBOX: com.mojang.blaze3d.systems.GpuSurface$PresentMode; + FIFO: com.mojang.blaze3d.systems.GpuSurface$PresentMode; + FIFO_RELAXED: com.mojang.blaze3d.systems.GpuSurface$PresentMode; + entries: kotlin.enums.EnumEntries; + getSupportedVsyncMode(supportedModes: Array, vsync: boolean): com.mojang.blaze3d.systems.GpuSurface$PresentMode; + values(): Array; + valueOf(value: string): com.mojang.blaze3d.systems.GpuSurface$PresentMode; + } + interface GpuSurface$PresentMode extends kotlin.Enum { } interface CommandEncoderBackend { - createRenderPass(label: unknown, colorTexture: com.mojang.blaze3d.textures.GpuTextureView, clearColor: java.util.OptionalInt): com.mojang.blaze3d.systems.RenderPassBackend; - createRenderPass(label: unknown, colorTexture: com.mojang.blaze3d.textures.GpuTextureView, clearColor: java.util.OptionalInt, depthTexture: com.mojang.blaze3d.textures.GpuTextureView | null | undefined, clearDepth: java.util.OptionalDouble): com.mojang.blaze3d.systems.RenderPassBackend; - isInRenderPass(): boolean; - clearColorTexture(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: number): void; - clearColorAndDepthTextures(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: number, depthTexture: com.mojang.blaze3d.textures.GpuTexture, clearDepth: number): void; - clearColorAndDepthTextures(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: number, depthTexture: com.mojang.blaze3d.textures.GpuTexture, clearDepth: number, regionX: number, regionY: number, regionWidth: number, regionHeight: number): void; + submit(): void; + transientMemory(): com.mojang.blaze3d.systems.TransientMemory; + createRenderPass(descriptor: com.mojang.blaze3d.systems.RenderPassDescriptor): com.mojang.blaze3d.systems.RenderPassBackend; + submitRenderPass(): void; + clearColorTexture(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: org.joml.Vector4fc): void; + clearColorAndDepthTextures(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: org.joml.Vector4fc, depthTexture: com.mojang.blaze3d.textures.GpuTexture, clearDepth: number): void; + clearColorAndDepthTextures(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: org.joml.Vector4fc, depthTexture: com.mojang.blaze3d.textures.GpuTexture, clearDepth: number, regionX: number, regionY: number, regionWidth: number, regionHeight: number): void; clearDepthTexture(depthTexture: com.mojang.blaze3d.textures.GpuTexture, clearDepth: number): void; writeToBuffer(destination: com.mojang.blaze3d.buffers.GpuBufferSlice, data: java.nio.ByteBuffer): void; - mapBuffer(buffer: com.mojang.blaze3d.buffers.GpuBufferSlice, read: boolean, write: boolean): com.mojang.blaze3d.buffers.GpuBuffer$MappedView; copyToBuffer(source: com.mojang.blaze3d.buffers.GpuBufferSlice, target: com.mojang.blaze3d.buffers.GpuBufferSlice): void; - writeToTexture(destination: com.mojang.blaze3d.textures.GpuTexture, source: com.mojang.blaze3d.platform.NativeImage, mipLevel: number, depthOrLayer: number, destX: number, destY: number, width: number, height: number, sourceX: number, sourceY: number): void; - writeToTexture(destination: com.mojang.blaze3d.textures.GpuTexture, source: java.nio.ByteBuffer, format: com.mojang.blaze3d.platform.NativeImage$Format, mipLevel: number, depthOrLayer: number, destX: number, destY: number, width: number, height: number): void; + writeToTexture(destination: com.mojang.blaze3d.textures.GpuTexture, source: java.nio.ByteBuffer, mipLevel: number, depthOrLayer: number, destX: number, destY: number, width: number, height: number): void; + copyBufferToTexture(source: com.mojang.blaze3d.buffers.GpuBufferSlice, sourceX: number, sourceY: number, sourceWidth: number, sourceHeight: number, destination: com.mojang.blaze3d.textures.GpuTexture, destinationX: number, destinationY: number, copyWidth: number, copyHeight: number, mipLevel: number, arrayLayer: number): void; copyTextureToBuffer(source: com.mojang.blaze3d.textures.GpuTexture, destination: com.mojang.blaze3d.buffers.GpuBuffer, offset: number, callback: java.lang.Runnable, mipLevel: number): void; copyTextureToBuffer(source: com.mojang.blaze3d.textures.GpuTexture, destination: com.mojang.blaze3d.buffers.GpuBuffer, offset: number, callback: java.lang.Runnable, mipLevel: number, x: number, y: number, width: number, height: number): void; copyTextureToTexture(source: com.mojang.blaze3d.textures.GpuTexture, destination: com.mojang.blaze3d.textures.GpuTexture, mipLevel: number, destX: number, destY: number, sourceX: number, sourceY: number, width: number, height: number): void; - presentTexture(texture: com.mojang.blaze3d.textures.GpuTextureView): void; createFence(): com.mojang.blaze3d.buffers.GpuFence; - timerQueryBegin(): com.mojang.blaze3d.systems.GpuQuery; - timerQueryEnd(query: com.mojang.blaze3d.systems.GpuQuery): void; + writeTimestamp(pool: com.mojang.blaze3d.systems.GpuQueryPool, index: number): void; + } + interface TransientMemory { + allocateCpu(size: number, alignment: number): java.nio.ByteBuffer; + allocateCpu(size: number, alignment: number, minimumAllocation: number, elementSize: number): java.nio.ByteBuffer; + allocateStaging(size: number, alignment: number, usage: number): com.mojang.blaze3d.buffers.GpuBufferSlice$MappedView; + allocateStaging(size: number, alignment: number, usage: number, minimumAllocation: number, elementSize: number): com.mojang.blaze3d.buffers.GpuBufferSlice$MappedView; + allocateGpu(size: number, alignment: number, usage: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + allocateGpu(size: number, alignment: number, usage: number, minimumAllocation: number, elementSize: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + allocateGpuMapped(size: number, alignment: number, usage: number): com.mojang.blaze3d.buffers.GpuBufferSlice$MappedView; + allocateGpuMapped(size: number, alignment: number, usage: number, minimumAllocation: number, elementSize: number): com.mojang.blaze3d.buffers.GpuBufferSlice$MappedView; + uploadStaging(data: java.nio.ByteBuffer, alignment: number, usage: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + uploadStaging(data: java.nio.ByteBuffer, alignment: number, usage: number, minimumAllocation: number, elementSize: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + uploadStaging(data: Array, alignment: number, usage: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + uploadStaging(data: Array, alignment: number, usage: number, minimumAllocation: number, elementSize: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + uploadGpu(data: java.nio.ByteBuffer, alignment: number, usage: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + uploadGpu(data: java.nio.ByteBuffer, alignment: number, usage: number, minimumAllocation: number, elementSize: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + uploadGpu(data: Array, alignment: number, usage: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + uploadGpu(data: Array, alignment: number, usage: number, minimumAllocation: number, elementSize: number): com.mojang.blaze3d.buffers.GpuBufferSlice; + multiUploadStaging(data: Array, alignment: number, usage: number): Array; + multiUploadGpu(data: Array, alignment: number, usage: number): Array; + } + const RenderPassDescriptor: { + Attachment: typeof com.mojang.blaze3d.systems.RenderPassDescriptor$Attachment; + create(label: unknown): com.mojang.blaze3d.systems.RenderPassDescriptor; + } + interface RenderPassDescriptor { + renderArea: com.mojang.blaze3d.systems.RenderPass$RenderArea | null | undefined; + label(): unknown; + colorAttachments(): Array> | null | undefined>; + depthAttachment(): com.mojang.blaze3d.systems.RenderPassDescriptor$Attachment | null | undefined; + withColorAttachment(textureView: com.mojang.blaze3d.textures.GpuTextureView): com.mojang.blaze3d.systems.RenderPassDescriptor; + withColorAttachment(textureView: com.mojang.blaze3d.textures.GpuTextureView, clearValue: java.util.Optional): com.mojang.blaze3d.systems.RenderPassDescriptor; + withUnusedColorAttachment(): com.mojang.blaze3d.systems.RenderPassDescriptor; + withDepthAttachment(textureView: com.mojang.blaze3d.textures.GpuTextureView): com.mojang.blaze3d.systems.RenderPassDescriptor; + withDepthAttachment(textureView: com.mojang.blaze3d.textures.GpuTextureView, clearValue: java.util.OptionalDouble): com.mojang.blaze3d.systems.RenderPassDescriptor; + withRenderArea(renderArea: com.mojang.blaze3d.systems.RenderPass$RenderArea): com.mojang.blaze3d.systems.RenderPassDescriptor; + } + const RenderPassDescriptor$Attachment: { + new(textureView: com.mojang.blaze3d.textures.GpuTextureView, clearValue: T): com.mojang.blaze3d.systems.RenderPassDescriptor$Attachment; + } + interface RenderPassDescriptor$Attachment extends java.lang.Record { + textureView(): com.mojang.blaze3d.textures.GpuTextureView; + clearValue(): T; + } + const RenderPass$RenderArea: { + new(x: number, y: number, width: number, height: number): com.mojang.blaze3d.systems.RenderPass$RenderArea; } - interface GpuQuery extends java.lang.AutoCloseable { - getValue(): java.util.OptionalLong; + interface RenderPass$RenderArea extends java.lang.Record { + fillsTexture(texture: com.mojang.blaze3d.textures.GpuTextureView): boolean; + x(): number; + y(): number; + width(): number; + height(): number; + } + const DeviceInfo: { + new(name: string, vendorName: string, driverInfo: string, isZZeroToOne: boolean, backendName: string, timestampPeriod: number, limits: com.mojang.blaze3d.systems.DeviceLimits, features: com.mojang.blaze3d.systems.DeviceFeatures, underlyingExtensions: Set, hintsAndWorkarounds: com.mojang.blaze3d.systems.HintsAndWorkarounds, type: com.mojang.blaze3d.systems.DeviceType): com.mojang.blaze3d.systems.DeviceInfo; + } + interface DeviceInfo extends java.lang.Record { + name(): string; + vendorName(): string; + driverInfo(): string; + isZZeroToOne(): boolean; + backendName(): string; + timestampPeriod(): number; + limits(): com.mojang.blaze3d.systems.DeviceLimits; + features(): com.mojang.blaze3d.systems.DeviceFeatures; + underlyingExtensions(): Set; + hintsAndWorkarounds(): com.mojang.blaze3d.systems.HintsAndWorkarounds; + type(): com.mojang.blaze3d.systems.DeviceType; + } + const DeviceLimits: { + new(maxAnisotropy: number, minUniformOffsetAlignment: number, maxTextureSize: number, maxMemoryAllocationSize: number, maxMultiDrawDirectInterleavedDrawCount: number, maxColorAttachments: number): com.mojang.blaze3d.systems.DeviceLimits; + } + interface DeviceLimits extends java.lang.Record { + maxTextureSizeForFormat(format: com.mojang.blaze3d.GpuFormat): number; + maxAnisotropy(): number; + minUniformOffsetAlignment(): number; + maxTextureSize(): number; + maxMemoryAllocationSize(): number; + maxMultiDrawDirectInterleavedDrawCount(): number; + maxColorAttachments(): number; + } + const DeviceFeatures: { + new(shaderDrawParameters: boolean, multiDrawDirectInterleaved: boolean, multiDrawDirectSeparate: boolean, multiDrawIndirect: boolean, drawIndirect: boolean, nonZeroFirstInstance: boolean, persistentMapping: boolean): com.mojang.blaze3d.systems.DeviceFeatures; + } + interface DeviceFeatures extends java.lang.Record { + shaderDrawParameters(): boolean; + multiDrawDirectInterleaved(): boolean; + multiDrawDirectSeparate(): boolean; + multiDrawIndirect(): boolean; + drawIndirect(): boolean; + nonZeroFirstInstance(): boolean; + persistentMapping(): boolean; + } + const HintsAndWorkarounds: { + new(writeToBufferIsSlow: boolean, anisotropyHasKnownIssues: boolean): com.mojang.blaze3d.systems.HintsAndWorkarounds; + } + interface HintsAndWorkarounds extends java.lang.Record { + writeToBufferIsSlow(): boolean; + anisotropyHasKnownIssues(): boolean; + } + const DeviceType: { + OTHER: com.mojang.blaze3d.systems.DeviceType; + INTEGRATED: com.mojang.blaze3d.systems.DeviceType; + DISCRETE: com.mojang.blaze3d.systems.DeviceType; + VIRTUAL: com.mojang.blaze3d.systems.DeviceType; + CPU: com.mojang.blaze3d.systems.DeviceType; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.mojang.blaze3d.systems.DeviceType; + } + interface DeviceType extends kotlin.Enum { } const RenderPass$Draw: { - new(slot: number, vertexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexType: com.mojang.blaze3d.vertex.VertexFormat$IndexType, firstIndex: number, indexCount: number, baseVertex: number): com.mojang.blaze3d.systems.RenderPass$Draw; - new(slot: number, vertexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer | null | undefined, indexType: com.mojang.blaze3d.vertex.VertexFormat$IndexType | null | undefined, firstIndex: number, indexCount: number, baseVertex: number, uniformUploaderConsumer: unknown): com.mojang.blaze3d.systems.RenderPass$Draw; + new(slot: number, vertexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexType: com.mojang.blaze3d.IndexType, firstIndex: number, indexCount: number, baseVertex: number): com.mojang.blaze3d.systems.RenderPass$Draw; + new(slot: number, vertexBuffer: com.mojang.blaze3d.buffers.GpuBuffer, indexBuffer: com.mojang.blaze3d.buffers.GpuBuffer | null | undefined, indexType: com.mojang.blaze3d.IndexType | null | undefined, firstIndex: number, indexCount: number, baseVertex: number, uniformUploaderConsumer: unknown): com.mojang.blaze3d.systems.RenderPass$Draw; } interface RenderPass$Draw extends java.lang.Record { slot(): number; vertexBuffer(): com.mojang.blaze3d.buffers.GpuBuffer; indexBuffer(): com.mojang.blaze3d.buffers.GpuBuffer | null | undefined; - indexType(): com.mojang.blaze3d.vertex.VertexFormat$IndexType | null | undefined; + indexType(): com.mojang.blaze3d.IndexType | null | undefined; firstIndex(): number; indexCount(): number; baseVertex(): number; @@ -39693,63 +40144,80 @@ declare global { getName(): string; setWindowHints(): void; handleWindowCreationErrors(error: com.mojang.blaze3d.GLFWErrorCapture$Error): void; - createDevice(window: number, defaultShaderSource: com.mojang.blaze3d.shaders.ShaderSource, debugOptions: com.mojang.blaze3d.shaders.GpuDebugOptions): com.mojang.blaze3d.systems.GpuDevice; + createDevice(window: number, defaultShaderSource: com.mojang.blaze3d.shaders.ShaderSource, debugOptions: com.mojang.blaze3d.shaders.GpuDebugOptions, criticalShaderLoader: java.lang.Runnable): com.mojang.blaze3d.systems.GpuDevice; } const GpuDevice: { - new(backend: com.mojang.blaze3d.systems.GpuDeviceBackend): com.mojang.blaze3d.systems.GpuDevice; + new(backend: com.mojang.blaze3d.systems.GpuDeviceBackend, criticalShaderLoader: java.lang.Runnable): com.mojang.blaze3d.systems.GpuDevice; } interface GpuDevice { + createSurface(windowHandle: number): com.mojang.blaze3d.systems.GpuSurface; createCommandEncoder(): com.mojang.blaze3d.systems.CommandEncoder; createSampler(addressModeU: com.mojang.blaze3d.textures.AddressMode, addressModeV: com.mojang.blaze3d.textures.AddressMode, minFilter: com.mojang.blaze3d.textures.FilterMode, magFilter: com.mojang.blaze3d.textures.FilterMode, maxAnisotropy: number, maxLod: java.util.OptionalDouble): com.mojang.blaze3d.textures.GpuSampler; - createTexture(label: unknown, usage: number, format: com.mojang.blaze3d.textures.TextureFormat, width: number, height: number, depthOrLayers: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTexture; - createTexture(label: string | null | undefined, usage: number, format: com.mojang.blaze3d.textures.TextureFormat, width: number, height: number, depthOrLayers: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTexture; + createTexture(label: unknown, usage: number, format: com.mojang.blaze3d.GpuFormat, width: number, height: number, depthOrLayers: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTexture; + createTexture(label: string | null | undefined, usage: number, format: com.mojang.blaze3d.GpuFormat, width: number, height: number, depthOrLayers: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTexture; createTextureView(texture: com.mojang.blaze3d.textures.GpuTexture): com.mojang.blaze3d.textures.GpuTextureView; createTextureView(texture: com.mojang.blaze3d.textures.GpuTexture, baseMipLevel: number, mipLevels: number): com.mojang.blaze3d.textures.GpuTextureView; createBuffer(label: unknown, usage: number, size: number): com.mojang.blaze3d.buffers.GpuBuffer; createBuffer(label: unknown, usage: number, data: java.nio.ByteBuffer): com.mojang.blaze3d.buffers.GpuBuffer; - getImplementationInformation(): string; getLastDebugMessages(): Array; isDebuggingEnabled(): boolean; - getVendor(): string; - getBackendName(): string; - getVersion(): string; - getRenderer(): string; - getMaxTextureSize(): number; - getUniformOffsetAlignment(): number; precompilePipeline(pipeline: com.mojang.blaze3d.pipeline.RenderPipeline): com.mojang.blaze3d.pipeline.CompiledRenderPipeline; precompilePipeline(pipeline: com.mojang.blaze3d.pipeline.RenderPipeline, shaderSource: com.mojang.blaze3d.shaders.ShaderSource | null | undefined): com.mojang.blaze3d.pipeline.CompiledRenderPipeline; clearPipelineCache(): void; - getEnabledExtensions(): Array; - getMaxSupportedAnisotropy(): number; + loadCriticalShaders(): void; close(): void; - setVsync(enabled: boolean): void; - presentFrame(): void; - isZZeroToOne(): boolean; + createTimestampQueryPool(size: number): com.mojang.blaze3d.systems.GpuQueryPool; + getDeviceInfo(): com.mojang.blaze3d.systems.DeviceInfo; + } + const GpuSurface: { + Configuration: typeof com.mojang.blaze3d.systems.GpuSurface$Configuration; + PresentMode: typeof com.mojang.blaze3d.systems.GpuSurface$PresentMode; + new(backend: com.mojang.blaze3d.systems.GpuSurfaceBackend): com.mojang.blaze3d.systems.GpuSurface; + } + interface GpuSurface extends java.lang.AutoCloseable { + currentConfiguration(): java.util.Optional; + configure(config: com.mojang.blaze3d.systems.GpuSurface$Configuration): void; + supportedPresentModes(): Array; + isSuboptimal(): boolean; + isAcquired(): boolean; + acquireNextTexture(): void; + blitFromTexture(commandEncoder: com.mojang.blaze3d.systems.CommandEncoder, textureView: com.mojang.blaze3d.textures.GpuTextureView): void; + present(): void; } const CommandEncoder: { - new(device: com.mojang.blaze3d.systems.GpuDeviceBackend, backend: com.mojang.blaze3d.systems.CommandEncoderBackend): com.mojang.blaze3d.systems.CommandEncoder; + new(profiler: com.mojang.blaze3d.systems.TracyGpuProfiler | null | undefined, device: com.mojang.blaze3d.systems.GpuDeviceBackend, backend: com.mojang.blaze3d.systems.CommandEncoderBackend): com.mojang.blaze3d.systems.CommandEncoder; } interface CommandEncoder { - createRenderPass(label: unknown, colorTexture: com.mojang.blaze3d.textures.GpuTextureView, clearColor: java.util.OptionalInt): com.mojang.blaze3d.systems.RenderPass; - createRenderPass(label: unknown, colorTexture: com.mojang.blaze3d.textures.GpuTextureView, clearColor: java.util.OptionalInt, depthTexture: com.mojang.blaze3d.textures.GpuTextureView | null | undefined, clearDepth: java.util.OptionalDouble): com.mojang.blaze3d.systems.RenderPass; - clearColorTexture(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: number): void; - clearColorAndDepthTextures(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: number, depthTexture: com.mojang.blaze3d.textures.GpuTexture, clearDepth: number): void; - clearColorAndDepthTextures(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: number, depthTexture: com.mojang.blaze3d.textures.GpuTexture, clearDepth: number, regionX: number, regionY: number, regionWidth: number, regionHeight: number): void; + submit(): void; + transientMemory(): com.mojang.blaze3d.systems.TransientMemory; + createRenderPass(label: unknown, colorTexture: com.mojang.blaze3d.textures.GpuTextureView, clearColor: java.util.Optional): com.mojang.blaze3d.systems.RenderPass; + createRenderPass(label: unknown, colorTexture: com.mojang.blaze3d.textures.GpuTextureView, clearColor: java.util.Optional, depthTexture: com.mojang.blaze3d.textures.GpuTextureView | null | undefined, clearDepth: java.util.OptionalDouble): com.mojang.blaze3d.systems.RenderPass; + createRenderPass(label: unknown, colorTexture: com.mojang.blaze3d.textures.GpuTextureView, clearColor: java.util.Optional, depthTexture: com.mojang.blaze3d.textures.GpuTextureView | null | undefined, clearDepth: java.util.OptionalDouble, renderArea: com.mojang.blaze3d.systems.RenderPass$RenderArea): com.mojang.blaze3d.systems.RenderPass; + createRenderPass(descriptor: com.mojang.blaze3d.systems.RenderPassDescriptor): com.mojang.blaze3d.systems.RenderPass; + clearColorTexture(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: org.joml.Vector4fc): void; + clearColorAndDepthTextures(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: org.joml.Vector4fc, depthTexture: com.mojang.blaze3d.textures.GpuTexture, clearDepth: number): void; + clearColorAndDepthTextures(colorTexture: com.mojang.blaze3d.textures.GpuTexture, clearColor: org.joml.Vector4fc, depthTexture: com.mojang.blaze3d.textures.GpuTexture, clearDepth: number, regionX: number, regionY: number, regionWidth: number, regionHeight: number): void; clearDepthTexture(depthTexture: com.mojang.blaze3d.textures.GpuTexture, clearDepth: number): void; writeToBuffer(destination: com.mojang.blaze3d.buffers.GpuBufferSlice, data: java.nio.ByteBuffer): void; - mapBuffer(buffer: com.mojang.blaze3d.buffers.GpuBuffer, read: boolean, write: boolean): com.mojang.blaze3d.buffers.GpuBuffer$MappedView; - mapBuffer(slice: com.mojang.blaze3d.buffers.GpuBufferSlice, read: boolean, write: boolean): com.mojang.blaze3d.buffers.GpuBuffer$MappedView; copyToBuffer(source: com.mojang.blaze3d.buffers.GpuBufferSlice, target: com.mojang.blaze3d.buffers.GpuBufferSlice): void; writeToTexture(destination: com.mojang.blaze3d.textures.GpuTexture, source: com.mojang.blaze3d.platform.NativeImage): void; - writeToTexture(destination: com.mojang.blaze3d.textures.GpuTexture, source: com.mojang.blaze3d.platform.NativeImage, mipLevel: number, depthOrLayer: number, destX: number, destY: number, width: number, height: number, sourceX: number, sourceY: number): void; - writeToTexture(destination: com.mojang.blaze3d.textures.GpuTexture, source: java.nio.ByteBuffer, format: com.mojang.blaze3d.platform.NativeImage$Format, mipLevel: number, depthOrLayer: number, destX: number, destY: number, width: number, height: number): void; + writeToTexture(destination: com.mojang.blaze3d.textures.GpuTexture, source: com.mojang.blaze3d.platform.NativeImage, mipLevel: number, depthOrLayer: number, destX: number, destY: number): void; + writeToTexture(destination: com.mojang.blaze3d.textures.GpuTexture, source: java.nio.ByteBuffer, mipLevel: number, depthOrLayer: number, destX: number, destY: number, width: number, height: number): void; + copyBufferToTexture(source: com.mojang.blaze3d.buffers.GpuBufferSlice, sourceX: number, sourceY: number, sourceWidth: number, sourceHeight: number, destination: com.mojang.blaze3d.textures.GpuTexture, destinationX: number, destinationY: number, copyWidth: number, copyHeight: number, mipLevel: number, arrayLayer: number): void; copyTextureToBuffer(source: com.mojang.blaze3d.textures.GpuTexture, destination: com.mojang.blaze3d.buffers.GpuBuffer, offset: number, callback: java.lang.Runnable, mipLevel: number): void; copyTextureToBuffer(source: com.mojang.blaze3d.textures.GpuTexture, destination: com.mojang.blaze3d.buffers.GpuBuffer, offset: number, callback: java.lang.Runnable, mipLevel: number, x: number, y: number, width: number, height: number): void; copyTextureToTexture(source: com.mojang.blaze3d.textures.GpuTexture, destination: com.mojang.blaze3d.textures.GpuTexture, mipLevel: number, destX: number, destY: number, sourceX: number, sourceY: number, width: number, height: number): void; - presentTexture(textureView: com.mojang.blaze3d.textures.GpuTextureView): void; createFence(): com.mojang.blaze3d.buffers.GpuFence; - timerQueryBegin(): com.mojang.blaze3d.systems.GpuQuery; - timerQueryEnd(query: com.mojang.blaze3d.systems.GpuQuery): void; + writeTimestamp(pool: com.mojang.blaze3d.systems.GpuQueryPool, index: number): void; + } + const TracyGpuProfiler: { + new(device: com.mojang.blaze3d.systems.GpuDevice): com.mojang.blaze3d.systems.TracyGpuProfiler; + } + interface TracyGpuProfiler { + close(): void; + pushZone(encoder: com.mojang.blaze3d.systems.CommandEncoder, name: string): void; + popZone(encoder: com.mojang.blaze3d.systems.CommandEncoder): void; + endFrame(): void; } } namespace font { @@ -39826,6 +40294,131 @@ declare global { afterExecutePass(name: string): void; } } + const GpuFormat: { + R8_UNORM: com.mojang.blaze3d.GpuFormat; + R8_SNORM: com.mojang.blaze3d.GpuFormat; + RG8_UNORM: com.mojang.blaze3d.GpuFormat; + RG8_SNORM: com.mojang.blaze3d.GpuFormat; + RGB8_UNORM: com.mojang.blaze3d.GpuFormat; + RGB8_SNORM: com.mojang.blaze3d.GpuFormat; + RGBA8_UNORM: com.mojang.blaze3d.GpuFormat; + RGBA8_SNORM: com.mojang.blaze3d.GpuFormat; + R16_UNORM: com.mojang.blaze3d.GpuFormat; + R16_SNORM: com.mojang.blaze3d.GpuFormat; + RG16_UNORM: com.mojang.blaze3d.GpuFormat; + RG16_SNORM: com.mojang.blaze3d.GpuFormat; + RGB16_UNORM: com.mojang.blaze3d.GpuFormat; + RGB16_SNORM: com.mojang.blaze3d.GpuFormat; + RGBA16_UNORM: com.mojang.blaze3d.GpuFormat; + RGBA16_SNORM: com.mojang.blaze3d.GpuFormat; + R8_UINT: com.mojang.blaze3d.GpuFormat; + R8_SINT: com.mojang.blaze3d.GpuFormat; + RG8_UINT: com.mojang.blaze3d.GpuFormat; + RG8_SINT: com.mojang.blaze3d.GpuFormat; + RGB8_UINT: com.mojang.blaze3d.GpuFormat; + RGB8_SINT: com.mojang.blaze3d.GpuFormat; + RGBA8_UINT: com.mojang.blaze3d.GpuFormat; + RGBA8_SINT: com.mojang.blaze3d.GpuFormat; + R16_UINT: com.mojang.blaze3d.GpuFormat; + R16_SINT: com.mojang.blaze3d.GpuFormat; + RG16_UINT: com.mojang.blaze3d.GpuFormat; + RG16_SINT: com.mojang.blaze3d.GpuFormat; + RGB16_UINT: com.mojang.blaze3d.GpuFormat; + RGB16_SINT: com.mojang.blaze3d.GpuFormat; + RGBA16_UINT: com.mojang.blaze3d.GpuFormat; + RGBA16_SINT: com.mojang.blaze3d.GpuFormat; + R32_UINT: com.mojang.blaze3d.GpuFormat; + R32_SINT: com.mojang.blaze3d.GpuFormat; + RG32_UINT: com.mojang.blaze3d.GpuFormat; + RG32_SINT: com.mojang.blaze3d.GpuFormat; + RGB32_UINT: com.mojang.blaze3d.GpuFormat; + RGB32_SINT: com.mojang.blaze3d.GpuFormat; + RGBA32_UINT: com.mojang.blaze3d.GpuFormat; + RGBA32_SINT: com.mojang.blaze3d.GpuFormat; + R16_FLOAT: com.mojang.blaze3d.GpuFormat; + RG16_FLOAT: com.mojang.blaze3d.GpuFormat; + RGB16_FLOAT: com.mojang.blaze3d.GpuFormat; + RGBA16_FLOAT: com.mojang.blaze3d.GpuFormat; + R32_FLOAT: com.mojang.blaze3d.GpuFormat; + RG32_FLOAT: com.mojang.blaze3d.GpuFormat; + RGB32_FLOAT: com.mojang.blaze3d.GpuFormat; + RGBA32_FLOAT: com.mojang.blaze3d.GpuFormat; + RGB10A2_UNORM: com.mojang.blaze3d.GpuFormat; + RGB10A2_UINT: com.mojang.blaze3d.GpuFormat; + RG11B10_FLOAT: com.mojang.blaze3d.GpuFormat; + D32_FLOAT: com.mojang.blaze3d.GpuFormat; + D32_FLOAT_S8_UINT: com.mojang.blaze3d.GpuFormat; + D24_UNORM_S8_UINT: com.mojang.blaze3d.GpuFormat; + D16_UNORM: com.mojang.blaze3d.GpuFormat; + S8_UINT: com.mojang.blaze3d.GpuFormat; + ComponentType: typeof com.mojang.blaze3d.GpuFormat$ComponentType; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.mojang.blaze3d.GpuFormat; + } + interface GpuFormat extends kotlin.Enum { + componentType(): com.mojang.blaze3d.GpuFormat$ComponentType; + componentCount(): number; + blockSize(): number; + byteAlignment(): number; + hasColorAspect(): boolean; + hasDepthAspect(): boolean; + hasStencilAspect(): boolean; + } + const GpuFormat$ComponentType: { + UNORM_8: com.mojang.blaze3d.GpuFormat$ComponentType; + SNORM_8: com.mojang.blaze3d.GpuFormat$ComponentType; + UINT_8: com.mojang.blaze3d.GpuFormat$ComponentType; + SINT_8: com.mojang.blaze3d.GpuFormat$ComponentType; + UNORM_16: com.mojang.blaze3d.GpuFormat$ComponentType; + SNORM_16: com.mojang.blaze3d.GpuFormat$ComponentType; + UINT_16: com.mojang.blaze3d.GpuFormat$ComponentType; + SINT_16: com.mojang.blaze3d.GpuFormat$ComponentType; + FLOAT_16: com.mojang.blaze3d.GpuFormat$ComponentType; + UINT_32: com.mojang.blaze3d.GpuFormat$ComponentType; + SINT_32: com.mojang.blaze3d.GpuFormat$ComponentType; + FLOAT_32: com.mojang.blaze3d.GpuFormat$ComponentType; + OPAQUE_8: com.mojang.blaze3d.GpuFormat$ComponentType; + OPAQUE_16: com.mojang.blaze3d.GpuFormat$ComponentType; + OPAQUE_32: com.mojang.blaze3d.GpuFormat$ComponentType; + OPAQUE_64: com.mojang.blaze3d.GpuFormat$ComponentType; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.mojang.blaze3d.GpuFormat$ComponentType; + } + interface GpuFormat$ComponentType extends kotlin.Enum { + byteSize(): number; + } + const PrimitiveTopology: { + LINES: com.mojang.blaze3d.PrimitiveTopology; + DEBUG_LINES: com.mojang.blaze3d.PrimitiveTopology; + DEBUG_LINE_STRIP: com.mojang.blaze3d.PrimitiveTopology; + POINTS: com.mojang.blaze3d.PrimitiveTopology; + TRIANGLES: com.mojang.blaze3d.PrimitiveTopology; + TRIANGLE_STRIP: com.mojang.blaze3d.PrimitiveTopology; + TRIANGLE_FAN: com.mojang.blaze3d.PrimitiveTopology; + QUADS: com.mojang.blaze3d.PrimitiveTopology; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.mojang.blaze3d.PrimitiveTopology; + } + interface PrimitiveTopology extends kotlin.Enum { + primitiveLength: number; + primitiveStride: number; + connectedPrimitives: boolean; + indexCount(vertexCount: number): number; + } + const IndexType: { + SHORT: com.mojang.blaze3d.IndexType; + INT: com.mojang.blaze3d.IndexType; + entries: kotlin.enums.EnumEntries; + least(length: number): com.mojang.blaze3d.IndexType; + values(): Array; + valueOf(value: string): com.mojang.blaze3d.IndexType; + } + interface IndexType extends kotlin.Enum { + bytes: number; + } const GLFWErrorCapture$Error: { new(error: number, description: string): com.mojang.blaze3d.GLFWErrorCapture$Error; } @@ -40989,15 +41582,23 @@ declare global { curry(): unknown; curry2(): unknown; } - interface Function8 { - apply(p0: T1, p1: T2, p2: T3, p3: T4, p4: T5, p5: T6, p6: T7, p7: T8): R; + interface Function16 { + apply(p0: T1, p1: T2, p2: T3, p3: T4, p4: T5, p5: T6, p6: T7, p7: T8, p8: T9, p9: T10, p10: T11, p11: T12, p12: T13, p13: T14, p14: T15, p15: T16): R; curry(): unknown; curry2(): unknown; - curry3(): com.mojang.datafixers.util.Function3>; - curry4(): com.mojang.datafixers.util.Function4>; - curry5(): com.mojang.datafixers.util.Function5>; - curry6(): com.mojang.datafixers.util.Function6; - curry7(): com.mojang.datafixers.util.Function7; + curry3(): com.mojang.datafixers.util.Function3>; + curry4(): com.mojang.datafixers.util.Function4>; + curry5(): com.mojang.datafixers.util.Function5>; + curry6(): com.mojang.datafixers.util.Function6>; + curry7(): com.mojang.datafixers.util.Function7>; + curry8(): com.mojang.datafixers.util.Function8>; + curry9(): com.mojang.datafixers.util.Function9>; + curry10(): com.mojang.datafixers.util.Function10>; + curry11(): com.mojang.datafixers.util.Function11>; + curry12(): com.mojang.datafixers.util.Function12>; + curry13(): com.mojang.datafixers.util.Function13>; + curry14(): com.mojang.datafixers.util.Function14; + curry15(): com.mojang.datafixers.util.Function15; } interface Function4 { apply(p0: T1, p1: T2, p2: T3, p3: T4): R; @@ -41029,6 +41630,16 @@ declare global { curry5(): com.mojang.datafixers.util.Function5; curry6(): com.mojang.datafixers.util.Function6; } + interface Function8 { + apply(p0: T1, p1: T2, p2: T3, p3: T4, p4: T5, p5: T6, p6: T7, p7: T8): R; + curry(): unknown; + curry2(): unknown; + curry3(): com.mojang.datafixers.util.Function3>; + curry4(): com.mojang.datafixers.util.Function4>; + curry5(): com.mojang.datafixers.util.Function5>; + curry6(): com.mojang.datafixers.util.Function6; + curry7(): com.mojang.datafixers.util.Function7; + } interface Function9 { apply(p0: T1, p1: T2, p2: T3, p3: T4, p4: T5, p5: T6, p6: T7, p7: T8, p8: T9): R; curry(): unknown; @@ -41127,24 +41738,6 @@ declare global { curry13(): com.mojang.datafixers.util.Function13; curry14(): com.mojang.datafixers.util.Function14; } - interface Function16 { - apply(p0: T1, p1: T2, p2: T3, p3: T4, p4: T5, p5: T6, p6: T7, p7: T8, p8: T9, p9: T10, p10: T11, p11: T12, p12: T13, p13: T14, p14: T15, p15: T16): R; - curry(): unknown; - curry2(): unknown; - curry3(): com.mojang.datafixers.util.Function3>; - curry4(): com.mojang.datafixers.util.Function4>; - curry5(): com.mojang.datafixers.util.Function5>; - curry6(): com.mojang.datafixers.util.Function6>; - curry7(): com.mojang.datafixers.util.Function7>; - curry8(): com.mojang.datafixers.util.Function8>; - curry9(): com.mojang.datafixers.util.Function9>; - curry10(): com.mojang.datafixers.util.Function10>; - curry11(): com.mojang.datafixers.util.Function11>; - curry12(): com.mojang.datafixers.util.Function12>; - curry13(): com.mojang.datafixers.util.Function13>; - curry14(): com.mojang.datafixers.util.Function14; - curry15(): com.mojang.datafixers.util.Function15; - } const Either: { Instance: typeof com.mojang.datafixers.util.Either$Instance; Mu: typeof com.mojang.datafixers.util.Either$Mu; @@ -41543,10 +42136,9 @@ declare global { } } const Products$P1: { - new(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P1; + new(t1: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P1; } - interface Products$P1 { - t1(): com.mojang.datafixers.kinds.App; + interface Products$P1 extends java.lang.Record { and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P2; and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P3; and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P4; @@ -41554,88 +42146,148 @@ declare global { and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P6; and(p0: com.mojang.datafixers.Products$P6): com.mojang.datafixers.Products$P7; and(p0: com.mojang.datafixers.Products$P7): com.mojang.datafixers.Products$P8; + and(p0: com.mojang.datafixers.Products$P8): com.mojang.datafixers.Products$P9; + and(p0: com.mojang.datafixers.Products$P9): com.mojang.datafixers.Products$P10; + and(p0: com.mojang.datafixers.Products$P10): com.mojang.datafixers.Products$P11; + and(p0: com.mojang.datafixers.Products$P11): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P12): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P13): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P14): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P15): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: unknown): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; } const Products$P2: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P2; + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P2; } - interface Products$P2 { - t1(): com.mojang.datafixers.kinds.App; - t2(): com.mojang.datafixers.kinds.App; + interface Products$P2 extends java.lang.Record { and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P3; and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P4; and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P5; and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P6; and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P7; and(p0: com.mojang.datafixers.Products$P6): com.mojang.datafixers.Products$P8; + and(p0: com.mojang.datafixers.Products$P7): com.mojang.datafixers.Products$P9; + and(p0: com.mojang.datafixers.Products$P8): com.mojang.datafixers.Products$P10; + and(p0: com.mojang.datafixers.Products$P9): com.mojang.datafixers.Products$P11; + and(p0: com.mojang.datafixers.Products$P10): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P11): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P12): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P13): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P14): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: unknown): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; + t2(): com.mojang.datafixers.kinds.App; } const Products$P3: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P3; + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P3; } - interface Products$P3 { - t1(): com.mojang.datafixers.kinds.App; - t2(): com.mojang.datafixers.kinds.App; - t3(): com.mojang.datafixers.kinds.App; + interface Products$P3 extends java.lang.Record { and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P4; and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P5; and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P6; and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P7; and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P8; + and(p0: com.mojang.datafixers.Products$P6): com.mojang.datafixers.Products$P9; + and(p0: com.mojang.datafixers.Products$P7): com.mojang.datafixers.Products$P10; + and(p0: com.mojang.datafixers.Products$P8): com.mojang.datafixers.Products$P11; + and(p0: com.mojang.datafixers.Products$P9): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P10): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P11): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P12): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P13): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function3): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; - } - const Products$P4: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P4; - } - interface Products$P4 { t1(): com.mojang.datafixers.kinds.App; t2(): com.mojang.datafixers.kinds.App; t3(): com.mojang.datafixers.kinds.App; - t4(): com.mojang.datafixers.kinds.App; + } + const Products$P4: { + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P4; + } + interface Products$P4 extends java.lang.Record { and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P5; and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P6; and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P7; and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P8; + and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P9; + and(p0: com.mojang.datafixers.Products$P6): com.mojang.datafixers.Products$P10; + and(p0: com.mojang.datafixers.Products$P7): com.mojang.datafixers.Products$P11; + and(p0: com.mojang.datafixers.Products$P8): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P9): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P10): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P11): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P12): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function4): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; - } - const Products$P5: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P5; - } - interface Products$P5 { t1(): com.mojang.datafixers.kinds.App; t2(): com.mojang.datafixers.kinds.App; t3(): com.mojang.datafixers.kinds.App; t4(): com.mojang.datafixers.kinds.App; - t5(): com.mojang.datafixers.kinds.App; + } + const Products$P5: { + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P5; + } + interface Products$P5 extends java.lang.Record { and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P6; and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P7; and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P8; + and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P9; + and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P10; + and(p0: com.mojang.datafixers.Products$P6): com.mojang.datafixers.Products$P11; + and(p0: com.mojang.datafixers.Products$P7): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P8): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P9): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P10): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P11): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function5): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; - } - const Products$P6: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P6; - } - interface Products$P6 { t1(): com.mojang.datafixers.kinds.App; t2(): com.mojang.datafixers.kinds.App; t3(): com.mojang.datafixers.kinds.App; t4(): com.mojang.datafixers.kinds.App; t5(): com.mojang.datafixers.kinds.App; - t6(): com.mojang.datafixers.kinds.App; + } + const Products$P6: { + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P6; + } + interface Products$P6 extends java.lang.Record { and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P7; and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P8; + and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P9; + and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P10; + and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P11; + and(p0: com.mojang.datafixers.Products$P6): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P7): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P8): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P9): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P10): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function6): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; + t2(): com.mojang.datafixers.kinds.App; + t3(): com.mojang.datafixers.kinds.App; + t4(): com.mojang.datafixers.kinds.App; + t5(): com.mojang.datafixers.kinds.App; + t6(): com.mojang.datafixers.kinds.App; } const Products$P7: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App, p6: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P7; + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App, t7: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P7; } - interface Products$P7 { + interface Products$P7 extends java.lang.Record { + and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P8; + and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P9; + and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P10; + and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P11; + and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P6): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P7): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P8): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P9): com.mojang.datafixers.Products$P16; + apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function7): com.mojang.datafixers.kinds.App; + apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; t1(): com.mojang.datafixers.kinds.App; t2(): com.mojang.datafixers.kinds.App; t3(): com.mojang.datafixers.kinds.App; @@ -41643,14 +42295,21 @@ declare global { t5(): com.mojang.datafixers.kinds.App; t6(): com.mojang.datafixers.kinds.App; t7(): com.mojang.datafixers.kinds.App; - and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P8; - apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function7): com.mojang.datafixers.kinds.App; - apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; } const Products$P8: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App, p6: com.mojang.datafixers.kinds.App, p7: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P8; - } - interface Products$P8 { + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App, t7: com.mojang.datafixers.kinds.App, t8: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P8; + } + interface Products$P8 extends java.lang.Record { + and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P9; + and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P10; + and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P11; + and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P6): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P7): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P8): com.mojang.datafixers.Products$P16; + apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function8): com.mojang.datafixers.kinds.App; + apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; t1(): com.mojang.datafixers.kinds.App; t2(): com.mojang.datafixers.kinds.App; t3(): com.mojang.datafixers.kinds.App; @@ -41659,64 +42318,190 @@ declare global { t6(): com.mojang.datafixers.kinds.App; t7(): com.mojang.datafixers.kinds.App; t8(): com.mojang.datafixers.kinds.App; - apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function8): com.mojang.datafixers.kinds.App; - apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; } const Products$P9: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App, p6: com.mojang.datafixers.kinds.App, p7: com.mojang.datafixers.kinds.App, p8: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P9; - } - interface Products$P9 { + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App, t7: com.mojang.datafixers.kinds.App, t8: com.mojang.datafixers.kinds.App, t9: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P9; + } + interface Products$P9 extends java.lang.Record { + and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P10; + and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P11; + and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P6): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P7): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function9): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; + t2(): com.mojang.datafixers.kinds.App; + t3(): com.mojang.datafixers.kinds.App; + t4(): com.mojang.datafixers.kinds.App; + t5(): com.mojang.datafixers.kinds.App; + t6(): com.mojang.datafixers.kinds.App; + t7(): com.mojang.datafixers.kinds.App; + t8(): com.mojang.datafixers.kinds.App; + t9(): com.mojang.datafixers.kinds.App; } const Products$P10: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App, p6: com.mojang.datafixers.kinds.App, p7: com.mojang.datafixers.kinds.App, p8: com.mojang.datafixers.kinds.App, p9: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P10; - } - interface Products$P10 { + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App, t7: com.mojang.datafixers.kinds.App, t8: com.mojang.datafixers.kinds.App, t9: com.mojang.datafixers.kinds.App, t10: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P10; + } + interface Products$P10 extends java.lang.Record { + and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P11; + and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P6): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function10): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; + t2(): com.mojang.datafixers.kinds.App; + t3(): com.mojang.datafixers.kinds.App; + t4(): com.mojang.datafixers.kinds.App; + t5(): com.mojang.datafixers.kinds.App; + t6(): com.mojang.datafixers.kinds.App; + t7(): com.mojang.datafixers.kinds.App; + t8(): com.mojang.datafixers.kinds.App; + t9(): com.mojang.datafixers.kinds.App; + t10(): com.mojang.datafixers.kinds.App; } const Products$P11: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App, p6: com.mojang.datafixers.kinds.App, p7: com.mojang.datafixers.kinds.App, p8: com.mojang.datafixers.kinds.App, p9: com.mojang.datafixers.kinds.App, p10: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P11; - } - interface Products$P11 { + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App, t7: com.mojang.datafixers.kinds.App, t8: com.mojang.datafixers.kinds.App, t9: com.mojang.datafixers.kinds.App, t10: com.mojang.datafixers.kinds.App, t11: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P11; + } + interface Products$P11 extends java.lang.Record { + and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P12; + and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P5): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function11): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; + t2(): com.mojang.datafixers.kinds.App; + t3(): com.mojang.datafixers.kinds.App; + t4(): com.mojang.datafixers.kinds.App; + t5(): com.mojang.datafixers.kinds.App; + t6(): com.mojang.datafixers.kinds.App; + t7(): com.mojang.datafixers.kinds.App; + t8(): com.mojang.datafixers.kinds.App; + t9(): com.mojang.datafixers.kinds.App; + t10(): com.mojang.datafixers.kinds.App; + t11(): com.mojang.datafixers.kinds.App; } const Products$P12: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App, p6: com.mojang.datafixers.kinds.App, p7: com.mojang.datafixers.kinds.App, p8: com.mojang.datafixers.kinds.App, p9: com.mojang.datafixers.kinds.App, p10: com.mojang.datafixers.kinds.App, p11: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P12; + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App, t7: com.mojang.datafixers.kinds.App, t8: com.mojang.datafixers.kinds.App, t9: com.mojang.datafixers.kinds.App, t10: com.mojang.datafixers.kinds.App, t11: com.mojang.datafixers.kinds.App, t12: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P12; } - interface Products$P12 { + interface Products$P12 extends java.lang.Record { + and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P13; + and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P4): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function12): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; + t2(): com.mojang.datafixers.kinds.App; + t3(): com.mojang.datafixers.kinds.App; + t4(): com.mojang.datafixers.kinds.App; + t5(): com.mojang.datafixers.kinds.App; + t6(): com.mojang.datafixers.kinds.App; + t7(): com.mojang.datafixers.kinds.App; + t8(): com.mojang.datafixers.kinds.App; + t9(): com.mojang.datafixers.kinds.App; + t10(): com.mojang.datafixers.kinds.App; + t11(): com.mojang.datafixers.kinds.App; + t12(): com.mojang.datafixers.kinds.App; } const Products$P13: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App, p6: com.mojang.datafixers.kinds.App, p7: com.mojang.datafixers.kinds.App, p8: com.mojang.datafixers.kinds.App, p9: com.mojang.datafixers.kinds.App, p10: com.mojang.datafixers.kinds.App, p11: com.mojang.datafixers.kinds.App, p12: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P13; + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App, t7: com.mojang.datafixers.kinds.App, t8: com.mojang.datafixers.kinds.App, t9: com.mojang.datafixers.kinds.App, t10: com.mojang.datafixers.kinds.App, t11: com.mojang.datafixers.kinds.App, t12: com.mojang.datafixers.kinds.App, t13: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P13; } - interface Products$P13 { + interface Products$P13 extends java.lang.Record { + and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P14; + and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P3): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function13): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; + t2(): com.mojang.datafixers.kinds.App; + t3(): com.mojang.datafixers.kinds.App; + t4(): com.mojang.datafixers.kinds.App; + t5(): com.mojang.datafixers.kinds.App; + t6(): com.mojang.datafixers.kinds.App; + t7(): com.mojang.datafixers.kinds.App; + t8(): com.mojang.datafixers.kinds.App; + t9(): com.mojang.datafixers.kinds.App; + t10(): com.mojang.datafixers.kinds.App; + t11(): com.mojang.datafixers.kinds.App; + t12(): com.mojang.datafixers.kinds.App; + t13(): com.mojang.datafixers.kinds.App; } const Products$P14: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App, p6: com.mojang.datafixers.kinds.App, p7: com.mojang.datafixers.kinds.App, p8: com.mojang.datafixers.kinds.App, p9: com.mojang.datafixers.kinds.App, p10: com.mojang.datafixers.kinds.App, p11: com.mojang.datafixers.kinds.App, p12: com.mojang.datafixers.kinds.App, p13: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P14; + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App, t7: com.mojang.datafixers.kinds.App, t8: com.mojang.datafixers.kinds.App, t9: com.mojang.datafixers.kinds.App, t10: com.mojang.datafixers.kinds.App, t11: com.mojang.datafixers.kinds.App, t12: com.mojang.datafixers.kinds.App, t13: com.mojang.datafixers.kinds.App, t14: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P14; } - interface Products$P14 { + interface Products$P14 extends java.lang.Record { + and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P15; + and(p0: com.mojang.datafixers.Products$P2): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function14): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; + t2(): com.mojang.datafixers.kinds.App; + t3(): com.mojang.datafixers.kinds.App; + t4(): com.mojang.datafixers.kinds.App; + t5(): com.mojang.datafixers.kinds.App; + t6(): com.mojang.datafixers.kinds.App; + t7(): com.mojang.datafixers.kinds.App; + t8(): com.mojang.datafixers.kinds.App; + t9(): com.mojang.datafixers.kinds.App; + t10(): com.mojang.datafixers.kinds.App; + t11(): com.mojang.datafixers.kinds.App; + t12(): com.mojang.datafixers.kinds.App; + t13(): com.mojang.datafixers.kinds.App; + t14(): com.mojang.datafixers.kinds.App; } const Products$P15: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App, p6: com.mojang.datafixers.kinds.App, p7: com.mojang.datafixers.kinds.App, p8: com.mojang.datafixers.kinds.App, p9: com.mojang.datafixers.kinds.App, p10: com.mojang.datafixers.kinds.App, p11: com.mojang.datafixers.kinds.App, p12: com.mojang.datafixers.kinds.App, p13: com.mojang.datafixers.kinds.App, p14: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P15; + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App, t7: com.mojang.datafixers.kinds.App, t8: com.mojang.datafixers.kinds.App, t9: com.mojang.datafixers.kinds.App, t10: com.mojang.datafixers.kinds.App, t11: com.mojang.datafixers.kinds.App, t12: com.mojang.datafixers.kinds.App, t13: com.mojang.datafixers.kinds.App, t14: com.mojang.datafixers.kinds.App, t15: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P15; } - interface Products$P15 { + interface Products$P15 extends java.lang.Record { + and(p0: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P16; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function15): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; + t2(): com.mojang.datafixers.kinds.App; + t3(): com.mojang.datafixers.kinds.App; + t4(): com.mojang.datafixers.kinds.App; + t5(): com.mojang.datafixers.kinds.App; + t6(): com.mojang.datafixers.kinds.App; + t7(): com.mojang.datafixers.kinds.App; + t8(): com.mojang.datafixers.kinds.App; + t9(): com.mojang.datafixers.kinds.App; + t10(): com.mojang.datafixers.kinds.App; + t11(): com.mojang.datafixers.kinds.App; + t12(): com.mojang.datafixers.kinds.App; + t13(): com.mojang.datafixers.kinds.App; + t14(): com.mojang.datafixers.kinds.App; + t15(): com.mojang.datafixers.kinds.App; } const Products$P16: { - new(p0: com.mojang.datafixers.kinds.App, p1: com.mojang.datafixers.kinds.App, p2: com.mojang.datafixers.kinds.App, p3: com.mojang.datafixers.kinds.App, p4: com.mojang.datafixers.kinds.App, p5: com.mojang.datafixers.kinds.App, p6: com.mojang.datafixers.kinds.App, p7: com.mojang.datafixers.kinds.App, p8: com.mojang.datafixers.kinds.App, p9: com.mojang.datafixers.kinds.App, p10: com.mojang.datafixers.kinds.App, p11: com.mojang.datafixers.kinds.App, p12: com.mojang.datafixers.kinds.App, p13: com.mojang.datafixers.kinds.App, p14: com.mojang.datafixers.kinds.App, p15: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P16; + new(t1: com.mojang.datafixers.kinds.App, t2: com.mojang.datafixers.kinds.App, t3: com.mojang.datafixers.kinds.App, t4: com.mojang.datafixers.kinds.App, t5: com.mojang.datafixers.kinds.App, t6: com.mojang.datafixers.kinds.App, t7: com.mojang.datafixers.kinds.App, t8: com.mojang.datafixers.kinds.App, t9: com.mojang.datafixers.kinds.App, t10: com.mojang.datafixers.kinds.App, t11: com.mojang.datafixers.kinds.App, t12: com.mojang.datafixers.kinds.App, t13: com.mojang.datafixers.kinds.App, t14: com.mojang.datafixers.kinds.App, t15: com.mojang.datafixers.kinds.App, t16: com.mojang.datafixers.kinds.App): com.mojang.datafixers.Products$P16; } - interface Products$P16 { + interface Products$P16 extends java.lang.Record { apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.util.Function16): com.mojang.datafixers.kinds.App; apply(p0: com.mojang.datafixers.kinds.Applicative, p1: com.mojang.datafixers.kinds.App>): com.mojang.datafixers.kinds.App; + t1(): com.mojang.datafixers.kinds.App; + t2(): com.mojang.datafixers.kinds.App; + t3(): com.mojang.datafixers.kinds.App; + t4(): com.mojang.datafixers.kinds.App; + t5(): com.mojang.datafixers.kinds.App; + t6(): com.mojang.datafixers.kinds.App; + t7(): com.mojang.datafixers.kinds.App; + t8(): com.mojang.datafixers.kinds.App; + t9(): com.mojang.datafixers.kinds.App; + t10(): com.mojang.datafixers.kinds.App; + t11(): com.mojang.datafixers.kinds.App; + t12(): com.mojang.datafixers.kinds.App; + t13(): com.mojang.datafixers.kinds.App; + t14(): com.mojang.datafixers.kinds.App; + t15(): com.mojang.datafixers.kinds.App; + t16(): com.mojang.datafixers.kinds.App; } interface DataFixer { update(p0: com.mojang.datafixers.DSL$TypeReference, p1: com.mojang.serialization.Dynamic, p2: number, p3: number): com.mojang.serialization.Dynamic; @@ -41959,6 +42744,22 @@ declare global { privateKey(): string; publicKey(): string; } + const PresenceResponse: { + new(presence: Array): com.mojang.authlib.yggdrasil.response.PresenceResponse; + empty(): com.mojang.authlib.yggdrasil.response.PresenceResponse; + } + interface PresenceResponse extends java.lang.Record { + presence(): Array; + } + const FriendData: { + new(friends: Array, incomingRequests: Array, outgoingRequests: Array): com.mojang.authlib.yggdrasil.response.FriendData; + empty(): com.mojang.authlib.yggdrasil.response.FriendData; + } + interface FriendData extends java.lang.Record { + friends(): Array; + incomingRequests(): Array; + outgoingRequests(): Array; + } } namespace request { const AbuseReportRequest: { @@ -42029,8 +42830,51 @@ declare global { } interface YggdrasilAuthenticationService extends com.mojang.authlib.HttpAuthenticationService { createUserApiService(p0: string): com.mojang.authlib.minecraft.UserApiService; + createFriendsService(p0: string): com.mojang.authlib.yggdrasil.FriendsService; getServicesKeySet(): com.mojang.authlib.yggdrasil.ServicesKeySet; } + const FriendsService: { + ResultCode: typeof com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + PlayerData: typeof com.mojang.authlib.yggdrasil.FriendsService$PlayerData; + } + interface FriendsService { + getFriendData(p0: unknown): com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + removeFriend(p0: java.util.UUID): com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + acceptIncomingFriendRequest(p0: java.util.UUID): com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + declineIncomingFriendRequest(p0: java.util.UUID): com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + sendFriendRequest(p0: string): com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + sendFriendRequest(p0: java.util.UUID): com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + revokeOutgoingFriendRequest(p0: java.util.UUID): com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + updateFriendSettings(p0: boolean, p1: boolean): com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + presence(p0: string): com.mojang.authlib.yggdrasil.response.PresenceResponse; + getFriendsPollInterval(): java.util.Optional; + getPresencePollInterval(): java.util.Optional; + } + const FriendsService$ResultCode: { + SUCCESS: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + ERROR: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + SERVICE_NOT_AVAILABLE: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + TOO_MANY_REQUESTS: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + FORBIDDEN: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + UPGRADE_NEEDED: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + CONNECTION_ISSUE: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + TEMPORARY_UNAVAILABLE: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + UNKNOWN_PROFILE: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + UNAUTHORIZED: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + GENERIC_ERROR: com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.mojang.authlib.yggdrasil.FriendsService$ResultCode; + } + interface FriendsService$ResultCode extends kotlin.Enum { + } + const FriendsService$PlayerData: { + new(id: java.util.UUID, name: string): com.mojang.authlib.yggdrasil.FriendsService$PlayerData; + } + interface FriendsService$PlayerData extends java.lang.Record { + id(): java.util.UUID; + name(): string; + } } namespace minecraft { namespace report { @@ -42139,9 +42983,12 @@ declare global { SERVERS_ALLOWED: com.mojang.authlib.minecraft.UserApiService$UserFlag; REALMS_ALLOWED: com.mojang.authlib.minecraft.UserApiService$UserFlag; CHAT_ALLOWED: com.mojang.authlib.minecraft.UserApiService$UserFlag; + CHAT_FRIENDS_ONLY: com.mojang.authlib.minecraft.UserApiService$UserFlag; TELEMETRY_ENABLED: com.mojang.authlib.minecraft.UserApiService$UserFlag; PROFANITY_FILTER_ENABLED: com.mojang.authlib.minecraft.UserApiService$UserFlag; OPTIONAL_TELEMETRY_AVAILABLE: com.mojang.authlib.minecraft.UserApiService$UserFlag; + FRIENDS_ENABLED: com.mojang.authlib.minecraft.UserApiService$UserFlag; + ACCEPT_FRIEND_INVITES: com.mojang.authlib.minecraft.UserApiService$UserFlag; entries: kotlin.enums.EnumEntries; values(): Array; valueOf(value: string): com.mojang.authlib.minecraft.UserApiService$UserFlag; @@ -42345,79 +43192,83 @@ declare global { } } namespace realmsclient { - namespace gui { - namespace task { - const DataFetcher: { - Task: typeof com.mojang.realmsclient.gui.task.DataFetcher$Task; - Subscription: typeof com.mojang.realmsclient.gui.task.DataFetcher$Subscription; - new(executor: java.util.concurrent.Executor, resolution: java.util.concurrent.TimeUnit, timeSource: net.minecraft.util.TimeSource): com.mojang.realmsclient.gui.task.DataFetcher; - } - interface DataFetcher { - createTask(id: string, updater: java.util.concurrent.Callable, period: java.time.Duration, repeatStrategy: com.mojang.realmsclient.gui.task.RepeatedDelayStrategy): com.mojang.realmsclient.gui.task.DataFetcher$Task; - createSubscription(): com.mojang.realmsclient.gui.task.DataFetcher$Subscription; - } - const RepeatedDelayStrategy: { - CONSTANT: com.mojang.realmsclient.gui.task.RepeatedDelayStrategy; - exponentialBackoff(maxBackoff: number): com.mojang.realmsclient.gui.task.RepeatedDelayStrategy; - } - interface RepeatedDelayStrategy { - delayCyclesAfterSuccess(): number; - delayCyclesAfterFailure(): number; - } - interface DataFetcher$Task { - reset(): void; - } - const DataFetcher$Subscription: { - new(): com.mojang.realmsclient.gui.task.DataFetcher$Subscription; - } - interface DataFetcher$Subscription { - subscribe(task: com.mojang.realmsclient.gui.task.DataFetcher$Task, output: unknown): void; - forceUpdate(): void; - tick(): void; - reset(): void; - } - } - const RealmsDataFetcher: { - ServerListData: typeof com.mojang.realmsclient.gui.RealmsDataFetcher$ServerListData; - new(realmsClient: com.mojang.realmsclient.client.RealmsClient): com.mojang.realmsclient.gui.RealmsDataFetcher; + namespace client { + const RealmsClient: { + CompatibleVersionResponse: typeof com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; + Environment: typeof com.mojang.realmsclient.client.RealmsClient$Environment; + ENVIRONMENT: com.mojang.realmsclient.client.RealmsClient$Environment; + getOrCreate(): com.mojang.realmsclient.client.RealmsClient; + getOrCreate(minecraft: net.minecraft.client.Minecraft): com.mojang.realmsclient.client.RealmsClient; } - interface RealmsDataFetcher { - dataFetcher: com.mojang.realmsclient.gui.task.DataFetcher; - notificationsTask: com.mojang.realmsclient.gui.task.DataFetcher$Task>; - serverListUpdateTask: com.mojang.realmsclient.gui.task.DataFetcher$Task; - pendingInvitesTask: com.mojang.realmsclient.gui.task.DataFetcher$Task; - trialAvailabilityTask: com.mojang.realmsclient.gui.task.DataFetcher$Task; - newsTask: com.mojang.realmsclient.gui.task.DataFetcher$Task; - onlinePlayersTask: com.mojang.realmsclient.gui.task.DataFetcher$Task; - newsManager: com.mojang.realmsclient.gui.RealmsNewsManager; - getTasks(): Array>; + interface RealmsClient { + getFeatureFlags(): Set; + listRealms(): com.mojang.realmsclient.dto.RealmsServerList; + listSnapshotEligibleRealms(): Array; + createSnapshotRealm(parentId: number): com.mojang.realmsclient.dto.RealmsServer; + getNotifications(): Array; + notificationsSeen(notificationUuids: Array): void; + notificationsDismiss(notificationUuids: Array): void; + getOwnRealm(realmId: number): com.mojang.realmsclient.dto.RealmsServer; + getPreferredRegionSelections(): com.mojang.realmsclient.dto.PreferredRegionsDto; + getLiveStats(): com.mojang.realmsclient.dto.RealmsServerPlayerLists; + join(realmId: number): com.mojang.realmsclient.dto.RealmsJoinInformation; + initializeRealm(realmId: number, name: string, motd: string): void; + hasParentalConsent(): boolean; + clientCompatible(): com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; + uninvite(realmId: number, profileId: java.util.UUID): void; + uninviteMyselfFrom(realmId: number): void; + invite(realmId: number, profileName: string): Array; + backupsFor(realmId: number): com.mojang.realmsclient.dto.BackupList; + updateConfiguration(realmId: number, name: string, description: string, regionSelectionPreference: com.mojang.realmsclient.dto.RegionSelectionPreferenceDto | null | undefined, slotId: number, options: com.mojang.realmsclient.dto.RealmsWorldOptions, settings: Array): void; + updateSlot(realmId: number, slotId: number, options: com.mojang.realmsclient.dto.RealmsWorldOptions, settings: Array): void; + switchSlot(realmId: number, slot: number): boolean; + restoreWorld(realmId: number, backupId: string): void; + fetchWorldTemplates(page: number, pageSize: number, type: com.mojang.realmsclient.dto.RealmsServer$WorldType): com.mojang.realmsclient.dto.WorldTemplatePaginatedList; + putIntoMinigameMode(realmId: number, minigameId: string): boolean; + op(realmId: number, profileId: java.util.UUID): com.mojang.realmsclient.dto.Ops; + deop(realmId: number, profileId: java.util.UUID): com.mojang.realmsclient.dto.Ops; + open(realmId: number): boolean; + close(realmId: number): boolean; + resetWorldWithTemplate(realmId: number, worldTemplateId: string): boolean; + subscriptionFor(realmId: number): com.mojang.realmsclient.dto.Subscription; + pendingInvitesCount(): number; + pendingInvites(): com.mojang.realmsclient.dto.PendingInvitesList; + acceptInvitation(invitationId: string): void; + requestDownloadInfo(realmId: number, slotId: number): com.mojang.realmsclient.dto.WorldDownload; + requestUploadInfo(realmId: number): com.mojang.realmsclient.dto.UploadInfo | null | undefined; + rejectInvitation(invitationId: string): void; + agreeToTos(): void; + getNews(): com.mojang.realmsclient.dto.RealmsNews; + sendPingResults(pingResult: com.mojang.realmsclient.dto.PingResult): void; + trialAvailable(): boolean; + deleteRealm(realmId: number): void; } - const RealmsNewsManager: { - new(newsLocalStorage: com.mojang.realmsclient.util.RealmsPersistence): com.mojang.realmsclient.gui.RealmsNewsManager; + const RealmsClient$CompatibleVersionResponse: { + COMPATIBLE: com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; + OUTDATED: com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; + OTHER: com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; } - interface RealmsNewsManager { - hasUnreadNews(): boolean; - newsLink(): string; - updateUnreadNews(newsResponse: com.mojang.realmsclient.dto.RealmsNews): void; + interface RealmsClient$CompatibleVersionResponse extends kotlin.Enum { } - const RealmsDataFetcher$ServerListData: { - new(serverList: Array, availableSnapshotServers: Array): com.mojang.realmsclient.gui.RealmsDataFetcher$ServerListData; + const RealmsClient$Environment: { + PRODUCTION: com.mojang.realmsclient.client.RealmsClient$Environment; + STAGE: com.mojang.realmsclient.client.RealmsClient$Environment; + LOCAL: com.mojang.realmsclient.client.RealmsClient$Environment; + entries: kotlin.enums.EnumEntries; + byName(name: string): java.util.Optional; + values(): Array; + valueOf(value: string): com.mojang.realmsclient.client.RealmsClient$Environment; } - interface RealmsDataFetcher$ServerListData extends java.lang.Record { - serverList(): Array; - availableSnapshotServers(): Array; + interface RealmsClient$Environment extends kotlin.Enum { + baseUrl: string; + alternativeUrl: string; + protocol: string; } } namespace dto { - const RealmsNews: { - new(newsLink: string | null | undefined): com.mojang.realmsclient.dto.RealmsNews; - parse(json: string): com.mojang.realmsclient.dto.RealmsNews; - } - interface RealmsNews extends java.lang.Record { - newsLink(): string | null | undefined; - } - interface ReflectionBasedSerialization { - } const RealmsServerList: { new(servers: Array): com.mojang.realmsclient.dto.RealmsServerList; parse(gson: com.mojang.realmsclient.dto.GuardedSerializer, json: string): com.mojang.realmsclient.dto.RealmsServerList; @@ -42425,6 +43276,8 @@ declare global { interface RealmsServerList extends java.lang.Record, com.mojang.realmsclient.dto.ReflectionBasedSerialization { servers(): Array; } + interface ReflectionBasedSerialization { + } const GuardedSerializer: { new(): com.mojang.realmsclient.dto.GuardedSerializer; } @@ -42750,6 +43603,13 @@ declare global { token(): string | null | undefined; uploadEndpoint(): java.net.URI; } + const RealmsNews: { + new(newsLink: string | null | undefined): com.mojang.realmsclient.dto.RealmsNews; + parse(json: string): com.mojang.realmsclient.dto.RealmsNews; + } + interface RealmsNews extends java.lang.Record { + newsLink(): string | null | undefined; + } const PingResult: { new(pingResults: Array, realmIds: Array): com.mojang.realmsclient.dto.PingResult; } @@ -42758,6 +43618,69 @@ declare global { realmIds(): Array; } } + namespace gui { + namespace task { + const DataFetcher: { + Task: typeof com.mojang.realmsclient.gui.task.DataFetcher$Task; + Subscription: typeof com.mojang.realmsclient.gui.task.DataFetcher$Subscription; + new(executor: java.util.concurrent.Executor, resolution: java.util.concurrent.TimeUnit, timeSource: net.minecraft.util.TimeSource): com.mojang.realmsclient.gui.task.DataFetcher; + } + interface DataFetcher { + createTask(id: string, updater: java.util.concurrent.Callable, period: java.time.Duration, repeatStrategy: com.mojang.realmsclient.gui.task.RepeatedDelayStrategy): com.mojang.realmsclient.gui.task.DataFetcher$Task; + createSubscription(): com.mojang.realmsclient.gui.task.DataFetcher$Subscription; + } + const RepeatedDelayStrategy: { + CONSTANT: com.mojang.realmsclient.gui.task.RepeatedDelayStrategy; + exponentialBackoff(maxBackoff: number): com.mojang.realmsclient.gui.task.RepeatedDelayStrategy; + } + interface RepeatedDelayStrategy { + delayCyclesAfterSuccess(): number; + delayCyclesAfterFailure(): number; + } + interface DataFetcher$Task { + reset(): void; + } + const DataFetcher$Subscription: { + new(): com.mojang.realmsclient.gui.task.DataFetcher$Subscription; + } + interface DataFetcher$Subscription { + subscribe(task: com.mojang.realmsclient.gui.task.DataFetcher$Task, output: unknown): void; + forceUpdate(): void; + tick(): void; + reset(): void; + } + } + const RealmsDataFetcher: { + ServerListData: typeof com.mojang.realmsclient.gui.RealmsDataFetcher$ServerListData; + new(realmsClient: com.mojang.realmsclient.client.RealmsClient): com.mojang.realmsclient.gui.RealmsDataFetcher; + } + interface RealmsDataFetcher { + dataFetcher: com.mojang.realmsclient.gui.task.DataFetcher; + notificationsTask: com.mojang.realmsclient.gui.task.DataFetcher$Task>; + serverListUpdateTask: com.mojang.realmsclient.gui.task.DataFetcher$Task; + pendingInvitesTask: com.mojang.realmsclient.gui.task.DataFetcher$Task; + trialAvailabilityTask: com.mojang.realmsclient.gui.task.DataFetcher$Task; + newsTask: com.mojang.realmsclient.gui.task.DataFetcher$Task; + onlinePlayersTask: com.mojang.realmsclient.gui.task.DataFetcher$Task; + newsManager: com.mojang.realmsclient.gui.RealmsNewsManager; + getTasks(): Array>; + } + const RealmsNewsManager: { + new(newsLocalStorage: com.mojang.realmsclient.util.RealmsPersistence): com.mojang.realmsclient.gui.RealmsNewsManager; + } + interface RealmsNewsManager { + hasUnreadNews(): boolean; + newsLink(): string; + updateUnreadNews(newsResponse: com.mojang.realmsclient.dto.RealmsNews): void; + } + const RealmsDataFetcher$ServerListData: { + new(serverList: Array, availableSnapshotServers: Array): com.mojang.realmsclient.gui.RealmsDataFetcher$ServerListData; + } + interface RealmsDataFetcher$ServerListData extends java.lang.Record { + serverList(): Array; + availableSnapshotServers(): Array; + } + } namespace util { const RealmsPersistence: { RealmsPersistenceData: typeof com.mojang.realmsclient.util.RealmsPersistence$RealmsPersistenceData; @@ -42777,82 +43700,6 @@ declare global { hasUnreadNews: boolean; } } - namespace client { - const RealmsClient: { - CompatibleVersionResponse: typeof com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; - Environment: typeof com.mojang.realmsclient.client.RealmsClient$Environment; - ENVIRONMENT: com.mojang.realmsclient.client.RealmsClient$Environment; - getOrCreate(): com.mojang.realmsclient.client.RealmsClient; - getOrCreate(minecraft: net.minecraft.client.Minecraft): com.mojang.realmsclient.client.RealmsClient; - } - interface RealmsClient { - getFeatureFlags(): Set; - listRealms(): com.mojang.realmsclient.dto.RealmsServerList; - listSnapshotEligibleRealms(): Array; - createSnapshotRealm(parentId: number): com.mojang.realmsclient.dto.RealmsServer; - getNotifications(): Array; - notificationsSeen(notificationUuids: Array): void; - notificationsDismiss(notificationUuids: Array): void; - getOwnRealm(realmId: number): com.mojang.realmsclient.dto.RealmsServer; - getPreferredRegionSelections(): com.mojang.realmsclient.dto.PreferredRegionsDto; - getLiveStats(): com.mojang.realmsclient.dto.RealmsServerPlayerLists; - join(realmId: number): com.mojang.realmsclient.dto.RealmsJoinInformation; - initializeRealm(realmId: number, name: string, motd: string): void; - hasParentalConsent(): boolean; - clientCompatible(): com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; - uninvite(realmId: number, profileId: java.util.UUID): void; - uninviteMyselfFrom(realmId: number): void; - invite(realmId: number, profileName: string): Array; - backupsFor(realmId: number): com.mojang.realmsclient.dto.BackupList; - updateConfiguration(realmId: number, name: string, description: string, regionSelectionPreference: com.mojang.realmsclient.dto.RegionSelectionPreferenceDto | null | undefined, slotId: number, options: com.mojang.realmsclient.dto.RealmsWorldOptions, settings: Array): void; - updateSlot(realmId: number, slotId: number, options: com.mojang.realmsclient.dto.RealmsWorldOptions, settings: Array): void; - switchSlot(realmId: number, slot: number): boolean; - restoreWorld(realmId: number, backupId: string): void; - fetchWorldTemplates(page: number, pageSize: number, type: com.mojang.realmsclient.dto.RealmsServer$WorldType): com.mojang.realmsclient.dto.WorldTemplatePaginatedList; - putIntoMinigameMode(realmId: number, minigameId: string): boolean; - op(realmId: number, profileId: java.util.UUID): com.mojang.realmsclient.dto.Ops; - deop(realmId: number, profileId: java.util.UUID): com.mojang.realmsclient.dto.Ops; - open(realmId: number): boolean; - close(realmId: number): boolean; - resetWorldWithTemplate(realmId: number, worldTemplateId: string): boolean; - subscriptionFor(realmId: number): com.mojang.realmsclient.dto.Subscription; - pendingInvitesCount(): number; - pendingInvites(): com.mojang.realmsclient.dto.PendingInvitesList; - acceptInvitation(invitationId: string): void; - requestDownloadInfo(realmId: number, slotId: number): com.mojang.realmsclient.dto.WorldDownload; - requestUploadInfo(realmId: number): com.mojang.realmsclient.dto.UploadInfo | null | undefined; - rejectInvitation(invitationId: string): void; - agreeToTos(): void; - getNews(): com.mojang.realmsclient.dto.RealmsNews; - sendPingResults(pingResult: com.mojang.realmsclient.dto.PingResult): void; - trialAvailable(): boolean; - deleteRealm(realmId: number): void; - } - const RealmsClient$CompatibleVersionResponse: { - COMPATIBLE: com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; - OUTDATED: com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; - OTHER: com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; - entries: kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.mojang.realmsclient.client.RealmsClient$CompatibleVersionResponse; - } - interface RealmsClient$CompatibleVersionResponse extends kotlin.Enum { - } - const RealmsClient$Environment: { - PRODUCTION: com.mojang.realmsclient.client.RealmsClient$Environment; - STAGE: com.mojang.realmsclient.client.RealmsClient$Environment; - LOCAL: com.mojang.realmsclient.client.RealmsClient$Environment; - entries: kotlin.enums.EnumEntries; - byName(name: string): java.util.Optional; - values(): Array; - valueOf(value: string): com.mojang.realmsclient.client.RealmsClient$Environment; - } - interface RealmsClient$Environment extends kotlin.Enum { - baseUrl: string; - alternativeUrl: string; - protocol: string; - } - } } } namespace google { @@ -43262,6 +44109,21 @@ declare global { getAnnotatedReturnType(): java.lang.reflect.AnnotatedType; } } + namespace net { + const HostAndPort: { + fromParts(host: string, port: number): com.google.common.net.HostAndPort; + fromHost(host: string): com.google.common.net.HostAndPort; + fromString(hostPortString: string): com.google.common.net.HostAndPort; + } + interface HostAndPort extends java.io.Serializable { + getHost(): string; + hasPort(): boolean; + getPort(): number; + getPortOrDefault(defaultPort: number): number; + withDefaultPort(defaultPort: number): com.google.common.net.HostAndPort; + requireBracketsForIPv6(): com.google.common.net.HostAndPort; + } + } namespace primitives { const UnsignedLong: { ZERO: com.google.common.primitives.UnsignedLong; @@ -43495,8363 +44357,616 @@ declare global { } } } + namespace v5 { + namespace loader { + const V5PreLaunch: { + new(): com.v5.loader.V5PreLaunch; + } + interface V5PreLaunch extends net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint { + } + } + } namespace chattriggers { namespace ctjs { - namespace api { - namespace vec { - const Vec3i: { - new(): com.chattriggers.ctjs.api.vec.Vec3i; - new(x: number): com.chattriggers.ctjs.api.vec.Vec3i; - new(x: number, y: number): com.chattriggers.ctjs.api.vec.Vec3i; - new(x: number, y: number, z: number): com.chattriggers.ctjs.api.vec.Vec3i; - } - interface Vec3i { - getX(): number; - getY(): number; - getZ(): number; - magnitudeSquared(): number; - magnitude(): number; - translated(dx: number, dy: number, dz: number): com.chattriggers.ctjs.api.vec.Vec3i; - scaled(scale: number): com.chattriggers.ctjs.api.vec.Vec3i; - scaled(xScale: number, yScale: number, zScale: number): com.chattriggers.ctjs.api.vec.Vec3i; - crossProduct(other: com.chattriggers.ctjs.api.vec.Vec3i): com.chattriggers.ctjs.api.vec.Vec3i; - dotProduct(other: com.chattriggers.ctjs.api.vec.Vec3i): number; - angleTo(other: com.chattriggers.ctjs.api.vec.Vec3i): number; - normalized(): com.chattriggers.ctjs.api.vec.Vec3f; - unaryMinus(): com.chattriggers.ctjs.api.vec.Vec3i; - plus(other: com.chattriggers.ctjs.api.vec.Vec3i): com.chattriggers.ctjs.api.vec.Vec3i; - minus(other: com.chattriggers.ctjs.api.vec.Vec3i): com.chattriggers.ctjs.api.vec.Vec3i; - } - const Vec3f: { - new(): com.chattriggers.ctjs.api.vec.Vec3f; - new(x: number): com.chattriggers.ctjs.api.vec.Vec3f; - new(x: number, y: number): com.chattriggers.ctjs.api.vec.Vec3f; - new(x: number, y: number, z: number): com.chattriggers.ctjs.api.vec.Vec3f; - } - interface Vec3f { - getX(): number; - getY(): number; - getZ(): number; - magnitudeSquared(): number; - magnitude(): number; - translated(dx: number, dy: number, dz: number): com.chattriggers.ctjs.api.vec.Vec3f; - scaled(scale: number): com.chattriggers.ctjs.api.vec.Vec3f; - scaled(xScale: number, yScale: number, zScale: number): com.chattriggers.ctjs.api.vec.Vec3f; - crossProduct(other: com.chattriggers.ctjs.api.vec.Vec3f): com.chattriggers.ctjs.api.vec.Vec3f; - dotProduct(other: com.chattriggers.ctjs.api.vec.Vec3f): number; - angleTo(other: com.chattriggers.ctjs.api.vec.Vec3f): number; - normalized(): com.chattriggers.ctjs.api.vec.Vec3f; - unaryMinus(): com.chattriggers.ctjs.api.vec.Vec3f; - plus(other: com.chattriggers.ctjs.api.vec.Vec3f): com.chattriggers.ctjs.api.vec.Vec3f; - minus(other: com.chattriggers.ctjs.api.vec.Vec3f): com.chattriggers.ctjs.api.vec.Vec3f; - component1(): number; - component2(): number; - component3(): number; - copy(x: number, y: number, z: number): com.chattriggers.ctjs.api.vec.Vec3f; - } - const Vec2f: { - new(): com.chattriggers.ctjs.api.vec.Vec2f; - new(x: number): com.chattriggers.ctjs.api.vec.Vec2f; - new(x: number, y: number): com.chattriggers.ctjs.api.vec.Vec2f; - } - interface Vec2f { - getX(): number; - getY(): number; - magnitudeSquared(): number; - magnitude(): number; - translated(dx: number, dy: number): com.chattriggers.ctjs.api.vec.Vec2f; - scaled(scale: number): com.chattriggers.ctjs.api.vec.Vec2f; - scaled(xScale: number, yScale: number): com.chattriggers.ctjs.api.vec.Vec2f; - dotProduct(other: com.chattriggers.ctjs.api.vec.Vec2f): number; - angleTo(other: com.chattriggers.ctjs.api.vec.Vec2f): number; - normalized(): com.chattriggers.ctjs.api.vec.Vec2f; - unaryMinus(): com.chattriggers.ctjs.api.vec.Vec2f; - plus(other: com.chattriggers.ctjs.api.vec.Vec2f): com.chattriggers.ctjs.api.vec.Vec2f; - minus(other: com.chattriggers.ctjs.api.vec.Vec2f): com.chattriggers.ctjs.api.vec.Vec2f; - component1(): number; - component2(): number; - copy(x: number, y: number): com.chattriggers.ctjs.api.vec.Vec2f; - } + namespace engine { + const WrappedThread: { + new(task: java.lang.Runnable): com.chattriggers.ctjs.engine.WrappedThread; } - namespace inventory { - namespace nbt { - const NBTBase: { - new(mcValue: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; - } - interface NBTBase extends com.chattriggers.ctjs.api.CTWrapper { - /** - * Gets the type byte for the tag. - */ - getId(): number; - /** - * Creates a clone of the tag. - */ - copy(): net.minecraft.nbt.Tag; - /** - * Return whether this compound has no tags. - */ - hasNoTags(): boolean; - hasTags(): boolean; - } - const NBTBase$Companion: { - fromMC(nbt: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; - new(): com.chattriggers.ctjs.api.inventory.nbt.NBTBase$Companion; - } - interface NBTBase$Companion { - fromMC(nbt: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; - new(): com.chattriggers.ctjs.api.inventory.nbt.NBTBase$Companion; - toObject(): any | null | undefined; - toObject(): org.mozilla.javascript.NativeObject; - toObject(): org.mozilla.javascript.NativeArray; - } - const NBTTagList: { - new(mcValue: net.minecraft.nbt.ListTag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; - } - interface NBTTagList extends com.chattriggers.ctjs.api.inventory.nbt.NBTBase { - getTagCount(): number; - appendTag(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; - appendTag(nbt: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; - set(id: number, nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; - set(id: number, nbt: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; - insertTag(index: number, nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; - insertTag(index: number, nbt: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; - removeTag(index: number): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; - getShortAt(index: number): java.util.Optional; - getIntAt(index: number): java.util.Optional; - getFloatAt(index: number): java.util.Optional; - getDoubleAt(index: number): java.util.Optional; - getStringTagAt(index: number): string; - getListAt(index: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; - getCompoundTagAt(index: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - getIntArrayAt(index: number): Array; - getLongArrayAt(index: number): Array; - get(index: number): net.minecraft.nbt.Tag; - get(index: number, type: number): any; - toArray(): org.mozilla.javascript.NativeArray; - } - const NBTTagCompound: { - NBTDataType: typeof com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - new(mcValue: net.minecraft.nbt.CompoundTag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - } - interface NBTTagCompound extends com.chattriggers.ctjs.api.inventory.nbt.NBTBase { - getTagMap(): Map; - getKeySet(): Set; - getTag(key: string): com.chattriggers.ctjs.api.inventory.nbt.NBTBase | null | undefined; - getTagId(key: string): number | null | undefined; - getByte(key: string): java.util.Optional; - getShort(key: string): java.util.Optional; - getInteger(key: string): java.util.Optional; - getLong(key: string): java.util.Optional; - getFloat(key: string): java.util.Optional; - getDouble(key: string): java.util.Optional; - getString(key: string): java.util.Optional; - getByteArray(key: string): java.util.Optional>; - getIntArray(key: string): java.util.Optional>; - getBoolean(key: string): java.util.Optional; - getCompoundTag(key: string): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - getTagList(key: string): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; - get(key: string, type: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType, tagType: number | null | undefined): any | null | undefined; - get(key: string): com.chattriggers.ctjs.api.inventory.nbt.NBTBase | null | undefined; - setNBTBase(key: string, value: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setNBTBase(key: string, value: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setBoolean(key: string, value: boolean): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setByte(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setShort(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setInteger(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setLong(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setFloat(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setDouble(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setString(key: string, value: string): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setByteArray(key: string, value: Array): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - setIntArray(key: string, value: Array): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - putLongArray(key: string, value: Array): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - set(key: string, value: any): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - removeTag(key: string): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; - toObject(): org.mozilla.javascript.NativeObject; - } - const NBTTagCompound$NBTDataType: { - BYTE: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - SHORT: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - INTEGER: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - LONG: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - FLOAT: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - DOUBLE: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - STRING: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - BYTE_ARRAY: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - INT_ARRAY: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - LONG_ARRAY: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - BOOLEAN: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - COMPOUND_TAG: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - TAG_LIST: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; - } - interface NBTTagCompound$NBTDataType extends kotlin.Enum { - } - const NBT: { - /** - * Creates a new [NBTBase] from the given [nbt] - * - * @param nbt the value to convert to NBT - * @param options optional argument to allow refinement of the NBT data. - * Possible options include: - * - coerceNumericStrings: Boolean, default false. - * E.g. "10b" as a byte, "20s" as a short, "30f" as a float, "40d" as a double, - * "50l" as a long - * - preferArraysOverLists: Boolean, default false - * E.g. a list with all bytes or integers will be converted to an NBTTagByteArray or - * NBTTagIntArray accordingly - * - * @return [NBTTagCompound] if [nbt] is an object, [NBTTagList] if [nbt] - * is an array and preferArraysOverLists is false, or [NBTBase] otherwise. - */ - parse(nbt: any): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; - /** - * Creates a new [NBTBase] from the given [nbt] - * - * @param nbt the value to convert to NBT - * @param options optional argument to allow refinement of the NBT data. - * Possible options include: - * - coerceNumericStrings: Boolean, default false. - * E.g. "10b" as a byte, "20s" as a short, "30f" as a float, "40d" as a double, - * "50l" as a long - * - preferArraysOverLists: Boolean, default false - * E.g. a list with all bytes or integers will be converted to an NBTTagByteArray or - * NBTTagIntArray accordingly - * - * @return [NBTTagCompound] if [nbt] is an object, [NBTTagList] if [nbt] - * is an array and preferArraysOverLists is false, or [NBTBase] otherwise. - */ - parse(nbt: any, options: org.mozilla.javascript.NativeObject | null | undefined): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; - toObject(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound): org.mozilla.javascript.NativeObject; - toArray(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTTagList): org.mozilla.javascript.NativeArray; - new(): com.chattriggers.ctjs.api.inventory.nbt.NBT; - } - interface NBT { - /** - * Creates a new [NBTBase] from the given [nbt] - * - * @param nbt the value to convert to NBT - * @param options optional argument to allow refinement of the NBT data. - * Possible options include: - * - coerceNumericStrings: Boolean, default false. - * E.g. "10b" as a byte, "20s" as a short, "30f" as a float, "40d" as a double, - * "50l" as a long - * - preferArraysOverLists: Boolean, default false - * E.g. a list with all bytes or integers will be converted to an NBTTagByteArray or - * NBTTagIntArray accordingly - * - * @return [NBTTagCompound] if [nbt] is an object, [NBTTagList] if [nbt] - * is an array and preferArraysOverLists is false, or [NBTBase] otherwise. - */ - parse(nbt: any): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; - /** - * Creates a new [NBTBase] from the given [nbt] - * - * @param nbt the value to convert to NBT - * @param options optional argument to allow refinement of the NBT data. - * Possible options include: - * - coerceNumericStrings: Boolean, default false. - * E.g. "10b" as a byte, "20s" as a short, "30f" as a float, "40d" as a double, - * "50l" as a long - * - preferArraysOverLists: Boolean, default false - * E.g. a list with all bytes or integers will be converted to an NBTTagByteArray or - * NBTTagIntArray accordingly - * - * @return [NBTTagCompound] if [nbt] is an object, [NBTTagList] if [nbt] - * is an array and preferArraysOverLists is false, or [NBTBase] otherwise. - */ - parse(nbt: any, options: org.mozilla.javascript.NativeObject | null | undefined): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; - toObject(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound): org.mozilla.javascript.NativeObject; - toArray(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTTagList): org.mozilla.javascript.NativeArray; - new(): com.chattriggers.ctjs.api.inventory.nbt.NBT; - } - } - namespace action { - const DropAction: { - new(slot: number, windowId: number): com.chattriggers.ctjs.api.inventory.action.DropAction; - } - interface DropAction extends com.chattriggers.ctjs.api.inventory.action.Action { - getHoldingCtrl(): boolean; - /** - * Whether the click should act as if control is being held (defaults to false) - * - * @param holdingCtrl to hold ctrl or not - */ - setHoldingCtrl(holdingCtrl: boolean): com.chattriggers.ctjs.api.inventory.action.DropAction; - } - const Action: { - Type: typeof com.chattriggers.ctjs.api.inventory.action.Action$Type; - new(slot: number, windowId: number): com.chattriggers.ctjs.api.inventory.action.Action; - } - interface Action { - getSlot(): number; - setSlot(value: number): void; - getWindowId(): number; - setWindowId(value: number): void; - setSlot(slot: number): com.chattriggers.ctjs.api.inventory.action.Action; - setWindowId(windowId: number): com.chattriggers.ctjs.api.inventory.action.Action; - } - const Action$Companion: { - /** - * Creates a new action. - * The Inventory must be a container, see [Inventory.isContainer]. - * The slot can be -999 for outside of the gui - * - * @param inventory the inventory to complete the action on - * @param slot the slot to complete the action on - * @param typeString the type of action to do (CLICK, DRAG, DROP, KEY) - * @return the new action - */ - of(inventory: com.chattriggers.ctjs.api.inventory.Inventory, slot: number, typeString: string): com.chattriggers.ctjs.api.inventory.action.Action; - new(): com.chattriggers.ctjs.api.inventory.action.Action$Companion; - } - interface Action$Companion { - /** - * Creates a new action. - * The Inventory must be a container, see [Inventory.isContainer]. - * The slot can be -999 for outside of the gui - * - * @param inventory the inventory to complete the action on - * @param slot the slot to complete the action on - * @param typeString the type of action to do (CLICK, DRAG, DROP, KEY) - * @return the new action - */ - of(inventory: com.chattriggers.ctjs.api.inventory.Inventory, slot: number, typeString: string): com.chattriggers.ctjs.api.inventory.action.Action; - new(): com.chattriggers.ctjs.api.inventory.action.Action$Companion; - } - const Action$Type: { - CLICK: com.chattriggers.ctjs.api.inventory.action.Action$Type; - DRAG: com.chattriggers.ctjs.api.inventory.action.Action$Type; - KEY: com.chattriggers.ctjs.api.inventory.action.Action$Type; - DROP: com.chattriggers.ctjs.api.inventory.action.Action$Type; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.inventory.action.Action$Type; - } - interface Action$Type extends kotlin.Enum { - } - const KeyAction: { - new(slot: number, windowId: number): com.chattriggers.ctjs.api.inventory.action.KeyAction; - } - interface KeyAction extends com.chattriggers.ctjs.api.inventory.action.Action { - getKey(): number; - /** - * Which key to act as if has been clicked (REQUIRED). - * Options currently are 0-8, representing the hotbar keys - * - * @param key which key to "click" - */ - setKey(key: number): com.chattriggers.ctjs.api.inventory.action.KeyAction; - } - const ClickAction: { - ClickType: typeof com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; - new(slot: number, windowId: number): com.chattriggers.ctjs.api.inventory.action.ClickAction; - } - interface ClickAction extends com.chattriggers.ctjs.api.inventory.action.Action { - getClickType(): com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; - /** - * The type of click (REQUIRED) - * - * @param clickType the new click type - */ - setClickType(clickType: com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType): com.chattriggers.ctjs.api.inventory.action.ClickAction; - getHoldingShift(): boolean; - /** - * Whether the click should act as if shift is being held (defaults to false) - * - * @param holdingShift to hold shift or not - */ - setHoldingShift(holdingShift: boolean): com.chattriggers.ctjs.api.inventory.action.ClickAction; - getItemInHand(): boolean; - /** - * Whether the click should act as if an item is being held - * (defaults to whether there actually is an item in the hand) - * - * @param itemInHand to be holding an item or not - */ - setItemInHand(itemInHand: boolean): com.chattriggers.ctjs.api.inventory.action.ClickAction; - getPickupAll(): boolean; - /** - * Whether the click should try to pick up all items of said type in the inventory (essentially double clicking) - * (defaults to whether there actually is an item in the hand) - * - * @param pickupAll to pick up all items of the same type - */ - setPickupAll(pickupAll: boolean): com.chattriggers.ctjs.api.inventory.action.ClickAction; - /** - * Sets the type of click. - * Possible values are: LEFT, RIGHT, MIDDLE - * - * @param clickType the click type - * @return the current Action for method chaining - */ - setClickString(clickType: string): com.chattriggers.ctjs.api.inventory.action.ClickAction; - } - const ClickAction$ClickType: { - LEFT: com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; - RIGHT: com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; - MIDDLE: com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; - } - interface ClickAction$ClickType extends kotlin.Enum { - getButton(): number; - } - const DragAction: { - ClickType: typeof com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; - Stage: typeof com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; - new(slot: number, windowId: number): com.chattriggers.ctjs.api.inventory.action.DragAction; - } - interface DragAction extends com.chattriggers.ctjs.api.inventory.action.Action { - getClickType(): com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; - /** - * The type of click (REQUIRED) - * - * @param clickType the new click type - */ - setClickType(clickType: com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType): com.chattriggers.ctjs.api.inventory.action.DragAction; - getStage(): com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; - /** - * The stage of this drag (REQUIRED) - * BEGIN is when beginning the drag - * SLOT is for each slot being dragged into - * END is for ending the drag - * - * @param stage the stage - */ - setStage(stage: com.chattriggers.ctjs.api.inventory.action.DragAction$Stage): com.chattriggers.ctjs.api.inventory.action.DragAction; - /** - * Sets the type of click. - * Possible values are: LEFT, RIGHT, MIDDLE - * - * @param clickType the click type - * @return the current Action for method chaining - */ - setClickString(clickType: string): com.chattriggers.ctjs.api.inventory.action.DragAction; - /** - * Sets the stage of this drag. - * Possible values are: BEGIN, SLOT, END [stage] - * - * @param stage the stage - * @return the current Action for method chaining - */ - setStageString(stage: string): com.chattriggers.ctjs.api.inventory.action.DragAction; - } - const DragAction$ClickType: { - LEFT: com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; - RIGHT: com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; - MIDDLE: com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; - } - interface DragAction$ClickType extends kotlin.Enum { - getButton(): number; - } - const DragAction$Stage: { - BEGIN: com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; - SLOT: com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; - END: com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; - } - interface DragAction$Stage extends kotlin.Enum { - getStage(): number; - } - } - const Inventory: { - new(inventory: net.minecraft.world.Container): com.chattriggers.ctjs.api.inventory.Inventory; - new(container: net.minecraft.client.gui.screens.inventory.AbstractContainerScreen): com.chattriggers.ctjs.api.inventory.Inventory; - } - interface Inventory { - getInventory(): net.minecraft.world.Container; - getScreen(): net.minecraft.client.gui.screens.inventory.AbstractContainerScreen | null | undefined; - /** - * Gets the total size of the Inventory. - * The player's inventory size is 36, 27 for the main inventory, plus 9 for the hotbar. - * A single chest's size would be 63, because it also counts the player's inventory. - * - * @return the size of the Inventory - */ - getSize(): number; - /** - * Gets the item in any slot, starting from 0. - * - * @param slot the slot index - * @return the [Item] in that slot, or null if there is no item - */ - getStackInSlot(slot: number): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - /** - * Returns the window identifier number of this Inventory. - * This Inventory must be backed by a HandledScreen [isScreen] - * - * @return the window id - */ - getWindowId(): number; - /** - * Checks if an item can be shift clicked into a certain slot, i.e. coal into the bottom of a furnace. - * - * @param slot the slot index - * @param item the item for checking - * @return whether it can be shift clicked in - */ - isItemValidForSlot(slot: number, item: com.chattriggers.ctjs.api.inventory.Item): boolean; - /** - * @return a list of the [Item]s in an inventory - */ - getItems(): Array; - /** - * Checks whether the inventory contains the given item. - * - * @param item the item to check for - * @return whether the inventory contains the item - */ - contains(item: com.chattriggers.ctjs.api.inventory.Item): boolean; - /** - * Checks whether the inventory contains an item with ID. - * - * @param id the ID of the item to match - * @return whether the inventory contains an item with ID - */ - contains(id: number): boolean; - /** - * Gets the index of any item in the inventory, and returns the slot number. - * Returns -1 if the inventory does not contain the item. - * - * @param item the item to check for - * @return the index of the given item - */ - indexOf(item: com.chattriggers.ctjs.api.inventory.Item): number; - /** - * Gets the index of any item in the inventory with matching ID, and returns the slot number. - * Returns -1 if the inventory does not contain the item. - * - * @param id the item ID to check for - * @return the index of the given item with ID - */ - indexOf(id: number): number; - /** - * Returns true if this Inventory wraps a [HandledScreen] object - * rather than an [MCInventory] object - * - * @return if this is a container - */ - isScreen(): boolean; - /** - * Shorthand for [ClickAction] - * - * @param slot the slot to click on - * @param button the mouse button to use. "LEFT" by default. - * @param shift whether shift is being held. False by default - * @return this inventory for method chaining - */ - click(slot: number): com.chattriggers.ctjs.api.inventory.Inventory; - /** - * Shorthand for [ClickAction] - * - * @param slot the slot to click on - * @param button the mouse button to use. "LEFT" by default. - * @param shift whether shift is being held. False by default - * @return this inventory for method chaining - */ - click(slot: number, shift: boolean): com.chattriggers.ctjs.api.inventory.Inventory; - /** - * Shorthand for [ClickAction] - * - * @param slot the slot to click on - * @param button the mouse button to use. "LEFT" by default. - * @param shift whether shift is being held. False by default - * @return this inventory for method chaining - */ - click(slot: number, shift: boolean, button: string): com.chattriggers.ctjs.api.inventory.Inventory; - /** - * Shorthand for [DropAction] - * - * @param slot the slot to drop - * @param ctrl whether control should be held (drops whole stack) - * @return this inventory for method chaining - */ - drop(slot: number, ctrl: boolean): com.chattriggers.ctjs.api.inventory.Inventory; - /** - * Shorthand for [DragAction] - * - * @param type what click type this should be: LEFT, MIDDLE, RIGHT - * @param slots all of the slots to drag onto - * @return this inventory for method chaining - */ - drag(type: string, slots: number): com.chattriggers.ctjs.api.inventory.Inventory; - /** - * Gets the name of the inventory, simply "container" for most chest-like blocks. - * - * @return the name of the inventory - */ - getName(): com.chattriggers.ctjs.api.message.TextComponent; - getClassName(): string; - } - const Item: { - new(mcValue: net.minecraft.world.item.ItemStack): com.chattriggers.ctjs.api.inventory.Item; - new(type: com.chattriggers.ctjs.api.inventory.ItemType): com.chattriggers.ctjs.api.inventory.Item; - } - interface Item extends com.chattriggers.ctjs.api.CTWrapper { - getType(): com.chattriggers.ctjs.api.inventory.ItemType; - getStackSize(): number; - setStackSize(size: number): com.chattriggers.ctjs.api.inventory.Item; - getEnchantments(): Map | null | undefined, number>; - isEnchantable(): boolean; - isEnchanted(): boolean; - canPlaceOn(pos: com.chattriggers.ctjs.api.world.block.BlockPos): boolean; - canPlaceOn(block: com.chattriggers.ctjs.api.world.block.Block): boolean; - canHarvest(pos: com.chattriggers.ctjs.api.world.block.BlockPos): boolean; - canHarvest(block: com.chattriggers.ctjs.api.world.block.Block): boolean; - getDurability(): number; - getMaxDamage(): number; - getDamage(): number; - isDamageable(): boolean; - getName(): string; - setName(name: com.chattriggers.ctjs.api.message.TextComponent | null | undefined): com.chattriggers.ctjs.api.inventory.Item; - resetName(): void; - getLore(): Array; - getLore(advanced: boolean): Array; - setLore(lore: Array): void; - resetLore(): void; - getNBT(): net.minecraft.core.component.DataComponentMap; - draw(): void; - draw(x: number): void; - draw(x: number, y: number): void; - draw(x: number, y: number, scale: number): void; - } - const ItemType: { - new(mcValue: net.minecraft.world.item.Item): com.chattriggers.ctjs.api.inventory.ItemType; - new(itemName: string): com.chattriggers.ctjs.api.inventory.ItemType; - new(id: number): com.chattriggers.ctjs.api.inventory.ItemType; - new(blockType: com.chattriggers.ctjs.api.world.block.BlockType): com.chattriggers.ctjs.api.inventory.ItemType; - } - interface ItemType extends com.chattriggers.ctjs.api.CTWrapper { - getName(): string; - getNameComponent(): com.chattriggers.ctjs.api.message.TextComponent; - getId(): number; - getTranslationKey(): string; - getRegistryName(): string; - asItem(): com.chattriggers.ctjs.api.inventory.Item; - } - const ItemType$Companion: { - fromMC(mcValue: net.minecraft.world.item.Item): com.chattriggers.ctjs.api.inventory.ItemType | null | undefined; - new(): com.chattriggers.ctjs.api.inventory.ItemType$Companion; - } - interface ItemType$Companion { - fromMC(mcValue: net.minecraft.world.item.Item): com.chattriggers.ctjs.api.inventory.ItemType | null | undefined; - new(): com.chattriggers.ctjs.api.inventory.ItemType$Companion; - } - const Item$Companion: { - fromMC(mcValue: net.minecraft.world.item.ItemStack): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - new(): com.chattriggers.ctjs.api.inventory.Item$Companion; - } - interface Item$Companion { - fromMC(mcValue: net.minecraft.world.item.ItemStack): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - new(): com.chattriggers.ctjs.api.inventory.Item$Companion; - } - const Slot: { - new(mcValue: net.minecraft.world.inventory.Slot): com.chattriggers.ctjs.api.inventory.Slot; - } - interface Slot extends com.chattriggers.ctjs.api.CTWrapper { - getIndex(): number; - getDisplayX(): number; - getDisplayY(): number; - getInventory(): com.chattriggers.ctjs.api.inventory.Inventory; - getItem(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - isEnabled(): boolean; - } + interface WrappedThread { + start(): void; + run(): void; + stop(): void; + interrupt(): void; + isInterrupted(): boolean; + destroy(): void; + isAlive(): boolean; + suspend(): void; + resume(): void; + setDaemon(on: boolean): void; + getId(): number; } - namespace message { - const TextComponent: { - /** - * Creates an empty [TextComponent] with a single, unstyled, empty part. - */ - new(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Creates a [TextComponent] from a variable number of objects. These - * objects can be: - * - A plain string possibly containing formatting codes. If the string has - * formatting codes, it will be split into different parts accordingly - * - A [TextComponent], whose parts will be appended in sequence to this - * [TextComponent]'s list of parts - * - A [Text] object, which acts as a single part - * - A JS object, which must contain a "text" key, and can optionally contain - * any of the [Style] keys: - * - color: a [TextColor] or string format of a [TextColor], [Formatting], or a hex value - * - bold: boolean - * - italic: boolean - * - underline: boolean - * - strikethrough: boolean - * - obfuscated: boolean - * - clickEvent: object with { action: [ClickEvent.Action] or string format of a [ClickEvent.Action], value: string or null } - * - hoverEvent: object with { action: [HoverEvent.Action], string format of a [HoverEvent.Action], or null, value: string or null } - * - insertion: string or null - * - font: string format of an [net.minecraft.util.Identifier] - * - * @see Style - */ - new(parts: any): com.chattriggers.ctjs.api.message.TextComponent; - } - interface TextComponent extends net.minecraft.network.chat.Component, kotlin.collections.Iterable { - /** - * Returns the text of all parts concatenated without formatting codes. - */ - getUnformattedText(): string; - /** - * Returns the text of all parts concatenated with formatting codes. - */ - getFormattedText(): string; - getSize(): number; - /** - * If this [TextComponent] is recursive, sending this instance (via [chat] or - * [actionBar]) may trigger other `chat` triggers as if it had been received by - * the server. [TextComponent]s are non-recursive by default. - * - * @return true if the message can trigger other triggers. - */ - isRecursive(): boolean; - /** - * Get the chat line ID of this message, if it exists. The chat line can be used - * to easily edit or delete a message later via [ChatLib.editChat] and - * [ChatLib.deleteChat]. - * - * @return the chat line ID of the message, or -1 if this [TextComponent] does - * not have an associated chat line ID. - */ - getChatLineId(): number; - /** - * @return a new [TextComponent] with the given chat line id - */ - withChatLineId(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * @return a new [TextComponent] with the given chat line id - */ - withChatLineId(id: number): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Sets whether the message can trigger other triggers. - * - * @param recursive true if message can trigger other triggers. - */ - withRecursive(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Sets whether the message can trigger other triggers. - * - * @param recursive true if message can trigger other triggers. - */ - withRecursive(recursive: boolean): com.chattriggers.ctjs.api.message.TextComponent; - /** - * @return a new [TextComponent] with the specified [value] appended to the end. - * This accepts all types of objects that the vararg constructor does. - */ - withText(value: any): com.chattriggers.ctjs.api.message.TextComponent; - /** - * @return a new [TextComponent] with the specified [value] inserted at [index]. - * This accepts all types of objects that the vararg constructor does. - */ - withTextAt(index: number, value: any): com.chattriggers.ctjs.api.message.TextComponent; - /** - * @return a new [TextComponent] without the part at [index] - */ - withoutTextAt(index: number): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Edits this text component, replacing it with the given [newText]. Note that - * this compares [TextComponent]s based on [formattedText]; if an exact match - * is needed, use [ChatLib.editChat] in conjunction with a chat line ID. - */ - edit(newText: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Edits this text component, replacing it with a new [TextComponent] from the - * given [parts]. Note that this compares [TextComponent]s based on - * [formattedText]; if an exact match is needed, use [ChatLib.editChat] in - * conjunction with a chat line ID. - */ - edit(parts: any): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Sends this [TextComponent] to the players chat. - * - * Note that this is purely client-side, and will not be sent to the server. If [isRecursive], - * will trigger any matching `chat` triggers - * - * @see ChatLib.chat - * @see ChatLib.say - */ - chat(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Sends this [TextComponent] to the players action bar. - * - * If [isRecursive], will trigger any matching `actionBar` triggers - * - * @see ChatLib.actionBar - */ - actionBar(): com.chattriggers.ctjs.api.message.TextComponent; - contains(element: org.mozilla.javascript.NativeObject): boolean; - containsAll(elements: Array): boolean; - get(index: number): org.mozilla.javascript.NativeObject; - indexOf(element: org.mozilla.javascript.NativeObject): number; - isEmpty(): boolean; - } - const Chat: { - sendGradientMsg(prefix: string, startRgb: number, endRgb: number, messages: any): void; - new(): com.chattriggers.ctjs.api.message.Chat; - } - interface Chat { - sendGradientMsg(prefix: string, startRgb: number, endRgb: number, messages: any): void; - new(): com.chattriggers.ctjs.api.message.Chat; - } - const ChatLib: { - /** - * Prints text in the chat. - * The text can be a String or a [TextComponent] - * - * @param text the text to be printed - */ - chat(text: any | null | undefined): void; - /** - * Shows text in the action bar. - * The text can be a String or a [TextComponent] - * - * @param text the text to show - */ - actionBar(text: any | null | undefined): void; - /** - * Simulates a chat message to be caught by other triggers for testing. - * The text can be a String or a [TextComponent] - * - * @param text The message to simulate - */ - simulateChat(text: any | null | undefined): void; - /** - * Replaces the easier to type '&' color codes with proper color codes in a string. - * - * @param message The string to add color codes to - * @return the formatted message - */ - addColor(message: string | null | undefined): string; - /** - * Says chat message. - * This message is actually sent to the server. - * - * @param text the message to be sent - */ - say(text: string): void; - /** - * Runs a command. - * - * @param text the command to run, without the leading slash (Ex. "help") - * @param clientSide should the command be run as a client side command - */ - command(text: string): void; - /** - * Runs a command. - * - * @param text the command to run, without the leading slash (Ex. "help") - * @param clientSide should the command be run as a client side command - */ - command(text: string, clientSide: boolean): void; - /** - * Clear all chat messages - */ - clearChat(): void; - /** - * Get a message that will be perfectly one line of chat, - * the separator repeated as many times as necessary. - * The separator defaults to "-" - * - * @param separator the message to split chat with - * @return the message that would split chat - */ - getChatBreak(): string; - /** - * Get a message that will be perfectly one line of chat, - * the separator repeated as many times as necessary. - * The separator defaults to "-" - * - * @param separator the message to split chat with - * @return the message that would split chat - */ - getChatBreak(separator: string): string; - /** - * Gets the width of Minecraft's chat - * - * @return the width of chat - */ - getChatWidth(): number; - /** - * Remove all formatting - * - * @param text the string to un-format - * @return the unformatted string - */ - removeFormatting(text: string): string; - /** - * Replaces Minecraft formatted text with normal formatted text - * - * @param text the formatted string - * @return the unformatted string - */ - replaceFormatting(text: string): string; - /** - * Get a message that will be perfectly centered in chat. - * - * @param text the text to be centered - * @return the centered message - */ - getCenteredText(text: string): string; - /** - * Copies the given String to the user's clipboard - * - * @param text the text to copy - */ - copyToClipboard(text: string): void; - /** - * Edits an already sent chat message matched by [regexp]. - * - * @param regexp the regex object to match to the message - * @param replacements the new message(s) to be put in replace of the old one - */ - editChat(regexp: org.mozilla.javascript.regexp.NativeRegExp, replacements: any): void; - /** - * Edits an already sent chat message by the text of the chat - * - * @param toReplace the unformatted text of the message to be replaced - * @param replacements the new message(s) to be put in place of the old one - */ - editChat(toReplace: string, replacements: any): void; - /** - * Edits an already sent chat message by the [TextComponent] - * - * @param toReplace the message to be replaced - * @param replacements the new message(s) to be put in place of the old one - */ - editChat(toReplace: com.chattriggers.ctjs.api.message.TextComponent, replacements: any): void; - /** - * Edits an already sent chat message by its chat line id - * - * @param chatLineId the chat line id of the message to be replaced - * @param replacements the new message(s) to be put in place of the old one - */ - editChat(chatLineId: number, replacements: any): void; - /** - * Edits an already sent chat message by given a callback that receives - * [TextComponent] instances - * - * @param matcher a function that accepts a [TextComponent] and returns a boolean - * @param replacements the new message(s) to be put in place of the old one - */ - editChat(matcher: kotlin.Function1, replacements: any): void; - /** - * Deletes an already sent chat message matching [regexp]. - * - * @param regexp the regex object to match to the message - */ - deleteChat(regexp: org.mozilla.javascript.regexp.NativeRegExp): void; - /** - * Deletes an already sent chat message by the text of the chat - * - * @param toDelete the unformatted text of the message to be deleted - */ - deleteChat(toDelete: string): void; - /** - * Deletes an already sent chat message by the [TextComponent] - * - * @param toDelete the message to be deleted - */ - deleteChat(toDelete: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Deletes an already sent chat message by its chat line id - * - * @param chatLineId the chat line id of the message to be deleted - */ - deleteChat(chatLineId: number): void; - /** - * Deletes an already sent chat message given a callback that receives - * [TextComponent] instances - * - * @param matcher a function that accepts a [TextComponent] and returns a boolean - */ - deleteChat(matcher: kotlin.Function1): void; - /** - * Gets the previous 1000 lines of chat - * - * @return A list of the last 1000 chat lines - */ - getChatLines(): Array; - /** - * Adds a message to the player's chat history. This allows the message to - * show up for the player when pressing the up/down keys while in the chat gui - * - * @param index the index to insert the message - * @param message the message to add to chat history - */ - addToSentMessageHistory(message: string): void; - /** - * Adds a message to the player's chat history. This allows the message to - * show up for the player when pressing the up/down keys while in the chat gui - * - * @param index the index to insert the message - * @param message the message to add to chat history - */ - addToSentMessageHistory(index: number, message: string): void; - new(): com.chattriggers.ctjs.api.message.ChatLib; - } - interface ChatLib { - /** - * Prints text in the chat. - * The text can be a String or a [TextComponent] - * - * @param text the text to be printed - */ - chat(text: any | null | undefined): void; - /** - * Shows text in the action bar. - * The text can be a String or a [TextComponent] - * - * @param text the text to show - */ - actionBar(text: any | null | undefined): void; - /** - * Simulates a chat message to be caught by other triggers for testing. - * The text can be a String or a [TextComponent] - * - * @param text The message to simulate - */ - simulateChat(text: any | null | undefined): void; - /** - * Replaces the easier to type '&' color codes with proper color codes in a string. - * - * @param message The string to add color codes to - * @return the formatted message - */ - addColor(message: string | null | undefined): string; - /** - * Says chat message. - * This message is actually sent to the server. - * - * @param text the message to be sent - */ - say(text: string): void; - /** - * Runs a command. - * - * @param text the command to run, without the leading slash (Ex. "help") - * @param clientSide should the command be run as a client side command - */ - command(text: string): void; - /** - * Runs a command. - * - * @param text the command to run, without the leading slash (Ex. "help") - * @param clientSide should the command be run as a client side command - */ - command(text: string, clientSide: boolean): void; - /** - * Clear all chat messages - */ - clearChat(): void; - /** - * Get a message that will be perfectly one line of chat, - * the separator repeated as many times as necessary. - * The separator defaults to "-" - * - * @param separator the message to split chat with - * @return the message that would split chat - */ - getChatBreak(): string; - /** - * Get a message that will be perfectly one line of chat, - * the separator repeated as many times as necessary. - * The separator defaults to "-" - * - * @param separator the message to split chat with - * @return the message that would split chat - */ - getChatBreak(separator: string): string; - /** - * Gets the width of Minecraft's chat - * - * @return the width of chat - */ - getChatWidth(): number; - /** - * Remove all formatting - * - * @param text the string to un-format - * @return the unformatted string - */ - removeFormatting(text: string): string; - /** - * Replaces Minecraft formatted text with normal formatted text - * - * @param text the formatted string - * @return the unformatted string - */ - replaceFormatting(text: string): string; - /** - * Get a message that will be perfectly centered in chat. - * - * @param text the text to be centered - * @return the centered message - */ - getCenteredText(text: string): string; - /** - * Copies the given String to the user's clipboard - * - * @param text the text to copy - */ - copyToClipboard(text: string): void; - /** - * Edits an already sent chat message matched by [regexp]. - * - * @param regexp the regex object to match to the message - * @param replacements the new message(s) to be put in replace of the old one - */ - editChat(regexp: org.mozilla.javascript.regexp.NativeRegExp, replacements: any): void; - /** - * Edits an already sent chat message by the text of the chat - * - * @param toReplace the unformatted text of the message to be replaced - * @param replacements the new message(s) to be put in place of the old one - */ - editChat(toReplace: string, replacements: any): void; - /** - * Edits an already sent chat message by the [TextComponent] - * - * @param toReplace the message to be replaced - * @param replacements the new message(s) to be put in place of the old one - */ - editChat(toReplace: com.chattriggers.ctjs.api.message.TextComponent, replacements: any): void; - /** - * Edits an already sent chat message by its chat line id - * - * @param chatLineId the chat line id of the message to be replaced - * @param replacements the new message(s) to be put in place of the old one - */ - editChat(chatLineId: number, replacements: any): void; - /** - * Edits an already sent chat message by given a callback that receives - * [TextComponent] instances - * - * @param matcher a function that accepts a [TextComponent] and returns a boolean - * @param replacements the new message(s) to be put in place of the old one - */ - editChat(matcher: kotlin.Function1, replacements: any): void; - /** - * Deletes an already sent chat message matching [regexp]. - * - * @param regexp the regex object to match to the message - */ - deleteChat(regexp: org.mozilla.javascript.regexp.NativeRegExp): void; - /** - * Deletes an already sent chat message by the text of the chat - * - * @param toDelete the unformatted text of the message to be deleted - */ - deleteChat(toDelete: string): void; - /** - * Deletes an already sent chat message by the [TextComponent] - * - * @param toDelete the message to be deleted - */ - deleteChat(toDelete: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Deletes an already sent chat message by its chat line id - * - * @param chatLineId the chat line id of the message to be deleted - */ - deleteChat(chatLineId: number): void; - /** - * Deletes an already sent chat message given a callback that receives - * [TextComponent] instances - * - * @param matcher a function that accepts a [TextComponent] and returns a boolean - */ - deleteChat(matcher: kotlin.Function1): void; - /** - * Gets the previous 1000 lines of chat - * - * @return A list of the last 1000 chat lines - */ - getChatLines(): Array; - /** - * Adds a message to the player's chat history. This allows the message to - * show up for the player when pressing the up/down keys while in the chat gui - * - * @param index the index to insert the message - * @param message the message to add to chat history - */ - addToSentMessageHistory(message: string): void; - /** - * Adds a message to the player's chat history. This allows the message to - * show up for the player when pressing the up/down keys while in the chat gui - * - * @param index the index to insert the message - * @param message the message to add to chat history - */ - addToSentMessageHistory(index: number, message: string): void; - new(): com.chattriggers.ctjs.api.message.ChatLib; - } + const WrappedThread$Companion: { + sleep(millis: number): void; + sleep(millis: number, nanos: number): void; + currentThread(): java.lang.Thread; + new(): com.chattriggers.ctjs.engine.WrappedThread$Companion; } - namespace world { - namespace block { - const BlockType: { - new(mcValue: net.minecraft.world.level.block.Block): com.chattriggers.ctjs.api.world.block.BlockType; - new(block: com.chattriggers.ctjs.api.world.block.BlockType): com.chattriggers.ctjs.api.world.block.BlockType; - new(blockName: string): com.chattriggers.ctjs.api.world.block.BlockType; - new(blockID: number): com.chattriggers.ctjs.api.world.block.BlockType; - new(item: com.chattriggers.ctjs.api.inventory.Item): com.chattriggers.ctjs.api.world.block.BlockType; - } - interface BlockType extends com.chattriggers.ctjs.api.CTWrapper { - /** - * Returns a [Block] based on this block and the - * provided BlockPos - * - * @param blockPos the block position - * @return a [Block] object - */ - withBlockPos(blockPos: com.chattriggers.ctjs.api.world.block.BlockPos): com.chattriggers.ctjs.api.world.block.Block; - getID(): number; - /** - * Gets the block's registry name. - * Example: minecraft:oak_planks - * - * @return the block's registry name - */ - getRegistryName(): string; - /** - * Gets the block's translation key. - * Example: block.minecraft.oak_planks - * - * @return the block's translation key - */ - getTranslationKey(): string; - /** - * Gets the block's localized name. - * Example: Wooden Planks - * - * @return the block's localized name - */ - getName(): string; - getLightValue(): number; - getDefaultState(): net.minecraft.world.level.block.state.BlockState; - canProvidePower(): boolean; - isTranslucent(): boolean; - } - const BlockPos: { - new(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.block.BlockPos; - new(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.block.BlockPos; - new(pos: com.chattriggers.ctjs.api.vec.Vec3i): com.chattriggers.ctjs.api.world.block.BlockPos; - new(pos: net.minecraft.core.BlockPos): com.chattriggers.ctjs.api.world.block.BlockPos; - new(source: com.chattriggers.ctjs.api.entity.Entity): com.chattriggers.ctjs.api.world.block.BlockPos; - } - interface BlockPos extends com.chattriggers.ctjs.api.vec.Vec3i, com.chattriggers.ctjs.api.CTWrapper { - up(): com.chattriggers.ctjs.api.world.block.BlockPos; - up(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; - down(): com.chattriggers.ctjs.api.world.block.BlockPos; - down(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; - north(): com.chattriggers.ctjs.api.world.block.BlockPos; - north(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; - south(): com.chattriggers.ctjs.api.world.block.BlockPos; - south(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; - east(): com.chattriggers.ctjs.api.world.block.BlockPos; - east(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; - west(): com.chattriggers.ctjs.api.world.block.BlockPos; - west(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; - offset(facing: com.chattriggers.ctjs.api.world.block.BlockFace): com.chattriggers.ctjs.api.world.block.BlockPos; - offset(facing: com.chattriggers.ctjs.api.world.block.BlockFace, n: number): com.chattriggers.ctjs.api.world.block.BlockPos; - distanceTo(other: com.chattriggers.ctjs.api.world.block.BlockPos): number; - toVec3d(): net.minecraft.world.phys.Vec3; - } - const BlockFace: { - DOWN: com.chattriggers.ctjs.api.world.block.BlockFace; - UP: com.chattriggers.ctjs.api.world.block.BlockFace; - NORTH: com.chattriggers.ctjs.api.world.block.BlockFace; - SOUTH: com.chattriggers.ctjs.api.world.block.BlockFace; - WEST: com.chattriggers.ctjs.api.world.block.BlockFace; - EAST: com.chattriggers.ctjs.api.world.block.BlockFace; - Plane: typeof com.chattriggers.ctjs.api.world.block.BlockFace$Plane; - AxisDirection: typeof com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; - Axis: typeof com.chattriggers.ctjs.api.world.block.BlockFace$Axis; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.world.block.BlockFace; - } - interface BlockFace extends kotlin.Enum, net.minecraft.util.StringRepresentable, com.chattriggers.ctjs.api.CTWrapper { - getAxisDirection(): com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; - getAxis(): com.chattriggers.ctjs.api.world.block.BlockFace$Axis; - getDirectionVec(): com.chattriggers.ctjs.api.vec.Vec3i; - getOpposite(): com.chattriggers.ctjs.api.world.block.BlockFace; - getOffsetX(): number; - getOffsetY(): number; - getOffsetZ(): number; - rotateAround(axis: com.chattriggers.ctjs.api.world.block.BlockFace$Axis): com.chattriggers.ctjs.api.world.block.BlockFace; - rotateX(): com.chattriggers.ctjs.api.world.block.BlockFace; - rotateY(): com.chattriggers.ctjs.api.world.block.BlockFace; - rotateZ(): com.chattriggers.ctjs.api.world.block.BlockFace; - } - const BlockFace$AxisDirection: { - POSITIVE: com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; - NEGATIVE: com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; - } - interface BlockFace$AxisDirection extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { - getOffset(): number; - } - const BlockFace$AxisDirection$Companion: { - fromMC(axisDirection: net.minecraft.core.Direction$AxisDirection): com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; - new(): unknown; - } - interface BlockFace$AxisDirection$Companion { - fromMC(axisDirection: net.minecraft.core.Direction$AxisDirection): com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; - new(): unknown; - } - const BlockFace$Axis: { - X: com.chattriggers.ctjs.api.world.block.BlockFace$Axis; - Y: com.chattriggers.ctjs.api.world.block.BlockFace$Axis; - Z: com.chattriggers.ctjs.api.world.block.BlockFace$Axis; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.world.block.BlockFace$Axis; - } - interface BlockFace$Axis extends kotlin.Enum, net.minecraft.util.StringRepresentable, com.chattriggers.ctjs.api.CTWrapper { - getPlane(): com.chattriggers.ctjs.api.world.block.BlockFace$Plane; - isHorizontal(): boolean; - isVertical(): boolean; - } - const BlockFace$Plane: { - HORIZONTAL: com.chattriggers.ctjs.api.world.block.BlockFace$Plane; - VERTICAL: com.chattriggers.ctjs.api.world.block.BlockFace$Plane; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.world.block.BlockFace$Plane; - } - interface BlockFace$Plane extends kotlin.Enum, kotlin.collections.Iterable { - facings(): Array; - } - const BlockFace$Axis$Companion: { - fromMC(axis: net.minecraft.core.Direction$Axis): com.chattriggers.ctjs.api.world.block.BlockFace$Axis; - new(): unknown; - } - interface BlockFace$Axis$Companion { - fromMC(axis: net.minecraft.core.Direction$Axis): com.chattriggers.ctjs.api.world.block.BlockFace$Axis; - new(): unknown; - } - const BlockFace$Companion: { - fromMC(facing: net.minecraft.core.Direction): com.chattriggers.ctjs.api.world.block.BlockFace; - new(): com.chattriggers.ctjs.api.world.block.BlockFace$Companion; - } - interface BlockFace$Companion { - fromMC(facing: net.minecraft.core.Direction): com.chattriggers.ctjs.api.world.block.BlockFace; - new(): com.chattriggers.ctjs.api.world.block.BlockFace$Companion; - } - const Block: { - new(type: com.chattriggers.ctjs.api.world.block.BlockType, pos: com.chattriggers.ctjs.api.world.block.BlockPos, face: com.chattriggers.ctjs.api.world.block.BlockFace | null | undefined): com.chattriggers.ctjs.api.world.block.Block; - } - interface Block { - getType(): com.chattriggers.ctjs.api.world.block.BlockType; - getPos(): com.chattriggers.ctjs.api.world.block.BlockPos; - getFace(): com.chattriggers.ctjs.api.world.block.BlockFace | null | undefined; - getX(): number; - getY(): number; - getZ(): number; - withType(type: com.chattriggers.ctjs.api.world.block.BlockType): com.chattriggers.ctjs.api.world.block.Block; - withPos(pos: com.chattriggers.ctjs.api.world.block.BlockPos): com.chattriggers.ctjs.api.world.block.Block; - /** - * Narrows this block to reference a certain face. Used by - * [Player.lookingAt] to specify the block face - * being looked at. - */ - withFace(face: com.chattriggers.ctjs.api.world.block.BlockFace): com.chattriggers.ctjs.api.world.block.Block; - getState(): net.minecraft.world.level.block.state.BlockState | null | undefined; - isEmittingPower(): boolean; - isEmittingPower(face: com.chattriggers.ctjs.api.world.block.BlockFace | null | undefined): boolean; - getEmittingPower(): number; - getEmittingPower(face: com.chattriggers.ctjs.api.world.block.BlockFace | null | undefined): number; - isReceivingPower(): boolean; - getReceivingPower(): number; - /** - * Checks whether the block can be mined with the tool in the player's hand - * - * @return whether the block can be mined - */ - canBeHarvested(): boolean; - canBeHarvestedWith(item: com.chattriggers.ctjs.api.inventory.Item): boolean; - } - } - namespace pathfinding { - const Swift: { - new(): com.chattriggers.ctjs.api.world.pathfinding.Swift; - } - interface Swift extends net.fabricmc.api.ClientModInitializer { - } - const Swift$Companion: { - executor: java.util.concurrent.ExecutorService; - new(): com.chattriggers.ctjs.api.world.pathfinding.Swift$Companion; - } - interface Swift$Companion { - executor: java.util.concurrent.ExecutorService; - new(): com.chattriggers.ctjs.api.world.pathfinding.Swift$Companion; - getCHUNKS_PER_TICK(): number; - getMAXIMUM_CACHED_CHUNKS(): number; - } - const NativeVoxelFlags: { - new(): com.chattriggers.ctjs.api.world.pathfinding.NativeVoxelFlags; - } - interface NativeVoxelFlags { - new(): com.chattriggers.ctjs.api.world.pathfinding.NativeVoxelFlags; - getPASSABLE(): number; - getSOLID(): number; - getPASSABLE_FLY(): number; - getBLOCKING_WALL(): number; - getFLUID(): number; - getSLAB_BOTTOM(): number; - getSLAB_TOP(): number; - getFENCE_LIKE(): number; - getSTAIRS_BOTTOM(): number; - getCARPET_LIKE(): number; - getETHER_PASSABLE(): number; - getETHER_TELEPORT_CLEAR(): number; - getETHER_FEET_BLOCKER(): number; - } - const NativeStateEncoder: { - flagsForStateId(stateId: number): number; - flagsForState(state: net.minecraft.world.level.block.state.BlockState): number; - flagsShortForState(state: net.minecraft.world.level.block.state.BlockState): number; - flagsShortForStateId(stateId: number): number; - new(): com.chattriggers.ctjs.api.world.pathfinding.NativeStateEncoder; - } - interface NativeStateEncoder { - flagsForStateId(stateId: number): number; - flagsForState(state: net.minecraft.world.level.block.state.BlockState): number; - flagsShortForState(state: net.minecraft.world.level.block.state.BlockState): number; - flagsShortForStateId(stateId: number): number; - new(): com.chattriggers.ctjs.api.world.pathfinding.NativeStateEncoder; - } - const NativeEtherwarpResult: { - path: Array; - angles: kotlin.FloatArray; - timeMs: number; - nodesExplored: number; - nanosecondsPerNode: number; - new(path: Array, angles: kotlin.FloatArray, timeMs: number, nodesExplored: number, nanosecondsPerNode: number): com.chattriggers.ctjs.api.world.pathfinding.NativeEtherwarpResult; - } - interface NativeEtherwarpResult { - } - const NativePathfinderBridge: { - NativePathSearchRequest: typeof com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativePathSearchRequest; - NativeEtherwarpSearchRequest: typeof com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativeEtherwarpSearchRequest; - isAvailable(): boolean; - getLastError(): string | null | undefined; - setWorld(worldKey: string, minY: number, maxY: number): void; - clearWorld(): void; - upsertChunk(chunkX: number, chunkZ: number, minY: number, maxY: number, sectionMask: number, sectionFlags: Array): void; - applyBlockUpdates(updates: Array): void; - findPath(request: com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativePathSearchRequest): com.chattriggers.ctjs.api.world.pathfinding.NativePathResult | null | undefined; - findEtherwarpPath(request: com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativeEtherwarpSearchRequest): com.chattriggers.ctjs.api.world.pathfinding.NativeEtherwarpResult | null | undefined; - cancelSearch(): void; - new(): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge; - } - interface NativePathfinderBridge { - isAvailable(): boolean; - getLastError(): string | null | undefined; - setWorld(worldKey: string, minY: number, maxY: number): void; - clearWorld(): void; - upsertChunk(chunkX: number, chunkZ: number, minY: number, maxY: number, sectionMask: number, sectionFlags: Array): void; - applyBlockUpdates(updates: Array): void; - findPath(request: com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativePathSearchRequest): com.chattriggers.ctjs.api.world.pathfinding.NativePathResult | null | undefined; - findEtherwarpPath(request: com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativeEtherwarpSearchRequest): com.chattriggers.ctjs.api.world.pathfinding.NativeEtherwarpResult | null | undefined; - cancelSearch(): void; - new(): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge; - } - const NativePathfinderBridge$NativePathSearchRequest: { - new(startPoints: Array, endPoints: Array, isFly: boolean, maxIterations: number, heuristicWeight: number, nonPrimaryStartPenalty: number, moveOrderOffset: number, avoidMeta: Array, avoidPenalty: kotlin.DoubleArray): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativePathSearchRequest; - } - interface NativePathfinderBridge$NativePathSearchRequest { - getStartPoints(): Array; - getEndPoints(): Array; - isFly(): boolean; - getMaxIterations(): number; - getHeuristicWeight(): number; - getNonPrimaryStartPenalty(): number; - getMoveOrderOffset(): number; - getAvoidMeta(): Array; - getAvoidPenalty(): kotlin.DoubleArray; - component1(): Array; - component2(): Array; - component3(): boolean; - component4(): number; - component5(): number; - component6(): number; - component7(): number; - component8(): Array; - component9(): kotlin.DoubleArray; - copy(startPoints: Array, endPoints: Array, isFly: boolean, maxIterations: number, heuristicWeight: number, nonPrimaryStartPenalty: number, moveOrderOffset: number, avoidMeta: Array, avoidPenalty: kotlin.DoubleArray): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativePathSearchRequest; - } - const NativePathResult: { - path: Array; - keyPath: Array; - timeMs: number; - nodesExplored: number; - nanosecondsPerNode: number; - selectedStartIndex: number; - pathFlags: Array; - keyNodeFlags: Array; - keyNodeMetrics: Array; - pathSignature: string; - new(path: Array, keyPath: Array, timeMs: number, nodesExplored: number, nanosecondsPerNode: number, selectedStartIndex: number, pathFlags: Array, keyNodeFlags: Array, keyNodeMetrics: Array, pathSignature: string): com.chattriggers.ctjs.api.world.pathfinding.NativePathResult; - } - interface NativePathResult { - } - const NativePathfinderBridge$NativeEtherwarpSearchRequest: { - new(goalX: number, goalY: number, goalZ: number, startEyeX: number, startEyeY: number, startEyeZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number, eyeHeight: number): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativeEtherwarpSearchRequest; - } - interface NativePathfinderBridge$NativeEtherwarpSearchRequest { - getGoalX(): number; - getGoalY(): number; - getGoalZ(): number; - getStartEyeX(): number; - getStartEyeY(): number; - getStartEyeZ(): number; - getMaxIterations(): number; - getThreadCount(): number; - getYawStep(): number; - getPitchStep(): number; - getNewNodeCost(): number; - getHeuristicWeight(): number; - getRayLength(): number; - getRewireEpsilon(): number; - getEyeHeight(): number; - component1(): number; - component2(): number; - component3(): number; - component4(): number; - component5(): number; - component6(): number; - component7(): number; - component8(): number; - component9(): number; - component10(): number; - component11(): number; - component12(): number; - component13(): number; - component14(): number; - component15(): number; - copy(goalX: number, goalY: number, goalZ: number, startEyeX: number, startEyeY: number, startEyeZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number, eyeHeight: number): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativeEtherwarpSearchRequest; - } - const CachedWorld: { - getBlockFlags(x: number, y: number, z: number): number | null | undefined; - getChunk(x: number, z: number): com.chattriggers.ctjs.api.world.pathfinding.CachedChunk | null | undefined; - new(): com.chattriggers.ctjs.api.world.pathfinding.CachedWorld; - } - interface CachedWorld { - getBlockFlags(x: number, y: number, z: number): number | null | undefined; - getChunk(x: number, z: number): com.chattriggers.ctjs.api.world.pathfinding.CachedChunk | null | undefined; - new(): com.chattriggers.ctjs.api.world.pathfinding.CachedWorld; - onPacketReceive(packet: net.minecraft.network.protocol.Packet): void; - processPendingChunks(): void; - saveAndClear(lobbyName: string): void; - load(lobbyName: string): void; - waitForLoad(): void; - clear(): void; - getCacheStats(): string; - setUnlimitedChunkCache(enabled: boolean): void; - setWorldKey(newWorldKey: string | null | undefined): void; - } - const CachedChunk: { - minY: number; - maxY: number; - ready: boolean; - new(minY: number, maxY: number): com.chattriggers.ctjs.api.world.pathfinding.CachedChunk; - } - interface CachedChunk { - getFlags(localX: number, y: number, localZ: number): number; - setFlags(localX: number, y: number, localZ: number, flags: number): void; - hasSection(index: number): boolean; - copySectionFlags(index: number, dest: Array, destOffset: number): void; - setSection(sectionIndex: number, data: Array): void; - } - const CachedChunk$Companion: { - AIR_FLAGS: number; - new(): com.chattriggers.ctjs.api.world.pathfinding.CachedChunk$Companion; - } - interface CachedChunk$Companion { - AIR_FLAGS: number; - new(): com.chattriggers.ctjs.api.world.pathfinding.CachedChunk$Companion; - } - const PathManager: { - isSearching(): boolean; - findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number): boolean; - findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, maxIterations: number): boolean; - findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, maxIterations: number, isFly: boolean): boolean; - findPath(startPoints: Array>, endPoints: Array>): boolean; - findPath(startPoints: Array>, endPoints: Array>, maxIterations: number): boolean; - findPath(startPoints: Array>, endPoints: Array>, maxIterations: number, isFly: boolean): boolean; - findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array): boolean; - findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array, maxIterations: number): boolean; - findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array, maxIterations: number, isFly: boolean): boolean; - findFlyPath(startPoints: Array>, endPoints: Array>): boolean; - findFlyPath(startPoints: Array>, endPoints: Array>, maxIterations: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number, eyeHeight: number): boolean; - isFlyPositionClear(x: number, y: number, z: number): boolean; - isValidEtherwarpLanding(x: number, y: number, z: number): boolean; - getEtherwarpLandingCenter(x: number, y: number, z: number): kotlin.DoubleArray | null | undefined; - getEtherwarpLandingCandidates(anchorX: number, anchorY: number, anchorZ: number, radius: number, maxDistance: number, sortOriginX: number, sortOriginY: number, sortOriginZ: number): com.chattriggers.ctjs.api.world.pathfinding.EtherwarpLandingCandidatesResult | null | undefined; - getCurrentEtherwarpEyeHeight(): number; - getCurrentEtherwarpSneakOffset(): number; - cancelSearch(): void; - getPathArray(): Array; - getKeyNodesArray(): Array; - getEtherwarpPathArray(): Array; - getEtherwarpAnglesArray(): kotlin.FloatArray; - getPathFlagsArray(): Array; - getKeyNodeFlagsArray(): Array; - getKeyNodeMetricsArray(): Array; - getPathSignature(): string; - getPathFlagBits(): Array; - getEtherwarpVoxelFlagsAt(x: number, y: number, z: number): number; - isEtherwarpSupportSolid(flags: number): boolean; - getEtherwarpStandOffsetForFlags(flags: number): number; - isEtherwarpTeleportSpaceClearFlags(flags: number): boolean; - addTransientAvoidPoint(x: number, y: number, z: number): void; - addTransientAvoidPoint(x: number, y: number, z: number, radius: number): void; - addTransientAvoidPoint(x: number, y: number, z: number, radius: number, penalty: number): void; - addTransientAvoidPoint(x: number, y: number, z: number, radius: number, penalty: number, ttlSearches: number): void; - addTransientAvoidPoints(points: Array): void; - addTransientAvoidPoints(points: Array, radius: number): void; - addTransientAvoidPoints(points: Array, radius: number, penalty: number): void; - addTransientAvoidPoints(points: Array, radius: number, penalty: number, ttlSearches: number): void; - clearTransientAvoidPoints(): void; - getPathSize(): number; - getEtherwarpPathSize(): number; - getKeyNodeCount(): number; - getLastTimeMs(): number; - getEtherwarpLastTimeMs(): number; - getNodesExplored(): number; - getEtherwarpNodesExplored(): number; - getNanosecondsPerNode(): number; - getEtherwarpNanosecondsPerNode(): number; - getSelectedStartIndex(): number; - setSearchVariantSeed(seed: number): void; - getLastError(): string | null | undefined; - hasPath(): boolean; - hasEtherwarpPath(): boolean; - clear(): void; - new(): com.chattriggers.ctjs.api.world.pathfinding.PathManager; - } - interface PathManager { - isSearching(): boolean; - findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number): boolean; - findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, maxIterations: number): boolean; - findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, maxIterations: number, isFly: boolean): boolean; - findPath(startPoints: Array>, endPoints: Array>): boolean; - findPath(startPoints: Array>, endPoints: Array>, maxIterations: number): boolean; - findPath(startPoints: Array>, endPoints: Array>, maxIterations: number, isFly: boolean): boolean; - findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array): boolean; - findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array, maxIterations: number): boolean; - findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array, maxIterations: number, isFly: boolean): boolean; - findFlyPath(startPoints: Array>, endPoints: Array>): boolean; - findFlyPath(startPoints: Array>, endPoints: Array>, maxIterations: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number): boolean; - findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number, eyeHeight: number): boolean; - isFlyPositionClear(x: number, y: number, z: number): boolean; - isValidEtherwarpLanding(x: number, y: number, z: number): boolean; - getEtherwarpLandingCenter(x: number, y: number, z: number): kotlin.DoubleArray | null | undefined; - getEtherwarpLandingCandidates(anchorX: number, anchorY: number, anchorZ: number, radius: number, maxDistance: number, sortOriginX: number, sortOriginY: number, sortOriginZ: number): com.chattriggers.ctjs.api.world.pathfinding.EtherwarpLandingCandidatesResult | null | undefined; - getCurrentEtherwarpEyeHeight(): number; - getCurrentEtherwarpSneakOffset(): number; - cancelSearch(): void; - getPathArray(): Array; - getKeyNodesArray(): Array; - getEtherwarpPathArray(): Array; - getEtherwarpAnglesArray(): kotlin.FloatArray; - getPathFlagsArray(): Array; - getKeyNodeFlagsArray(): Array; - getKeyNodeMetricsArray(): Array; - getPathSignature(): string; - getPathFlagBits(): Array; - getEtherwarpVoxelFlagsAt(x: number, y: number, z: number): number; - isEtherwarpSupportSolid(flags: number): boolean; - getEtherwarpStandOffsetForFlags(flags: number): number; - isEtherwarpTeleportSpaceClearFlags(flags: number): boolean; - addTransientAvoidPoint(x: number, y: number, z: number): void; - addTransientAvoidPoint(x: number, y: number, z: number, radius: number): void; - addTransientAvoidPoint(x: number, y: number, z: number, radius: number, penalty: number): void; - addTransientAvoidPoint(x: number, y: number, z: number, radius: number, penalty: number, ttlSearches: number): void; - addTransientAvoidPoints(points: Array): void; - addTransientAvoidPoints(points: Array, radius: number): void; - addTransientAvoidPoints(points: Array, radius: number, penalty: number): void; - addTransientAvoidPoints(points: Array, radius: number, penalty: number, ttlSearches: number): void; - clearTransientAvoidPoints(): void; - getPathSize(): number; - getEtherwarpPathSize(): number; - getKeyNodeCount(): number; - getLastTimeMs(): number; - getEtherwarpLastTimeMs(): number; - getNodesExplored(): number; - getEtherwarpNodesExplored(): number; - getNanosecondsPerNode(): number; - getEtherwarpNanosecondsPerNode(): number; - getSelectedStartIndex(): number; - setSearchVariantSeed(seed: number): void; - getLastError(): string | null | undefined; - hasPath(): boolean; - hasEtherwarpPath(): boolean; - clear(): void; - new(): com.chattriggers.ctjs.api.world.pathfinding.PathManager; - getFLAG_FLUID_FEET(): number; - getFLAG_FLUID_HEAD(): number; - getFLAG_LOW_HEADROOM(): number; - getFLAG_NEAR_EDGE(): number; - getFLAG_NEAR_WALL(): number; - getFLAG_STEP_UP_NEXT(): number; - getFLAG_DROP_NEXT(): number; - getFLAG_TIGHT_CORRIDOR(): number; - getETHERWARP_VOXEL_SOLID(): number; - getETHERWARP_VOXEL_FENCE_LIKE(): number; - getETHERWARP_VOXEL_TELEPORT_CLEAR(): number; - getETHERWARP_VOXEL_FEET_BLOCKER(): number; - } - const EtherwarpLandingCandidatesResult: { - goals: Array; - centers: kotlin.DoubleArray; - new(goals: Array, centers: kotlin.DoubleArray): com.chattriggers.ctjs.api.world.pathfinding.EtherwarpLandingCandidatesResult; - } - interface EtherwarpLandingCandidatesResult { - } - const HypixelManager: { - new(): com.chattriggers.ctjs.api.world.pathfinding.HypixelManager; - } - interface HypixelManager { - new(): com.chattriggers.ctjs.api.world.pathfinding.HypixelManager; - init(): void; - onDisconnect(): void; - } - const WynncraftManager: { - new(): com.chattriggers.ctjs.api.world.pathfinding.WynncraftManager; - } - interface WynncraftManager { - new(): com.chattriggers.ctjs.api.world.pathfinding.WynncraftManager; - init(): void; - onDisconnect(): void; - } - const WorldSerializer: { - new(): com.chattriggers.ctjs.api.world.pathfinding.WorldSerializer; - } - interface WorldSerializer { - new(): com.chattriggers.ctjs.api.world.pathfinding.WorldSerializer; - save(name: string, chunks: Map): void; - load(name: string): java.util.concurrent.ConcurrentHashMap | null | undefined; - } - } - const Chunk: { - new(mcValue: net.minecraft.world.level.chunk.ChunkAccess): com.chattriggers.ctjs.api.world.Chunk; - } - interface Chunk extends com.chattriggers.ctjs.api.CTWrapper { - /** - * Gets the x position of the chunk - */ - getX(): number; - /** - * Gets the z position of the chunk - */ - getZ(): number; - /** - * Gets the minimum x coordinate of a block in the chunk - * - * @return the minimum x coordinate - */ - getMinBlockX(): number; - /** - * Gets the minimum z coordinate of a block in the chunk - * - * @return the minimum z coordinate - */ - getMinBlockZ(): number; - /** - * Gets every entity in this chunk - * - * @return the entity list - */ - getAllEntities(): Array; - /** - * Gets every entity in this chunk of a certain class - * - * @param clazz the class to filter for (Use `Java.type().class` to get this) - * @return the entity list - */ - getAllEntitiesOfType(clazz: java.lang.Class): Array; - /** - * Gets every block entity in this chunk - * - * @return the block entity list - */ - getAllBlockEntities(): Array; - /** - * Gets every block entity in this chunk of a certain class - * - * @param clazz the class to filter for (Use `Java.type().class` to get this) - * @return the block entity list - */ - getAllBlockEntitiesOfType(clazz: java.lang.Class): Array; - } - const PotionEffectType: { - new(type: net.minecraft.world.effect.MobEffect): com.chattriggers.ctjs.api.world.PotionEffectType; - } - interface PotionEffectType { - getType(): net.minecraft.world.effect.MobEffect; - /** - * The Int associated with this type - */ - getRawId(): number; - /** - * Whether this effect is instant (e.g. instant health) - */ - isInstant(): boolean; - /** - * The raw key used for this effect type - */ - getTranslationKey(): string; - /** - * The user-friendly name of this type as a [TextComponent] - */ - getName(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * The [net.minecraft.entity.effect.StatusEffectCategory] of this type - */ - getCategory(): net.minecraft.world.effect.MobEffectCategory; - /** - * The color of this type - */ - getColor(): java.awt.Color; - } - const PotionEffect: { - new(effect: net.minecraft.world.effect.MobEffectInstance): com.chattriggers.ctjs.api.world.PotionEffect; - } - interface PotionEffect { - getEffect(): net.minecraft.world.effect.MobEffectInstance; - /** - * The type of this potion - */ - getType(): com.chattriggers.ctjs.api.world.PotionEffectType; - /** - * Returns the translation key of the potion. - * Ex: "potion.poison" - */ - getName(): string; - /** - * Returns the localized name of the potion that - * is displayed in the player's inventory. - * Ex: "Poison" - */ - getLocalizedName(): string; - getAmplifier(): number; - getDuration(): number; - getId(): number; - getAmbient(): boolean; - isInfinite(): boolean; - getShowsParticles(): boolean; - } - const World: { - BorderWrapper: typeof com.chattriggers.ctjs.api.world.World$BorderWrapper; - SpawnWrapper: typeof com.chattriggers.ctjs.api.world.World$SpawnWrapper; - ParticleWrapper: typeof com.chattriggers.ctjs.api.world.World$ParticleWrapper; - spawn: com.chattriggers.ctjs.api.world.World$SpawnWrapper; - particle: com.chattriggers.ctjs.api.world.World$ParticleWrapper; - border: com.chattriggers.ctjs.api.world.World$BorderWrapper; - toMC(): net.minecraft.client.multiplayer.ClientLevel | null | undefined; - getWorld(): net.minecraft.client.multiplayer.ClientLevel | null | undefined; - isLoaded(): boolean; - isRaining(): boolean; - getTime(): number; - /** - * Gets the [Block] at a location in the world. - * - * @param x the x position - * @param y the y position - * @param z the z position - * @return the [Block] at the location - */ - getBlockAt(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.block.Block; - /** - * Gets the [Block] at a location in the world. - * - * @param pos The block position - * @return the [Block] at the location - */ - getBlockAt(pos: com.chattriggers.ctjs.api.world.block.BlockPos): com.chattriggers.ctjs.api.world.block.Block; - getBlocksInBox(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): Array; - getBlocksInBox(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number, types: Array): Array; - /** - * Gets the [BlockState] at a location in the world. - * - * @param pos The block position - * @return the [BlockState] at the location - */ - getBlockStateAt(pos: com.chattriggers.ctjs.api.world.block.BlockPos): net.minecraft.world.level.block.state.BlockState; - /** - * Gets the skylight level at the given position. This is the value seen in the debug (F3) menu - * - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @return the skylight level at the location - */ - getSkyLightLevel(x: number, y: number, z: number): number; - /** - * Gets the skylight level at the given position. This is the value seen in the debug (F3) menu - * - * @param pos The block position - * @return the skylight level at the location - */ - getSkyLightLevel(pos: com.chattriggers.ctjs.api.world.block.BlockPos): number; - /** - * Gets the block light level at the given position. This is the value seen in the debug (F3) menu - * - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @return the block light level at the location - */ - getBlockLightLevel(x: number, y: number, z: number): number; - /** - * Gets the block light level at the given position. This is the value seen in the debug (F3) menu - * - * @param pos The block position - * @return the block light level at the location - */ - getBlockLightLevel(pos: com.chattriggers.ctjs.api.world.block.BlockPos): number; - /** - * Gets all of the players in the world, and returns their wrapped versions. - * - * @return the players - */ - getAllPlayers(): Array; - /** - * Gets a player by their username, must be in the currently loaded chunks! - * - * @param name the username - * @return the player with said username, or null if they don't exist. - */ - getPlayerByName(name: string): com.chattriggers.ctjs.api.entity.PlayerMP | null | undefined; - getChunk(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.Chunk; - getAllEntities(): Array; - /** - * Gets every entity loaded in the world of a certain class - * - * @param clazz the class to filter for (Use `Java.type().class` to get this) - * @return the entity list - */ - getAllEntitiesOfType(clazz: java.lang.Class): Array; - getAllBlockEntities(): Array; - getAllBlockEntitiesOfType(clazz: java.lang.Class): Array; - /** - * Returns the TPS of the current world. - * - * On modern version (1.20.3+), this is variable. On earlier versions, - * it is always 20. - */ - getTicksPerSecond(): number; - new(): com.chattriggers.ctjs.api.world.World; - } - interface World { - spawn: com.chattriggers.ctjs.api.world.World$SpawnWrapper; - particle: com.chattriggers.ctjs.api.world.World$ParticleWrapper; - border: com.chattriggers.ctjs.api.world.World$BorderWrapper; - toMC(): net.minecraft.client.multiplayer.ClientLevel | null | undefined; - getWorld(): net.minecraft.client.multiplayer.ClientLevel | null | undefined; - isLoaded(): boolean; - isRaining(): boolean; - getTime(): number; - /** - * Gets the [Block] at a location in the world. - * - * @param x the x position - * @param y the y position - * @param z the z position - * @return the [Block] at the location - */ - getBlockAt(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.block.Block; - /** - * Gets the [Block] at a location in the world. - * - * @param pos The block position - * @return the [Block] at the location - */ - getBlockAt(pos: com.chattriggers.ctjs.api.world.block.BlockPos): com.chattriggers.ctjs.api.world.block.Block; - getBlocksInBox(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): Array; - getBlocksInBox(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number, types: Array): Array; - /** - * Gets the [BlockState] at a location in the world. - * - * @param pos The block position - * @return the [BlockState] at the location - */ - getBlockStateAt(pos: com.chattriggers.ctjs.api.world.block.BlockPos): net.minecraft.world.level.block.state.BlockState; - /** - * Gets the skylight level at the given position. This is the value seen in the debug (F3) menu - * - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @return the skylight level at the location - */ - getSkyLightLevel(x: number, y: number, z: number): number; - /** - * Gets the skylight level at the given position. This is the value seen in the debug (F3) menu - * - * @param pos The block position - * @return the skylight level at the location - */ - getSkyLightLevel(pos: com.chattriggers.ctjs.api.world.block.BlockPos): number; - /** - * Gets the block light level at the given position. This is the value seen in the debug (F3) menu - * - * @param x the x coordinate - * @param y the y coordinate - * @param z the z coordinate - * @return the block light level at the location - */ - getBlockLightLevel(x: number, y: number, z: number): number; - /** - * Gets the block light level at the given position. This is the value seen in the debug (F3) menu - * - * @param pos The block position - * @return the block light level at the location - */ - getBlockLightLevel(pos: com.chattriggers.ctjs.api.world.block.BlockPos): number; - /** - * Gets all of the players in the world, and returns their wrapped versions. - * - * @return the players - */ - getAllPlayers(): Array; - /** - * Gets a player by their username, must be in the currently loaded chunks! - * - * @param name the username - * @return the player with said username, or null if they don't exist. - */ - getPlayerByName(name: string): com.chattriggers.ctjs.api.entity.PlayerMP | null | undefined; - getChunk(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.Chunk; - getAllEntities(): Array; - /** - * Gets every entity loaded in the world of a certain class - * - * @param clazz the class to filter for (Use `Java.type().class` to get this) - * @return the entity list - */ - getAllEntitiesOfType(clazz: java.lang.Class): Array; - getAllBlockEntities(): Array; - getAllBlockEntitiesOfType(clazz: java.lang.Class): Array; - /** - * Returns the TPS of the current world. - * - * On modern version (1.20.3+), this is variable. On earlier versions, - * it is always 20. - */ - getTicksPerSecond(): number; - new(): com.chattriggers.ctjs.api.world.World; - } - const World$SpawnWrapper: { - /** - * World spawn object for getting spawn location. - */ - new(): com.chattriggers.ctjs.api.world.World$SpawnWrapper; - } - interface World$SpawnWrapper { - /** - * Gets the spawn x location. - * - * @return the spawn x location. - */ - getX(): number; - /** - * Gets the spawn y location. - * - * @return the spawn y location. - */ - getY(): number; - /** - * Gets the spawn z location. - * - * @return the spawn z location. - */ - getZ(): number; - } - const World$ParticleWrapper: { - new(): com.chattriggers.ctjs.api.world.World$ParticleWrapper; - } - interface World$ParticleWrapper { - /** - * Gets an array of all the different particle names you can pass - * to [spawnParticle] - * - * @return the array of name strings - */ - getParticleNames(): Array; - /** - * Spawns a particle into the world with the given attributes, - * which can be configured further with the returned [com.chattriggers.ctjs.api.entity.Particle] - * - * @param particle the name of the particle to spawn, see [getParticleNames] - * @param x the x coordinate to spawn the particle at - * @param y the y coordinate to spawn the particle at - * @param z the z coordinate to spawn the particle at - * @param xSpeed the motion the particle should have in the x direction - * @param ySpeed the motion the particle should have in the y direction - * @param zSpeed the motion the particle should have in the z direction - * @return the newly spawned particle for further configuration - */ - spawnParticle(particle: string, x: number, y: number, z: number, xSpeed: number, ySpeed: number, zSpeed: number): com.chattriggers.ctjs.api.entity.Particle | null | undefined; - spawnParticle(particle: net.minecraft.client.particle.Particle): com.chattriggers.ctjs.api.entity.Particle; - } - const World$BorderWrapper: { - /** - * World border object to get border parameters - */ - new(): com.chattriggers.ctjs.api.world.World$BorderWrapper; - } - interface World$BorderWrapper { - /** - * Gets the border center x location. - * - * @return the border center x location - */ - getCenterX(): number; - /** - * Gets the border center z location. - * - * @return the border center z location - */ - getCenterZ(): number; - /** - * Gets the border size. - * - * @return the border size - */ - getSize(): number; - } - const TabList: { - Name: typeof com.chattriggers.ctjs.api.world.TabList$Name; - toMC(): net.minecraft.client.gui.components.PlayerTabOverlay | null | undefined; - /** - * Gets the scoreboard objective corresponding to the tab list, or null if it doesn't exist - */ - getObjective(): net.minecraft.world.scores.Objective | null | undefined; - /** - * Gets the tab list header as a [TextComponent] - * - * @return the header - */ - getHeaderComponent(): com.chattriggers.ctjs.api.message.TextComponent | null | undefined; - /** - * Gets the tab list header as a formatted string. - * - * @return the header - */ - getHeader(): string | null | undefined; - /** - * Sets the header text for the TabList. - * If [header] is null, it will remove the header entirely - * - * @param header the header to set, or null to clear - */ - setHeader(header: any | null | undefined): void; - clearHeader(): void; - /** - * Gets the tab list footer as a [TextComponent] - * - * @return the footer - */ - getFooterComponent(): com.chattriggers.ctjs.api.message.TextComponent | null | undefined; - /** - * Gets the tab list footer as a string. - * Be aware that this can contain color codes. - * - * @return the footer - */ - getFooter(): string | null | undefined; - /** - * Sets the footer text for the TabList. - * If [footer] is null, it will remove the footer entirely - * - * @param footer the footer to set, or null to clear - */ - setFooter(footer: any | null | undefined): void; - clearFooter(): void; - /** - * Gets names set in scoreboard objectives - * - * @return The formatted names - */ - getNamesByObjectives(): Array; - /** - * Get all names on the tab list - * - * @return the list of names - */ - getNames(): Array; - /** - * Gets all names in tabs without formatting - * - * @return the unformatted names - */ - getUnformattedNames(): Array; - /** - * Adds a new name to the tab list - * - * @param name the formatted name to add - * @param useExistingSkin whether to use the skin of the associated Minecraft account using [name]. - * If false, will use a random default skin (Steve, Alex, etc) - */ - addName(name: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Adds a new name to the tab list - * - * @param name the formatted name to add - * @param useExistingSkin whether to use the skin of the associated Minecraft account using [name]. - * If false, will use a random default skin (Steve, Alex, etc) - */ - addName(name: com.chattriggers.ctjs.api.message.TextComponent, useExistingSkin: boolean): void; - addName(name: string): void; - addName(name: string, useExistingSkin: boolean): void; - /** - * Removes all names from the tab list with a certain name - * - * @param name the name of the entry to remove - */ - removeNames(name: com.chattriggers.ctjs.api.message.TextComponent): void; - removeNames(name: string): void; - new(): com.chattriggers.ctjs.api.world.TabList; - } - interface TabList { - toMC(): net.minecraft.client.gui.components.PlayerTabOverlay | null | undefined; - /** - * Gets the scoreboard objective corresponding to the tab list, or null if it doesn't exist - */ - getObjective(): net.minecraft.world.scores.Objective | null | undefined; - /** - * Gets the tab list header as a [TextComponent] - * - * @return the header - */ - getHeaderComponent(): com.chattriggers.ctjs.api.message.TextComponent | null | undefined; - /** - * Gets the tab list header as a formatted string. - * - * @return the header - */ - getHeader(): string | null | undefined; - /** - * Sets the header text for the TabList. - * If [header] is null, it will remove the header entirely - * - * @param header the header to set, or null to clear - */ - setHeader(header: any | null | undefined): void; - clearHeader(): void; - /** - * Gets the tab list footer as a [TextComponent] - * - * @return the footer - */ - getFooterComponent(): com.chattriggers.ctjs.api.message.TextComponent | null | undefined; - /** - * Gets the tab list footer as a string. - * Be aware that this can contain color codes. - * - * @return the footer - */ - getFooter(): string | null | undefined; - /** - * Sets the footer text for the TabList. - * If [footer] is null, it will remove the footer entirely - * - * @param footer the footer to set, or null to clear - */ - setFooter(footer: any | null | undefined): void; - clearFooter(): void; - /** - * Gets names set in scoreboard objectives - * - * @return The formatted names - */ - getNamesByObjectives(): Array; - /** - * Get all names on the tab list - * - * @return the list of names - */ - getNames(): Array; - /** - * Gets all names in tabs without formatting - * - * @return the unformatted names - */ - getUnformattedNames(): Array; - /** - * Adds a new name to the tab list - * - * @param name the formatted name to add - * @param useExistingSkin whether to use the skin of the associated Minecraft account using [name]. - * If false, will use a random default skin (Steve, Alex, etc) - */ - addName(name: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Adds a new name to the tab list - * - * @param name the formatted name to add - * @param useExistingSkin whether to use the skin of the associated Minecraft account using [name]. - * If false, will use a random default skin (Steve, Alex, etc) - */ - addName(name: com.chattriggers.ctjs.api.message.TextComponent, useExistingSkin: boolean): void; - addName(name: string): void; - addName(name: string, useExistingSkin: boolean): void; - /** - * Removes all names from the tab list with a certain name - * - * @param name the name of the entry to remove - */ - removeNames(name: com.chattriggers.ctjs.api.message.TextComponent): void; - removeNames(name: string): void; - new(): com.chattriggers.ctjs.api.world.TabList; - } - const TabList$Name: { - new(mcValue: net.minecraft.client.multiplayer.PlayerInfo): com.chattriggers.ctjs.api.world.TabList$Name; - } - interface TabList$Name extends com.chattriggers.ctjs.api.CTWrapper { - /** - * Gets the latency associated with this name - * - * @return the latency - */ - getLatency(): number; - /** - * Sets the latency associated with this name. - * - latency between 0 and 149 represents all 5 bars - * - latency between 150 and 299 represents 4 bars - * - latency between 300 and 599 represents 3 bars - * - latency between 600 and 999 represents 2 bars - * - latency between 1000 and more represents 1 bar - * - * @param latency the latency to set - * @return the name to allow for method chaining - */ - setLatency(latency: number): com.chattriggers.ctjs.api.world.TabList$Name; - /** - * Gets the team associated with this name, if it exists - * - * @return the team, or null if it does not exist - */ - getTeam(): com.chattriggers.ctjs.api.entity.Team | null | undefined; - /** - * Sets the team associated with this name - * - * @param team the new team to set for this name. Custom teams can be created - * using [Scoreboard.createTeam] - * @return the score to allow for method chaining - */ - setTeam(team: com.chattriggers.ctjs.api.entity.Team | null | undefined): com.chattriggers.ctjs.api.world.TabList$Name; - /** - * Gets the display text of this name - * - * @return the display name - */ - getName(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Sets the display name of this name - * - * @param name the new name - * @return the name to allow for method chaining - */ - setName(name: com.chattriggers.ctjs.api.message.TextComponent | null | undefined): com.chattriggers.ctjs.api.world.TabList$Name; - /** - * Removes this name from the tab list - */ - remove(): void; - } - const StructureFinder: { - submitChunkScan(chunkX: number, chunkZ: number): void; - submitBlockUpdate(blockX: number, blockY: number, blockZ: number): void; - getRenderBlocksArray(): Array; - getRenderLabelsArray(): Array; - clear(): void; - shutdown(): void; - new(): com.chattriggers.ctjs.api.world.StructureFinder; - } - interface StructureFinder { - submitChunkScan(chunkX: number, chunkZ: number): void; - submitBlockUpdate(blockX: number, blockY: number, blockZ: number): void; - getRenderBlocksArray(): Array; - getRenderLabelsArray(): Array; - clear(): void; - shutdown(): void; - new(): com.chattriggers.ctjs.api.world.StructureFinder; - } - const BossBars: { - BossBar: typeof com.chattriggers.ctjs.api.world.BossBars$BossBar; - Color: typeof com.chattriggers.ctjs.api.world.BossBars$Color; - Style: typeof com.chattriggers.ctjs.api.world.BossBars$Style; - toMC(): net.minecraft.client.gui.components.BossHealthOverlay; - /** - * Gets the list of currently shown [BossBar]s - * - * @return the currently displayed [BossBar]s - */ - getBossBars(): Array; - /** - * Gets all [BossBar]s with a given name - * - * @param name the name to match - * @return the [BossBar]s - */ - getBossBarsByName(name: string): Array; - /** - * Adds a new [BossBar] to be displayed - * - * Takes a parameter with the following options: - * - name: The name to appear above the BossBar. Defaults to an empty string - * - percent: The percent full the BossBar is. Defaults to 1 (full health) - * - color: The color of the BossBar. Can be any [Color], but defaults to white - * - sections: The number of notches/sections to appear on the BossBar. Can be any [Style], but - * defaults to 1 entire section - * - darkenSky: Whether the BossBar should darken the screen of the player. Defaults to false - * - dragonMusic: Whether the BossBar should play dragon music while in the End. Defaults to false - * - thickenFog: Whether the BossBar should thicken the fog around the player. Defaults to false - * - * @param obj An options bag - * - * @return the [BossBar] for further modification - */ - addBossBar(obj: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.world.BossBars$BossBar; - /** - * Clears all [BossBar]s on screen - */ - clearBossBars(): void; - /** - * Removes all [BossBar]s with the given name - * - * @param name the name to match - */ - removeBossBarsByName(name: string): void; - /** - * Removes the given [BossBar] - * - * @param bossBar the BossBar to remove - */ - removeBossBar(bossBar: com.chattriggers.ctjs.api.world.BossBars$BossBar): void; - new(): com.chattriggers.ctjs.api.world.BossBars; - } - interface BossBars { - toMC(): net.minecraft.client.gui.components.BossHealthOverlay; - /** - * Gets the list of currently shown [BossBar]s - * - * @return the currently displayed [BossBar]s - */ - getBossBars(): Array; - /** - * Gets all [BossBar]s with a given name - * - * @param name the name to match - * @return the [BossBar]s - */ - getBossBarsByName(name: string): Array; - /** - * Adds a new [BossBar] to be displayed - * - * Takes a parameter with the following options: - * - name: The name to appear above the BossBar. Defaults to an empty string - * - percent: The percent full the BossBar is. Defaults to 1 (full health) - * - color: The color of the BossBar. Can be any [Color], but defaults to white - * - sections: The number of notches/sections to appear on the BossBar. Can be any [Style], but - * defaults to 1 entire section - * - darkenSky: Whether the BossBar should darken the screen of the player. Defaults to false - * - dragonMusic: Whether the BossBar should play dragon music while in the End. Defaults to false - * - thickenFog: Whether the BossBar should thicken the fog around the player. Defaults to false - * - * @param obj An options bag - * - * @return the [BossBar] for further modification - */ - addBossBar(obj: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.world.BossBars$BossBar; - /** - * Clears all [BossBar]s on screen - */ - clearBossBars(): void; - /** - * Removes all [BossBar]s with the given name - * - * @param name the name to match - */ - removeBossBarsByName(name: string): void; - /** - * Removes the given [BossBar] - * - * @param bossBar the BossBar to remove - */ - removeBossBar(bossBar: com.chattriggers.ctjs.api.world.BossBars$BossBar): void; - new(): com.chattriggers.ctjs.api.world.BossBars; - } - const BossBars$BossBar: { - new(mcValue: net.minecraft.client.gui.components.LerpingBossEvent): com.chattriggers.ctjs.api.world.BossBars$BossBar; - } - interface BossBars$BossBar extends com.chattriggers.ctjs.api.CTWrapper { - /** - * Gets the UUID of this BossBar - * - * @return the uuid - */ - getUUID(): java.util.UUID; - /** - * Gets the name of this BossBar - * - * @return the name - */ - getName(): string; - /** - * Sets the name of this BossBar - * - * @param name the name to set - */ - setName(name: string): com.chattriggers.ctjs.api.world.BossBars$BossBar; - /** - * Gets how full this BossBar is - * - * @return how full the BossBar is - */ - getPercent(): number; - /** - * Sets how full this BossBar is - * - * @param percent how full to set this BossBar. Must be between 0 and 1 - */ - setPercent(percent: number): com.chattriggers.ctjs.api.world.BossBars$BossBar; - /** - * Gets the [Color] of this BossBar - */ - getColor(): com.chattriggers.ctjs.api.world.BossBars$Color; - /** - * Sets the [Color] of this BossBar - * - * @param color the color to set. Can be [Color], [MCBossBarColor], or a string - */ - setColor(color: any): com.chattriggers.ctjs.api.world.BossBars$BossBar; - /** - * Gets the style of this BossBar. e.g. how many notches are displayed - */ - getStyle(): com.chattriggers.ctjs.api.world.BossBars$Style; - /** - * Sets the style of this BossBar - * - * @param style the style to set. Can be [Style], [MCBossBarStyle], a string, - * or a number of how many notches to put - */ - setStyle(style: any): com.chattriggers.ctjs.api.world.BossBars$BossBar; - /** - * Gets whether this BossBar darkens the sky - */ - shouldDarkenSky(): boolean; - /** - * Sets whether this BossBar should darken the sky - * - * @param darken whether to darken the sky - */ - setShouldDarkenSky(darken: boolean): com.chattriggers.ctjs.api.world.BossBars$BossBar; - /** - * Gets whether this BossBar will play dragon music. - * This will do nothing when the player is not in the end dimension - */ - hasDragonMusic(): boolean; - /** - * Sets whether this BossBar will play dragon music - * - * @param music whether to play dragon music - */ - setHasDragonMusic(music: boolean): com.chattriggers.ctjs.api.world.BossBars$BossBar; - /** - * Gets whether this BossBar should thicken the fog around the player - */ - shouldThickenFog(): boolean; - /** - * Sets whether this BossBar should thicken the fog around the player - * - * @param fog whether to thicken the fog - */ - setShouldThickenFog(fog: boolean): com.chattriggers.ctjs.api.world.BossBars$BossBar; - } - const BossBars$Color: { - PINK: com.chattriggers.ctjs.api.world.BossBars$Color; - BLUE: com.chattriggers.ctjs.api.world.BossBars$Color; - RED: com.chattriggers.ctjs.api.world.BossBars$Color; - GREEN: com.chattriggers.ctjs.api.world.BossBars$Color; - YELLOW: com.chattriggers.ctjs.api.world.BossBars$Color; - PURPLE: com.chattriggers.ctjs.api.world.BossBars$Color; - WHITE: com.chattriggers.ctjs.api.world.BossBars$Color; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.world.BossBars$Color; - } - interface BossBars$Color extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { - } - const BossBars$Color$Companion: { - fromMC(mcValue: net.minecraft.world.BossEvent$BossBarColor): com.chattriggers.ctjs.api.world.BossBars$Color; - from(value: any): com.chattriggers.ctjs.api.world.BossBars$Color; - new(): unknown; - } - interface BossBars$Color$Companion { - fromMC(mcValue: net.minecraft.world.BossEvent$BossBarColor): com.chattriggers.ctjs.api.world.BossBars$Color; - from(value: any): com.chattriggers.ctjs.api.world.BossBars$Color; - new(): unknown; - } - const BossBars$Style: { - ONE: com.chattriggers.ctjs.api.world.BossBars$Style; - SIX: com.chattriggers.ctjs.api.world.BossBars$Style; - TEN: com.chattriggers.ctjs.api.world.BossBars$Style; - TWELVE: com.chattriggers.ctjs.api.world.BossBars$Style; - TWENTY: com.chattriggers.ctjs.api.world.BossBars$Style; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.world.BossBars$Style; - } - interface BossBars$Style extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { - getSections(): number; - } - const BossBars$Style$Companion: { - fromMC(mcValue: net.minecraft.world.BossEvent$BossBarOverlay): com.chattriggers.ctjs.api.world.BossBars$Style; - from(value: any): com.chattriggers.ctjs.api.world.BossBars$Style; - new(): unknown; - } - interface BossBars$Style$Companion { - fromMC(mcValue: net.minecraft.world.BossEvent$BossBarOverlay): com.chattriggers.ctjs.api.world.BossBars$Style; - from(value: any): com.chattriggers.ctjs.api.world.BossBars$Style; - new(): unknown; - } - const Scoreboard: { - Score: typeof com.chattriggers.ctjs.api.world.Scoreboard$Score; - toMC(): net.minecraft.world.scores.Scoreboard | null | undefined; - getSidebar(): net.minecraft.world.scores.Objective | null | undefined; - /** - * Gets the top-most string which is displayed on the scoreboard. (doesn't have a score on the side). - * Be aware that this can contain color codes. - * - * @return the scoreboard title - */ - getTitle(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Sets the scoreboard title. - * - * @param title the new title - * @return the scoreboard title - */ - setTitle(title: com.chattriggers.ctjs.api.message.TextComponent): void; - setTitle(title: string): void; - /** - * Get all currently visible strings on the scoreboard. (excluding title) - * Be aware that this can contain color codes. - * - * @return the list of lines - */ - getLines(): Array; - /** - * Get all currently visible strings on the scoreboard. (excluding title) - * Be aware that this can contain color codes. - * - * @return the list of lines - */ - getLines(descending: boolean): Array; - /** - * Gets the line at the specified index (0 based) - * Equivalent to Scoreboard.getLines().get(index) - * - * @param index the line index - * @return the score object at the index - */ - getLineByIndex(index: number): com.chattriggers.ctjs.api.world.Scoreboard$Score; - /** - * Gets a list of lines that have a certain score, - * i.e. the numbers shown on the right - * - * @param score the score to look for - * @return a list of actual score objects - */ - getLinesByScore(score: number): Array; - /** - * Sets a line in the scoreboard to the specified name and score. - * - * @param score the score value for this item - * @param line the [TextComponent] to display on said line - * @param override whether to remove old lines with the same score - */ - setLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Sets a line in the scoreboard to the specified name and score. - * - * @param score the score value for this item - * @param line the [TextComponent] to display on said line - * @param override whether to remove old lines with the same score - */ - setLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent, override: boolean): void; - setLine(score: number, line: string): void; - setLine(score: number, line: string, override: boolean): void; - /** - * Adds a line to the scoreboard - * - * @param score the score value for this item - * @param line the [TextComponent] to display on said line - */ - addLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent): void; - addLine(score: number, line: string): void; - /** - * Removes all lines from the scoreboard matching with a certain score - * - * @param score the score of the lines to remove - */ - removeScores(score: number): void; - /** - * Removes the line at a certain index - * - * @param index the index of the line to remove - */ - removeIndex(index: number): void; - /** - * Removes the line at a certain index - * - * @param index the index of the line to remove - */ - removeIndex(index: number, descending: boolean): void; - setShouldRender(shouldRender: boolean): void; - getShouldRender(): boolean; - /** - * Creates or gets a [Team] with a given name - * - * @param name the name of the team - */ - createTeam(name: string): com.chattriggers.ctjs.api.entity.Team; - new(): com.chattriggers.ctjs.api.world.Scoreboard; - } - interface Scoreboard { - toMC(): net.minecraft.world.scores.Scoreboard | null | undefined; - getSidebar(): net.minecraft.world.scores.Objective | null | undefined; - /** - * Gets the top-most string which is displayed on the scoreboard. (doesn't have a score on the side). - * Be aware that this can contain color codes. - * - * @return the scoreboard title - */ - getTitle(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Sets the scoreboard title. - * - * @param title the new title - * @return the scoreboard title - */ - setTitle(title: com.chattriggers.ctjs.api.message.TextComponent): void; - setTitle(title: string): void; - /** - * Get all currently visible strings on the scoreboard. (excluding title) - * Be aware that this can contain color codes. - * - * @return the list of lines - */ - getLines(): Array; - /** - * Get all currently visible strings on the scoreboard. (excluding title) - * Be aware that this can contain color codes. - * - * @return the list of lines - */ - getLines(descending: boolean): Array; - /** - * Gets the line at the specified index (0 based) - * Equivalent to Scoreboard.getLines().get(index) - * - * @param index the line index - * @return the score object at the index - */ - getLineByIndex(index: number): com.chattriggers.ctjs.api.world.Scoreboard$Score; - /** - * Gets a list of lines that have a certain score, - * i.e. the numbers shown on the right - * - * @param score the score to look for - * @return a list of actual score objects - */ - getLinesByScore(score: number): Array; - /** - * Sets a line in the scoreboard to the specified name and score. - * - * @param score the score value for this item - * @param line the [TextComponent] to display on said line - * @param override whether to remove old lines with the same score - */ - setLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Sets a line in the scoreboard to the specified name and score. - * - * @param score the score value for this item - * @param line the [TextComponent] to display on said line - * @param override whether to remove old lines with the same score - */ - setLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent, override: boolean): void; - setLine(score: number, line: string): void; - setLine(score: number, line: string, override: boolean): void; - /** - * Adds a line to the scoreboard - * - * @param score the score value for this item - * @param line the [TextComponent] to display on said line - */ - addLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent): void; - addLine(score: number, line: string): void; - /** - * Removes all lines from the scoreboard matching with a certain score - * - * @param score the score of the lines to remove - */ - removeScores(score: number): void; - /** - * Removes the line at a certain index - * - * @param index the index of the line to remove - */ - removeIndex(index: number): void; - /** - * Removes the line at a certain index - * - * @param index the index of the line to remove - */ - removeIndex(index: number, descending: boolean): void; - setShouldRender(shouldRender: boolean): void; - getShouldRender(): boolean; - /** - * Creates or gets a [Team] with a given name - * - * @param name the name of the team - */ - createTeam(name: string): com.chattriggers.ctjs.api.entity.Team; - new(): com.chattriggers.ctjs.api.world.Scoreboard; - } - const Scoreboard$Score: { - new(mcValue: net.minecraft.world.scores.ScoreAccess): com.chattriggers.ctjs.api.world.Scoreboard$Score; - } - interface Scoreboard$Score extends com.chattriggers.ctjs.api.CTWrapper { - /** - * Gets the team associated with this score, if it exists - * - * @return the team, or null if it does not exist - */ - getTeam(): com.chattriggers.ctjs.api.entity.Team | null | undefined; - /** - * Sets the team associated with this score - * - * @param team the new team to set for this line. Custom teams can be created using [createTeam] - * @return the score to allow for method chaining - */ - setTeam(team: com.chattriggers.ctjs.api.entity.Team | null | undefined): com.chattriggers.ctjs.api.world.Scoreboard$Score; - /** - * Gets the score value for this score, - * i.e. the number on the right of the board - * - * @return the actual point value - */ - getScore(): number; - /** - * Sets the score value for this score - * - * @param score the new point value - * @return the score to allow for method chaining - */ - setScore(score: number): com.chattriggers.ctjs.api.world.Scoreboard$Score; - /** - * Gets the display text of this score - * - * @return the display name - */ - getName(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Sets the name of this score - * - * @param name the new name - * @return the score to allow for method chaining - */ - setName(name: com.chattriggers.ctjs.api.message.TextComponent | null | undefined): com.chattriggers.ctjs.api.world.Scoreboard$Score; - /** - * Gets the number format of this score - * - * @return the number format - */ - getNumberFormat(): net.minecraft.network.chat.numbers.NumberFormat | null | undefined; - /** - * Sets the number format of this score - * - * @param format either a formatting string, i.e. "&6", style in the form of an object, see [TextComponent], a - * [NumberFormat], or hex value - * @return the score to allow for method chaining - * - * @see [TextComponent] - */ - setNumberFormat(format: any | null | undefined): com.chattriggers.ctjs.api.world.Scoreboard$Score; - /** - * Removes this score from the scoreboard - */ - remove(): void; - } - const Server: { - toMC(): net.minecraft.client.multiplayer.ServerData | null | undefined; - isSingleplayer(): boolean; - /** - * Gets the current server's IP, or "localhost" if the player - * is in a single-player world. - * - * @return The IP of the current server - */ - getIP(): string; - /** - * Gets the current server's name, or "SinglePlayer" if the player - * is in a single-player world. - * - * @return The name of the current server - */ - getName(): string; - /** - * Gets the current server's MOTD, or "SinglePlayer" if the player - * is in a single-player world. - * - * @return The MOTD of the current server - */ - getMOTD(): string; - /** - * Gets the ping to the current server, or 5 if the player - * is in a single-player world. Returns -1 if not in a world - * - * @return The ping to the current server - */ - getPing(): number; - new(): com.chattriggers.ctjs.api.world.Server; - } - interface Server { - toMC(): net.minecraft.client.multiplayer.ServerData | null | undefined; - isSingleplayer(): boolean; - /** - * Gets the current server's IP, or "localhost" if the player - * is in a single-player world. - * - * @return The IP of the current server - */ - getIP(): string; - /** - * Gets the current server's name, or "SinglePlayer" if the player - * is in a single-player world. - * - * @return The name of the current server - */ - getName(): string; - /** - * Gets the current server's MOTD, or "SinglePlayer" if the player - * is in a single-player world. - * - * @return The MOTD of the current server - */ - getMOTD(): string; - /** - * Gets the ping to the current server, or 5 if the player - * is in a single-player world. Returns -1 if not in a world - * - * @return The ping to the current server - */ - getPing(): number; - new(): com.chattriggers.ctjs.api.world.Server; - } - } - namespace entity { - const Entity: { - DimensionType: typeof com.chattriggers.ctjs.api.entity.Entity$DimensionType; - new(mcValue: net.minecraft.world.entity.Entity): com.chattriggers.ctjs.api.entity.Entity; - } - interface Entity extends com.chattriggers.ctjs.api.CTWrapper { - getX(): number; - getY(): number; - getZ(): number; - getPos(): com.chattriggers.ctjs.api.world.block.BlockPos; - getRotation(): net.minecraft.world.phys.Vec2; - getLastX(): number; - getLastY(): number; - getLastZ(): number; - getRenderX(): number; - getRenderY(): number; - getRenderZ(): number; - /** - * Gets the pitch, the horizontal direction the entity is facing towards. - * This has a range of -180 to 180. - * - * @return the entity's pitch - */ - getPitch(): number; - /** - * Gets the yaw, the vertical direction the entity is facing towards. - * This has a range of -180 to 180. - * - * @return the entity's yaw - */ - getYaw(): number; - /** - * Gets the entity's x motion. - * This is the amount the entity will move in the x direction next tick. - * - * @return the entity's x motion - */ - getMotionX(): number; - /** - * Gets the entity's y motion. - * This is the amount the entity will move in the y direction next tick. - * - * @return the entity's y motion - */ - getMotionY(): number; - /** - * Gets the entity's z motion. - * This is the amount the entity will move in the z direction next tick. - * - * @return the entity's z motion - */ - getMotionZ(): number; - /** - * Returns the entity this entity is riding, if one exists - * - * @return an Entity or null - */ - getRiding(): com.chattriggers.ctjs.api.entity.Entity | null | undefined; - /** - * Returns a list of all entity riding this entity - * - * @return List of entities, empty if there are no riders - */ - getRiders(): Array; - /** - * Checks whether the entity is dead. - * This is a fairly loose term, dead for a particle could mean it has faded, - * while dead for an entity means it has no health. - * - * @return whether an entity is dead - */ - isDead(): boolean; - /** - * Gets the entire width of the entity's hitbox - * - * @return the entity's width - */ - getWidth(): number; - /** - * Gets the entire height of the entity's hitbox - * - * @return the entity's height - */ - getHeight(): number; - /** - * Gets the height of the eyes on the entity, - * can be added to its Y coordinate to get the actual Y location of the eyes. - * This value defaults to 85% of an entity's height, however is different for some entities. - * - * @return the height of the entity's eyes - */ - getEyeHeight(): number; - /** - * Gets the name of the entity, could be "Villager", - * or, if the entity has a custom name, it returns that. - * - * @return the (custom) name of the entity as a String - */ - getName(): string; - /** - * Gets the name of the entity, could be "Villager", - * or, if the entity has a custom name, it returns that. - * - * @return the (custom) name of the entity as a [TextComponent] - */ - getNameComponent(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Gets the Java class name of the entity, for example "EntityVillager" - * - * @return the entity's class name - */ - getClassName(): string; - /** - * Gets the Java UUID object of this entity. - * Use of [UUID.toString] in conjunction is recommended. - * - * @return the entity's uuid - */ - getUUID(): java.util.UUID; - /** - * Gets the entity'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 entity's air level - */ - getAir(): number; - distanceTo(other: com.chattriggers.ctjs.api.entity.Entity): number; - distanceTo(other: net.minecraft.world.entity.Entity): number; - distanceTo(blockPos: com.chattriggers.ctjs.api.world.block.BlockPos): number; - distanceTo(x: number, y: number, z: number): number; - isOnGround(): boolean; - isCollided(): boolean; - getDistanceWalked(): number; - getStepHeight(): number; - hasNoClip(): boolean; - getTicksExisted(): number; - getFireResistance(): number; - isImmuneToFire(): boolean; - isInWater(): boolean; - isWet(): boolean; - getDimension(): com.chattriggers.ctjs.api.entity.Entity$DimensionType; - getMaxInPortalTime(): number; - isSilent(): boolean; - isInLava(): boolean; - getLookVector(): net.minecraft.world.phys.Vec3; - getLookVector(partialTicks: number): net.minecraft.world.phys.Vec3; - getEyePosition(): net.minecraft.world.phys.Vec3; - getEyePosition(partialTicks: number): net.minecraft.world.phys.Vec3; - canBeCollidedWith(): boolean; - canBePushed(): boolean; - isSneaking(): boolean; - isSprinting(): boolean; - isInvisible(): boolean; - isOutsideBorder(): boolean; - isBurning(): boolean; - getWorld(): net.minecraft.world.level.Level; - getChunk(): com.chattriggers.ctjs.api.world.Chunk; - } - const Entity$DimensionType: { - OVERWORLD: com.chattriggers.ctjs.api.entity.Entity$DimensionType; - NETHER: com.chattriggers.ctjs.api.entity.Entity$DimensionType; - END: com.chattriggers.ctjs.api.entity.Entity$DimensionType; - OVERWORLD_CAVES: com.chattriggers.ctjs.api.entity.Entity$DimensionType; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.entity.Entity$DimensionType; - } - interface Entity$DimensionType extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper> { - } - const Entity$Companion: { - fromMC(entity: net.minecraft.world.entity.Entity): com.chattriggers.ctjs.api.entity.Entity; - new(): com.chattriggers.ctjs.api.entity.Entity$Companion; - } - interface Entity$Companion { - fromMC(entity: net.minecraft.world.entity.Entity): com.chattriggers.ctjs.api.entity.Entity; - new(): com.chattriggers.ctjs.api.entity.Entity$Companion; - } - const Team: { - Visibility: typeof com.chattriggers.ctjs.api.entity.Team$Visibility; - new(mcValue: net.minecraft.world.scores.PlayerTeam): com.chattriggers.ctjs.api.entity.Team; - } - interface Team extends com.chattriggers.ctjs.api.CTWrapper { - /** - * Gets the registered name of the team - */ - getRegisteredName(): string; - /** - * Gets the display name of the team - */ - getName(): string; - /** - * Sets the display name of the team - * @param name the new display name - * @return the team for method chaining - */ - setName(name: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.entity.Team; - /** - * Sets the display name of the team - * @param name the new display name - * @return the team for method chaining - */ - setName(name: string): com.chattriggers.ctjs.api.entity.Team; - /** - * Gets the list of names on the team - */ - getMembers(): Array; - /** - * Gets the team prefix - */ - getPrefix(): string; - /** - * Sets the team prefix - * @param prefix the prefix to set - * @return the team for method chaining - */ - setPrefix(prefix: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.entity.Team; - /** - * Sets the team prefix - * @param prefix the prefix to set - * @return the team for method chaining - */ - setPrefix(prefix: string): com.chattriggers.ctjs.api.entity.Team; - /** - * Gets the team suffix - */ - getSuffix(): string; - /** - * Sets the team suffix - * @param suffix the suffix to set - * @return the team for method chaining - */ - setSuffix(suffix: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.entity.Team; - /** - * Sets the team suffix - * @param suffix the suffix to set - * @return the team for method chaining - */ - setSuffix(suffix: string): com.chattriggers.ctjs.api.entity.Team; - getColor(): string; - /** - * Sets the team color - * @param color a string format of a [Formatting], or a hex value - * @return the team for method chaining - */ - setColor(color: any | null | undefined): com.chattriggers.ctjs.api.entity.Team; - /** - * Gets the team's friendly fire setting - */ - getFriendlyFire(): boolean; - /** - * Gets whether the team can see invisible players on the same team - */ - canSeeInvisibleTeammates(): boolean; - /** - * Gets the team's name tag visibility - */ - getNameTagVisibility(): com.chattriggers.ctjs.api.entity.Team$Visibility; - /** - * Gets the team's death message visibility - */ - getDeathMessageVisibility(): com.chattriggers.ctjs.api.entity.Team$Visibility; - } - const Team$Visibility: { - ALWAYS: com.chattriggers.ctjs.api.entity.Team$Visibility; - NEVER: com.chattriggers.ctjs.api.entity.Team$Visibility; - HIDE_FOR_OTHERS_TEAMS: com.chattriggers.ctjs.api.entity.Team$Visibility; - HIDE_FOR_OWN_TEAM: com.chattriggers.ctjs.api.entity.Team$Visibility; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.entity.Team$Visibility; - } - interface Team$Visibility extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { - } - const Team$Visibility$Companion: { - fromMC(mcValue: net.minecraft.world.scores.Team$Visibility): com.chattriggers.ctjs.api.entity.Team$Visibility; - new(): unknown; - } - interface Team$Visibility$Companion { - fromMC(mcValue: net.minecraft.world.scores.Team$Visibility): com.chattriggers.ctjs.api.entity.Team$Visibility; - new(): unknown; - } - const PlayerMP: { - new(mcValue: net.minecraft.world.entity.player.Player): com.chattriggers.ctjs.api.entity.PlayerMP; - } - interface PlayerMP extends com.chattriggers.ctjs.api.entity.LivingEntity { - isSpectator(): boolean; - getPing(): number; - getTeam(): com.chattriggers.ctjs.api.entity.Team | null | undefined; - /** - * Gets the display name for this player, - * i.e. the name shown in tab list and in the player's nametag. - * @return the display name - */ - getDisplayName(): com.chattriggers.ctjs.api.message.TextComponent; - setTabDisplayName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Sets the name for this player shown above their head, - * in their name tag - * - * @param textComponent the new name to display - */ - setNametagName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Draws the player in the GUI. Takes the same parameters as [Renderer.drawPlayer] - * minus `player`. - * - * @see Renderer.drawPlayer - */ - draw(obj: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.entity.PlayerMP; - } - const LivingEntity: { - new(mcValue: net.minecraft.world.entity.LivingEntity): com.chattriggers.ctjs.api.entity.LivingEntity; - } - interface LivingEntity extends com.chattriggers.ctjs.api.entity.Entity { - getActivePotionEffects(): Array; - canSeeEntity(other: net.minecraft.world.entity.Entity): boolean; - canSeeEntity(other: com.chattriggers.ctjs.api.entity.Entity): boolean; - /** - * Gets the item currently in the entity's specified inventory slot. - * 0 for main hand, 1 for offhand, 2-5 for armor - * - * @param slot the slot to access - * @return the item in said slot - */ - getStackInSlot(slot: number): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - getHP(): number; - getMaxHP(): number; - getAbsorption(): number; - getAge(): number; - getArmorValue(): number; - isPotionActive(id: number): boolean; - isPotionActive(type: com.chattriggers.ctjs.api.world.PotionEffectType): boolean; - isPotionActive(effect: com.chattriggers.ctjs.api.world.PotionEffect): boolean; - } - const PlayerInteraction: { - UseBlock: typeof com.chattriggers.ctjs.api.entity.PlayerInteraction$UseBlock; - UseEntity: typeof com.chattriggers.ctjs.api.entity.PlayerInteraction$UseEntity; - UseItem: typeof com.chattriggers.ctjs.api.entity.PlayerInteraction$UseItem; - new(name: string, mainHand: boolean): com.chattriggers.ctjs.api.entity.PlayerInteraction; - } - interface PlayerInteraction { - getName(): string; - getMainHand(): boolean; - } - const PlayerInteraction$AttackBlock: { - new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$AttackBlock; - } - interface PlayerInteraction$AttackBlock extends com.chattriggers.ctjs.api.entity.PlayerInteraction { - new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$AttackBlock; - } - const PlayerInteraction$AttackEntity: { - new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$AttackEntity; - } - interface PlayerInteraction$AttackEntity extends com.chattriggers.ctjs.api.entity.PlayerInteraction { - new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$AttackEntity; - } - const PlayerInteraction$BreakBlock: { - new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$BreakBlock; - } - interface PlayerInteraction$BreakBlock extends com.chattriggers.ctjs.api.entity.PlayerInteraction { - new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$BreakBlock; - } - const PlayerInteraction$UseBlock: { - new(hand: net.minecraft.world.InteractionHand): com.chattriggers.ctjs.api.entity.PlayerInteraction$UseBlock; - } - interface PlayerInteraction$UseBlock extends com.chattriggers.ctjs.api.entity.PlayerInteraction { - } - const PlayerInteraction$UseEntity: { - new(hand: net.minecraft.world.InteractionHand): com.chattriggers.ctjs.api.entity.PlayerInteraction$UseEntity; - } - interface PlayerInteraction$UseEntity extends com.chattriggers.ctjs.api.entity.PlayerInteraction { - } - const PlayerInteraction$UseItem: { - new(hand: net.minecraft.world.InteractionHand): com.chattriggers.ctjs.api.entity.PlayerInteraction$UseItem; - } - interface PlayerInteraction$UseItem extends com.chattriggers.ctjs.api.entity.PlayerInteraction { - } - const BlockEntity: { - new(mcValue: net.minecraft.world.level.block.entity.BlockEntity): com.chattriggers.ctjs.api.entity.BlockEntity; - } - interface BlockEntity extends com.chattriggers.ctjs.api.CTWrapper { - getX(): number; - getY(): number; - getZ(): number; - getBlockType(): com.chattriggers.ctjs.api.world.block.BlockType; - getBlockPos(): com.chattriggers.ctjs.api.world.block.BlockPos; - getBlock(): com.chattriggers.ctjs.api.world.block.Block; - } - const Particle: { - new(mcValue: net.minecraft.client.particle.Particle): com.chattriggers.ctjs.api.entity.Particle; - } - interface Particle extends com.chattriggers.ctjs.api.CTWrapper { - getX(): number; - setX(value: number): void; - getY(): number; - setY(value: number): void; - getZ(): number; - setZ(value: number): void; - getLastX(): number; - setLastX(value: number): void; - getLastY(): number; - setLastY(value: number): void; - getLastZ(): number; - setLastZ(value: number): void; - getRenderX(): number; - getRenderY(): number; - getRenderZ(): number; - getMotionX(): number; - setMotionX(value: number): void; - getMotionY(): number; - setMotionY(value: number): void; - getMotionZ(): number; - setMotionZ(value: number): void; - getAge(): number; - setAge(value: number): void; - getDead(): boolean; - setDead(value: boolean): void; - scale(scale: number): com.chattriggers.ctjs.api.entity.Particle; - /** - * Sets the amount of ticks this particle will live for - * - * @param maxAge the particle's max age (in ticks) - */ - setMaxAge(maxAge: number): com.chattriggers.ctjs.api.entity.Particle; - remove(): com.chattriggers.ctjs.api.entity.Particle; - } - } - namespace commands { - interface RootCommand { - register(): void; - } - const DynamicCommands: { - AngleArgumentWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$AngleArgumentWrapper; - PosArgumentWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$PosArgumentWrapper; - BlockPredicateWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$BlockPredicateWrapper; - BlockStateArgumentWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$BlockStateArgumentWrapper; - EntitySelectorWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$EntitySelectorWrapper; - ItemStackArgumentWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$ItemStackArgumentWrapper; - MessageFormatArgumentWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$MessageFormatArgumentWrapper; - NbtPathWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$NbtPathWrapper; - registerCommand(name: string): com.chattriggers.ctjs.api.commands.RootCommand; - registerCommand(name: string, builder: org.mozilla.javascript.Function | null | undefined): com.chattriggers.ctjs.api.commands.RootCommand; - buildCommand(name: string): com.chattriggers.ctjs.api.commands.RootCommand; - buildCommand(name: string, builder: org.mozilla.javascript.Function | null | undefined): com.chattriggers.ctjs.api.commands.RootCommand; - argument(name: string, type: com.mojang.brigadier.arguments.ArgumentType, builder: org.mozilla.javascript.Function): void; - literal(name: string, builder: org.mozilla.javascript.Function): void; - redirect(node: com.chattriggers.ctjs.api.commands.RootCommand): void; - redirect(node: com.mojang.brigadier.tree.CommandNode): void; - exec(method: org.mozilla.javascript.Function): void; - /** - * 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 `/`. - */ - getDispatcherRoot(): com.mojang.brigadier.tree.RootCommandNode | null | undefined; - /** - * @see Argument Types: bool - */ - bool(): com.mojang.brigadier.arguments.BoolArgumentType; - /** - * @see brigadier:double - */ - double(): com.mojang.brigadier.arguments.DoubleArgumentType; - /** - * @see brigadier:double - */ - double(min: number): com.mojang.brigadier.arguments.DoubleArgumentType; - /** - * @see brigadier:double - */ - double(min: number, max: number): com.mojang.brigadier.arguments.DoubleArgumentType; - /** - * @see brigadier:float - */ - float(): com.mojang.brigadier.arguments.FloatArgumentType; - /** - * @see brigadier:float - */ - float(min: number): com.mojang.brigadier.arguments.FloatArgumentType; - /** - * @see brigadier:float - */ - float(min: number, max: number): com.mojang.brigadier.arguments.FloatArgumentType; - /** - * @see brigadier:integer - */ - integer(): com.mojang.brigadier.arguments.IntegerArgumentType; - /** - * @see brigadier:integer - */ - integer(min: number): com.mojang.brigadier.arguments.IntegerArgumentType; - /** - * @see brigadier:integer - */ - integer(min: number, max: number): com.mojang.brigadier.arguments.IntegerArgumentType; - /** - * @see brigadier:long - */ - long(): com.mojang.brigadier.arguments.LongArgumentType; - /** - * @see brigadier:long - */ - long(min: number): com.mojang.brigadier.arguments.LongArgumentType; - /** - * @see brigadier:long - */ - long(min: number, max: number): com.mojang.brigadier.arguments.LongArgumentType; - /** - * @see brigadier:string - */ - string(): com.mojang.brigadier.arguments.StringArgumentType; - /** - * @see brigadier:string - */ - greedyString(): com.mojang.brigadier.arguments.StringArgumentType; - /** - * @see brigadier:string - */ - word(): com.mojang.brigadier.arguments.StringArgumentType; - /** - * @see minecraft:angle - */ - angle(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:block_pos - */ - blockPos(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:block_predicate - */ - blockPredicate(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:block_state - */ - blockState(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:color - */ - color(): net.minecraft.commands.arguments.ColorArgument; - /** - * @see minecraft:column_pos - */ - columnPos(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:dimension - */ - dimension(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:entity - */ - entity(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:entity - */ - entities(): com.mojang.brigadier.arguments.ArgumentType>; - /** - * @see minecraft:float_range - */ - floatRange(): net.minecraft.commands.arguments.RangeArgument$Floats; - /** - * @see minecraft:game_profile - */ - gameProfile(): com.mojang.brigadier.arguments.ArgumentType>; - /** - * @see minecraft:game_profile - */ - player(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:game_profile - */ - players(): com.mojang.brigadier.arguments.ArgumentType>; - /** - * @see minecraft:gamemode - */ - gameMode(): net.minecraft.commands.arguments.GameModeArgument; - /** - * @see minecraft:int_range - */ - intRange(): net.minecraft.commands.arguments.RangeArgument$Ints; - /** - * @see minecraft:item_predicate - */ - itemPredicate(): com.mojang.brigadier.arguments.ArgumentType>; - /** - * @see minecraft:item_slot - */ - itemSlot(): net.minecraft.commands.arguments.SlotArgument; - /** - * @see minecraft:item_stack - */ - itemStack(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:message - */ - message(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:nbt_compound_tag - */ - nbtCompoundTag(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:nbt_path - */ - nbtPath(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:nbt_tag - */ - nbtTag(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:resource - */ - resource(): net.minecraft.commands.arguments.IdentifierArgument; - /** - * @see minecraft:rotation - */ - rotation(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:swizzle - */ - swizzle(): com.mojang.brigadier.arguments.ArgumentType>; - /** - * @see minecraft:time - */ - time(): net.minecraft.commands.arguments.TimeArgument; - /** - * @see minecraft:time - */ - time(minimum: number): net.minecraft.commands.arguments.TimeArgument; - /** - * @see minecraft:uuid - */ - uuid(): net.minecraft.commands.arguments.UuidArgument; - /** - * @see minecraft:vec2 - */ - vec2(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:vec2 - */ - vec2(centerIntegers: boolean): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:vec3 - */ - vec3(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:vec3 - */ - vec3(centerIntegers: boolean): com.mojang.brigadier.arguments.ArgumentType; - /** - * Allows choosing from a set list of strings. When suggested to the user, this - * will look as though this argument is multiple "literal()" nodes. - */ - choices(options: string): com.mojang.brigadier.arguments.ArgumentType; - /** - * 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 - */ - custom(obj: org.mozilla.javascript.NativeObject): com.mojang.brigadier.arguments.ArgumentType; - /** - * Throw a detailed error given the reader, meant to be used with [custom] - */ - error(reader: com.mojang.brigadier.ImmutableStringReader, message: string): never; - /** - * Throw a detailed error given the reader, meant to be used with [custom] - */ - error(reader: com.mojang.brigadier.ImmutableStringReader, message: com.chattriggers.ctjs.api.message.TextComponent): never; - /** - * 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); - * }); - * }); - * ``` - */ - new(): com.chattriggers.ctjs.api.commands.DynamicCommands; - } - interface DynamicCommands extends com.chattriggers.ctjs.internal.commands.CommandCollection { - registerCommand(name: string): com.chattriggers.ctjs.api.commands.RootCommand; - registerCommand(name: string, builder: org.mozilla.javascript.Function | null | undefined): com.chattriggers.ctjs.api.commands.RootCommand; - buildCommand(name: string): com.chattriggers.ctjs.api.commands.RootCommand; - buildCommand(name: string, builder: org.mozilla.javascript.Function | null | undefined): com.chattriggers.ctjs.api.commands.RootCommand; - argument(name: string, type: com.mojang.brigadier.arguments.ArgumentType, builder: org.mozilla.javascript.Function): void; - literal(name: string, builder: org.mozilla.javascript.Function): void; - redirect(node: com.chattriggers.ctjs.api.commands.RootCommand): void; - redirect(node: com.mojang.brigadier.tree.CommandNode): void; - exec(method: org.mozilla.javascript.Function): void; - /** - * 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 `/`. - */ - getDispatcherRoot(): com.mojang.brigadier.tree.RootCommandNode | null | undefined; - /** - * @see Argument Types: bool - */ - bool(): com.mojang.brigadier.arguments.BoolArgumentType; - /** - * @see brigadier:double - */ - double(): com.mojang.brigadier.arguments.DoubleArgumentType; - /** - * @see brigadier:double - */ - double(min: number): com.mojang.brigadier.arguments.DoubleArgumentType; - /** - * @see brigadier:double - */ - double(min: number, max: number): com.mojang.brigadier.arguments.DoubleArgumentType; - /** - * @see brigadier:float - */ - float(): com.mojang.brigadier.arguments.FloatArgumentType; - /** - * @see brigadier:float - */ - float(min: number): com.mojang.brigadier.arguments.FloatArgumentType; - /** - * @see brigadier:float - */ - float(min: number, max: number): com.mojang.brigadier.arguments.FloatArgumentType; - /** - * @see brigadier:integer - */ - integer(): com.mojang.brigadier.arguments.IntegerArgumentType; - /** - * @see brigadier:integer - */ - integer(min: number): com.mojang.brigadier.arguments.IntegerArgumentType; - /** - * @see brigadier:integer - */ - integer(min: number, max: number): com.mojang.brigadier.arguments.IntegerArgumentType; - /** - * @see brigadier:long - */ - long(): com.mojang.brigadier.arguments.LongArgumentType; - /** - * @see brigadier:long - */ - long(min: number): com.mojang.brigadier.arguments.LongArgumentType; - /** - * @see brigadier:long - */ - long(min: number, max: number): com.mojang.brigadier.arguments.LongArgumentType; - /** - * @see brigadier:string - */ - string(): com.mojang.brigadier.arguments.StringArgumentType; - /** - * @see brigadier:string - */ - greedyString(): com.mojang.brigadier.arguments.StringArgumentType; - /** - * @see brigadier:string - */ - word(): com.mojang.brigadier.arguments.StringArgumentType; - /** - * @see minecraft:angle - */ - angle(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:block_pos - */ - blockPos(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:block_predicate - */ - blockPredicate(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:block_state - */ - blockState(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:color - */ - color(): net.minecraft.commands.arguments.ColorArgument; - /** - * @see minecraft:column_pos - */ - columnPos(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:dimension - */ - dimension(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:entity - */ - entity(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:entity - */ - entities(): com.mojang.brigadier.arguments.ArgumentType>; - /** - * @see minecraft:float_range - */ - floatRange(): net.minecraft.commands.arguments.RangeArgument$Floats; - /** - * @see minecraft:game_profile - */ - gameProfile(): com.mojang.brigadier.arguments.ArgumentType>; - /** - * @see minecraft:game_profile - */ - player(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:game_profile - */ - players(): com.mojang.brigadier.arguments.ArgumentType>; - /** - * @see minecraft:gamemode - */ - gameMode(): net.minecraft.commands.arguments.GameModeArgument; - /** - * @see minecraft:int_range - */ - intRange(): net.minecraft.commands.arguments.RangeArgument$Ints; - /** - * @see minecraft:item_predicate - */ - itemPredicate(): com.mojang.brigadier.arguments.ArgumentType>; - /** - * @see minecraft:item_slot - */ - itemSlot(): net.minecraft.commands.arguments.SlotArgument; - /** - * @see minecraft:item_stack - */ - itemStack(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:message - */ - message(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:nbt_compound_tag - */ - nbtCompoundTag(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:nbt_path - */ - nbtPath(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:nbt_tag - */ - nbtTag(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:resource - */ - resource(): net.minecraft.commands.arguments.IdentifierArgument; - /** - * @see minecraft:rotation - */ - rotation(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:swizzle - */ - swizzle(): com.mojang.brigadier.arguments.ArgumentType>; - /** - * @see minecraft:time - */ - time(): net.minecraft.commands.arguments.TimeArgument; - /** - * @see minecraft:time - */ - time(minimum: number): net.minecraft.commands.arguments.TimeArgument; - /** - * @see minecraft:uuid - */ - uuid(): net.minecraft.commands.arguments.UuidArgument; - /** - * @see minecraft:vec2 - */ - vec2(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:vec2 - */ - vec2(centerIntegers: boolean): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:vec3 - */ - vec3(): com.mojang.brigadier.arguments.ArgumentType; - /** - * @see minecraft:vec3 - */ - vec3(centerIntegers: boolean): com.mojang.brigadier.arguments.ArgumentType; - /** - * Allows choosing from a set list of strings. When suggested to the user, this - * will look as though this argument is multiple "literal()" nodes. - */ - choices(options: string): com.mojang.brigadier.arguments.ArgumentType; - /** - * 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 - */ - custom(obj: org.mozilla.javascript.NativeObject): com.mojang.brigadier.arguments.ArgumentType; - /** - * Throw a detailed error given the reader, meant to be used with [custom] - */ - error(reader: com.mojang.brigadier.ImmutableStringReader, message: string): never; - /** - * Throw a detailed error given the reader, meant to be used with [custom] - */ - error(reader: com.mojang.brigadier.ImmutableStringReader, message: com.chattriggers.ctjs.api.message.TextComponent): never; - /** - * 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); - * }); - * }); - * ``` - */ - new(): com.chattriggers.ctjs.api.commands.DynamicCommands; - } - const DynamicCommands$AngleArgumentWrapper: { - new(angle: net.minecraft.commands.arguments.AngleArgument$SingleAngle): com.chattriggers.ctjs.api.commands.DynamicCommands$AngleArgumentWrapper; - } - interface DynamicCommands$AngleArgumentWrapper { - getAngle(): net.minecraft.commands.arguments.AngleArgument$SingleAngle; - getAngle(): number; - getAngle(entity: com.chattriggers.ctjs.api.entity.Entity): number; - component1(): net.minecraft.commands.arguments.AngleArgument$SingleAngle; - copy(angle: net.minecraft.commands.arguments.AngleArgument$SingleAngle): com.chattriggers.ctjs.api.commands.DynamicCommands$AngleArgumentWrapper; - } - const DynamicCommands$PosArgumentWrapper: { - new(impl: net.minecraft.commands.arguments.coordinates.Coordinates): com.chattriggers.ctjs.api.commands.DynamicCommands$PosArgumentWrapper; - } - interface DynamicCommands$PosArgumentWrapper extends net.minecraft.commands.arguments.coordinates.Coordinates { - getImpl(): net.minecraft.commands.arguments.coordinates.Coordinates; - toAbsolutePos(): net.minecraft.world.phys.Vec3; - toAbsoluteBlockPos(): com.chattriggers.ctjs.api.world.block.BlockPos; - toAbsoluteRotation(): net.minecraft.world.phys.Vec2; - component1(): net.minecraft.commands.arguments.coordinates.Coordinates; - copy(impl: net.minecraft.commands.arguments.coordinates.Coordinates): com.chattriggers.ctjs.api.commands.DynamicCommands$PosArgumentWrapper; - } - const DynamicCommands$BlockPredicateWrapper: { - new(impl: net.minecraft.commands.arguments.blocks.BlockPredicateArgument$Result): com.chattriggers.ctjs.api.commands.DynamicCommands$BlockPredicateWrapper; - } - interface DynamicCommands$BlockPredicateWrapper { - getImpl(): net.minecraft.commands.arguments.blocks.BlockPredicateArgument$Result; - test(blockPos: com.chattriggers.ctjs.api.world.block.BlockPos): boolean; - component1(): net.minecraft.commands.arguments.blocks.BlockPredicateArgument$Result; - copy(impl: net.minecraft.commands.arguments.blocks.BlockPredicateArgument$Result): com.chattriggers.ctjs.api.commands.DynamicCommands$BlockPredicateWrapper; - } - const DynamicCommands$BlockStateArgumentWrapper: { - new(impl: net.minecraft.commands.arguments.blocks.BlockInput): com.chattriggers.ctjs.api.commands.DynamicCommands$BlockStateArgumentWrapper; - } - interface DynamicCommands$BlockStateArgumentWrapper { - getImpl(): net.minecraft.commands.arguments.blocks.BlockInput; - test(blockPos: com.chattriggers.ctjs.api.world.block.BlockPos): boolean; - component1(): net.minecraft.commands.arguments.blocks.BlockInput; - copy(impl: net.minecraft.commands.arguments.blocks.BlockInput): com.chattriggers.ctjs.api.commands.DynamicCommands$BlockStateArgumentWrapper; - } - const DynamicCommands$EntitySelectorWrapper: { - new(impl: net.minecraft.commands.arguments.selector.EntitySelector): com.chattriggers.ctjs.api.commands.DynamicCommands$EntitySelectorWrapper; - } - interface DynamicCommands$EntitySelectorWrapper { - getEntity(): com.chattriggers.ctjs.api.entity.Entity; - getEntities(): Array; - getPlayers(): Array; - } - const DynamicCommands$ItemStackArgumentWrapper: { - new(impl: net.minecraft.commands.arguments.item.ItemInput): com.chattriggers.ctjs.api.commands.DynamicCommands$ItemStackArgumentWrapper; - } - interface DynamicCommands$ItemStackArgumentWrapper { - getItemType(): com.chattriggers.ctjs.api.inventory.ItemType; - test(type: com.chattriggers.ctjs.api.inventory.ItemType): boolean; - component1(): net.minecraft.commands.arguments.item.ItemInput; - copy(impl: net.minecraft.commands.arguments.item.ItemInput): com.chattriggers.ctjs.api.commands.DynamicCommands$ItemStackArgumentWrapper; - } - const DynamicCommands$MessageFormatArgumentWrapper: { - new(impl: net.minecraft.commands.arguments.MessageArgument$Message): com.chattriggers.ctjs.api.commands.DynamicCommands$MessageFormatArgumentWrapper; - } - interface DynamicCommands$MessageFormatArgumentWrapper { - getText(): string; - setText(value: string): void; - format(): com.chattriggers.ctjs.api.message.TextComponent; - component1(): net.minecraft.commands.arguments.MessageArgument$Message; - copy(impl: net.minecraft.commands.arguments.MessageArgument$Message): com.chattriggers.ctjs.api.commands.DynamicCommands$MessageFormatArgumentWrapper; - } - const DynamicCommands$NbtPathWrapper: { - new(impl: net.minecraft.commands.arguments.NbtPathArgument$NbtPath): com.chattriggers.ctjs.api.commands.DynamicCommands$NbtPathWrapper; - } - interface DynamicCommands$NbtPathWrapper { - get(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): Array; - count(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): number; - getOrInit(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase, supplier: kotlin.Function0): Array; - put(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase, source: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): number; - insert(index: number, compound: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound, elements: Array): number; - remove(element: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): number; - component1(): net.minecraft.commands.arguments.NbtPathArgument$NbtPath; - copy(impl: net.minecraft.commands.arguments.NbtPathArgument$NbtPath): com.chattriggers.ctjs.api.commands.DynamicCommands$NbtPathWrapper; - } - } - namespace client { - const Proxy: { - new(ip: string, port: number, name: string, username: string, password: string, isEnabled: boolean): com.chattriggers.ctjs.api.client.Proxy; - } - interface Proxy { - getIp(): string; - setIp(value: string): void; - getPort(): number; - setPort(value: number): void; - getName(): string; - setName(value: string): void; - getUsername(): string; - setUsername(value: string): void; - getPassword(): string; - setPassword(value: string): void; - isEnabled(): boolean; - setEnabled(value: boolean): void; - component1(): string; - component2(): number; - component3(): string; - component4(): string; - component5(): string; - component6(): boolean; - copy(ip: string, port: number, name: string, username: string, password: string, isEnabled: boolean): com.chattriggers.ctjs.api.client.Proxy; - } - const DiscordRPC: { - stayOn(): void; - turnOff(): void; - updatePresence(details: string, state: string): void; - resetTimestamp(): void; - revertToIdle(): void; - new(): com.chattriggers.ctjs.api.client.DiscordRPC; - } - interface DiscordRPC { - stayOn(): void; - turnOff(): void; - updatePresence(details: string, state: string): void; - resetTimestamp(): void; - revertToIdle(): void; - new(): com.chattriggers.ctjs.api.client.DiscordRPC; - } - const Sound: { - Category: typeof com.chattriggers.ctjs.api.client.Sound$Category; - AttenuationType: typeof com.chattriggers.ctjs.api.client.Sound$AttenuationType; - new(config: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.client.Sound; - } - interface Sound { - destroy(): void; - /** - * Gets the category of this sound, making it respect the Player's sound volume sliders. - * - * @return the category - */ - getCategory(): com.chattriggers.ctjs.api.client.Sound$Category; - /** - * Sets the category of this sound, making it respect the Player's sound volume sliders. - * - * @param category the category - */ - setCategory(category: com.chattriggers.ctjs.api.client.Sound$Category): com.chattriggers.ctjs.api.client.Sound; - /** - * Gets this sound's volume. - * - * @return A float value (0.0f - 1.0f). - */ - getVolume(): number; - /** - * Sets this sound's volume. - * - * @param volume A float value (0.0f - 1.0f). - */ - setVolume(volume: number): com.chattriggers.ctjs.api.client.Sound; - getX(): number; - getY(): number; - getZ(): number; - setX(x: number): com.chattriggers.ctjs.api.client.Sound; - setY(y: number): com.chattriggers.ctjs.api.client.Sound; - setZ(z: number): com.chattriggers.ctjs.api.client.Sound; - getPosition(): net.minecraft.world.phys.Vec3; - setPosition(x: number, y: number, z: number): com.chattriggers.ctjs.api.client.Sound; - /** - * Gets this sound's pitch. - * - * @return A float value (0.5f - 2.0f). - */ - getPitch(): number; - /** - * Sets this sound's pitch. - * - * @param pitch A float value (0.5f - 2.0f). - */ - setPitch(pitch: number): com.chattriggers.ctjs.api.client.Sound; - /** - * Gets the attenuation type (fade out over space) of the sound - * - * @return The type of Attenuation - */ - getAttenuationType(): com.chattriggers.ctjs.api.client.Sound$AttenuationType; - /** - * Sets the attenuation type (fade out over space) of the sound - * - * @param attenuationType The type of Attenuation - */ - setAttenuationType(attenuationType: com.chattriggers.ctjs.api.client.Sound$AttenuationType): com.chattriggers.ctjs.api.client.Sound; - /** - * Gets the attenuation distance of the sound - */ - getAttenuation(): number; - /** - * Sets the attenuation distance of the sound - */ - setAttenuation(attenuation: number): com.chattriggers.ctjs.api.client.Sound; - /** - * Gets whether the sound should repeat after finishing - */ - getLoop(): boolean; - /** - * Sets whether the sound should repeat after finishing - */ - setLoop(loop: boolean): com.chattriggers.ctjs.api.client.Sound; - /** - * Gets the tick delay after finishing before looping again (if getLoop() is true) - */ - getLoopDelay(): number; - /** - * Sets the tick delay after finishing before looping again (if getLoop() is true) - */ - setLoopDelay(loopDelay: number): com.chattriggers.ctjs.api.client.Sound; - /** - * Plays/resumes the sound. This requires the world to be loaded - */ - play(): void; - /** - * Plays/resumes the sound. This requires the world to be loaded - */ - play(delay: number): void; - /** - * Pauses the sound, to be resumed later. This requires the world to be loaded - */ - pause(): void; - /** - * Completely stops the sound. This requires the world to be loaded - */ - stop(): void; - /** - * Immediately restarts the sound. This requires the world to be loaded - */ - rewind(): void; - } - const Sound$Category: { - MASTER: com.chattriggers.ctjs.api.client.Sound$Category; - MUSIC: com.chattriggers.ctjs.api.client.Sound$Category; - RECORDS: com.chattriggers.ctjs.api.client.Sound$Category; - WEATHER: com.chattriggers.ctjs.api.client.Sound$Category; - BLOCKS: com.chattriggers.ctjs.api.client.Sound$Category; - HOSTILE: com.chattriggers.ctjs.api.client.Sound$Category; - NEUTRAL: com.chattriggers.ctjs.api.client.Sound$Category; - PLAYERS: com.chattriggers.ctjs.api.client.Sound$Category; - AMBIENT: com.chattriggers.ctjs.api.client.Sound$Category; - VOICE: com.chattriggers.ctjs.api.client.Sound$Category; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.client.Sound$Category; - } - interface Sound$Category extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { - } - const Sound$Category$Companion: { - fromMC(mcValue: net.minecraft.sounds.SoundSource): com.chattriggers.ctjs.api.client.Sound$Category; - from(value: any): com.chattriggers.ctjs.api.client.Sound$Category; - new(): unknown; - } - interface Sound$Category$Companion { - fromMC(mcValue: net.minecraft.sounds.SoundSource): com.chattriggers.ctjs.api.client.Sound$Category; - from(value: any): com.chattriggers.ctjs.api.client.Sound$Category; - new(): unknown; - } - const Sound$AttenuationType: { - NONE: com.chattriggers.ctjs.api.client.Sound$AttenuationType; - LINEAR: com.chattriggers.ctjs.api.client.Sound$AttenuationType; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.client.Sound$AttenuationType; - } - interface Sound$AttenuationType extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { - } - const Sound$AttenuationType$Companion: { - fromMC(mcValue: net.minecraft.client.resources.sounds.SoundInstance$Attenuation): com.chattriggers.ctjs.api.client.Sound$AttenuationType; - from(value: any): com.chattriggers.ctjs.api.client.Sound$AttenuationType; - new(): unknown; - } - interface Sound$AttenuationType$Companion { - fromMC(mcValue: net.minecraft.client.resources.sounds.SoundInstance$Attenuation): com.chattriggers.ctjs.api.client.Sound$AttenuationType; - from(value: any): com.chattriggers.ctjs.api.client.Sound$AttenuationType; - new(): unknown; - } - const Player: { - ArmorWrapper: typeof com.chattriggers.ctjs.api.client.Player$ArmorWrapper; - armor: com.chattriggers.ctjs.api.client.Player$ArmorWrapper; - toMC(): net.minecraft.client.player.LocalPlayer | null | undefined; - /** - * Gets Minecraft's EntityPlayerSP object representing the user - * - * @return The Minecraft EntityPlayerSP object representing the user - */ - getPlayer(): net.minecraft.client.player.LocalPlayer | null | undefined; - getTeam(): com.chattriggers.ctjs.api.entity.Team | null | undefined; - asPlayerMP(): com.chattriggers.ctjs.api.entity.PlayerMP | null | undefined; - getX(): number; - getY(): number; - getZ(): number; - getPos(): com.chattriggers.ctjs.api.world.block.BlockPos; - getRotation(): net.minecraft.world.phys.Vec2; - getLastX(): number; - getLastY(): number; - getLastZ(): number; - getRenderX(): number; - getRenderY(): number; - getRenderZ(): number; - /** - * 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 - */ - getMotionX(): number; - /** - * 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 - */ - getMotionY(): number; - /** - * 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 - */ - getMotionZ(): number; - /** - * Gets the player's camera pitch. - * - * @return the player's camera pitch - */ - getPitch(): number; - /** - * Gets the player's camera yaw. - * - * @return the player's camera yaw - */ - getYaw(): number; - /** - * Gets the player's username. - * - * @return the player's username - */ - getName(): string; - /** - * Gets the Java UUID object of the player. - * Use of [UUID.toString] in conjunction is recommended. - * - * @return the player's uuid - */ - getUUID(): java.util.UUID; - getHP(): number; - /** - * 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 - */ - getAirLevel(): number; - getXPLevel(): number; - isMoving(): boolean; - isSneaking(): boolean; - isSprinting(): boolean; - /** - * Checks if player can be pushed by water. - * - * @return true if the player is flying, false otherwise - */ - isFlying(): boolean; - isSleeping(): boolean; - /** - * Gets the direction the player is facing. - * Example: "South West" - * - * @return The direction the player is facing, one of the four cardinal directions - */ - facing(): string; - /** - * 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 - */ - getActivePotionEffects(): Array; - /** - * 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 - */ - lookingAt(): any | null | undefined; - /** - * Gets the current item in the player's hand. - * - * @param hand the hand of the item - * @return the current held [Item] - */ - getHeldItem(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - /** - * Gets the current item in the player's hand. - * - * @param hand the hand of the item - * @return the current held [Item] - */ - getHeldItem(hand: net.minecraft.world.InteractionHand): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - /** - * Sets the current held item based on the provided index. - * - * @param index the new held item index - */ - setHeldItemIndex(index: number): void; - /** - * Gets the current index of the held item. - * - * @return the current index - */ - getHeldItemIndex(): number; - /** - * Gets the inventory of the player, i.e. the inventory accessed by 'e'. - * - * @return the player's inventory - */ - getInventory(): com.chattriggers.ctjs.api.inventory.Inventory | null | undefined; - /** - * 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 - */ - getDisplayName(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Sets the name for this player shown in tab list - * - * @param textComponent the new name to display - */ - setTabDisplayName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Sets the name for this player shown above their head, - * in their name tag - * - * @param textComponent the new name to display - */ - setNametagName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Gets the container the user currently has open, i.e. a chest. - * - * @return the currently opened container - */ - getContainer(): com.chattriggers.ctjs.api.inventory.Inventory | null | undefined; - /** - * Draws the player in the GUI. Takes the same parameters as [Renderer.drawPlayer] - * minus `player`. - * - * @see Renderer.drawPlayer - */ - draw(obj: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.client.Player; - new(): com.chattriggers.ctjs.api.client.Player; - } - interface Player { - armor: com.chattriggers.ctjs.api.client.Player$ArmorWrapper; - toMC(): net.minecraft.client.player.LocalPlayer | null | undefined; - /** - * Gets Minecraft's EntityPlayerSP object representing the user - * - * @return The Minecraft EntityPlayerSP object representing the user - */ - getPlayer(): net.minecraft.client.player.LocalPlayer | null | undefined; - getTeam(): com.chattriggers.ctjs.api.entity.Team | null | undefined; - asPlayerMP(): com.chattriggers.ctjs.api.entity.PlayerMP | null | undefined; - getX(): number; - getY(): number; - getZ(): number; - getPos(): com.chattriggers.ctjs.api.world.block.BlockPos; - getRotation(): net.minecraft.world.phys.Vec2; - getLastX(): number; - getLastY(): number; - getLastZ(): number; - getRenderX(): number; - getRenderY(): number; - getRenderZ(): number; - /** - * 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 - */ - getMotionX(): number; - /** - * 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 - */ - getMotionY(): number; - /** - * 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 - */ - getMotionZ(): number; - /** - * Gets the player's camera pitch. - * - * @return the player's camera pitch - */ - getPitch(): number; - /** - * Gets the player's camera yaw. - * - * @return the player's camera yaw - */ - getYaw(): number; - /** - * Gets the player's username. - * - * @return the player's username - */ - getName(): string; - /** - * Gets the Java UUID object of the player. - * Use of [UUID.toString] in conjunction is recommended. - * - * @return the player's uuid - */ - getUUID(): java.util.UUID; - getHP(): number; - /** - * 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 - */ - getAirLevel(): number; - getXPLevel(): number; - isMoving(): boolean; - isSneaking(): boolean; - isSprinting(): boolean; - /** - * Checks if player can be pushed by water. - * - * @return true if the player is flying, false otherwise - */ - isFlying(): boolean; - isSleeping(): boolean; - /** - * Gets the direction the player is facing. - * Example: "South West" - * - * @return The direction the player is facing, one of the four cardinal directions - */ - facing(): string; - /** - * 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 - */ - getActivePotionEffects(): Array; - /** - * 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 - */ - lookingAt(): any | null | undefined; - /** - * Gets the current item in the player's hand. - * - * @param hand the hand of the item - * @return the current held [Item] - */ - getHeldItem(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - /** - * Gets the current item in the player's hand. - * - * @param hand the hand of the item - * @return the current held [Item] - */ - getHeldItem(hand: net.minecraft.world.InteractionHand): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - /** - * Sets the current held item based on the provided index. - * - * @param index the new held item index - */ - setHeldItemIndex(index: number): void; - /** - * Gets the current index of the held item. - * - * @return the current index - */ - getHeldItemIndex(): number; - /** - * Gets the inventory of the player, i.e. the inventory accessed by 'e'. - * - * @return the player's inventory - */ - getInventory(): com.chattriggers.ctjs.api.inventory.Inventory | null | undefined; - /** - * 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 - */ - getDisplayName(): com.chattriggers.ctjs.api.message.TextComponent; - /** - * Sets the name for this player shown in tab list - * - * @param textComponent the new name to display - */ - setTabDisplayName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Sets the name for this player shown above their head, - * in their name tag - * - * @param textComponent the new name to display - */ - setNametagName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; - /** - * Gets the container the user currently has open, i.e. a chest. - * - * @return the currently opened container - */ - getContainer(): com.chattriggers.ctjs.api.inventory.Inventory | null | undefined; - /** - * Draws the player in the GUI. Takes the same parameters as [Renderer.drawPlayer] - * minus `player`. - * - * @see Renderer.drawPlayer - */ - draw(obj: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.client.Player; - new(): com.chattriggers.ctjs.api.client.Player; - } - const Player$ArmorWrapper: { - new(): com.chattriggers.ctjs.api.client.Player$ArmorWrapper; - } - interface Player$ArmorWrapper { - /** - * @return the [Item] in the player's helmet slot or null if the slot is empty - */ - getHelmet(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - /** - * @return the [Item] in the player's chestplate slot or null if the slot is empty - */ - getChestplate(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - /** - * @return the [Item] in the player's leggings slot or null if the slot is empty - */ - getLeggings(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - /** - * @return the [Item] in the player's boots slot or null if the slot is empty - */ - getBoots(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; - } - const ScreenHelper: { - MenuButton: typeof com.chattriggers.ctjs.api.client.ScreenHelper$MenuButton; - titleFont: com.chattriggers.ctjs.api.render.Font; - smallerFont: com.chattriggers.ctjs.api.render.Font; - drawMenuButton(label: string, x: number, y: number, width: number, height: number, hovered: boolean, textColorOverride: number | null | undefined): void; - argb(a: number, r: number, g: number, b: number): number; - new(): com.chattriggers.ctjs.api.client.ScreenHelper; - } - interface ScreenHelper { - titleFont: com.chattriggers.ctjs.api.render.Font; - smallerFont: com.chattriggers.ctjs.api.render.Font; - drawMenuButton(label: string, x: number, y: number, width: number, height: number, hovered: boolean, textColorOverride: number | null | undefined): void; - argb(a: number, r: number, g: number, b: number): number; - new(): com.chattriggers.ctjs.api.client.ScreenHelper; - } - const ScreenHelper$MenuButton: { - new(label: string, x: number, y: number, width: number, height: number, onClick: kotlin.Function0): com.chattriggers.ctjs.api.client.ScreenHelper$MenuButton; - } - interface ScreenHelper$MenuButton { - getLabel(): string; - getX(): number; - getY(): number; - getWidth(): number; - getHeight(): number; - getOnClick(): kotlin.Function0; - isHovered(mouseX: number, mouseY: number): boolean; - component1(): string; - component2(): number; - component3(): number; - component4(): number; - component5(): number; - component6(): kotlin.Function0; - copy(label: string, x: number, y: number, width: number, height: number, onClick: kotlin.Function0): com.chattriggers.ctjs.api.client.ScreenHelper$MenuButton; - } - const KeyBind: { - /** - * 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) - */ - new(description: string, keyCode: number): com.chattriggers.ctjs.api.client.KeyBind; - /** - * 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) - */ - new(description: string, keyCode: number, category: string): com.chattriggers.ctjs.api.client.KeyBind; - new(keyBinding: net.minecraft.client.KeyMapping): com.chattriggers.ctjs.api.client.KeyBind; - } - interface KeyBind { - registerKeyPress(method: any): com.chattriggers.ctjs.api.client.KeyBind; - registerKeyRelease(method: any): com.chattriggers.ctjs.api.client.KeyBind; - registerKeyDown(method: any): com.chattriggers.ctjs.api.client.KeyBind; - unregisterKeyPress(): com.chattriggers.ctjs.api.client.KeyBind; - unregisterKeyRelease(): com.chattriggers.ctjs.api.client.KeyBind; - unregisterKeyDown(): com.chattriggers.ctjs.api.client.KeyBind; - /** - * Returns true if the key is pressed (used for continuous querying). - * - * @return whether the key is pressed - */ - isKeyDown(): boolean; - /** - * Returns true on the initial key press. For continuous querying use [isKeyDown]. - * - * @return whether the key has just been pressed - */ - isPressed(): boolean; - /** - * Gets the description of the key. - * - * @return the description - */ - getDescription(): string; - /** - * Gets the key code of the key. - * - * @return the integer key code - */ - getKeyCode(): number; - /** - * Gets the category of the key. - * - * @return the category - */ - getCategory(): string; - /** - * Sets the state of the key. - * - * @param pressed True to press, False to release - */ - setState(pressed: boolean): void; - } - const KeyBind$Companion: { - new(): com.chattriggers.ctjs.api.client.KeyBind$Companion; - } - interface KeyBind$Companion { - new(): com.chattriggers.ctjs.api.client.KeyBind$Companion; - } - const ProxyInfo: { - getProxies(): Array; - addProxy(proxy: com.chattriggers.ctjs.api.client.Proxy): void; - removeProxy(proxy: com.chattriggers.ctjs.api.client.Proxy): void; - updateProxy(original: com.chattriggers.ctjs.api.client.Proxy, newProxy: com.chattriggers.ctjs.api.client.Proxy): void; - setProxyEnabled(proxy: com.chattriggers.ctjs.api.client.Proxy, enabled: boolean): void; - getEnabledProxies(): Array; - new(): com.chattriggers.ctjs.api.client.ProxyInfo; - } - interface ProxyInfo { - getProxies(): Array; - addProxy(proxy: com.chattriggers.ctjs.api.client.Proxy): void; - removeProxy(proxy: com.chattriggers.ctjs.api.client.Proxy): void; - updateProxy(original: com.chattriggers.ctjs.api.client.Proxy, newProxy: com.chattriggers.ctjs.api.client.Proxy): void; - setProxyEnabled(proxy: com.chattriggers.ctjs.api.client.Proxy, enabled: boolean): void; - getEnabledProxies(): Array; - new(): com.chattriggers.ctjs.api.client.ProxyInfo; - } - const ProxyManagerScreen: { - new(parent: net.minecraft.client.gui.screens.Screen): com.chattriggers.ctjs.api.client.ProxyManagerScreen; - } - interface ProxyManagerScreen extends net.minecraft.client.gui.screens.Screen { - refreshList(): void; - } - const ProxyEditScreen: { - new(parent: com.chattriggers.ctjs.api.client.ProxyManagerScreen, existingProxy: com.chattriggers.ctjs.api.client.Proxy | null | undefined): com.chattriggers.ctjs.api.client.ProxyEditScreen; - } - interface ProxyEditScreen extends net.minecraft.client.gui.screens.Screen { - } - const 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 - */ - map(number: number, in_min: number, in_max: number, out_min: number, out_max: number): number; - /** - * 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 - */ - clampFloat(number: number, min: number, max: number): number; - /** - * 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 - */ - clamp(number: number, min: number, max: number): number; - new(): com.chattriggers.ctjs.api.client.MathLib; - } - interface 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 - */ - map(number: number, in_min: number, in_max: number, out_min: number, out_max: number): number; - /** - * 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 - */ - clampFloat(number: number, min: number, max: number): number; - /** - * 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 - */ - clamp(number: number, min: number, max: number): number; - new(): com.chattriggers.ctjs.api.client.MathLib; - } - const FileLib: { - /** - * Writes a file to folder in modules. - * - * @param importName name of the import - * @param fileName name of the file - * @param toWrite string to write in file - * @param recursive whether to create folders to the file location if they don't exist - */ - write(importName: string, fileName: string, toWrite: string): void; - /** - * Writes a file to folder in modules. - * - * @param importName name of the import - * @param fileName name of the file - * @param toWrite string to write in file - * @param recursive whether to create folders to the file location if they don't exist - */ - write(importName: string, fileName: string, toWrite: string, recursive: boolean): void; - /** - * Writes a file to anywhere on the system. - * Use "./" for the ".minecraft" folder. - * - * @param fileLocation the location and file name - * @param toWrite string to write in file - * @param recursive whether to create folders to the file location if they don't exist - */ - write(fileLocation: string, toWrite: string): void; - /** - * Writes a file to anywhere on the system. - * Use "./" for the ".minecraft" folder. - * - * @param fileLocation the location and file name - * @param toWrite string to write in file - * @param recursive whether to create folders to the file location if they don't exist - */ - write(fileLocation: string, toWrite: string, recursive: boolean): void; - /** - * Writes a file to folder in modules. - * - * @param importName name of the import - * @param fileName name of the file - * @param toAppend string to append in file - */ - append(importName: string, fileName: string, toAppend: string): void; - /** - * Writes a file to anywhere on the system. - * Use "./" for the ".minecraft" folder. - * - * @param fileLocation the location and file name - * @param toAppend string to append in file - */ - append(fileLocation: string, toAppend: string): void; - /** - * Reads a file from folder in modules. - * Returns null if file is not found. - * - * @param importName name of the import - * @param fileName name of the file - * @return the string in the file, or null if not found - */ - read(importName: string, fileName: string): string | null | undefined; - /** - * Reads a file from anywhere on the system. - * Use "./" for the ".minecraft" folder. - * Returns null if file is not found. - * - * @param fileLocation the location and file name - * @return the string in the file, or null if not found - */ - read(fileLocation: string): string | null | undefined; - /** - * Reads a file from anywhere on the system using java.io.File. - * - * @param file the java.io.File to read - * @return the string in the file, or null if not found - */ - read(file: java.io.File): string | null | undefined; - /** - * Determines if a file or directory exists at the specified location - * - * @param importName name of the import - * @param fileName name of the file - * @return if the file exists - */ - exists(importName: string, fileName: string): boolean; - /** - * Determines if a file or directory exists at the specified location - * - * @param fileLocation the path of the file - * @return if the file exists - */ - exists(fileLocation: string): boolean; - /** - * Determines if a file or directory exists at the specified location - * - * @param importName name of the import - * @param fileName name of the file - * @return if the location is a directory - */ - isDirectory(importName: string, fileName: string): boolean; - /** - * Determines if a file or directory exists at the specified location - * - * @param fileLocation the path of the file - * @return if the location is a directory - */ - isDirectory(fileLocation: string): boolean; - /** - * Gets the contents of a url as a string. - * - * @param theUrl the url to get the data from - * @param userAgent the user agent to use in the connection - * @return the string stored in the url content - */ - getUrlContent(theUrl: string): string; - /** - * Gets the contents of a url as a string. - * - * @param theUrl the url to get the data from - * @param userAgent the user agent to use in the connection - * @return the string stored in the url content - */ - getUrlContent(theUrl: string, userAgent: string | null | undefined): string; - /** - * Deletes a directory at the specified location - * - * @param dir the directory to delete - * @return if the directory was deleted - */ - deleteDirectory(dir: string): boolean; - /** - * Deletes a directory at the specified location - * - * @param dir the directory to delete - * @return if the directory was deleted - */ - deleteDirectory(dir: java.io.File): boolean; - /** - * Extracts a zip file specified by the zipFilePath to a directory specified by - * destDirectory (will be created if does not exist). - * @param zipFilePath the zip file path - * @param destDirectory the destination directory - * @throws IOException IOException - */ - unzip(zipFilePath: string, destDirectory: string): void; - /** - * Encodes a string to a base64 string - * - * @param toEncode string to encode - * @return base64 encoded string - */ - encodeBase64(toEncode: string): string; - /** - * Decodes a base64 string to a string - * - * @param toDecode base64 encoded string to decode - * @return decoded string - */ - decodeBase64(toDecode: string): string; - /** - * Opens a url in the default browser - * - * @param url the url to open - */ - open(url: string): void; - /** - * Opens a path in the file explorer - * - * @param path the path to open - */ - open(path: java.io.File): void; - new(): com.chattriggers.ctjs.api.client.FileLib; - } - interface FileLib { - /** - * Writes a file to folder in modules. - * - * @param importName name of the import - * @param fileName name of the file - * @param toWrite string to write in file - * @param recursive whether to create folders to the file location if they don't exist - */ - write(importName: string, fileName: string, toWrite: string): void; - /** - * Writes a file to folder in modules. - * - * @param importName name of the import - * @param fileName name of the file - * @param toWrite string to write in file - * @param recursive whether to create folders to the file location if they don't exist - */ - write(importName: string, fileName: string, toWrite: string, recursive: boolean): void; - /** - * Writes a file to anywhere on the system. - * Use "./" for the ".minecraft" folder. - * - * @param fileLocation the location and file name - * @param toWrite string to write in file - * @param recursive whether to create folders to the file location if they don't exist - */ - write(fileLocation: string, toWrite: string): void; - /** - * Writes a file to anywhere on the system. - * Use "./" for the ".minecraft" folder. - * - * @param fileLocation the location and file name - * @param toWrite string to write in file - * @param recursive whether to create folders to the file location if they don't exist - */ - write(fileLocation: string, toWrite: string, recursive: boolean): void; - /** - * Writes a file to folder in modules. - * - * @param importName name of the import - * @param fileName name of the file - * @param toAppend string to append in file - */ - append(importName: string, fileName: string, toAppend: string): void; - /** - * Writes a file to anywhere on the system. - * Use "./" for the ".minecraft" folder. - * - * @param fileLocation the location and file name - * @param toAppend string to append in file - */ - append(fileLocation: string, toAppend: string): void; - /** - * Reads a file from folder in modules. - * Returns null if file is not found. - * - * @param importName name of the import - * @param fileName name of the file - * @return the string in the file, or null if not found - */ - read(importName: string, fileName: string): string | null | undefined; - /** - * Reads a file from anywhere on the system. - * Use "./" for the ".minecraft" folder. - * Returns null if file is not found. - * - * @param fileLocation the location and file name - * @return the string in the file, or null if not found - */ - read(fileLocation: string): string | null | undefined; - /** - * Reads a file from anywhere on the system using java.io.File. - * - * @param file the java.io.File to read - * @return the string in the file, or null if not found - */ - read(file: java.io.File): string | null | undefined; - /** - * Determines if a file or directory exists at the specified location - * - * @param importName name of the import - * @param fileName name of the file - * @return if the file exists - */ - exists(importName: string, fileName: string): boolean; - /** - * Determines if a file or directory exists at the specified location - * - * @param fileLocation the path of the file - * @return if the file exists - */ - exists(fileLocation: string): boolean; - /** - * Determines if a file or directory exists at the specified location - * - * @param importName name of the import - * @param fileName name of the file - * @return if the location is a directory - */ - isDirectory(importName: string, fileName: string): boolean; - /** - * Determines if a file or directory exists at the specified location - * - * @param fileLocation the path of the file - * @return if the location is a directory - */ - isDirectory(fileLocation: string): boolean; - /** - * Gets the contents of a url as a string. - * - * @param theUrl the url to get the data from - * @param userAgent the user agent to use in the connection - * @return the string stored in the url content - */ - getUrlContent(theUrl: string): string; - /** - * Gets the contents of a url as a string. - * - * @param theUrl the url to get the data from - * @param userAgent the user agent to use in the connection - * @return the string stored in the url content - */ - getUrlContent(theUrl: string, userAgent: string | null | undefined): string; - /** - * Deletes a directory at the specified location - * - * @param dir the directory to delete - * @return if the directory was deleted - */ - deleteDirectory(dir: string): boolean; - /** - * Deletes a directory at the specified location - * - * @param dir the directory to delete - * @return if the directory was deleted - */ - deleteDirectory(dir: java.io.File): boolean; - /** - * Extracts a zip file specified by the zipFilePath to a directory specified by - * destDirectory (will be created if does not exist). - * @param zipFilePath the zip file path - * @param destDirectory the destination directory - * @throws IOException IOException - */ - unzip(zipFilePath: string, destDirectory: string): void; - /** - * Encodes a string to a base64 string - * - * @param toEncode string to encode - * @return base64 encoded string - */ - encodeBase64(toEncode: string): string; - /** - * Decodes a base64 string to a string - * - * @param toDecode base64 encoded string to decode - * @return decoded string - */ - decodeBase64(toDecode: string): string; - /** - * Opens a url in the default browser - * - * @param url the url to open - */ - open(url: string): void; - /** - * Opens a path in the file explorer - * - * @param path the path to open - */ - open(path: java.io.File): void; - new(): com.chattriggers.ctjs.api.client.FileLib; - } - const Client: { - CurrentGuiWrapper: typeof com.chattriggers.ctjs.api.client.Client$CurrentGuiWrapper; - CameraWrapper: typeof com.chattriggers.ctjs.api.client.Client$CameraWrapper; - currentGui: com.chattriggers.ctjs.api.client.Client$CurrentGuiWrapper; - camera: com.chattriggers.ctjs.api.client.Client$CameraWrapper; - /** - * Gets Minecraft's Minecraft object - * - * @return The Minecraft object - */ - getMinecraft(): net.minecraft.client.Minecraft; - /** - * Gets Minecraft's NetHandlerPlayClient object - * - * @return The NetHandlerPlayClient object - */ - getConnection(): net.minecraft.client.multiplayer.ClientPacketListener | null | undefined; - /** - * 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 - */ - scheduleTask(callback: kotlin.Function0): void; - /** - * 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 - */ - scheduleTask(delay: number, callback: kotlin.Function0): void; - /** - * Quits the client back to the main menu. - * This acts just like clicking the "Disconnect" or "Save and quit to title" button. - */ - disconnect(): void; - /** - * Connects to the server with the given ip. - * @param ip The ip to connect to - */ - connect(ip: string): void; - /** - * Connects to the server with the given ip. - * @param ip The ip to connect to - */ - connect(ip: string, port: number): void; - /** - * Gets the Minecraft ChatHud object for the chat gui - * - * @return The GuiNewChat object for the chat gui - */ - getChatGui(): net.minecraft.client.gui.components.ChatComponent | null | undefined; - isInChat(): boolean; - getTabGui(): net.minecraft.client.gui.components.PlayerTabOverlay | null | undefined; - isInTab(): boolean; - /** - * 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 - */ - isTabbedIn(): boolean; - isControlDown(): boolean; - isShiftDown(): boolean; - isAltDown(): boolean; - getFPS(): number; - getVersion(): string; - getSystemTime(): number; - getMouseX(): number; - getMouseY(): number; - isInGui(): boolean; - /** - * Gets the chat message currently typed into the chat gui. - * - * @return A blank string if the gui isn't open, otherwise, the message - */ - getCurrentChatMessage(): string; - /** - * 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. - */ - setCurrentChatMessage(message: string): void; - setSignLine(line: number, text: string): void; - resumeHeldKeys(): void; - releaseHeldKey(input: com.mojang.blaze3d.platform.InputConstants$Key): void; - leftClick(): void; - rightClick(): void; - setKey(key: string): boolean; - setKey(key: string, pressed: boolean): boolean; - isKeyDown(key: string): boolean; - stopMovement(): void; - unpressKeys(): void; - sendPacket(packet: net.minecraft.network.protocol.Packet): void; - sendSequencedPacket(packetFactory: kotlin.Function1>): void; - /** - * 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 - */ - showTitle(title: string | null | undefined, subtitle: string | null | undefined, fadeIn: number, time: number, fadeOut: number): void; - /** - * Copies a string to the clipboard - * - * @param text The text to copy - */ - copy(): void; - /** - * Copies a string to the clipboard - * - * @param text The text to copy - */ - copy(text: string): void; - /** - * Get the string currently on the clipboard - */ - paste(): string; - /** - * 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) - */ - getKeyBindFromKey(keyCode: number): com.chattriggers.ctjs.api.client.KeyBind | null | undefined; - /** - * 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) - */ - getKeyBindFromKey(keyCode: number, description: string): com.chattriggers.ctjs.api.client.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) - */ - getKeyBindFromKey(keyCode: number, description: string, category: string): com.chattriggers.ctjs.api.client.KeyBind; - /** - * 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 - */ - getKeyBindFromDescription(description: string): com.chattriggers.ctjs.api.client.KeyBind | null | undefined; - new(): com.chattriggers.ctjs.api.client.Client; - } - interface Client { - currentGui: com.chattriggers.ctjs.api.client.Client$CurrentGuiWrapper; - camera: com.chattriggers.ctjs.api.client.Client$CameraWrapper; - /** - * Gets Minecraft's Minecraft object - * - * @return The Minecraft object - */ - getMinecraft(): net.minecraft.client.Minecraft; - /** - * Gets Minecraft's NetHandlerPlayClient object - * - * @return The NetHandlerPlayClient object - */ - getConnection(): net.minecraft.client.multiplayer.ClientPacketListener | null | undefined; - /** - * 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 - */ - scheduleTask(callback: kotlin.Function0): void; - /** - * 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 - */ - scheduleTask(delay: number, callback: kotlin.Function0): void; - /** - * Quits the client back to the main menu. - * This acts just like clicking the "Disconnect" or "Save and quit to title" button. - */ - disconnect(): void; - /** - * Connects to the server with the given ip. - * @param ip The ip to connect to - */ - connect(ip: string): void; - /** - * Connects to the server with the given ip. - * @param ip The ip to connect to - */ - connect(ip: string, port: number): void; - /** - * Gets the Minecraft ChatHud object for the chat gui - * - * @return The GuiNewChat object for the chat gui - */ - getChatGui(): net.minecraft.client.gui.components.ChatComponent | null | undefined; - isInChat(): boolean; - getTabGui(): net.minecraft.client.gui.components.PlayerTabOverlay | null | undefined; - isInTab(): boolean; - /** - * 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 - */ - isTabbedIn(): boolean; - isControlDown(): boolean; - isShiftDown(): boolean; - isAltDown(): boolean; - getFPS(): number; - getVersion(): string; - getSystemTime(): number; - getMouseX(): number; - getMouseY(): number; - isInGui(): boolean; - /** - * Gets the chat message currently typed into the chat gui. - * - * @return A blank string if the gui isn't open, otherwise, the message - */ - getCurrentChatMessage(): string; - /** - * 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. - */ - setCurrentChatMessage(message: string): void; - setSignLine(line: number, text: string): void; - resumeHeldKeys(): void; - releaseHeldKey(input: com.mojang.blaze3d.platform.InputConstants$Key): void; - leftClick(): void; - rightClick(): void; - setKey(key: string): boolean; - setKey(key: string, pressed: boolean): boolean; - isKeyDown(key: string): boolean; - stopMovement(): void; - unpressKeys(): void; - sendPacket(packet: net.minecraft.network.protocol.Packet): void; - sendSequencedPacket(packetFactory: kotlin.Function1>): void; - /** - * 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 - */ - showTitle(title: string | null | undefined, subtitle: string | null | undefined, fadeIn: number, time: number, fadeOut: number): void; - /** - * Copies a string to the clipboard - * - * @param text The text to copy - */ - copy(): void; - /** - * Copies a string to the clipboard - * - * @param text The text to copy - */ - copy(text: string): void; - /** - * Get the string currently on the clipboard - */ - paste(): string; - /** - * 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) - */ - getKeyBindFromKey(keyCode: number): com.chattriggers.ctjs.api.client.KeyBind | null | undefined; - /** - * 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) - */ - getKeyBindFromKey(keyCode: number, description: string): com.chattriggers.ctjs.api.client.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) - */ - getKeyBindFromKey(keyCode: number, description: string, category: string): com.chattriggers.ctjs.api.client.KeyBind; - /** - * 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 - */ - getKeyBindFromDescription(description: string): com.chattriggers.ctjs.api.client.KeyBind | null | undefined; - new(): com.chattriggers.ctjs.api.client.Client; - } - const Client$CurrentGuiWrapper: { - new(): com.chattriggers.ctjs.api.client.Client$CurrentGuiWrapper; - } - interface Client$CurrentGuiWrapper { - /** - * Gets the Java class name of the currently open gui, for example, "GuiChest" - * - * @return the class name of the current gui - */ - getClassName(): string; - /** - * Gets the Minecraft gui class that is currently open - * - * @return the Minecraft gui - */ - get(): net.minecraft.client.gui.screens.Screen | null | undefined; - set(screen: net.minecraft.client.gui.screens.Screen | null | undefined): void; - /** - * Gets the slot under the mouse in the current gui, if one exists. - * - * @return the [Slot] under the mouse - */ - getSlotUnderMouse(): com.chattriggers.ctjs.api.inventory.Slot | null | undefined; - /** - * Closes the currently open gui - */ - close(): void; - } - const Client$CameraWrapper: { - new(): com.chattriggers.ctjs.api.client.Client$CameraWrapper; - } - interface Client$CameraWrapper { - getX(): number; - getY(): number; - getZ(): number; - } - const WelcomeScreen: { - new(): com.chattriggers.ctjs.api.client.WelcomeScreen; - } - interface WelcomeScreen extends net.minecraft.client.gui.screens.Screen { - } - const WelcomeScreen$Companion: { - open(): void; - new(): com.chattriggers.ctjs.api.client.WelcomeScreen$Companion; - } - interface WelcomeScreen$Companion { - open(): void; - new(): com.chattriggers.ctjs.api.client.WelcomeScreen$Companion; - } - } - namespace render { - const Font: { - new(name: string, resourcePath: string): com.chattriggers.ctjs.api.render.Font; - new(name: string, inputStream: java.io.InputStream): com.chattriggers.ctjs.api.render.Font; - } - interface Font { - getName(): string; - buffer(): java.nio.ByteBuffer; - } - const LegacyPipelineBuilder: { - new(): com.chattriggers.ctjs.api.render.LegacyPipelineBuilder; - } - interface LegacyPipelineBuilder { - new(): com.chattriggers.ctjs.api.render.LegacyPipelineBuilder; - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode, vertexFormat: com.chattriggers.ctjs.api.render.Renderer$VertexFormat, snippet: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet): com.chattriggers.ctjs.api.render.LegacyPipelineBuilder; - enableBlend(): com.chattriggers.ctjs.api.render.LegacyPipelineBuilder; - disableBlend(): com.chattriggers.ctjs.api.render.LegacyPipelineBuilder; - enableCull(): com.chattriggers.ctjs.api.render.LegacyPipelineBuilder; - disableCull(): com.chattriggers.ctjs.api.render.LegacyPipelineBuilder; - enableDepth(): com.chattriggers.ctjs.api.render.LegacyPipelineBuilder; - disableDepth(): com.chattriggers.ctjs.api.render.LegacyPipelineBuilder; - build(): com.mojang.blaze3d.pipeline.RenderPipeline; - layer(): net.minecraft.client.renderer.rendertype.RenderType; - state(): string; - } - const Renderer$DrawMode: { - LINES: com.chattriggers.ctjs.api.render.Renderer$DrawMode; - LINE_STRIP: com.chattriggers.ctjs.api.render.Renderer$DrawMode; - TRIANGLES: com.chattriggers.ctjs.api.render.Renderer$DrawMode; - TRIANGLE_STRIP: com.chattriggers.ctjs.api.render.Renderer$DrawMode; - TRIANGLE_FAN: com.chattriggers.ctjs.api.render.Renderer$DrawMode; - QUADS: com.chattriggers.ctjs.api.render.Renderer$DrawMode; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.render.Renderer$DrawMode; - } - interface Renderer$DrawMode extends kotlin.Enum { - toUC(): gg.essential.universal.UGraphics$DrawMode; - } - const Renderer$DrawMode$Companion: { - fromUC(ucValue: gg.essential.universal.UGraphics$DrawMode): com.chattriggers.ctjs.api.render.Renderer$DrawMode; - new(): unknown; - } - interface Renderer$DrawMode$Companion { - fromUC(ucValue: gg.essential.universal.UGraphics$DrawMode): com.chattriggers.ctjs.api.render.Renderer$DrawMode; - new(): unknown; - } - const Renderer$VertexFormat: { - LINES: com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - POSITION: com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - POSITION_COLOR: com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - POSITION_TEXTURE: com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - POSITION_TEXTURE_COLOR: com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - POSITION_COLOR_TEXTURE_LIGHT: com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - POSITION_TEXTURE_LIGHT_COLOR: com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - POSITION_TEXTURE_COLOR_LIGHT: com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - POSITION_TEXTURE_COLOR_NORMAL: com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - } - interface Renderer$VertexFormat extends kotlin.Enum { - toMC(): com.mojang.blaze3d.vertex.VertexFormat; - } - const Renderer$VertexFormat$Companion: { - fromMC(ucValue: com.mojang.blaze3d.vertex.VertexFormat): com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - new(): unknown; - } - interface Renderer$VertexFormat$Companion { - fromMC(ucValue: com.mojang.blaze3d.vertex.VertexFormat): com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - new(): unknown; - } - const Renderer$RenderSnippet: { - TERRAIN_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - ENTITY_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - RENDERTYPE_BEACON_BEAM_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - TEXT_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - RENDERTYPE_END_PORTAL_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - RENDERTYPE_CLOUDS_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - RENDERTYPE_LINES_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - POSITION_COLOR_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - PARTICLE_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - WEATHER_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - GUI_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - POSITION_TEX_COLOR_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - RENDERTYPE_OUTLINE_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - POST_EFFECT_PROCESSOR_SNIPPET: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - } - interface Renderer$RenderSnippet extends kotlin.Enum { - getMcSnippet(): com.mojang.blaze3d.pipeline.RenderPipeline$Snippet; - } - const RenderPipelines: { - LINE_LIST: com.mojang.blaze3d.pipeline.RenderPipeline; - LINE_LIST_ESP: com.mojang.blaze3d.pipeline.RenderPipeline; - TRIANGLE_STRIP: com.mojang.blaze3d.pipeline.RenderPipeline; - TRIANGLE_STRIP_ESP: com.mojang.blaze3d.pipeline.RenderPipeline; - new(): com.chattriggers.ctjs.api.render.RenderPipelines; - } - interface RenderPipelines { - LINE_LIST: com.mojang.blaze3d.pipeline.RenderPipeline; - LINE_LIST_ESP: com.mojang.blaze3d.pipeline.RenderPipeline; - TRIANGLE_STRIP: com.mojang.blaze3d.pipeline.RenderPipeline; - TRIANGLE_STRIP_ESP: com.mojang.blaze3d.pipeline.RenderPipeline; - new(): com.chattriggers.ctjs.api.render.RenderPipelines; - } - const RenderLayers: { - LINE_LIST: net.minecraft.client.renderer.rendertype.RenderType; - LINE_LIST_ESP: net.minecraft.client.renderer.rendertype.RenderType; - TRIANGLE_STRIP: net.minecraft.client.renderer.rendertype.RenderType; - TRIANGLE_STRIP_ESP: net.minecraft.client.renderer.rendertype.RenderType; - new(): com.chattriggers.ctjs.api.render.RenderLayers; - } - interface RenderLayers { - LINE_LIST: net.minecraft.client.renderer.rendertype.RenderType; - LINE_LIST_ESP: net.minecraft.client.renderer.rendertype.RenderType; - TRIANGLE_STRIP: net.minecraft.client.renderer.rendertype.RenderType; - TRIANGLE_STRIP_ESP: net.minecraft.client.renderer.rendertype.RenderType; - new(): com.chattriggers.ctjs.api.render.RenderLayers; - } - const Toast: { - new(config: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.render.Toast; - } - interface Toast extends net.minecraft.client.gui.components.toasts.Toast { - getTitle(): any | null | undefined; - setTitle(value: any | null | undefined): void; - getDescription(): any | null | undefined; - setDescription(value: any | null | undefined): void; - getBackground(): any | null | undefined; - setBackground(value: any | null | undefined): void; - getIcon(): any | null | undefined; - setIcon(value: any | null | undefined): void; - getDisplayTime(): number; - setDisplayTime(value: number): void; - show(): com.chattriggers.ctjs.api.render.Toast; - } - const Display: { - Background: typeof com.chattriggers.ctjs.api.render.Display$Background; - Order: typeof com.chattriggers.ctjs.api.render.Display$Order; - new(): com.chattriggers.ctjs.api.render.Display; - new(config: org.mozilla.javascript.NativeObject | null | undefined): com.chattriggers.ctjs.api.render.Display; - } - interface Display { - getTextColor(): number; - /** - * Sets the color of the texts - * - * Overrides the color of the individual texts - */ - setTextColor(textColor: number): com.chattriggers.ctjs.api.render.Display; - getAlign(): com.chattriggers.ctjs.api.render.Text$Align; - /** - * Set the alignment of the texts in the display - * - * Overrides alignment of the individual texts - */ - setAlign(align: any): com.chattriggers.ctjs.api.render.Display; - getOrder(): com.chattriggers.ctjs.api.render.Display$Order; - setOrder(order: any): com.chattriggers.ctjs.api.render.Display; - getBackground(): com.chattriggers.ctjs.api.render.Display$Background; - setBackground(background: any): com.chattriggers.ctjs.api.render.Display; - getBackgroundColor(): number; - setBackgroundColor(backgroundColor: number): com.chattriggers.ctjs.api.render.Display; - setLine(index: number, line: any): com.chattriggers.ctjs.api.render.Display; - getLine(index: number): com.chattriggers.ctjs.api.render.Text; - getLines(): Array; - setLines(lines: Array): com.chattriggers.ctjs.api.render.Display; - addLine(line: any): com.chattriggers.ctjs.api.render.Display; - addLines(lines: any): com.chattriggers.ctjs.api.render.Display; - removeLine(index: number): com.chattriggers.ctjs.api.render.Display; - clearLines(): com.chattriggers.ctjs.api.render.Display; - getX(): number; - setX(x: number): com.chattriggers.ctjs.api.render.Display; - getY(): number; - setY(y: number): com.chattriggers.ctjs.api.render.Display; - getWidth(): number; - getHeight(): number; - getMinWidth(): number; - setMinWidth(minWidth: number): com.chattriggers.ctjs.api.render.Display; - draw(ctx: net.minecraft.client.gui.GuiGraphicsExtractor): void; - } - const Text$Align: { - LEFT: com.chattriggers.ctjs.api.render.Text$Align; - CENTER: com.chattriggers.ctjs.api.render.Text$Align; - RIGHT: com.chattriggers.ctjs.api.render.Text$Align; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.render.Text$Align; - } - interface Text$Align extends kotlin.Enum { - } - const Display$Order: { - REVERSED: com.chattriggers.ctjs.api.render.Display$Order; - NORMAL: com.chattriggers.ctjs.api.render.Display$Order; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.render.Display$Order; - } - interface Display$Order extends kotlin.Enum { - } - const Display$Background: { - NONE: com.chattriggers.ctjs.api.render.Display$Background; - FULL: com.chattriggers.ctjs.api.render.Display$Background; - PER_LINE: com.chattriggers.ctjs.api.render.Display$Background; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.render.Display$Background; - } - interface Display$Background extends kotlin.Enum { - } - const Text: { - Align: typeof com.chattriggers.ctjs.api.render.Text$Align; - new(string: string): com.chattriggers.ctjs.api.render.Text; - new(string: string, x: number): com.chattriggers.ctjs.api.render.Text; - new(string: string, x: number, y: number): com.chattriggers.ctjs.api.render.Text; - new(string: string, config: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.render.Text; - } - interface Text { - getString(): string; - setString(string: string): com.chattriggers.ctjs.api.render.Text; - getColor(): number; - setColor(color: number): com.chattriggers.ctjs.api.render.Text; - getFormatted(): boolean; - setFormatted(formatted: boolean): com.chattriggers.ctjs.api.render.Text; - getShadow(): boolean; - setShadow(shadow: boolean): com.chattriggers.ctjs.api.render.Text; - getAlign(): com.chattriggers.ctjs.api.render.Text$Align; - setAlign(align: any): com.chattriggers.ctjs.api.render.Text; - getBackground(): boolean; - /** - * Set the background - * - * true: Background is enabled - * false: Background is disabled - */ - setBackground(background: boolean): com.chattriggers.ctjs.api.render.Text; - getBackgroundColor(): number; - setBackgroundColor(backgroundColor: number): com.chattriggers.ctjs.api.render.Text; - getX(): number; - setX(x: number): com.chattriggers.ctjs.api.render.Text; - getY(): number; - setY(y: number): com.chattriggers.ctjs.api.render.Text; - /** - * Gets the width of the text - * This is automatically updated when the text is drawn. - * - * @return the width of the text - */ - getWidth(): number; - getLines(): Array; - getMaxLines(): number; - setMaxLines(maxLines: number): com.chattriggers.ctjs.api.render.Text; - getScale(): number; - setScale(scale: number): com.chattriggers.ctjs.api.render.Text; - /** - * Sets the maximum width of the text, splitting it into multiple lines if necessary. - * - * @param maxWidth the maximum width of the text - * @return the Text object for method chaining - */ - setMaxWidth(maxWidth: number): com.chattriggers.ctjs.api.render.Text; - getMaxWidth(): number; - getHeight(): number; - exceedsMaxLines(): boolean; - draw(ctx: net.minecraft.client.gui.GuiGraphicsExtractor): com.chattriggers.ctjs.api.render.Text; - draw(ctx: net.minecraft.client.gui.GuiGraphicsExtractor, x: number | null | undefined): com.chattriggers.ctjs.api.render.Text; - draw(ctx: net.minecraft.client.gui.GuiGraphicsExtractor, x: number | null | undefined, y: number | null | undefined): com.chattriggers.ctjs.api.render.Text; - } - const Renderer: { - DrawMode: typeof com.chattriggers.ctjs.api.render.Renderer$DrawMode; - VertexFormat: typeof com.chattriggers.ctjs.api.render.Renderer$VertexFormat; - RenderSnippet: typeof com.chattriggers.ctjs.api.render.Renderer$RenderSnippet; - ScreenWrapper: typeof com.chattriggers.ctjs.api.render.Renderer$ScreenWrapper; - screen: com.chattriggers.ctjs.api.render.Renderer$ScreenWrapper; - getPartialTicks(): number; - BLACK: number; - DARK_BLUE: number; - DARK_GREEN: number; - DARK_AQUA: number; - DARK_RED: number; - DARK_PURPLE: number; - GOLD: number; - GRAY: number; - DARK_GRAY: number; - BLUE: number; - GREEN: number; - AQUA: number; - RED: number; - LIGHT_PURPLE: number; - YELLOW: number; - WHITE: number; - color(color: number): number; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 1 - * @param g the green value of the color, between 0 and 1 - * @param b the blue value of the color, between 0 and 1 - * @param a the alpha value of the color, between 0 and 1 - * @return [Renderer] to allow for method chaining - */ - color(r: number, g: number, b: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 1 - * @param g the green value of the color, between 0 and 1 - * @param b the blue value of the color, between 0 and 1 - * @param a the alpha value of the color, between 0 and 1 - * @return [Renderer] to allow for method chaining - */ - color(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 255 - * @param g the green value of the color, between 0 and 255 - * @param b the blue value of the color, between 0 and 255 - * @param a the alpha value of the color, between 0 and 255 - * @return [Renderer] to allow for method chaining - */ - color(r: number, g: number, b: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 255 - * @param g the green value of the color, between 0 and 255 - * @param b the blue value of the color, between 0 and 255 - * @param a the alpha value of the color, between 0 and 255 - * @return [Renderer] to allow for method chaining - */ - color(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the color for the last defined vertex. - * - * @param color the color value, can use [getColor] to get this - * @return [Renderer] to allow for method chaining - */ - color(color: number): com.chattriggers.ctjs.api.render.Renderer; - getFontRenderer(): net.minecraft.client.gui.Font; - getRenderManager(): net.minecraft.client.renderer.LevelRenderer; - getStringWidth(text: string): number; - getColor(red: number, green: number, blue: number): number; - getColor(red: number, green: number, blue: number, alpha: number): number; - getRainbow(step: number): number; - getRainbow(step: number, speed: number): number; - getRainbowColors(step: number): Array; - getRainbowColors(step: number, speed: number): Array; - disableCull(): com.chattriggers.ctjs.api.render.Renderer; - enableCull(): com.chattriggers.ctjs.api.render.Renderer; - disableLighting(): com.chattriggers.ctjs.api.render.Renderer; - enableLighting(): com.chattriggers.ctjs.api.render.Renderer; - disableDepth(): com.chattriggers.ctjs.api.render.Renderer; - enableDepth(): com.chattriggers.ctjs.api.render.Renderer; - disableBlend(): com.chattriggers.ctjs.api.render.Renderer; - enableBlend(): com.chattriggers.ctjs.api.render.Renderer; - bindTexture(texture: com.chattriggers.ctjs.api.render.Image): com.chattriggers.ctjs.api.render.Renderer; - bindTexture(texture: com.chattriggers.ctjs.api.render.Image, textureIndex: number): com.chattriggers.ctjs.api.render.Renderer; - deleteTexture(texture: com.chattriggers.ctjs.api.render.Image): com.chattriggers.ctjs.api.render.Renderer; - pushMatrix(): com.chattriggers.ctjs.api.render.Renderer; - pushMatrix(stack: gg.essential.universal.UMatrixStack): com.chattriggers.ctjs.api.render.Renderer; - popMatrix(): com.chattriggers.ctjs.api.render.Renderer; - translate(x: number, y: number): com.chattriggers.ctjs.api.render.Renderer; - translate(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer; - scale(scaleX: number): com.chattriggers.ctjs.api.render.Renderer; - scale(scaleX: number, scaleY: number): com.chattriggers.ctjs.api.render.Renderer; - scale(scaleX: number, scaleY: number, scaleZ: number): com.chattriggers.ctjs.api.render.Renderer; - rotate(angle: number): com.chattriggers.ctjs.api.render.Renderer; - rotate(angle: number, x: number): com.chattriggers.ctjs.api.render.Renderer; - rotate(angle: number, x: number, y: number): com.chattriggers.ctjs.api.render.Renderer; - rotate(angle: number, x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer; - multiply(quaternion: org.joml.Quaternionf): com.chattriggers.ctjs.api.render.Renderer; - fixAlpha(color: number): number; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer] to allow for method chaining - * @see DrawMode - */ - begin(): com.chattriggers.ctjs.api.render.Renderer; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer] to allow for method chaining - * @see DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode): com.chattriggers.ctjs.api.render.Renderer; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer] to allow for method chaining - * @see DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode, vertexFormat: com.chattriggers.ctjs.api.render.Renderer$VertexFormat): com.chattriggers.ctjs.api.render.Renderer; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer] to allow for method chaining - * @see DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode, vertexFormat: com.chattriggers.ctjs.api.render.Renderer$VertexFormat, snippet: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets a new vertex in the world renderer. - * - * @param x the x position - * @param y the y position - * @param z the z position - * @return [Renderer] to allow for method chaining - */ - pos(x: number, y: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets a new vertex in the world renderer. - * - * @param x the x position - * @param y the y position - * @param z the z position - * @return [Renderer] to allow for method chaining - */ - pos(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the texture location on the last defined vertex. - * - * @param u the u position in the texture - * @param v the v position in the texture - * @return [Renderer] to allow for method chaining - */ - tex(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the normal of the vertex. This is mostly used with [VertexFormat.LINES] - * - * @param x the x position of the normal vector - * @param y the y position of the normal vector - * @param z the z position of the normal vector - * @return [Renderer] to allow for method chaining - */ - normal(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the overlay location on the last defined vertex. - * - * @param u the u position in the overlay - * @param v the v position in the overlay - * @return [Renderer] to allow for method chaining - */ - overlay(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the light location on the last defined vertex. - * - * @param u the u position in the light - * @param v the v position in the light - * @return [Renderer] to allow for method chaining - */ - light(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Finalizes vertices and draws the world renderer. - */ - draw(): void; - /** - * Gets a fixed render position from x, y, and z inputs adjusted with partial ticks - * @param x the X coordinate - * @param y the Y coordinate - * @param z the Z coordinate - * @return the Vec3f position to render at - */ - getRenderPos(x: number, y: number, z: number): com.chattriggers.ctjs.api.vec.Vec3f; - drawRect(color: number, x: number, y: number, width: number, height: number): com.chattriggers.ctjs.api.render.Renderer; - drawLine(color: number, x1: number, y1: number, x2: number, y2: number, thickness: number): void; - drawCircle(color: number, x: number, y: number, radius: number, steps: number): void; - drawString(text: string, x: number, y: number): void; - drawString(text: string, x: number, y: number, color: number): void; - drawString(text: string, x: number, y: number, color: number, shadow: boolean): void; - drawStringWithShadow(text: string, x: number, y: number): void; - drawStringWithShadow(text: string, x: number, y: number, color: number): void; - drawImage(image: com.chattriggers.ctjs.api.render.Image, x: number, y: number, width: number, height: number): void; - /** - * Draws a player entity to the screen, similar to the one displayed in the inventory screen. - * - * Takes a parameter with the following options: - * - player: The player entity to draw. Can be a [PlayerMP] or [AbstractClientPlayerEntity]. - * Defaults to Player.toMC() - * - x: The x position on the screen to render the player - * - y: The y position on the screen to render the player - * - size: The size of the rendered player - * - rotate: Whether the player should look at the mouse cursor, similar to the inventory screen - * - pitch: THe pitch the rendered player will face, if rotate is false - * - yaw: The yaw the rendered player will face, if rotate is false - * - showNametag: Whether the nametag of the player should be rendered - * - showArmor: Whether the armor of the player should be rendered - * - showCape: Whether the cape of the player should be rendered - * - showHeldItem: Whether the held item of the player should be rendered - * - showArrows: Whether any arrows stuck in the player's model should be rendered - * - showElytra: Whether the player's Elytra should be rendered - * - showParrot: Whether a perched parrot should be rendered - * - showBeeStinger: Whether any stuck bee stingers should be rendered - * - * @param obj An options bag - */ - drawPlayer(obj: org.mozilla.javascript.NativeObject): void; - new(): com.chattriggers.ctjs.api.render.Renderer; - } - interface Renderer { - screen: com.chattriggers.ctjs.api.render.Renderer$ScreenWrapper; - getPartialTicks(): number; - BLACK: number; - DARK_BLUE: number; - DARK_GREEN: number; - DARK_AQUA: number; - DARK_RED: number; - DARK_PURPLE: number; - GOLD: number; - GRAY: number; - DARK_GRAY: number; - BLUE: number; - GREEN: number; - AQUA: number; - RED: number; - LIGHT_PURPLE: number; - YELLOW: number; - WHITE: number; - color(color: number): number; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 1 - * @param g the green value of the color, between 0 and 1 - * @param b the blue value of the color, between 0 and 1 - * @param a the alpha value of the color, between 0 and 1 - * @return [Renderer] to allow for method chaining - */ - color(r: number, g: number, b: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 1 - * @param g the green value of the color, between 0 and 1 - * @param b the blue value of the color, between 0 and 1 - * @param a the alpha value of the color, between 0 and 1 - * @return [Renderer] to allow for method chaining - */ - color(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 255 - * @param g the green value of the color, between 0 and 255 - * @param b the blue value of the color, between 0 and 255 - * @param a the alpha value of the color, between 0 and 255 - * @return [Renderer] to allow for method chaining - */ - color(r: number, g: number, b: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 255 - * @param g the green value of the color, between 0 and 255 - * @param b the blue value of the color, between 0 and 255 - * @param a the alpha value of the color, between 0 and 255 - * @return [Renderer] to allow for method chaining - */ - color(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the color for the last defined vertex. - * - * @param color the color value, can use [getColor] to get this - * @return [Renderer] to allow for method chaining - */ - color(color: number): com.chattriggers.ctjs.api.render.Renderer; - getFontRenderer(): net.minecraft.client.gui.Font; - getRenderManager(): net.minecraft.client.renderer.LevelRenderer; - getStringWidth(text: string): number; - getColor(red: number, green: number, blue: number): number; - getColor(red: number, green: number, blue: number, alpha: number): number; - getRainbow(step: number): number; - getRainbow(step: number, speed: number): number; - getRainbowColors(step: number): Array; - getRainbowColors(step: number, speed: number): Array; - disableCull(): com.chattriggers.ctjs.api.render.Renderer; - enableCull(): com.chattriggers.ctjs.api.render.Renderer; - disableLighting(): com.chattriggers.ctjs.api.render.Renderer; - enableLighting(): com.chattriggers.ctjs.api.render.Renderer; - disableDepth(): com.chattriggers.ctjs.api.render.Renderer; - enableDepth(): com.chattriggers.ctjs.api.render.Renderer; - disableBlend(): com.chattriggers.ctjs.api.render.Renderer; - enableBlend(): com.chattriggers.ctjs.api.render.Renderer; - bindTexture(texture: com.chattriggers.ctjs.api.render.Image): com.chattriggers.ctjs.api.render.Renderer; - bindTexture(texture: com.chattriggers.ctjs.api.render.Image, textureIndex: number): com.chattriggers.ctjs.api.render.Renderer; - deleteTexture(texture: com.chattriggers.ctjs.api.render.Image): com.chattriggers.ctjs.api.render.Renderer; - pushMatrix(): com.chattriggers.ctjs.api.render.Renderer; - pushMatrix(stack: gg.essential.universal.UMatrixStack): com.chattriggers.ctjs.api.render.Renderer; - popMatrix(): com.chattriggers.ctjs.api.render.Renderer; - translate(x: number, y: number): com.chattriggers.ctjs.api.render.Renderer; - translate(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer; - scale(scaleX: number): com.chattriggers.ctjs.api.render.Renderer; - scale(scaleX: number, scaleY: number): com.chattriggers.ctjs.api.render.Renderer; - scale(scaleX: number, scaleY: number, scaleZ: number): com.chattriggers.ctjs.api.render.Renderer; - rotate(angle: number): com.chattriggers.ctjs.api.render.Renderer; - rotate(angle: number, x: number): com.chattriggers.ctjs.api.render.Renderer; - rotate(angle: number, x: number, y: number): com.chattriggers.ctjs.api.render.Renderer; - rotate(angle: number, x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer; - multiply(quaternion: org.joml.Quaternionf): com.chattriggers.ctjs.api.render.Renderer; - fixAlpha(color: number): number; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer] to allow for method chaining - * @see DrawMode - */ - begin(): com.chattriggers.ctjs.api.render.Renderer; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer] to allow for method chaining - * @see DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode): com.chattriggers.ctjs.api.render.Renderer; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer] to allow for method chaining - * @see DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode, vertexFormat: com.chattriggers.ctjs.api.render.Renderer$VertexFormat): com.chattriggers.ctjs.api.render.Renderer; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer] to allow for method chaining - * @see DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode, vertexFormat: com.chattriggers.ctjs.api.render.Renderer$VertexFormat, snippet: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets a new vertex in the world renderer. - * - * @param x the x position - * @param y the y position - * @param z the z position - * @return [Renderer] to allow for method chaining - */ - pos(x: number, y: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets a new vertex in the world renderer. - * - * @param x the x position - * @param y the y position - * @param z the z position - * @return [Renderer] to allow for method chaining - */ - pos(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the texture location on the last defined vertex. - * - * @param u the u position in the texture - * @param v the v position in the texture - * @return [Renderer] to allow for method chaining - */ - tex(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the normal of the vertex. This is mostly used with [VertexFormat.LINES] - * - * @param x the x position of the normal vector - * @param y the y position of the normal vector - * @param z the z position of the normal vector - * @return [Renderer] to allow for method chaining - */ - normal(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the overlay location on the last defined vertex. - * - * @param u the u position in the overlay - * @param v the v position in the overlay - * @return [Renderer] to allow for method chaining - */ - overlay(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Sets the light location on the last defined vertex. - * - * @param u the u position in the light - * @param v the v position in the light - * @return [Renderer] to allow for method chaining - */ - light(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer; - /** - * Finalizes vertices and draws the world renderer. - */ - draw(): void; - /** - * Gets a fixed render position from x, y, and z inputs adjusted with partial ticks - * @param x the X coordinate - * @param y the Y coordinate - * @param z the Z coordinate - * @return the Vec3f position to render at - */ - getRenderPos(x: number, y: number, z: number): com.chattriggers.ctjs.api.vec.Vec3f; - drawRect(color: number, x: number, y: number, width: number, height: number): com.chattriggers.ctjs.api.render.Renderer; - drawLine(color: number, x1: number, y1: number, x2: number, y2: number, thickness: number): void; - drawCircle(color: number, x: number, y: number, radius: number, steps: number): void; - drawString(text: string, x: number, y: number): void; - drawString(text: string, x: number, y: number, color: number): void; - drawString(text: string, x: number, y: number, color: number, shadow: boolean): void; - drawStringWithShadow(text: string, x: number, y: number): void; - drawStringWithShadow(text: string, x: number, y: number, color: number): void; - drawImage(image: com.chattriggers.ctjs.api.render.Image, x: number, y: number, width: number, height: number): void; - /** - * Draws a player entity to the screen, similar to the one displayed in the inventory screen. - * - * Takes a parameter with the following options: - * - player: The player entity to draw. Can be a [PlayerMP] or [AbstractClientPlayerEntity]. - * Defaults to Player.toMC() - * - x: The x position on the screen to render the player - * - y: The y position on the screen to render the player - * - size: The size of the rendered player - * - rotate: Whether the player should look at the mouse cursor, similar to the inventory screen - * - pitch: THe pitch the rendered player will face, if rotate is false - * - yaw: The yaw the rendered player will face, if rotate is false - * - showNametag: Whether the nametag of the player should be rendered - * - showArmor: Whether the armor of the player should be rendered - * - showCape: Whether the cape of the player should be rendered - * - showHeldItem: Whether the held item of the player should be rendered - * - showArrows: Whether any arrows stuck in the player's model should be rendered - * - showElytra: Whether the player's Elytra should be rendered - * - showParrot: Whether a perched parrot should be rendered - * - showBeeStinger: Whether any stuck bee stingers should be rendered - * - * @param obj An options bag - */ - drawPlayer(obj: org.mozilla.javascript.NativeObject): void; - new(): com.chattriggers.ctjs.api.render.Renderer; - } - const Renderer$ScreenWrapper: { - new(): com.chattriggers.ctjs.api.render.Renderer$ScreenWrapper; - } - interface Renderer$ScreenWrapper { - getWidth(): number; - getHeight(): number; - getScale(): number; - } - const Image: { - new(image: java.awt.image.BufferedImage | null | undefined): com.chattriggers.ctjs.api.render.Image; - } - interface Image { - getImage(): java.awt.image.BufferedImage | null | undefined; - setImage(value: java.awt.image.BufferedImage | null | undefined): void; - getTextureWidth(): number; - getTextureHeight(): number; - getTexture(): net.minecraft.client.renderer.texture.DynamicTexture | null | undefined; - /** - * Clears the image from GPU memory and removes its references CT side - * that way it can be garbage collected if not referenced in js code. - */ - destroy(): void; - draw(x: number, y: number): com.chattriggers.ctjs.api.render.Image; - draw(x: number, y: number, width: number | null | undefined): com.chattriggers.ctjs.api.render.Image; - draw(x: number, y: number, width: number | null | undefined, height: number | null | undefined): com.chattriggers.ctjs.api.render.Image; - } - const Image$Companion: { - /** - * Create an image object from a java.io.File object. Throws an exception - * if the file cannot be found. - */ - fromFile(file: java.io.File): com.chattriggers.ctjs.api.render.Image; - /** - * Create an image object from a file path. Throws an exception - * if the file cannot be found. - */ - fromFile(file: string): com.chattriggers.ctjs.api.render.Image; - /** - * Create an image object from a file path, relative to the assets directory. - * Throws an exception if the file cannot be found. - */ - fromAsset(name: string): com.chattriggers.ctjs.api.render.Image; - /** - * Creates an image object from a URL. Throws an exception if an image - * cannot be created from the URL. Will cache the image in the assets - */ - fromUrl(url: string): com.chattriggers.ctjs.api.render.Image; - /** - * Creates an image object from a URL. Throws an exception if an image - * cannot be created from the URL. Will cache the image in the assets - */ - fromUrl(url: string, cachedImageName: string | null | undefined): com.chattriggers.ctjs.api.render.Image; - new(): com.chattriggers.ctjs.api.render.Image$Companion; - } - interface Image$Companion { - /** - * Create an image object from a java.io.File object. Throws an exception - * if the file cannot be found. - */ - fromFile(file: java.io.File): com.chattriggers.ctjs.api.render.Image; - /** - * Create an image object from a file path. Throws an exception - * if the file cannot be found. - */ - fromFile(file: string): com.chattriggers.ctjs.api.render.Image; - /** - * Create an image object from a file path, relative to the assets directory. - * Throws an exception if the file cannot be found. - */ - fromAsset(name: string): com.chattriggers.ctjs.api.render.Image; - /** - * Creates an image object from a URL. Throws an exception if an image - * cannot be created from the URL. Will cache the image in the assets - */ - fromUrl(url: string): com.chattriggers.ctjs.api.render.Image; - /** - * Creates an image object from a URL. Throws an exception if an image - * cannot be created from the URL. Will cache the image in the assets - */ - fromUrl(url: string, cachedImageName: string | null | undefined): com.chattriggers.ctjs.api.render.Image; - new(): com.chattriggers.ctjs.api.render.Image$Companion; - } - const Rectangle: { - new(color: number, x: number, y: number, width: number, height: number): com.chattriggers.ctjs.api.render.Rectangle; - } - interface Rectangle { - getColor(): number; - setColor(color: number): com.chattriggers.ctjs.api.render.Rectangle; - getX(): number; - setX(x: number): com.chattriggers.ctjs.api.render.Rectangle; - getY(): number; - setY(y: number): com.chattriggers.ctjs.api.render.Rectangle; - getWidth(): number; - setWidth(width: number): com.chattriggers.ctjs.api.render.Rectangle; - getHeight(): number; - setHeight(height: number): com.chattriggers.ctjs.api.render.Rectangle; - isShadow(): boolean; - setShadow(shadow: boolean): com.chattriggers.ctjs.api.render.Rectangle; - setShadow(color: number, x: number, y: number): com.chattriggers.ctjs.api.render.Rectangle; - getShadowOffset(): com.chattriggers.ctjs.api.vec.Vec2f; - getShadowOffsetX(): number; - getShadowOffsetY(): number; - setShadowOffset(x: number, y: number): com.chattriggers.ctjs.api.render.Rectangle; - setShadowOffsetX(x: number): com.chattriggers.ctjs.api.render.Rectangle; - setShadowOffsetY(y: number): com.chattriggers.ctjs.api.render.Rectangle; - getShadowColor(): number; - setShadowColor(color: number): com.chattriggers.ctjs.api.render.Rectangle; - getOutline(): boolean; - setOutline(outline: boolean): com.chattriggers.ctjs.api.render.Rectangle; - setOutline(color: number, thickness: number): com.chattriggers.ctjs.api.render.Rectangle; - getOutlineColor(): number; - setOutlineColor(color: number): com.chattriggers.ctjs.api.render.Rectangle; - getThickness(): number; - setThickness(thickness: number): com.chattriggers.ctjs.api.render.Rectangle; - draw(): com.chattriggers.ctjs.api.render.Rectangle; - } - const Gui: { - new(): com.chattriggers.ctjs.api.render.Gui; - new(title: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Gui; - } - interface Gui extends gg.essential.universal.UScreen { - open(): void; - isOpen(): boolean; - /** - * Registers a method to be run while gui is open. - * Registered method runs on draw. - * Arguments passed through to method: - * - int mouseX - * - int mouseY - * - float partialTicks - * - * @param method the method to run - * @return the trigger - */ - registerDraw(method: any): com.chattriggers.ctjs.api.render.Gui; - /** - * Registers a method to be run while gui is open. - * Registered method runs on mouse click. - * Arguments passed through to method: - * - int mouseX - * - int mouseY - * - int button - * - * @param method the method to run - * @return the trigger - */ - registerClicked(method: any): com.chattriggers.ctjs.api.render.Gui; - /** - * Registers a method to be run while the gui is open. - * Registered method runs on mouse scroll. - * Arguments passed through to method: - * - int mouseX - * - int mouseY - * - int scroll direction - */ - registerScrolled(method: any): com.chattriggers.ctjs.api.render.Gui; - /** - * Registers a method to be run while gui is open. - * Registered method runs on key input. - * Arguments passed through to method: - * - char typed character - * - int key code - * - * @param method the method to run - * @return the trigger - */ - registerKeyTyped(method: any): com.chattriggers.ctjs.api.render.Gui; - /** - * Registers a method to be run while gui is open. - * Registered method runs on key input. - * Arguments passed through to method: - * - int mouseX - * - int mouseY - * - int clickedMouseButton - * - long timeSinceLastClick - * - * @param method the method to run - * @return the trigger - */ - registerMouseDragged(method: any): com.chattriggers.ctjs.api.render.Gui; - /** - * Registers a method to be run while gui is open. - * Registered method runs on mouse release. - * Arguments passed through to method: - * - int mouseX - * - int mouseY - * - int button - * - * @param method the method to run - * @return the trigger - */ - registerMouseReleased(method: any): com.chattriggers.ctjs.api.render.Gui; - /** - * Registers a method to be run while gui is open. - * Registered method runs when an action is performed (clicking a button) - * Arguments passed through to method: - * - the button that is clicked - * - * @param method the method to run - * @return the trigger - */ - registerActionPerformed(method: any): com.chattriggers.ctjs.api.render.Gui; - /** - * Registers a method to be run when the gui is opened. - * Arguments passed through to method: - * - the gui that is opened - * - * @param method the method to run - * @return the trigger - */ - registerOpened(method: any): com.chattriggers.ctjs.api.render.Gui; - /** - * Registers a method to be run when the gui is closed. - * Arguments passed through to method: - * - the gui that is closed - * - * @param method the method to run - * @return the trigger - */ - registerClosed(method: any): com.chattriggers.ctjs.api.render.Gui; - unregisterDraw(): com.chattriggers.ctjs.api.render.Gui; - unregisterClicked(): com.chattriggers.ctjs.api.render.Gui; - unregisterScrolled(): com.chattriggers.ctjs.api.render.Gui; - unregisterKeyTyped(): com.chattriggers.ctjs.api.render.Gui; - unregisterMouseDragged(): com.chattriggers.ctjs.api.render.Gui; - unregisterMouseReleased(): com.chattriggers.ctjs.api.render.Gui; - unregisterActionPerformed(): com.chattriggers.ctjs.api.render.Gui; - unregisterOpened(): com.chattriggers.ctjs.api.render.Gui; - unregisterClosed(): com.chattriggers.ctjs.api.render.Gui; - setDoesPauseGame(doesPauseGame: boolean): com.chattriggers.ctjs.api.render.Gui; - /** - * Add a base Minecraft button to the gui - * - * @param button the button to add - * @return the button ID for use in actionPerformed - */ - addButton(button: net.minecraft.client.gui.components.Button): number; - /** - * Add a base Minecraft button to the gui - * - * @param x the x position of the button - * @param y the y position of the button - * @param width the width of the button - * @param height the height of the button - * @param buttonText the label of the button - * @return the button ID for use in actionPerformed - */ - addButton(x: number, y: number, buttonText: com.chattriggers.ctjs.api.message.TextComponent): number; - /** - * Add a base Minecraft button to the gui - * - * @param x the x position of the button - * @param y the y position of the button - * @param width the width of the button - * @param height the height of the button - * @param buttonText the label of the button - * @return the button ID for use in actionPerformed - */ - addButton(x: number, y: number, width: number, buttonText: com.chattriggers.ctjs.api.message.TextComponent): number; - /** - * Add a base Minecraft button to the gui - * - * @param x the x position of the button - * @param y the y position of the button - * @param width the width of the button - * @param height the height of the button - * @param buttonText the label of the button - * @return the button ID for use in actionPerformed - */ - addButton(x: number, y: number, width: number, height: number, buttonText: com.chattriggers.ctjs.api.message.TextComponent): number; - addButton(x: number, y: number, width: number, height: number, buttonText: string): number; - /** - * Removes a button from the gui with the given id - * - * @param buttonId the id of the button to remove - * @return the Gui for method chaining - */ - removeButton(buttonId: number): com.chattriggers.ctjs.api.render.Gui; - clearButtons(): com.chattriggers.ctjs.api.render.Gui; - getButtonVisibility(buttonId: number): boolean; - /** - * Sets the visibility of a button - * - * @param buttonId the id of the button to change - * @param visible the new visibility of the button - * @return the Gui for method chaining - */ - setButtonVisibility(buttonId: number, visible: boolean): com.chattriggers.ctjs.api.render.Gui; - getButtonEnabled(buttonId: number): boolean; - /** - * Sets the enabled state of a button - * - * @param buttonId the id of the button to set - * @param enabled the enabled state of the button - * @return the Gui for method chaining - */ - setButtonEnabled(buttonId: number, enabled: boolean): com.chattriggers.ctjs.api.render.Gui; - getButtonWidth(buttonId: number): number; - /** - * Sets the button's width. Button textures break if the width is greater than 200 - * - * @param buttonId id of the button - * @param width the new width - * @return the Gui for method chaining - */ - setButtonWidth(buttonId: number, width: number): com.chattriggers.ctjs.api.render.Gui; - getButtonHeight(buttonId: number): number; - /** - * Sets the button's height. Button textures break if the height is not 20 - * - * @param buttonId id of the button - * @param height the new height - * @return the Gui for method chaining - */ - setButtonHeight(buttonId: number, height: number): com.chattriggers.ctjs.api.render.Gui; - getButtonX(buttonId: number): number; - /** - * Sets the button's x position - * - * @param buttonId id of the button - * @param x the new x position - * @return the Gui for method chaining - */ - setButtonX(buttonId: number, x: number): com.chattriggers.ctjs.api.render.Gui; - getButtonY(buttonId: number): number; - /** - * Sets the button's y position - * - * @param buttonId id of the button - * @param y the new y position - * @return the Gui for method chaining - */ - setButtonY(buttonId: number, y: number): com.chattriggers.ctjs.api.render.Gui; - /** - * Sets the button's position - * - * @param buttonId id of the button - * @param x the new x position - * @param y the new y position - * @return the Gui for method chaining - */ - setButtonLoc(buttonId: number, x: number, y: number): com.chattriggers.ctjs.api.render.Gui; - /** - * Sets the button's text - * - * @param buttonId id of the button - * @param text the new text - */ - setButtonText(buttonId: number, text: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Gui; - /** - * Sets the button's text - * - * @param buttonId id of the button - * @param text the new text - */ - setButtonText(buttonId: number, text: string): com.chattriggers.ctjs.api.render.Gui; - /** - * Sets the gui's tooltip, this will be visible on top of the cursor - * when the gui is open. - * - * @param text the contents of the tooltip - */ - setTooltip(text: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Gui; - /** - * Sets the gui's tooltip, this will be visible on top of the cursor - * when the gui is open. - * - * @param text the contents of the tooltip - */ - setTooltip(text: string): com.chattriggers.ctjs.api.render.Gui; - } - const Renderer3d: { - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer3d] to allow for method chaining - * @see Renderer.DrawMode - */ - begin(): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer3d] to allow for method chaining - * @see Renderer.DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer3d] to allow for method chaining - * @see Renderer.DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode, vertexFormat: com.chattriggers.ctjs.api.render.Renderer$VertexFormat): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer3d] to allow for method chaining - * @see Renderer.DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode, vertexFormat: com.chattriggers.ctjs.api.render.Renderer$VertexFormat, snippet: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets a new vertex in the world renderer. - * - * @param x the x position - * @param y the y position - * @param z the z position - * @return [Renderer3d] to allow for method chaining - */ - pos(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the texture location on the last defined vertex. - * - * @param u the u position in the texture - * @param v the v position in the texture - * @return [Renderer3d] to allow for method chaining - */ - tex(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 1 - * @param g the green value of the color, between 0 and 1 - * @param b the blue value of the color, between 0 and 1 - * @param a the alpha value of the color, between 0 and 1 - * @return [Renderer3d] to allow for method chaining - */ - color(r: number, g: number, b: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 1 - * @param g the green value of the color, between 0 and 1 - * @param b the blue value of the color, between 0 and 1 - * @param a the alpha value of the color, between 0 and 1 - * @return [Renderer3d] to allow for method chaining - */ - color(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 255 - * @param g the green value of the color, between 0 and 255 - * @param b the blue value of the color, between 0 and 255 - * @param a the alpha value of the color, between 0 and 255 - * @return [Renderer3d] to allow for method chaining - */ - color(r: number, g: number, b: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 255 - * @param g the green value of the color, between 0 and 255 - * @param b the blue value of the color, between 0 and 255 - * @param a the alpha value of the color, between 0 and 255 - * @return [Renderer3d] to allow for method chaining - */ - color(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the color for the last defined vertex. - * - * @param color the color value, can use [Renderer.getColor] to get this - * @return [Renderer3d] to allow for method chaining - */ - color(color: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the normal of the vertex. This is mostly used with [Renderer.VertexFormat.LINES] - * - * @param x the x position of the normal vector - * @param y the y position of the normal vector - * @param z the z position of the normal vector - * @return [Renderer3d] to allow for method chaining - */ - normal(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the overlay location on the last defined vertex. - * - * @param u the u position in the overlay - * @param v the v position in the overlay - * @return [Renderer3d] to allow for method chaining - */ - overlay(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the light location on the last defined vertex. - * - * @param u the u position in the light - * @param v the v position in the light - * @return [Renderer3d] to allow for method chaining - */ - light(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Finalizes vertices and draws the world renderer. - */ - draw(): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number, renderBlackBox: boolean): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number, renderBlackBox: boolean, scale: number): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number, renderBlackBox: boolean, scale: number, increase: boolean): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number, renderBlackBox: boolean, scale: number, increase: boolean, centered: boolean): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number, renderBlackBox: boolean, scale: number, increase: boolean, centered: boolean, renderThroughBlocks: boolean): void; - /** - * A variant of drawString that takes an object instead of positional parameters - */ - drawString(obj: org.mozilla.javascript.NativeObject): void; - /** - * Draws a line in the world from (x1, y1, z1) to (x2, y2, z2) - * - * @param color the color of the line - * @param x1 the starting x coordinate - * @param y1 the starting y coordinate - * @param z1 the starting z coordinate - * @param x2 the ending x coordinate - * @param y2 the ending y coordinate - * @param z2 the ending z coordinate - */ - drawLine(color: number, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): void; - new(): com.chattriggers.ctjs.api.render.Renderer3d; - } - interface Renderer3d { - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer3d] to allow for method chaining - * @see Renderer.DrawMode - */ - begin(): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer3d] to allow for method chaining - * @see Renderer.DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer3d] to allow for method chaining - * @see Renderer.DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode, vertexFormat: com.chattriggers.ctjs.api.render.Renderer$VertexFormat): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Begin drawing with the world renderer - * - * @param drawMode the GL draw mode - * @param vertexFormat The [VertexFormat] to use for drawing - * @return [Renderer3d] to allow for method chaining - * @see Renderer.DrawMode - */ - begin(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode, vertexFormat: com.chattriggers.ctjs.api.render.Renderer$VertexFormat, snippet: com.chattriggers.ctjs.api.render.Renderer$RenderSnippet): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets a new vertex in the world renderer. - * - * @param x the x position - * @param y the y position - * @param z the z position - * @return [Renderer3d] to allow for method chaining - */ - pos(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the texture location on the last defined vertex. - * - * @param u the u position in the texture - * @param v the v position in the texture - * @return [Renderer3d] to allow for method chaining - */ - tex(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 1 - * @param g the green value of the color, between 0 and 1 - * @param b the blue value of the color, between 0 and 1 - * @param a the alpha value of the color, between 0 and 1 - * @return [Renderer3d] to allow for method chaining - */ - color(r: number, g: number, b: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 1 - * @param g the green value of the color, between 0 and 1 - * @param b the blue value of the color, between 0 and 1 - * @param a the alpha value of the color, between 0 and 1 - * @return [Renderer3d] to allow for method chaining - */ - color(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 255 - * @param g the green value of the color, between 0 and 255 - * @param b the blue value of the color, between 0 and 255 - * @param a the alpha value of the color, between 0 and 255 - * @return [Renderer3d] to allow for method chaining - */ - color(r: number, g: number, b: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the color for the last defined vertex. - * - * @param r the red value of the color, between 0 and 255 - * @param g the green value of the color, between 0 and 255 - * @param b the blue value of the color, between 0 and 255 - * @param a the alpha value of the color, between 0 and 255 - * @return [Renderer3d] to allow for method chaining - */ - color(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the color for the last defined vertex. - * - * @param color the color value, can use [Renderer.getColor] to get this - * @return [Renderer3d] to allow for method chaining - */ - color(color: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the normal of the vertex. This is mostly used with [Renderer.VertexFormat.LINES] - * - * @param x the x position of the normal vector - * @param y the y position of the normal vector - * @param z the z position of the normal vector - * @return [Renderer3d] to allow for method chaining - */ - normal(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the overlay location on the last defined vertex. - * - * @param u the u position in the overlay - * @param v the v position in the overlay - * @return [Renderer3d] to allow for method chaining - */ - overlay(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Sets the light location on the last defined vertex. - * - * @param u the u position in the light - * @param v the v position in the light - * @return [Renderer3d] to allow for method chaining - */ - light(u: number, v: number): com.chattriggers.ctjs.api.render.Renderer3d; - /** - * Finalizes vertices and draws the world renderer. - */ - draw(): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number, renderBlackBox: boolean): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number, renderBlackBox: boolean, scale: number): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number, renderBlackBox: boolean, scale: number, increase: boolean): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number, renderBlackBox: boolean, scale: number, increase: boolean, centered: boolean): void; - /** - * Renders floating lines of text in the 3D world at a specific position. - * This should be placed inside a `preRenderWorld` trigger. - * - * @param text The string array of text to render - * @param x X coordinate in the game world - * @param y Y coordinate in the game world - * @param z Z coordinate in the game world - * @param color the color of the text - * @param renderBlackBox render a pretty black border behind the text - * @param scale the scale of the text - * @param increase whether to scale the text up as the player moves away - * @param centered whether to center each line based on the longest line (this has no effect if there are no newline characters) - * @param renderThroughBlocks whether to render the text through blocks - */ - drawString(text: string, x: number, y: number, z: number, color: number, renderBlackBox: boolean, scale: number, increase: boolean, centered: boolean, renderThroughBlocks: boolean): void; - /** - * A variant of drawString that takes an object instead of positional parameters - */ - drawString(obj: org.mozilla.javascript.NativeObject): void; - /** - * Draws a line in the world from (x1, y1, z1) to (x2, y2, z2) - * - * @param color the color of the line - * @param x1 the starting x coordinate - * @param y1 the starting y coordinate - * @param z1 the starting z coordinate - * @param x2 the ending x coordinate - * @param y2 the ending y coordinate - * @param z2 the ending z coordinate - */ - drawLine(color: number, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): void; - new(): com.chattriggers.ctjs.api.render.Renderer3d; - } - const RenderUtils: { - Color: typeof com.chattriggers.ctjs.api.render.RenderUtils$Color; - drawFilledBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawFilledBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, depth: boolean): void; - drawFilledBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawFilledBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, depth: boolean): void; - drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.RenderUtils$Color, color2: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.RenderUtils$Color, color2: com.chattriggers.ctjs.api.render.RenderUtils$Color, wireThickness: number): void; - drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.RenderUtils$Color, color2: com.chattriggers.ctjs.api.render.RenderUtils$Color, wireThickness: number, depth: boolean): void; - drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, filled: boolean): void; - drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, filled: boolean, thickness: number): void; - drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, filled: boolean, thickness: number, depth: boolean): void; - drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean, translate: boolean): void; - new(): com.chattriggers.ctjs.api.render.RenderUtils; - } - interface RenderUtils { - drawFilledBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawFilledBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, depth: boolean): void; - drawFilledBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawFilledBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, depth: boolean): void; - drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.RenderUtils$Color, color2: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.RenderUtils$Color, color2: com.chattriggers.ctjs.api.render.RenderUtils$Color, wireThickness: number): void; - drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.RenderUtils$Color, color2: com.chattriggers.ctjs.api.render.RenderUtils$Color, wireThickness: number, depth: boolean): void; - drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, filled: boolean): void; - drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, filled: boolean, thickness: number): void; - drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, filled: boolean, thickness: number, depth: boolean): void; - drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color): void; - drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number): void; - drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.RenderUtils$Color, thickness: number, depth: boolean): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean): void; - drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean, translate: boolean): void; - new(): com.chattriggers.ctjs.api.render.RenderUtils; - } - const RenderUtils$Color: { - new(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.RenderUtils$Color; - } - interface RenderUtils$Color { - getR(): number; - getG(): number; - getB(): number; - getA(): number; - getRf(): number; - getGf(): number; - getBf(): number; - getAf(): number; - getPacked(): number; - component1(): number; - component2(): number; - component3(): number; - component4(): number; - copy(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.RenderUtils$Color; - } - const DrawContextHolder: { - getCurrentContext(): net.minecraft.client.gui.GuiGraphicsExtractor | null | undefined; - setCurrentContext(value: net.minecraft.client.gui.GuiGraphicsExtractor | null | undefined): void; - new(): com.chattriggers.ctjs.api.render.DrawContextHolder; - } - interface DrawContextHolder { - getCurrentContext(): net.minecraft.client.gui.GuiGraphicsExtractor | null | undefined; - setCurrentContext(value: net.minecraft.client.gui.GuiGraphicsExtractor | null | undefined): void; - new(): com.chattriggers.ctjs.api.render.DrawContextHolder; - withContext(context: net.minecraft.client.gui.GuiGraphicsExtractor, block: kotlin.Function0): T; - } - const Book: { - new(): com.chattriggers.ctjs.api.render.Book; - } - interface Book { - /** - * Add a page to the book. - * - * @param contents the entire message for what the page should be - * @return the current book to allow method chaining - */ - addPage(contents: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Book; - /** - * Overloaded method for adding a simple page to the book. - * - * @param message a simple string to make the page - * @return the current book to allow method chaining - */ - addPage(message: string): com.chattriggers.ctjs.api.render.Book; - /** - * Inserts a page at the specified index of the book - * - * @param pageIndex the index of the page to set - * @param message the message to set the page to - * @return the current book to allow method chaining - */ - insertPage(pageIndex: number, message: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Book; - insertPage(pageIndex: number, message: string): com.chattriggers.ctjs.api.render.Book; - /** - * Sets a page of the book to the specified message. - * - * @param pageIndex the index of the page to set - * @param message the message to set the page to - * @return the current book to allow method chaining - */ - setPage(pageIndex: number, message: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Book; - setPage(pageIndex: number, message: string): com.chattriggers.ctjs.api.render.Book; - display(): void; - display(pageIndex: number): void; - isOpen(): boolean; - getCurrentPage(): number; - } - const Shape: { - new(color: number): com.chattriggers.ctjs.api.render.Shape; - } - interface Shape { - copy(): com.chattriggers.ctjs.api.render.Shape; - getColor(): number; - setColor(color: number): com.chattriggers.ctjs.api.render.Shape; - getDrawMode(): com.chattriggers.ctjs.api.render.Renderer$DrawMode; - /** - * Sets the GL draw mode of the shape - */ - setDrawMode(drawMode: com.chattriggers.ctjs.api.render.Renderer$DrawMode): com.chattriggers.ctjs.api.render.Shape; - getVertexes(): Array; - addVertex(x: number, y: number): com.chattriggers.ctjs.api.render.Shape; - insertVertex(index: number, x: number, y: number): com.chattriggers.ctjs.api.render.Shape; - removeVertex(index: number): com.chattriggers.ctjs.api.render.Shape; - clearVertices(): com.chattriggers.ctjs.api.render.Shape; - /** - * Sets the shape as a line pointing from [x1, y1] to [x2, y2] with a thickness - */ - setLine(x1: number, y1: number, x2: number, y2: number, thickness: number): com.chattriggers.ctjs.api.render.Shape; - /** - * Sets the shape as a circle with a center at [x, y] - * with radius and number of steps around the circle - */ - setCircle(x: number, y: number, radius: number, steps: number): com.chattriggers.ctjs.api.render.Shape; - draw(): com.chattriggers.ctjs.api.render.Shape; - } - const NVGRenderer: { - GifData: typeof com.chattriggers.ctjs.api.render.NVGRenderer$GifData; - vg: number; - registerV5Render(runnable: java.lang.Runnable): void; - unregisterV5Render(runnable: java.lang.Runnable): void; - registerV5PreRender(runnable: java.lang.Runnable): void; - unregisterV5PreRender(runnable: java.lang.Runnable): void; - runPreDrawables(): void; - runDrawables(): void; - beginFrame(width: number, height: number): void; - endFrame(): void; - drawCheckerboard(x: number, y: number, w: number, h: number, radius: number): void; - drawCheckerboard(x: number, y: number, w: number, h: number, radius: number, size: number): void; - drawHueBar(x: number, y: number, w: number, h: number, radius: number): void; - drawGradientRect(x: number, y: number, w: number, h: number, color1: number, color2: number, direction: any): void; - drawGradientRect(x: number, y: number, w: number, h: number, color1: number, color2: number, direction: any, radius: number): void; - drawHollowGradientRect(x: number, y: number, w: number, h: number, thickness: number, color1: number, color2: number, direction: any): void; - drawHollowGradientRect(x: number, y: number, w: number, h: number, thickness: number, color1: number, color2: number, direction: any, radius: number): void; - linearGradient(sx: number, sy: number, ex: number, ey: number, color1: number, color2: number): void; - setGlobalCompositeOperation(op: number): void; - save(): void; - restore(): void; - translate(x: number, y: number): void; - rotate(angle: number): void; - scale(x: number, y: number): void; - globalAlpha(alpha: number): void; - drawRect(x: number, y: number, w: number, h: number, color: number): void; - drawRoundedRect(x: number, y: number, w: number, h: number, radius: number, color: number): void; - drawRoundedRectVaried(x: number, y: number, w: number, h: number, color: number, tl: number, tr: number, br: number, bl: number): void; - drawCircle(x: number, y: number, radius: number, color: number): void; - drawDropShadow(x: number, y: number, w: number, h: number, radius: number, blur: number, spread: number, color: number): void; - drawHollowRect(x: number, y: number, w: number, h: number, thickness: number, color: number): void; - drawHollowRect(x: number, y: number, w: number, h: number, thickness: number, color: number, radius: number): void; - drawLine(x1: number, y1: number, x2: number, y2: number, thickness: number, color: number): void; - loadImage(path: string): string; - unloadImage(path: string): void; - isImageLoaded(path: string): boolean; - loadGif(path: string): com.chattriggers.ctjs.api.render.NVGRenderer$GifData | null | undefined; - unloadGif(path: string): void; - drawGif(path: string, x: number, y: number, w: number, h: number, frameIndex: number): void; - drawGif(path: string, x: number, y: number, w: number, h: number, frameIndex: number, radius: number): void; - drawGif(path: string, x: number, y: number, w: number, h: number, frameIndex: number, radius: number, alpha: number): void; - drawImage(path: string, x: number, y: number, w: number, h: number): void; - drawImage(path: string, x: number, y: number, w: number, h: number, radius: number): void; - drawImage(path: string, x: number, y: number, w: number, h: number, radius: number, alpha: number): void; - drawImageFromUrl(url: string, x: number, y: number, w: number, h: number): void; - drawImageFromUrl(url: string, x: number, y: number, w: number, h: number, radius: number): void; - drawImageFromUrl(url: string, x: number, y: number, w: number, h: number, radius: number, alpha: number): void; - drawGLTexture(glTextureId: number, texW: number, texH: number, x: number, y: number, w: number, h: number): void; - drawGLTexture(glTextureId: number, texW: number, texH: number, x: number, y: number, w: number, h: number, radius: number): void; - drawGLTexture(glTextureId: number, texW: number, texH: number, x: number, y: number, w: number, h: number, radius: number, alpha: number): void; - drawGLTextureRegion(glTextureId: number, textureWidth: number, textureHeight: number, subX: number, subY: number, subW: number, subH: number, x: number, y: number, w: number, h: number): void; - drawGLTextureRegion(glTextureId: number, textureWidth: number, textureHeight: number, subX: number, subY: number, subW: number, subH: number, x: number, y: number, w: number, h: number, radius: number): void; - drawGLTextureRegion(glTextureId: number, textureWidth: number, textureHeight: number, subX: number, subY: number, subW: number, subH: number, x: number, y: number, w: number, h: number, radius: number, alpha: number): void; - invalidateGLTexture(glTextureId: number): void; - clearImageCache(): void; - getCacheStats(): string; - scissor(x: number, y: number, w: number, h: number): void; - pushScissor(x: number, y: number, w: number, h: number): void; - popScissor(): void; - resetScissor(): void; - text(text: string, x: number, y: number, size: number, color: number, align: number): void; - text(text: string, x: number, y: number, size: number, color: number, font: com.chattriggers.ctjs.api.render.Font | null | undefined, align: number): void; - textWidth(text: string, size: number): number; - textWidth(text: string, size: number, font: com.chattriggers.ctjs.api.render.Font | null | undefined): number; - destroy(): void; - new(): com.chattriggers.ctjs.api.render.NVGRenderer; - } - interface NVGRenderer { - vg: number; - registerV5Render(runnable: java.lang.Runnable): void; - unregisterV5Render(runnable: java.lang.Runnable): void; - registerV5PreRender(runnable: java.lang.Runnable): void; - unregisterV5PreRender(runnable: java.lang.Runnable): void; - runPreDrawables(): void; - runDrawables(): void; - beginFrame(width: number, height: number): void; - endFrame(): void; - drawCheckerboard(x: number, y: number, w: number, h: number, radius: number): void; - drawCheckerboard(x: number, y: number, w: number, h: number, radius: number, size: number): void; - drawHueBar(x: number, y: number, w: number, h: number, radius: number): void; - drawGradientRect(x: number, y: number, w: number, h: number, color1: number, color2: number, direction: any): void; - drawGradientRect(x: number, y: number, w: number, h: number, color1: number, color2: number, direction: any, radius: number): void; - drawHollowGradientRect(x: number, y: number, w: number, h: number, thickness: number, color1: number, color2: number, direction: any): void; - drawHollowGradientRect(x: number, y: number, w: number, h: number, thickness: number, color1: number, color2: number, direction: any, radius: number): void; - linearGradient(sx: number, sy: number, ex: number, ey: number, color1: number, color2: number): void; - setGlobalCompositeOperation(op: number): void; - save(): void; - restore(): void; - translate(x: number, y: number): void; - rotate(angle: number): void; - scale(x: number, y: number): void; - globalAlpha(alpha: number): void; - drawRect(x: number, y: number, w: number, h: number, color: number): void; - drawRoundedRect(x: number, y: number, w: number, h: number, radius: number, color: number): void; - drawRoundedRectVaried(x: number, y: number, w: number, h: number, color: number, tl: number, tr: number, br: number, bl: number): void; - drawCircle(x: number, y: number, radius: number, color: number): void; - drawDropShadow(x: number, y: number, w: number, h: number, radius: number, blur: number, spread: number, color: number): void; - drawHollowRect(x: number, y: number, w: number, h: number, thickness: number, color: number): void; - drawHollowRect(x: number, y: number, w: number, h: number, thickness: number, color: number, radius: number): void; - drawLine(x1: number, y1: number, x2: number, y2: number, thickness: number, color: number): void; - loadImage(path: string): string; - unloadImage(path: string): void; - isImageLoaded(path: string): boolean; - loadGif(path: string): com.chattriggers.ctjs.api.render.NVGRenderer$GifData | null | undefined; - unloadGif(path: string): void; - drawGif(path: string, x: number, y: number, w: number, h: number, frameIndex: number): void; - drawGif(path: string, x: number, y: number, w: number, h: number, frameIndex: number, radius: number): void; - drawGif(path: string, x: number, y: number, w: number, h: number, frameIndex: number, radius: number, alpha: number): void; - drawImage(path: string, x: number, y: number, w: number, h: number): void; - drawImage(path: string, x: number, y: number, w: number, h: number, radius: number): void; - drawImage(path: string, x: number, y: number, w: number, h: number, radius: number, alpha: number): void; - drawImageFromUrl(url: string, x: number, y: number, w: number, h: number): void; - drawImageFromUrl(url: string, x: number, y: number, w: number, h: number, radius: number): void; - drawImageFromUrl(url: string, x: number, y: number, w: number, h: number, radius: number, alpha: number): void; - drawGLTexture(glTextureId: number, texW: number, texH: number, x: number, y: number, w: number, h: number): void; - drawGLTexture(glTextureId: number, texW: number, texH: number, x: number, y: number, w: number, h: number, radius: number): void; - drawGLTexture(glTextureId: number, texW: number, texH: number, x: number, y: number, w: number, h: number, radius: number, alpha: number): void; - drawGLTextureRegion(glTextureId: number, textureWidth: number, textureHeight: number, subX: number, subY: number, subW: number, subH: number, x: number, y: number, w: number, h: number): void; - drawGLTextureRegion(glTextureId: number, textureWidth: number, textureHeight: number, subX: number, subY: number, subW: number, subH: number, x: number, y: number, w: number, h: number, radius: number): void; - drawGLTextureRegion(glTextureId: number, textureWidth: number, textureHeight: number, subX: number, subY: number, subW: number, subH: number, x: number, y: number, w: number, h: number, radius: number, alpha: number): void; - invalidateGLTexture(glTextureId: number): void; - clearImageCache(): void; - getCacheStats(): string; - scissor(x: number, y: number, w: number, h: number): void; - pushScissor(x: number, y: number, w: number, h: number): void; - popScissor(): void; - resetScissor(): void; - text(text: string, x: number, y: number, size: number, color: number, align: number): void; - text(text: string, x: number, y: number, size: number, color: number, font: com.chattriggers.ctjs.api.render.Font | null | undefined, align: number): void; - textWidth(text: string, size: number): number; - textWidth(text: string, size: number, font: com.chattriggers.ctjs.api.render.Font | null | undefined): number; - destroy(): void; - new(): com.chattriggers.ctjs.api.render.NVGRenderer; - getDefaultFont(): com.chattriggers.ctjs.api.render.Font | null | undefined; - clearCallbacks(): void; - } - const NVGRenderer$GifData: { - new(width: number, height: number, frameCount: number, delays: Array): com.chattriggers.ctjs.api.render.NVGRenderer$GifData; - } - interface NVGRenderer$GifData { - getWidth(): number; - getHeight(): number; - getFrameCount(): number; - getDelays(): Array; - component1(): number; - component2(): number; - component3(): number; - component4(): Array; - copy(width: number, height: number, frameCount: number, delays: Array): com.chattriggers.ctjs.api.render.NVGRenderer$GifData; - } - } - namespace triggers { - interface ITriggerType { - getName(): string; - triggerAll(): void; - triggerAll(arg0: any | null | undefined): void; - triggerAll(arg0: any | null | undefined, arg1: any | null | undefined): void; - triggerAll(arg0: any | null | undefined, arg1: any | null | undefined, arg2: any | null | undefined): void; - triggerAll(arg0: any | null | undefined, arg1: any | null | undefined, arg2: any | null | undefined, arg3: any | null | undefined): void; - triggerAll(arg0: any | null | undefined, arg1: any | null | undefined, arg2: any | null | undefined, arg3: any | null | undefined, arg4: any | null | undefined): void; - triggerAll(args: any | null | undefined): void; - } - const TriggerType: { - CHAT: com.chattriggers.ctjs.api.triggers.TriggerType; - ACTION_BAR: com.chattriggers.ctjs.api.triggers.TriggerType; - TICK: com.chattriggers.ctjs.api.triggers.TriggerType; - STEP: com.chattriggers.ctjs.api.triggers.TriggerType; - GAME_UNLOAD: com.chattriggers.ctjs.api.triggers.TriggerType; - GAME_LOAD: com.chattriggers.ctjs.api.triggers.TriggerType; - CLICKED: com.chattriggers.ctjs.api.triggers.TriggerType; - SCROLLED: com.chattriggers.ctjs.api.triggers.TriggerType; - DRAGGED: com.chattriggers.ctjs.api.triggers.TriggerType; - GUI_OPENED: com.chattriggers.ctjs.api.triggers.TriggerType; - MESSAGE_SENT: com.chattriggers.ctjs.api.triggers.TriggerType; - ITEM_TOOLTIP: com.chattriggers.ctjs.api.triggers.TriggerType; - PLAYER_INTERACT: com.chattriggers.ctjs.api.triggers.TriggerType; - GUI_KEY: com.chattriggers.ctjs.api.triggers.TriggerType; - GUI_MOUSE_CLICK: com.chattriggers.ctjs.api.triggers.TriggerType; - GUI_MOUSE_DRAG: com.chattriggers.ctjs.api.triggers.TriggerType; - PACKET_SENT: com.chattriggers.ctjs.api.triggers.TriggerType; - PACKET_RECEIVED: com.chattriggers.ctjs.api.triggers.TriggerType; - SERVER_CONNECT: com.chattriggers.ctjs.api.triggers.TriggerType; - SERVER_DISCONNECT: com.chattriggers.ctjs.api.triggers.TriggerType; - GUI_CLOSED: com.chattriggers.ctjs.api.triggers.TriggerType; - DROP_ITEM: com.chattriggers.ctjs.api.triggers.TriggerType; - PRE_RENDER_WORLD: com.chattriggers.ctjs.api.triggers.TriggerType; - POST_RENDER_WORLD: com.chattriggers.ctjs.api.triggers.TriggerType; - BLOCK_HIGHLIGHT: com.chattriggers.ctjs.api.triggers.TriggerType; - RENDER_OVERLAY: com.chattriggers.ctjs.api.triggers.TriggerType; - RENDER_PLAYER_LIST: com.chattriggers.ctjs.api.triggers.TriggerType; - RENDER_ENTITY: com.chattriggers.ctjs.api.triggers.TriggerType; - RENDER_BLOCK_ENTITY: com.chattriggers.ctjs.api.triggers.TriggerType; - GUI_RENDER: com.chattriggers.ctjs.api.triggers.TriggerType; - POST_GUI_RENDER: com.chattriggers.ctjs.api.triggers.TriggerType; - SOUND_PLAY: com.chattriggers.ctjs.api.triggers.TriggerType; - WORLD_LOAD: com.chattriggers.ctjs.api.triggers.TriggerType; - WORLD_UNLOAD: com.chattriggers.ctjs.api.triggers.TriggerType; - SPAWN_PARTICLE: com.chattriggers.ctjs.api.triggers.TriggerType; - ENTITY_DEATH: com.chattriggers.ctjs.api.triggers.TriggerType; - ENTITY_DAMAGE: com.chattriggers.ctjs.api.triggers.TriggerType; - COMMAND: com.chattriggers.ctjs.api.triggers.TriggerType; - OTHER: com.chattriggers.ctjs.api.triggers.TriggerType; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.triggers.TriggerType; - } - interface TriggerType extends kotlin.Enum, com.chattriggers.ctjs.api.triggers.ITriggerType { - } - const CustomTriggerType: { - new(name: string): com.chattriggers.ctjs.api.triggers.CustomTriggerType; - } - interface CustomTriggerType extends com.chattriggers.ctjs.api.triggers.ITriggerType { - component1(): string; - copy(name: string): com.chattriggers.ctjs.api.triggers.CustomTriggerType; - } - const RegularTrigger: { - new(method: any, triggerType: com.chattriggers.ctjs.api.triggers.ITriggerType): com.chattriggers.ctjs.api.triggers.RegularTrigger; - } - interface RegularTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { - } - const Trigger: { - Priority: typeof com.chattriggers.ctjs.api.triggers.Trigger$Priority; - } - interface Trigger extends kotlin.Comparable { - getMethod(): any; - setMethod(value: any): void; - getType(): com.chattriggers.ctjs.api.triggers.ITriggerType; - setType(value: com.chattriggers.ctjs.api.triggers.ITriggerType): void; - isRegistered(): boolean; - /** - * Sets a trigger's priority using [Priority]. - * Highest runs first. - * @param priority the priority of the trigger - * @return the trigger for method chaining - */ - setPriority(priority: com.chattriggers.ctjs.api.triggers.Trigger$Priority): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a trigger based on its type. - * This is done automatically with TriggerRegister. - * @return the trigger for method chaining - */ - register(): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Unregisters a trigger. - * @return the trigger for method chaining - */ - unregister(): com.chattriggers.ctjs.api.triggers.Trigger; - } - const Trigger$Priority: { - HIGHEST: com.chattriggers.ctjs.api.triggers.Trigger$Priority; - HIGH: com.chattriggers.ctjs.api.triggers.Trigger$Priority; - NORMAL: com.chattriggers.ctjs.api.triggers.Trigger$Priority; - LOW: com.chattriggers.ctjs.api.triggers.Trigger$Priority; - LOWEST: com.chattriggers.ctjs.api.triggers.Trigger$Priority; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.api.triggers.Trigger$Priority; - } - interface Trigger$Priority extends kotlin.Enum { - } - const ChatTrigger: { - Event: typeof com.chattriggers.ctjs.api.triggers.ChatTrigger$Event; - new(method: any, type: com.chattriggers.ctjs.api.triggers.ITriggerType): com.chattriggers.ctjs.api.triggers.ChatTrigger; - } - interface ChatTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { - /** - * Sets if the chat trigger should run if the chat event has already been canceled. - * True by default. - * @param bool Boolean to set - * @return the trigger object for method chaining - */ - triggerIfCanceled(bool: boolean): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Sets the chat criteria for [matchesChatCriteria]. - * Arguments for the trigger's method can be passed in using ${variable}. - * Example: `setChatCriteria("<${name}> ${message}");` - * Use ${*} to match a chat message but ignore the pass through. - * @param chatCriteria the chat criteria to set - * @return the trigger object for method chaining - */ - setChatCriteria(chatCriteria: any): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Alias for [setChatCriteria]. - * @param chatCriteria the chat criteria to set - * @return the trigger object for method chaining - */ - setCriteria(chatCriteria: any): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Sets the chat parameter for [Parameter]. - * Clears current parameter list. - * @param parameter the chat parameter to set - * @return the trigger object for method chaining - */ - setParameter(parameter: string): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Sets multiple chat parameters for [Parameter]. - * Clears current parameter list. - * @param parameters the chat parameters to set - * @return the trigger object for method chaining - */ - setParameters(parameters: string): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Adds chat parameter for [Parameter]. - * @param parameter the chat parameter to add - * @return the trigger object for method chaining - */ - addParameter(parameter: string): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Adds multiple chat parameters for [Parameter]. - * @param parameters the chat parameters to add - * @return the trigger object for method chaining - */ - addParameters(parameters: string): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Adds the "start" parameter - * @return the trigger object for method chaining - */ - setStart(): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Adds the "contains" parameter - * @return the trigger object for method chaining - */ - setContains(): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Adds the "end" parameter - * @return the trigger object for method chaining - */ - setEnd(): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Forces this trigger to be formatted or unformatted. If no argument is - * provided, it will be set to formatted. This method overrides the - * behavior of inferring the formatted status from the criteria. - */ - setFormatted(): void; - /** - * Forces this trigger to be formatted or unformatted. If no argument is - * provided, it will be set to formatted. This method overrides the - * behavior of inferring the formatted status from the criteria. - */ - setFormatted(formatted: boolean): void; - /** - * Makes the trigger match the entire chat message - * @return the trigger object for method chaining - */ - setExact(): com.chattriggers.ctjs.api.triggers.ChatTrigger; - /** - * Makes the chat criteria case insensitive - * @return the trigger object for method chaining - */ - setCaseInsensitive(): com.chattriggers.ctjs.api.triggers.ChatTrigger; - } - const ChatTrigger$Event: { - message: com.chattriggers.ctjs.api.message.TextComponent; - new(message: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.triggers.ChatTrigger$Event; - } - interface ChatTrigger$Event extends com.chattriggers.ctjs.api.triggers.CancellableEvent { - } - const CancellableEvent: { - new(): com.chattriggers.ctjs.api.triggers.CancellableEvent; - } - interface CancellableEvent { - setCanceled(): void; - setCanceled(newVal: boolean): void; - setCancelled(): void; - setCancelled(newVal: boolean): void; - isCancelable(): boolean; - isCancellable(): boolean; - isCancelled(): boolean; - isCanceled(): boolean; - } - const StepTrigger: { - new(method: any): com.chattriggers.ctjs.api.triggers.StepTrigger; - } - interface StepTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { - /** - * Sets the frames per second that the trigger activates. - * This has a maximum one step per second. - * @param fps the frames per second to set - * @return the trigger for method chaining - */ - setFps(fps: number): com.chattriggers.ctjs.api.triggers.StepTrigger; - /** - * Sets the delay in seconds between the trigger activation. - * This has a minimum of one step every second. This will override [setFps]. - * @param delay The delay in seconds - * @return the trigger for method chaining - */ - setDelay(delay: number): com.chattriggers.ctjs.api.triggers.StepTrigger; - } - const StepTrigger$Companion: { - new(): com.chattriggers.ctjs.api.triggers.StepTrigger$Companion; - } - interface StepTrigger$Companion { - new(): com.chattriggers.ctjs.api.triggers.StepTrigger$Companion; - } - const CommandTrigger: { - new(method: any): com.chattriggers.ctjs.api.triggers.CommandTrigger; - } - interface CommandTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { - /** - * Sets the tab completion options for the command. - * This method must be used before setting the command name, otherwise, the tab completions will not be set. - * - * @param args all the tab completion options. - */ - setTabCompletions(args: string): com.chattriggers.ctjs.api.triggers.CommandTrigger; - /** - * This sets the possible tab completions for the command. - * This method must be used before setting the command name, otherwise, the tab completions will not be set. - * - * @param callback the callback that returns the tab completion options. - * - * For example: - * ```js - * register("command", () => { - * - * }).setTabCompletions((args) => { - * return ["option1", "option2"]; - * }).setName("test"); - * ``` - * The `args` parameter of the callback are the arguments currently passed to the command. - * For instance, if you want to not show the options after the user tabs the first time, just add a check - * for the length of the arguments and return an empty array. - * - * The return value of the callback **must be an array of strings**, and in this case will always return the 2 - * options in the array. - */ - setTabCompletions(callback: kotlin.Function1, Array>): com.chattriggers.ctjs.api.triggers.CommandTrigger; - /** - * Sets the aliases for the command. - * - * @param args all the aliases. - */ - setAliases(args: string): com.chattriggers.ctjs.api.triggers.CommandTrigger; - /** - * Sets the command name. - * Example: - * setCommandName("test") - * would result in the command being /test - * - * @param commandName The command name - * @param overrideExisting Whether existing commands with the same name should be overridden - * @return the trigger for additional modification - */ - setCommandName(commandName: string): com.chattriggers.ctjs.api.triggers.CommandTrigger; - /** - * Sets the command name. - * Example: - * setCommandName("test") - * would result in the command being /test - * - * @param commandName The command name - * @param overrideExisting Whether existing commands with the same name should be overridden - * @return the trigger for additional modification - */ - setCommandName(commandName: string, overrideExisting: boolean): com.chattriggers.ctjs.api.triggers.CommandTrigger; - /** - * Alias for [setCommandName] - * - * @param commandName The command name - * @param overrideExisting Whether existing commands with the same name should be overridden - * @return the trigger for additional modification - */ - setName(commandName: string): com.chattriggers.ctjs.api.triggers.CommandTrigger; - /** - * Alias for [setCommandName] - * - * @param commandName The command name - * @param overrideExisting Whether existing commands with the same name should be overridden - * @return the trigger for additional modification - */ - setName(commandName: string, overrideExisting: boolean): com.chattriggers.ctjs.api.triggers.CommandTrigger; - } - const PacketEvent: { - RECEIVE: net.fabricmc.fabric.api.event.Event; - new(): com.chattriggers.ctjs.api.triggers.PacketEvent; - } - interface PacketEvent { - RECEIVE: net.fabricmc.fabric.api.event.Event; - new(): com.chattriggers.ctjs.api.triggers.PacketEvent; - } - interface PacketEvent$ReceiveEvent { - trigger(packet: net.minecraft.network.protocol.Packet): void; - } - const SoundPlayTrigger: { - new(method: any): com.chattriggers.ctjs.api.triggers.SoundPlayTrigger; - } - interface SoundPlayTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { - /** - * Sets the sound name criteria. - * - * @param soundNameCriteria the sound name - * @return the trigger for method chaining - */ - setCriteria(soundNameCriteria: string): com.chattriggers.ctjs.api.triggers.SoundPlayTrigger; - } - const EventTrigger: { - new(method: any, triggerType: com.chattriggers.ctjs.api.triggers.ITriggerType): com.chattriggers.ctjs.api.triggers.EventTrigger; - } - interface EventTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { - /** - * Sets if this trigger should run if the event has already been canceled. - * True by default. - * - * @param bool Boolean to set - * @return the trigger object for method chaining - */ - triggerIfCanceled(bool: boolean): com.chattriggers.ctjs.api.triggers.EventTrigger; - } - const ClassFilterTrigger: { - new(method: any, triggerType: com.chattriggers.ctjs.api.triggers.ITriggerType, wrappedClass: java.lang.Class): com.chattriggers.ctjs.api.triggers.ClassFilterTrigger; - } - interface ClassFilterTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { - /** - * Alias for `setFilteredClasses([A.class])` - * - * @param clazz The class for which this trigger should run for - */ - setFilteredClass(clazz: java.lang.Class): com.chattriggers.ctjs.api.triggers.ClassFilterTrigger; - /** - * Sets which classes this trigger should run for. If the list is empty, it runs - * for every class. - * - * @param classes The classes for which this trigger should run for - * @return This trigger object for chaining - */ - setFilteredClasses(classes: Array>): com.chattriggers.ctjs.api.triggers.ClassFilterTrigger; - } - const RenderEntityTrigger: { - new(method: any): com.chattriggers.ctjs.api.triggers.RenderEntityTrigger; - } - interface RenderEntityTrigger extends com.chattriggers.ctjs.api.triggers.ClassFilterTrigger { - } - const RenderBlockEntityTrigger: { - new(method: any): com.chattriggers.ctjs.api.triggers.RenderBlockEntityTrigger; - } - interface RenderBlockEntityTrigger extends com.chattriggers.ctjs.api.triggers.ClassFilterTrigger { - } - const PacketTrigger: { - new(method: any, triggerType: com.chattriggers.ctjs.api.triggers.ITriggerType): com.chattriggers.ctjs.api.triggers.PacketTrigger; - } - interface PacketTrigger extends com.chattriggers.ctjs.api.triggers.ClassFilterTrigger, net.minecraft.network.protocol.Packet> { - } - } - interface CTWrapper { - getMcValue(): MCClass; - toMC(): MCClass; - } - const V5Auth: { - getJwtToken(): string | null | undefined; - getFreshJwtToken(): string | null | undefined; - setJwtToken(token: string | null | undefined): void; - shutDownHard(): java.lang.Void; - new(): com.chattriggers.ctjs.api.V5Auth; - } - interface V5Auth { - getJwtToken(): string | null | undefined; - getFreshJwtToken(): string | null | undefined; - setJwtToken(token: string | null | undefined): void; - shutDownHard(): java.lang.Void; - new(): com.chattriggers.ctjs.api.V5Auth; + interface WrappedThread$Companion { + sleep(millis: number): void; + sleep(millis: number, nanos: number): void; + currentThread(): java.lang.Thread; + new(): com.chattriggers.ctjs.engine.WrappedThread$Companion; } - const Mappings: { + const Register: { + /** + * Helper method register a trigger. + * + * Called by taking the original name of the method, i.e. `registerChat`, + * removing the word register, and comparing it case-insensitively with + * the methods below. + * + * @param triggerType the type of trigger + * @param method The name of the method or the actual method to callback when the event is fired + * @return The trigger for additional modification + */ + register(triggerType: string, method: any): com.chattriggers.ctjs.api.triggers.Trigger; + createCustomTrigger(name: string): any; + /** + * Registers a new trigger that runs before a chat message is received. + * + * Passes through multiple arguments: + * - Any number of chat criteria variables + * - The chat event, which can be cancelled + * + * Available modifications: + * - [ChatTrigger.triggerIfCanceled] Sets if triggered if event is already cancelled + * - [ChatTrigger.setChatCriteria] Sets the chat criteria + * - [ChatTrigger.setParameter] Sets the chat parameter + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerChat(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before an action bar message is received. + * + * Passes through multiple arguments: + * - Any number of chat criteria variables + * - The chat event, which can be cancelled + * + * Available modifications: + * - [ChatTrigger.triggerIfCanceled] Sets if triggered if event is already cancelled + * - [ChatTrigger.setChatCriteria] Sets the chat criteria + * - [ChatTrigger.setParameter] Sets the chat parameter + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerActionBar(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a trigger that runs before the world loads. + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerWorldLoad(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before the world unloads. + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerWorldUnload(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before a mouse button is being pressed or released. + * + * Passes through four arguments: + * - The mouse x position + * - The mouse y position + * - The mouse button + * - The mouse button state (true if button is pressed, false otherwise) + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerClicked(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before the mouse is scrolled. + * + * Passes through three arguments: + * - The mouse x position + * - The mouse y position + * - The scroll amount + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerScrolled(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs while a mouse button is being held down. + * + * Passes through five arguments: + * - The mouse delta x position (relative to last frame) + * - The mouse delta y position (relative to last frame) + * - The mouse x position + * - The mouse y position + * - The mouse button + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerDragged(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before a sound is played. + * + * Passes through six arguments: + * - The sound event's position + * - The sound event's name + * - The sound event's volume + * - The sound event's pitch + * - The sound event's category's name + * - The sound event, which can be cancelled + * + * Available modifications: + * - [SoundPlayTrigger.setCriteria] Sets the sound name criteria + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerSoundPlay(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before every game tick. + * + * Passes through one argument: + * - Ticks elapsed + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerTick(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs in predictable intervals. (60 per second by default) + * + * Passes through one argument: + * - Steps elapsed + * + * Available modifications: + * - [StepTrigger.setFps] Sets the fps, i.e. how many times this trigger will fire + * per second + * - [StepTrigger.setDelay] Sets the delay in seconds, i.e. how many seconds it takes + * to fire. Overrides [StepTrigger.setFps]. + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerStep(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + registerRenderWorld(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before the world is drawn. + * + * Passes through one argument: + * - Partial ticks elapsed + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerPreRenderWorld(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs after the world is drawn. + * + * Passes through one argument: + * - Partial ticks elapsed + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerPostRenderWorld(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before the overlay is drawn. + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerRenderOverlay(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before the player list is being drawn. + * + * Passes through one argument: + * - The render event, which can be cancelled + * + * Available modifications: + * - [EventTrigger.triggerIfCanceled] Sets if triggered if event is already cancelled + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerRenderPlayerList(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before the block highlight box is drawn. + * + * Passes through two arguments: + * - The draw block highlight event's position + * - The draw block highlight event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerDrawBlockHighlight(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs after the game loads. + * + * This runs after the initial loading of the game directly after scripts are + * loaded and after "/ct load" happens. + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerGameLoad(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before the game unloads. + * + * This runs before shutdown of the JVM and before "/ct load" happens. + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerGameUnload(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new command that will run the method provided. + * + * Passes through multiple arguments: + * - The arguments supplied to the command by the user + * + * Available modifications: + * - [CommandTrigger.setCommandName] Sets the command name + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerCommand(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs when a new gui is first opened. + * + * Passes through one argument: + * - The [net.minecraft.client.gui.screen.Screen] that was opened + * - The gui opened event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerGuiOpened(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs when a gui is closed. + * + * Passes through one argument: + * - The gui that was closed + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerGuiClosed(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs before an item is dropped. + * + * Passes through two arguments: + * - The [com.chattriggers.ctjs.api.inventory.Item] that was dropped + * - Whether the entire stack (true), or just 1 item (false) will be dropped + * - The event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerDropItem(method: any): com.chattriggers.ctjs.api.triggers.Trigger; /** - * Gets a classes unmapped class name, or throws an error if it is not mapped + * Registers a new trigger that runs before a message is sent in chat. + * + * Passes through two arguments: + * - The message + * - The message event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification */ - unmapClass(clazz: java.lang.Class): string | null | undefined; + registerMessageSent(method: any): com.chattriggers.ctjs.api.triggers.Trigger; /** - * Gets an unmapped class name from a mapped class name, or returns null if - * it either does not exist or is not mapped. + * Registers a new trigger that runs when a tooltip is being rendered. + * This allows for the user to modify what text is in the tooltip, and even the + * ability to cancel rendering completely. Note that you must call + * [com.chattriggers.ctjs.api.inventory.Item.setLore] with the modified lore for + * the changes to take effect. + * + * Passes through three arguments: + * - A list of [com.chattriggers.ctjs.api.message.TextComponent] objects to modify. + * - The [com.chattriggers.ctjs.api.inventory.Item] that this lore is attached to. + * - The cancellable event. + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification */ - unmapClassName(className: string): string | null | undefined; + registerItemTooltip(method: any): com.chattriggers.ctjs.api.triggers.Trigger; /** - * 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. + * Registers a new trigger that runs before the player interacts. + * + * Passes through three arguments: + * - The [com.chattriggers.ctjs.api.entity.PlayerInteraction] + * - The object of interaction, depending on the interaction type. Either a + * [com.chattriggers.ctjs.api.entity.Entity], + * [com.chattriggers.ctjs.api.world.block.Block], or + * [com.chattriggers.ctjs.api.inventory.Item], + * - The event, which can be cancelled if the interaction is not BreakBlock + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification */ - mapClassName(className: string): string | null | undefined; + registerPlayerInteract(method: any): com.chattriggers.ctjs.api.triggers.Trigger; /** - * Allows runtime inspection of mappings + * Registers a new trigger that runs when an entity is damaged by the player + * + * Passes through one argument: + * - The target Entity that is damaged + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification */ - new(): com.chattriggers.ctjs.api.Mappings; - } - interface Mappings { + registerEntityDamage(method: any): com.chattriggers.ctjs.api.triggers.Trigger; /** - * Gets a classes unmapped class name, or throws an error if it is not mapped + * Registers a new trigger that runs when an entity dies + * + * Passes through one argument: + * - The Entity that died + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification */ - unmapClass(clazz: java.lang.Class): string | null | undefined; + registerEntityDeath(method: any): com.chattriggers.ctjs.api.triggers.Trigger; /** - * Gets an unmapped class name from a mapped class name, or returns null if - * it either does not exist or is not mapped. + * Registers a new trigger that runs as a gui is rendered + * + * Passes through three arguments: + * - The mouse x position + * - The mouse y position + * - The gui + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification */ - unmapClassName(className: string): string | null | undefined; + registerGuiRender(method: any): com.chattriggers.ctjs.api.triggers.Trigger; /** - * 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. + * Registers a new trigger that runs whenever a key is typed with a gui open + * + * Passes through four arguments: + * - The character pressed (e.g. 'd') + * - The key code pressed (e.g. 41) + * - The gui + * - The event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification */ - mapClassName(className: string): string | null | undefined; + registerGuiKey(method: any): com.chattriggers.ctjs.api.triggers.Trigger; /** - * Allows runtime inspection of mappings + * Registers a new trigger that runs whenever the mouse is clicked with a + * gui open + * + * Passes through five arguments: + * - The mouse x position + * - The mouse y position + * - The mouse button + * - The mouse button state (true if button is pressed, false otherwise) + * - The gui + * - The event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification */ - new(): com.chattriggers.ctjs.api.Mappings; - } - const Config: { - ConsoleSettings: typeof com.chattriggers.ctjs.api.Config$ConsoleSettings; - getModuleImportHelp(): boolean; - setModuleImportHelp(value: boolean): void; - getModuleChangelog(): boolean; - setModuleChangelog(value: boolean): void; - getShowUpdatesInChat(): boolean; - setShowUpdatesInChat(value: boolean): void; - getAutoUpdateModules(): boolean; - setAutoUpdateModules(value: boolean): void; - getSendStatistics(): boolean; - setSendStatistics(value: boolean): void; - getClearConsoleOnLoad(): boolean; - setClearConsoleOnLoad(value: boolean): void; - getOpenConsoleOnError(): boolean; - setOpenConsoleOnError(value: boolean): void; - getConsoleFiraCodeFont(): boolean; - setConsoleFiraCodeFont(value: boolean): void; - getConsoleFontSize(): number; - setConsoleFontSize(value: number): void; - getCustomTheme(): boolean; - setCustomTheme(value: boolean): void; - getConsoleTheme(): number; - setConsoleTheme(value: number): void; - getConsoleTextColor(): java.awt.Color; - setConsoleTextColor(value: java.awt.Color): void; - getConsoleBackgroundColor(): java.awt.Color; - setConsoleBackgroundColor(value: java.awt.Color): void; - getConsoleErrorColor(): java.awt.Color; - setConsoleErrorColor(value: java.awt.Color): void; - getConsoleWarningColor(): java.awt.Color; - setConsoleWarningColor(value: java.awt.Color): void; - wasWelcomeShown(): boolean; - markWelcomeShown(): void; - new(): com.chattriggers.ctjs.api.Config; - } - interface Config extends gg.essential.vigilance.Vigilant { - getModuleImportHelp(): boolean; - setModuleImportHelp(value: boolean): void; - getModuleChangelog(): boolean; - setModuleChangelog(value: boolean): void; - getShowUpdatesInChat(): boolean; - setShowUpdatesInChat(value: boolean): void; - getAutoUpdateModules(): boolean; - setAutoUpdateModules(value: boolean): void; - getSendStatistics(): boolean; - setSendStatistics(value: boolean): void; - getClearConsoleOnLoad(): boolean; - setClearConsoleOnLoad(value: boolean): void; - getOpenConsoleOnError(): boolean; - setOpenConsoleOnError(value: boolean): void; - getConsoleFiraCodeFont(): boolean; - setConsoleFiraCodeFont(value: boolean): void; - getConsoleFontSize(): number; - setConsoleFontSize(value: number): void; - getCustomTheme(): boolean; - setCustomTheme(value: boolean): void; - getConsoleTheme(): number; - setConsoleTheme(value: number): void; - getConsoleTextColor(): java.awt.Color; - setConsoleTextColor(value: java.awt.Color): void; - getConsoleBackgroundColor(): java.awt.Color; - setConsoleBackgroundColor(value: java.awt.Color): void; - getConsoleErrorColor(): java.awt.Color; - setConsoleErrorColor(value: java.awt.Color): void; - getConsoleWarningColor(): java.awt.Color; - setConsoleWarningColor(value: java.awt.Color): void; - wasWelcomeShown(): boolean; - markWelcomeShown(): void; - new(): com.chattriggers.ctjs.api.Config; - } - const Config$ConsoleSettings: { - new(clearConsoleOnLoad: boolean, openConsoleOnError: boolean, consoleFiraCodeFont: boolean, consoleFontSize: number, customTheme: boolean, consoleTheme: number, consoleTextColor: java.awt.Color, consoleBackgroundColor: java.awt.Color, consoleErrorColor: java.awt.Color, consoleWarningColor: java.awt.Color): com.chattriggers.ctjs.api.Config$ConsoleSettings; - } - interface Config$ConsoleSettings { - getClearConsoleOnLoad(): boolean; - setClearConsoleOnLoad(value: boolean): void; - getOpenConsoleOnError(): boolean; - setOpenConsoleOnError(value: boolean): void; - getConsoleFiraCodeFont(): boolean; - setConsoleFiraCodeFont(value: boolean): void; - getConsoleFontSize(): number; - setConsoleFontSize(value: number): void; - getCustomTheme(): boolean; - setCustomTheme(value: boolean): void; - getConsoleTheme(): number; - setConsoleTheme(value: number): void; - getConsoleTextColor(): java.awt.Color; - setConsoleTextColor(value: java.awt.Color): void; - getConsoleBackgroundColor(): java.awt.Color; - setConsoleBackgroundColor(value: java.awt.Color): void; - getConsoleErrorColor(): java.awt.Color; - setConsoleErrorColor(value: java.awt.Color): void; - getConsoleWarningColor(): java.awt.Color; - setConsoleWarningColor(value: java.awt.Color): void; - component1(): boolean; - component2(): boolean; - component3(): boolean; - component4(): number; - component5(): boolean; - component6(): number; - component7(): java.awt.Color; - component8(): java.awt.Color; - component9(): java.awt.Color; - component10(): java.awt.Color; - copy(clearConsoleOnLoad: boolean, openConsoleOnError: boolean, consoleFiraCodeFont: boolean, consoleFontSize: number, customTheme: boolean, consoleTheme: number, consoleTextColor: java.awt.Color, consoleBackgroundColor: java.awt.Color, consoleErrorColor: java.awt.Color, consoleWarningColor: java.awt.Color): com.chattriggers.ctjs.api.Config$ConsoleSettings; - } - const Config$ConsoleSettings$Companion: { - new(): unknown; - } - interface Config$ConsoleSettings$Companion { - new(): unknown; - make(): com.chattriggers.ctjs.api.Config$ConsoleSettings; - } - } - namespace internal { - namespace commands { - const CommandCollection: { - new(): com.chattriggers.ctjs.internal.commands.CommandCollection; - } - interface CommandCollection { - register(command: com.chattriggers.ctjs.internal.commands.Command): void; - unregister(command: com.chattriggers.ctjs.internal.commands.Command): void; - unregisterAll(): void; - onExecute(block: kotlin.Function1, void>): T; - } - interface Command { - getOverrideExisting(): boolean; - getName(): string; - registerImpl(dispatcher: com.mojang.brigadier.CommandDispatcher): void; - unregisterImpl(dispatcher: com.mojang.brigadier.CommandDispatcher): void; - } - } - namespace launch { - interface IInjector { - } - } - } - namespace engine { - const WrappedThread: { - new(task: java.lang.Runnable): com.chattriggers.ctjs.engine.WrappedThread; - } - interface WrappedThread { - start(): void; - run(): void; - stop(): void; - interrupt(): void; - isInterrupted(): boolean; - destroy(): void; - isAlive(): boolean; - suspend(): void; - resume(): void; - setDaemon(on: boolean): void; - getId(): number; - } - const WrappedThread$Companion: { - sleep(millis: number): void; - sleep(millis: number, nanos: number): void; - currentThread(): java.lang.Thread; - new(): com.chattriggers.ctjs.engine.WrappedThread$Companion; - } - interface WrappedThread$Companion { - sleep(millis: number): void; - sleep(millis: number, nanos: number): void; - currentThread(): java.lang.Thread; - new(): com.chattriggers.ctjs.engine.WrappedThread$Companion; - } - const MixinCallback: { - new(id: number, injector: com.chattriggers.ctjs.internal.launch.IInjector): com.chattriggers.ctjs.engine.MixinCallback; - } - interface MixinCallback { - attach(method: any): void; - component1(): number; - component2(): com.chattriggers.ctjs.internal.launch.IInjector; - copy(id: number, injector: com.chattriggers.ctjs.internal.launch.IInjector): com.chattriggers.ctjs.engine.MixinCallback; - } - const Console: { - new(): com.chattriggers.ctjs.engine.Console; - } - interface Console { - new(): com.chattriggers.ctjs.engine.Console; - clear(): void; - println(obj: any, logType: com.chattriggers.ctjs.engine.LogType, end: string, customColor: java.awt.Color | null | undefined): void; - println(obj: any, logType: com.chattriggers.ctjs.engine.LogType, end: string): void; - println(obj: any, logType: com.chattriggers.ctjs.engine.LogType): void; - println(obj: any): void; - printStackTrace(error: kotlin.Throwable): void; - show(): void; - close(): void; - onConsoleSettingsChanged(settings: com.chattriggers.ctjs.api.Config$ConsoleSettings): void; - } - const LogType: { - INFO: com.chattriggers.ctjs.engine.LogType; - WARN: com.chattriggers.ctjs.engine.LogType; - ERROR: com.chattriggers.ctjs.engine.LogType; - getEntries(): kotlin.enums.EnumEntries; - values(): Array; - valueOf(value: string): com.chattriggers.ctjs.engine.LogType; - } - interface LogType extends kotlin.Enum { + registerGuiMouseClick(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs whenever a mouse button held and dragged + * with a gui open + * + * Passes through seven arguments: + * - The mouse delta x position (relative to last frame) + * - The mouse delta y position (relative to last frame) + * - The mouse x position + * - The mouse y position + * - The mouse button + * - The gui + * - The event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerGuiMouseDrag(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs whenever a packet is sent from the client to the server + * + * Passes through two arguments: + * - The packet + * - The event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * - [ClassFilterTrigger.setFilteredClasses] Sets the packet classes which this trigger + * gets fired for + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerPacketSent(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs whenever a packet is sent to the client from the server + * + * Passes through two arguments: + * - The packet + * - The event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * - [ClassFilterTrigger.setFilteredClasses] Sets the packet classes which this trigger + * gets fired for + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerPacketReceived(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs whenever the player connects to a server + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerServerConnect(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs whenever the player disconnects from a server + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerServerDisconnect(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs whenever an entity is rendered + * + * Passes through three arguments: + * - The [com.chattriggers.ctjs.api.entity.Entity] + * - The partial ticks + * - The event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * - [ClassFilterTrigger.setFilteredClasses] Sets the entity classes which this trigger + * gets fired for + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerRenderEntity(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs whenever a block entity is rendered + * + * Passes through three arguments: + * - The [com.chattriggers.ctjs.api.entity.BlockEntity] + * - The partial ticks + * - The event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * - [ClassFilterTrigger.setFilteredClasses] Sets the tile entity classes which this trigger + * gets fired for + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerRenderBlockEntity(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs after the current screen is rendered + * + * Passes through three arguments: + * - The mouseX + * - The mouseY + * - The GuiScreen + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerPostGuiRender(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a new trigger that runs whenever a particle is spawned + * + * Passes through two arguments: + * - The [com.chattriggers.ctjs.api.entity.Particle] + * - The event, which can be cancelled + * + * Available modifications: + * - [Trigger.setPriority] Sets the priority + * + * @param method The method to call when the event is fired + * @return The trigger for additional modification + */ + registerSpawnParticle(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + new(): com.chattriggers.ctjs.engine.Register; } - const Register: { + interface Register { /** * Helper method register a trigger. * @@ -52420,574 +45535,7446 @@ declare global { registerSpawnParticle(method: any): com.chattriggers.ctjs.api.triggers.Trigger; new(): com.chattriggers.ctjs.engine.Register; } - interface Register { - /** - * Helper method register a trigger. - * - * Called by taking the original name of the method, i.e. `registerChat`, - * removing the word register, and comparing it case-insensitively with - * the methods below. - * - * @param triggerType the type of trigger - * @param method The name of the method or the actual method to callback when the event is fired - * @return The trigger for additional modification - */ - register(triggerType: string, method: any): com.chattriggers.ctjs.api.triggers.Trigger; - createCustomTrigger(name: string): any; - /** - * Registers a new trigger that runs before a chat message is received. - * - * Passes through multiple arguments: - * - Any number of chat criteria variables - * - The chat event, which can be cancelled - * - * Available modifications: - * - [ChatTrigger.triggerIfCanceled] Sets if triggered if event is already cancelled - * - [ChatTrigger.setChatCriteria] Sets the chat criteria - * - [ChatTrigger.setParameter] Sets the chat parameter - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerChat(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before an action bar message is received. - * - * Passes through multiple arguments: - * - Any number of chat criteria variables - * - The chat event, which can be cancelled - * - * Available modifications: - * - [ChatTrigger.triggerIfCanceled] Sets if triggered if event is already cancelled - * - [ChatTrigger.setChatCriteria] Sets the chat criteria - * - [ChatTrigger.setParameter] Sets the chat parameter - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerActionBar(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a trigger that runs before the world loads. - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerWorldLoad(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before the world unloads. - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerWorldUnload(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before a mouse button is being pressed or released. - * - * Passes through four arguments: - * - The mouse x position - * - The mouse y position - * - The mouse button - * - The mouse button state (true if button is pressed, false otherwise) - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerClicked(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before the mouse is scrolled. - * - * Passes through three arguments: - * - The mouse x position - * - The mouse y position - * - The scroll amount - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerScrolled(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs while a mouse button is being held down. - * - * Passes through five arguments: - * - The mouse delta x position (relative to last frame) - * - The mouse delta y position (relative to last frame) - * - The mouse x position - * - The mouse y position - * - The mouse button - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerDragged(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before a sound is played. - * - * Passes through six arguments: - * - The sound event's position - * - The sound event's name - * - The sound event's volume - * - The sound event's pitch - * - The sound event's category's name - * - The sound event, which can be cancelled - * - * Available modifications: - * - [SoundPlayTrigger.setCriteria] Sets the sound name criteria - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerSoundPlay(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before every game tick. - * - * Passes through one argument: - * - Ticks elapsed - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerTick(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs in predictable intervals. (60 per second by default) - * - * Passes through one argument: - * - Steps elapsed - * - * Available modifications: - * - [StepTrigger.setFps] Sets the fps, i.e. how many times this trigger will fire - * per second - * - [StepTrigger.setDelay] Sets the delay in seconds, i.e. how many seconds it takes - * to fire. Overrides [StepTrigger.setFps]. - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerStep(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - registerRenderWorld(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before the world is drawn. - * - * Passes through one argument: - * - Partial ticks elapsed - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerPreRenderWorld(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs after the world is drawn. - * - * Passes through one argument: - * - Partial ticks elapsed - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerPostRenderWorld(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before the overlay is drawn. - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerRenderOverlay(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before the player list is being drawn. - * - * Passes through one argument: - * - The render event, which can be cancelled - * - * Available modifications: - * - [EventTrigger.triggerIfCanceled] Sets if triggered if event is already cancelled - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerRenderPlayerList(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before the block highlight box is drawn. - * - * Passes through two arguments: - * - The draw block highlight event's position - * - The draw block highlight event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerDrawBlockHighlight(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs after the game loads. - * - * This runs after the initial loading of the game directly after scripts are - * loaded and after "/ct load" happens. - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerGameLoad(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before the game unloads. - * - * This runs before shutdown of the JVM and before "/ct load" happens. - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerGameUnload(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new command that will run the method provided. - * - * Passes through multiple arguments: - * - The arguments supplied to the command by the user - * - * Available modifications: - * - [CommandTrigger.setCommandName] Sets the command name - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerCommand(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs when a new gui is first opened. - * - * Passes through one argument: - * - The [net.minecraft.client.gui.screen.Screen] that was opened - * - The gui opened event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerGuiOpened(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs when a gui is closed. - * - * Passes through one argument: - * - The gui that was closed - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerGuiClosed(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before an item is dropped. - * - * Passes through two arguments: - * - The [com.chattriggers.ctjs.api.inventory.Item] that was dropped - * - Whether the entire stack (true), or just 1 item (false) will be dropped - * - The event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerDropItem(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before a message is sent in chat. - * - * Passes through two arguments: - * - The message - * - The message event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerMessageSent(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs when a tooltip is being rendered. - * This allows for the user to modify what text is in the tooltip, and even the - * ability to cancel rendering completely. Note that you must call - * [com.chattriggers.ctjs.api.inventory.Item.setLore] with the modified lore for - * the changes to take effect. - * - * Passes through three arguments: - * - A list of [com.chattriggers.ctjs.api.message.TextComponent] objects to modify. - * - The [com.chattriggers.ctjs.api.inventory.Item] that this lore is attached to. - * - The cancellable event. - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerItemTooltip(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs before the player interacts. - * - * Passes through three arguments: - * - The [com.chattriggers.ctjs.api.entity.PlayerInteraction] - * - The object of interaction, depending on the interaction type. Either a - * [com.chattriggers.ctjs.api.entity.Entity], - * [com.chattriggers.ctjs.api.world.block.Block], or - * [com.chattriggers.ctjs.api.inventory.Item], - * - The event, which can be cancelled if the interaction is not BreakBlock - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerPlayerInteract(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs when an entity is damaged by the player - * - * Passes through one argument: - * - The target Entity that is damaged - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerEntityDamage(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs when an entity dies - * - * Passes through one argument: - * - The Entity that died - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerEntityDeath(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs as a gui is rendered - * - * Passes through three arguments: - * - The mouse x position - * - The mouse y position - * - The gui - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerGuiRender(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs whenever a key is typed with a gui open - * - * Passes through four arguments: - * - The character pressed (e.g. 'd') - * - The key code pressed (e.g. 41) - * - The gui - * - The event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerGuiKey(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs whenever the mouse is clicked with a - * gui open - * - * Passes through five arguments: - * - The mouse x position - * - The mouse y position - * - The mouse button - * - The mouse button state (true if button is pressed, false otherwise) - * - The gui - * - The event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerGuiMouseClick(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - /** - * Registers a new trigger that runs whenever a mouse button held and dragged - * with a gui open - * - * Passes through seven arguments: - * - The mouse delta x position (relative to last frame) - * - The mouse delta y position (relative to last frame) - * - The mouse x position - * - The mouse y position - * - The mouse button - * - The gui - * - The event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification - */ - registerGuiMouseDrag(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + const MixinCallback: { + new(id: number, injector: com.chattriggers.ctjs.internal.launch.IInjector): com.chattriggers.ctjs.engine.MixinCallback; + } + interface MixinCallback { + attach(method: any): void; + component1(): number; + component2(): com.chattriggers.ctjs.internal.launch.IInjector; + copy(id: number, injector: com.chattriggers.ctjs.internal.launch.IInjector): com.chattriggers.ctjs.engine.MixinCallback; + } + const Console: { + new(): com.chattriggers.ctjs.engine.Console; + } + interface Console { + new(): com.chattriggers.ctjs.engine.Console; + clear(): void; + println(obj: any, logType: com.chattriggers.ctjs.engine.LogType, end: string, customColor: java.awt.Color | null | undefined): void; + println(obj: any, logType: com.chattriggers.ctjs.engine.LogType, end: string): void; + println(obj: any, logType: com.chattriggers.ctjs.engine.LogType): void; + println(obj: any): void; + printStackTrace(error: kotlin.Throwable): void; + show(): void; + close(): void; + onConsoleSettingsChanged(settings: com.chattriggers.ctjs.api.Config$ConsoleSettings): void; + } + const LogType: { + INFO: com.chattriggers.ctjs.engine.LogType; + WARN: com.chattriggers.ctjs.engine.LogType; + ERROR: com.chattriggers.ctjs.engine.LogType; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.engine.LogType; + } + interface LogType extends kotlin.Enum { + } + } + namespace api { + namespace triggers { + const Trigger: { + Priority: typeof com.chattriggers.ctjs.api.triggers.Trigger$Priority; + } + interface Trigger extends kotlin.Comparable { + getMethod(): any; + setMethod(value: any): void; + getType(): com.chattriggers.ctjs.api.triggers.ITriggerType; + setType(value: com.chattriggers.ctjs.api.triggers.ITriggerType): void; + isRegistered(): boolean; + /** + * Sets a trigger's priority using [Priority]. + * Highest runs first. + * @param priority the priority of the trigger + * @return the trigger for method chaining + */ + setPriority(priority: com.chattriggers.ctjs.api.triggers.Trigger$Priority): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Registers a trigger based on its type. + * This is done automatically with TriggerRegister. + * @return the trigger for method chaining + */ + register(): com.chattriggers.ctjs.api.triggers.Trigger; + /** + * Unregisters a trigger. + * @return the trigger for method chaining + */ + unregister(): com.chattriggers.ctjs.api.triggers.Trigger; + } + interface ITriggerType { + getName(): string; + triggerAll(): void; + triggerAll(arg0: any | null | undefined): void; + triggerAll(arg0: any | null | undefined, arg1: any | null | undefined): void; + triggerAll(arg0: any | null | undefined, arg1: any | null | undefined, arg2: any | null | undefined): void; + triggerAll(arg0: any | null | undefined, arg1: any | null | undefined, arg2: any | null | undefined, arg3: any | null | undefined): void; + triggerAll(arg0: any | null | undefined, arg1: any | null | undefined, arg2: any | null | undefined, arg3: any | null | undefined, arg4: any | null | undefined): void; + triggerAll(args: any | null | undefined): void; + } + const Trigger$Priority: { + HIGHEST: com.chattriggers.ctjs.api.triggers.Trigger$Priority; + HIGH: com.chattriggers.ctjs.api.triggers.Trigger$Priority; + NORMAL: com.chattriggers.ctjs.api.triggers.Trigger$Priority; + LOW: com.chattriggers.ctjs.api.triggers.Trigger$Priority; + LOWEST: com.chattriggers.ctjs.api.triggers.Trigger$Priority; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.triggers.Trigger$Priority; + } + interface Trigger$Priority extends kotlin.Enum { + } + const ChatTrigger: { + Event: typeof com.chattriggers.ctjs.api.triggers.ChatTrigger$Event; + new(method: any, type: com.chattriggers.ctjs.api.triggers.ITriggerType): com.chattriggers.ctjs.api.triggers.ChatTrigger; + } + interface ChatTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { + /** + * Sets if the chat trigger should run if the chat event has already been canceled. + * True by default. + * @param bool Boolean to set + * @return the trigger object for method chaining + */ + triggerIfCanceled(bool: boolean): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Sets the chat criteria for [matchesChatCriteria]. + * Arguments for the trigger's method can be passed in using ${variable}. + * Example: `setChatCriteria("<${name}> ${message}");` + * Use ${*} to match a chat message but ignore the pass through. + * @param chatCriteria the chat criteria to set + * @return the trigger object for method chaining + */ + setChatCriteria(chatCriteria: any): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Alias for [setChatCriteria]. + * @param chatCriteria the chat criteria to set + * @return the trigger object for method chaining + */ + setCriteria(chatCriteria: any): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Sets the chat parameter for [Parameter]. + * Clears current parameter list. + * @param parameter the chat parameter to set + * @return the trigger object for method chaining + */ + setParameter(parameter: string): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Sets multiple chat parameters for [Parameter]. + * Clears current parameter list. + * @param parameters the chat parameters to set + * @return the trigger object for method chaining + */ + setParameters(parameters: string): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Adds chat parameter for [Parameter]. + * @param parameter the chat parameter to add + * @return the trigger object for method chaining + */ + addParameter(parameter: string): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Adds multiple chat parameters for [Parameter]. + * @param parameters the chat parameters to add + * @return the trigger object for method chaining + */ + addParameters(parameters: string): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Adds the "start" parameter + * @return the trigger object for method chaining + */ + setStart(): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Adds the "contains" parameter + * @return the trigger object for method chaining + */ + setContains(): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Adds the "end" parameter + * @return the trigger object for method chaining + */ + setEnd(): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Forces this trigger to be formatted or unformatted. If no argument is + * provided, it will be set to formatted. This method overrides the + * behavior of inferring the formatted status from the criteria. + */ + setFormatted(): void; + /** + * Forces this trigger to be formatted or unformatted. If no argument is + * provided, it will be set to formatted. This method overrides the + * behavior of inferring the formatted status from the criteria. + */ + setFormatted(formatted: boolean): void; + /** + * Makes the trigger match the entire chat message + * @return the trigger object for method chaining + */ + setExact(): com.chattriggers.ctjs.api.triggers.ChatTrigger; + /** + * Makes the chat criteria case insensitive + * @return the trigger object for method chaining + */ + setCaseInsensitive(): com.chattriggers.ctjs.api.triggers.ChatTrigger; + } + const ChatTrigger$Event: { + message: com.chattriggers.ctjs.api.message.TextComponent; + new(message: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.triggers.ChatTrigger$Event; + } + interface ChatTrigger$Event extends com.chattriggers.ctjs.api.triggers.CancellableEvent { + } + const CancellableEvent: { + new(): com.chattriggers.ctjs.api.triggers.CancellableEvent; + } + interface CancellableEvent { + setCanceled(): void; + setCanceled(newVal: boolean): void; + setCancelled(): void; + setCancelled(newVal: boolean): void; + isCancelable(): boolean; + isCancellable(): boolean; + isCancelled(): boolean; + isCanceled(): boolean; + } + const ClassFilterTrigger: { + new(method: any, triggerType: com.chattriggers.ctjs.api.triggers.ITriggerType, wrappedClass: java.lang.Class): com.chattriggers.ctjs.api.triggers.ClassFilterTrigger; + } + interface ClassFilterTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { + /** + * Alias for `setFilteredClasses([A.class])` + * + * @param clazz The class for which this trigger should run for + */ + setFilteredClass(clazz: java.lang.Class): com.chattriggers.ctjs.api.triggers.ClassFilterTrigger; + /** + * Sets which classes this trigger should run for. If the list is empty, it runs + * for every class. + * + * @param classes The classes for which this trigger should run for + * @return This trigger object for chaining + */ + setFilteredClasses(classes: Array>): com.chattriggers.ctjs.api.triggers.ClassFilterTrigger; + } + const RenderEntityTrigger: { + new(method: any): com.chattriggers.ctjs.api.triggers.RenderEntityTrigger; + } + interface RenderEntityTrigger extends com.chattriggers.ctjs.api.triggers.ClassFilterTrigger { + } + const RenderBlockEntityTrigger: { + new(method: any): com.chattriggers.ctjs.api.triggers.RenderBlockEntityTrigger; + } + interface RenderBlockEntityTrigger extends com.chattriggers.ctjs.api.triggers.ClassFilterTrigger { + } + const PacketTrigger: { + new(method: any, triggerType: com.chattriggers.ctjs.api.triggers.ITriggerType): com.chattriggers.ctjs.api.triggers.PacketTrigger; + } + interface PacketTrigger extends com.chattriggers.ctjs.api.triggers.ClassFilterTrigger, net.minecraft.network.protocol.Packet> { + } + const SoundPlayTrigger: { + new(method: any): com.chattriggers.ctjs.api.triggers.SoundPlayTrigger; + } + interface SoundPlayTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { + /** + * Sets the sound name criteria. + * + * @param soundNameCriteria the sound name + * @return the trigger for method chaining + */ + setCriteria(soundNameCriteria: string): com.chattriggers.ctjs.api.triggers.SoundPlayTrigger; + } + const TriggerType: { + CHAT: com.chattriggers.ctjs.api.triggers.TriggerType; + ACTION_BAR: com.chattriggers.ctjs.api.triggers.TriggerType; + TICK: com.chattriggers.ctjs.api.triggers.TriggerType; + STEP: com.chattriggers.ctjs.api.triggers.TriggerType; + GAME_UNLOAD: com.chattriggers.ctjs.api.triggers.TriggerType; + GAME_LOAD: com.chattriggers.ctjs.api.triggers.TriggerType; + CLICKED: com.chattriggers.ctjs.api.triggers.TriggerType; + SCROLLED: com.chattriggers.ctjs.api.triggers.TriggerType; + DRAGGED: com.chattriggers.ctjs.api.triggers.TriggerType; + GUI_OPENED: com.chattriggers.ctjs.api.triggers.TriggerType; + MESSAGE_SENT: com.chattriggers.ctjs.api.triggers.TriggerType; + ITEM_TOOLTIP: com.chattriggers.ctjs.api.triggers.TriggerType; + PLAYER_INTERACT: com.chattriggers.ctjs.api.triggers.TriggerType; + GUI_KEY: com.chattriggers.ctjs.api.triggers.TriggerType; + GUI_MOUSE_CLICK: com.chattriggers.ctjs.api.triggers.TriggerType; + GUI_MOUSE_DRAG: com.chattriggers.ctjs.api.triggers.TriggerType; + PACKET_SENT: com.chattriggers.ctjs.api.triggers.TriggerType; + PACKET_RECEIVED: com.chattriggers.ctjs.api.triggers.TriggerType; + SERVER_CONNECT: com.chattriggers.ctjs.api.triggers.TriggerType; + SERVER_DISCONNECT: com.chattriggers.ctjs.api.triggers.TriggerType; + GUI_CLOSED: com.chattriggers.ctjs.api.triggers.TriggerType; + DROP_ITEM: com.chattriggers.ctjs.api.triggers.TriggerType; + PRE_RENDER_WORLD: com.chattriggers.ctjs.api.triggers.TriggerType; + POST_RENDER_WORLD: com.chattriggers.ctjs.api.triggers.TriggerType; + BLOCK_HIGHLIGHT: com.chattriggers.ctjs.api.triggers.TriggerType; + RENDER_OVERLAY: com.chattriggers.ctjs.api.triggers.TriggerType; + RENDER_PLAYER_LIST: com.chattriggers.ctjs.api.triggers.TriggerType; + RENDER_ENTITY: com.chattriggers.ctjs.api.triggers.TriggerType; + RENDER_BLOCK_ENTITY: com.chattriggers.ctjs.api.triggers.TriggerType; + GUI_RENDER: com.chattriggers.ctjs.api.triggers.TriggerType; + POST_GUI_RENDER: com.chattriggers.ctjs.api.triggers.TriggerType; + SOUND_PLAY: com.chattriggers.ctjs.api.triggers.TriggerType; + WORLD_LOAD: com.chattriggers.ctjs.api.triggers.TriggerType; + WORLD_UNLOAD: com.chattriggers.ctjs.api.triggers.TriggerType; + SPAWN_PARTICLE: com.chattriggers.ctjs.api.triggers.TriggerType; + ENTITY_DEATH: com.chattriggers.ctjs.api.triggers.TriggerType; + ENTITY_DAMAGE: com.chattriggers.ctjs.api.triggers.TriggerType; + COMMAND: com.chattriggers.ctjs.api.triggers.TriggerType; + OTHER: com.chattriggers.ctjs.api.triggers.TriggerType; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.triggers.TriggerType; + } + interface TriggerType extends kotlin.Enum, com.chattriggers.ctjs.api.triggers.ITriggerType { + } + const CustomTriggerType: { + new(name: string): com.chattriggers.ctjs.api.triggers.CustomTriggerType; + } + interface CustomTriggerType extends com.chattriggers.ctjs.api.triggers.ITriggerType { + component1(): string; + copy(name: string): com.chattriggers.ctjs.api.triggers.CustomTriggerType; + } + const EventTrigger: { + new(method: any, triggerType: com.chattriggers.ctjs.api.triggers.ITriggerType): com.chattriggers.ctjs.api.triggers.EventTrigger; + } + interface EventTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { + /** + * Sets if this trigger should run if the event has already been canceled. + * True by default. + * + * @param bool Boolean to set + * @return the trigger object for method chaining + */ + triggerIfCanceled(bool: boolean): com.chattriggers.ctjs.api.triggers.EventTrigger; + } + const CommandTrigger: { + new(method: any): com.chattriggers.ctjs.api.triggers.CommandTrigger; + } + interface CommandTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { + /** + * Sets the tab completion options for the command. + * This method must be used before setting the command name, otherwise, the tab completions will not be set. + * + * @param args all the tab completion options. + */ + setTabCompletions(args: string): com.chattriggers.ctjs.api.triggers.CommandTrigger; + /** + * This sets the possible tab completions for the command. + * This method must be used before setting the command name, otherwise, the tab completions will not be set. + * + * @param callback the callback that returns the tab completion options. + * + * For example: + * ```js + * register("command", () => { + * + * }).setTabCompletions((args) => { + * return ["option1", "option2"]; + * }).setName("test"); + * ``` + * The `args` parameter of the callback are the arguments currently passed to the command. + * For instance, if you want to not show the options after the user tabs the first time, just add a check + * for the length of the arguments and return an empty array. + * + * The return value of the callback **must be an array of strings**, and in this case will always return the 2 + * options in the array. + */ + setTabCompletions(callback: kotlin.Function1, Array>): com.chattriggers.ctjs.api.triggers.CommandTrigger; + /** + * Sets the aliases for the command. + * + * @param args all the aliases. + */ + setAliases(args: string): com.chattriggers.ctjs.api.triggers.CommandTrigger; + /** + * Sets the command name. + * Example: + * setCommandName("test") + * would result in the command being /test + * + * @param commandName The command name + * @param overrideExisting Whether existing commands with the same name should be overridden + * @return the trigger for additional modification + */ + setCommandName(commandName: string): com.chattriggers.ctjs.api.triggers.CommandTrigger; + /** + * Sets the command name. + * Example: + * setCommandName("test") + * would result in the command being /test + * + * @param commandName The command name + * @param overrideExisting Whether existing commands with the same name should be overridden + * @return the trigger for additional modification + */ + setCommandName(commandName: string, overrideExisting: boolean): com.chattriggers.ctjs.api.triggers.CommandTrigger; + /** + * Alias for [setCommandName] + * + * @param commandName The command name + * @param overrideExisting Whether existing commands with the same name should be overridden + * @return the trigger for additional modification + */ + setName(commandName: string): com.chattriggers.ctjs.api.triggers.CommandTrigger; + /** + * Alias for [setCommandName] + * + * @param commandName The command name + * @param overrideExisting Whether existing commands with the same name should be overridden + * @return the trigger for additional modification + */ + setName(commandName: string, overrideExisting: boolean): com.chattriggers.ctjs.api.triggers.CommandTrigger; + } + const RegularTrigger: { + new(method: any, triggerType: com.chattriggers.ctjs.api.triggers.ITriggerType): com.chattriggers.ctjs.api.triggers.RegularTrigger; + } + interface RegularTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { + } + const StepTrigger: { + new(method: any): com.chattriggers.ctjs.api.triggers.StepTrigger; + } + interface StepTrigger extends com.chattriggers.ctjs.api.triggers.Trigger { + /** + * Sets the frames per second that the trigger activates. + * This has a maximum one step per second. + * @param fps the frames per second to set + * @return the trigger for method chaining + */ + setFps(fps: number): com.chattriggers.ctjs.api.triggers.StepTrigger; + /** + * Sets the delay in seconds between the trigger activation. + * This has a minimum of one step every second. This will override [setFps]. + * @param delay The delay in seconds + * @return the trigger for method chaining + */ + setDelay(delay: number): com.chattriggers.ctjs.api.triggers.StepTrigger; + } + const StepTrigger$Companion: { + new(): com.chattriggers.ctjs.api.triggers.StepTrigger$Companion; + } + interface StepTrigger$Companion { + new(): com.chattriggers.ctjs.api.triggers.StepTrigger$Companion; + } + const PacketEvent: { + RECEIVE: net.fabricmc.fabric.api.event.Event; + new(): com.chattriggers.ctjs.api.triggers.PacketEvent; + } + interface PacketEvent { + RECEIVE: net.fabricmc.fabric.api.event.Event; + new(): com.chattriggers.ctjs.api.triggers.PacketEvent; + } + interface PacketEvent$ReceiveEvent { + trigger(packet: net.minecraft.network.protocol.Packet): void; + } + } + namespace inventory { + namespace action { + const ClickAction: { + ClickType: typeof com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; + new(slot: number, windowId: number): com.chattriggers.ctjs.api.inventory.action.ClickAction; + } + interface ClickAction extends com.chattriggers.ctjs.api.inventory.action.Action { + getClickType(): com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; + /** + * The type of click (REQUIRED) + * + * @param clickType the new click type + */ + setClickType(clickType: com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType): com.chattriggers.ctjs.api.inventory.action.ClickAction; + getHoldingShift(): boolean; + /** + * Whether the click should act as if shift is being held (defaults to false) + * + * @param holdingShift to hold shift or not + */ + setHoldingShift(holdingShift: boolean): com.chattriggers.ctjs.api.inventory.action.ClickAction; + getItemInHand(): boolean; + /** + * Whether the click should act as if an item is being held + * (defaults to whether there actually is an item in the hand) + * + * @param itemInHand to be holding an item or not + */ + setItemInHand(itemInHand: boolean): com.chattriggers.ctjs.api.inventory.action.ClickAction; + getPickupAll(): boolean; + /** + * Whether the click should try to pick up all items of said type in the inventory (essentially double clicking) + * (defaults to whether there actually is an item in the hand) + * + * @param pickupAll to pick up all items of the same type + */ + setPickupAll(pickupAll: boolean): com.chattriggers.ctjs.api.inventory.action.ClickAction; + /** + * Sets the type of click. + * Possible values are: LEFT, RIGHT, MIDDLE + * + * @param clickType the click type + * @return the current Action for method chaining + */ + setClickString(clickType: string): com.chattriggers.ctjs.api.inventory.action.ClickAction; + } + const Action: { + Type: typeof com.chattriggers.ctjs.api.inventory.action.Action$Type; + new(slot: number, windowId: number): com.chattriggers.ctjs.api.inventory.action.Action; + } + interface Action { + getSlot(): number; + setSlot(value: number): void; + getWindowId(): number; + setWindowId(value: number): void; + setSlot(slot: number): com.chattriggers.ctjs.api.inventory.action.Action; + setWindowId(windowId: number): com.chattriggers.ctjs.api.inventory.action.Action; + } + const Action$Companion: { + /** + * Creates a new action. + * The Inventory must be a container, see [Inventory.isContainer]. + * The slot can be -999 for outside of the gui + * + * @param inventory the inventory to complete the action on + * @param slot the slot to complete the action on + * @param typeString the type of action to do (CLICK, DRAG, DROP, KEY) + * @return the new action + */ + of(inventory: com.chattriggers.ctjs.api.inventory.Inventory, slot: number, typeString: string): com.chattriggers.ctjs.api.inventory.action.Action; + new(): com.chattriggers.ctjs.api.inventory.action.Action$Companion; + } + interface Action$Companion { + /** + * Creates a new action. + * The Inventory must be a container, see [Inventory.isContainer]. + * The slot can be -999 for outside of the gui + * + * @param inventory the inventory to complete the action on + * @param slot the slot to complete the action on + * @param typeString the type of action to do (CLICK, DRAG, DROP, KEY) + * @return the new action + */ + of(inventory: com.chattriggers.ctjs.api.inventory.Inventory, slot: number, typeString: string): com.chattriggers.ctjs.api.inventory.action.Action; + new(): com.chattriggers.ctjs.api.inventory.action.Action$Companion; + } + const Action$Type: { + CLICK: com.chattriggers.ctjs.api.inventory.action.Action$Type; + DRAG: com.chattriggers.ctjs.api.inventory.action.Action$Type; + KEY: com.chattriggers.ctjs.api.inventory.action.Action$Type; + DROP: com.chattriggers.ctjs.api.inventory.action.Action$Type; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.inventory.action.Action$Type; + } + interface Action$Type extends kotlin.Enum { + } + const ClickAction$ClickType: { + LEFT: com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; + RIGHT: com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; + MIDDLE: com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.inventory.action.ClickAction$ClickType; + } + interface ClickAction$ClickType extends kotlin.Enum { + getButton(): number; + } + const DragAction: { + ClickType: typeof com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; + Stage: typeof com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; + new(slot: number, windowId: number): com.chattriggers.ctjs.api.inventory.action.DragAction; + } + interface DragAction extends com.chattriggers.ctjs.api.inventory.action.Action { + getClickType(): com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; + /** + * The type of click (REQUIRED) + * + * @param clickType the new click type + */ + setClickType(clickType: com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType): com.chattriggers.ctjs.api.inventory.action.DragAction; + getStage(): com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; + /** + * The stage of this drag (REQUIRED) + * BEGIN is when beginning the drag + * SLOT is for each slot being dragged into + * END is for ending the drag + * + * @param stage the stage + */ + setStage(stage: com.chattriggers.ctjs.api.inventory.action.DragAction$Stage): com.chattriggers.ctjs.api.inventory.action.DragAction; + /** + * Sets the type of click. + * Possible values are: LEFT, RIGHT, MIDDLE + * + * @param clickType the click type + * @return the current Action for method chaining + */ + setClickString(clickType: string): com.chattriggers.ctjs.api.inventory.action.DragAction; + /** + * Sets the stage of this drag. + * Possible values are: BEGIN, SLOT, END [stage] + * + * @param stage the stage + * @return the current Action for method chaining + */ + setStageString(stage: string): com.chattriggers.ctjs.api.inventory.action.DragAction; + } + const DragAction$ClickType: { + LEFT: com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; + RIGHT: com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; + MIDDLE: com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.inventory.action.DragAction$ClickType; + } + interface DragAction$ClickType extends kotlin.Enum { + getButton(): number; + } + const DragAction$Stage: { + BEGIN: com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; + SLOT: com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; + END: com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.inventory.action.DragAction$Stage; + } + interface DragAction$Stage extends kotlin.Enum { + getStage(): number; + } + const DropAction: { + new(slot: number, windowId: number): com.chattriggers.ctjs.api.inventory.action.DropAction; + } + interface DropAction extends com.chattriggers.ctjs.api.inventory.action.Action { + getHoldingCtrl(): boolean; + /** + * Whether the click should act as if control is being held (defaults to false) + * + * @param holdingCtrl to hold ctrl or not + */ + setHoldingCtrl(holdingCtrl: boolean): com.chattriggers.ctjs.api.inventory.action.DropAction; + } + const KeyAction: { + new(slot: number, windowId: number): com.chattriggers.ctjs.api.inventory.action.KeyAction; + } + interface KeyAction extends com.chattriggers.ctjs.api.inventory.action.Action { + getKey(): number; + /** + * Which key to act as if has been clicked (REQUIRED). + * Options currently are 0-8, representing the hotbar keys + * + * @param key which key to "click" + */ + setKey(key: number): com.chattriggers.ctjs.api.inventory.action.KeyAction; + } + } + namespace nbt { + const NBTBase: { + new(mcValue: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; + } + interface NBTBase extends com.chattriggers.ctjs.api.CTWrapper { + /** + * Gets the type byte for the tag. + */ + getId(): number; + /** + * Creates a clone of the tag. + */ + copy(): net.minecraft.nbt.Tag; + /** + * Return whether this compound has no tags. + */ + hasNoTags(): boolean; + hasTags(): boolean; + } + const NBTBase$Companion: { + fromMC(nbt: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; + new(): com.chattriggers.ctjs.api.inventory.nbt.NBTBase$Companion; + } + interface NBTBase$Companion { + fromMC(nbt: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; + new(): com.chattriggers.ctjs.api.inventory.nbt.NBTBase$Companion; + toObject(): any | null | undefined; + toObject(): org.mozilla.javascript.NativeObject; + toObject(): org.mozilla.javascript.NativeArray; + } + const NBTTagCompound: { + NBTDataType: typeof com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + new(mcValue: net.minecraft.nbt.CompoundTag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + } + interface NBTTagCompound extends com.chattriggers.ctjs.api.inventory.nbt.NBTBase { + getTagMap(): Map; + getKeySet(): Set; + getTag(key: string): com.chattriggers.ctjs.api.inventory.nbt.NBTBase | null | undefined; + getTagId(key: string): number | null | undefined; + getByte(key: string): java.util.Optional; + getShort(key: string): java.util.Optional; + getInteger(key: string): java.util.Optional; + getLong(key: string): java.util.Optional; + getFloat(key: string): java.util.Optional; + getDouble(key: string): java.util.Optional; + getString(key: string): java.util.Optional; + getByteArray(key: string): java.util.Optional>; + getIntArray(key: string): java.util.Optional>; + getBoolean(key: string): java.util.Optional; + getCompoundTag(key: string): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + getTagList(key: string): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; + get(key: string, type: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType, tagType: number | null | undefined): any | null | undefined; + get(key: string): com.chattriggers.ctjs.api.inventory.nbt.NBTBase | null | undefined; + setNBTBase(key: string, value: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setNBTBase(key: string, value: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setBoolean(key: string, value: boolean): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setByte(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setShort(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setInteger(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setLong(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setFloat(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setDouble(key: string, value: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setString(key: string, value: string): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setByteArray(key: string, value: Array): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + setIntArray(key: string, value: Array): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + putLongArray(key: string, value: Array): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + set(key: string, value: any): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + removeTag(key: string): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + toObject(): org.mozilla.javascript.NativeObject; + } + const NBTTagList: { + new(mcValue: net.minecraft.nbt.ListTag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; + } + interface NBTTagList extends com.chattriggers.ctjs.api.inventory.nbt.NBTBase { + getTagCount(): number; + appendTag(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; + appendTag(nbt: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; + set(id: number, nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; + set(id: number, nbt: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; + insertTag(index: number, nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; + insertTag(index: number, nbt: net.minecraft.nbt.Tag): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; + removeTag(index: number): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; + getShortAt(index: number): java.util.Optional; + getIntAt(index: number): java.util.Optional; + getFloatAt(index: number): java.util.Optional; + getDoubleAt(index: number): java.util.Optional; + getStringTagAt(index: number): string; + getListAt(index: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagList; + getCompoundTagAt(index: number): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound; + getIntArrayAt(index: number): Array; + getLongArrayAt(index: number): Array; + get(index: number): net.minecraft.nbt.Tag; + get(index: number, type: number): any; + toArray(): org.mozilla.javascript.NativeArray; + } + const NBTTagCompound$NBTDataType: { + BYTE: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + SHORT: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + INTEGER: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + LONG: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + FLOAT: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + DOUBLE: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + STRING: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + BYTE_ARRAY: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + INT_ARRAY: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + LONG_ARRAY: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + BOOLEAN: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + COMPOUND_TAG: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + TAG_LIST: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound$NBTDataType; + } + interface NBTTagCompound$NBTDataType extends kotlin.Enum { + } + const NBT: { + /** + * Creates a new [NBTBase] from the given [nbt] + * + * @param nbt the value to convert to NBT + * @param options optional argument to allow refinement of the NBT data. + * Possible options include: + * - coerceNumericStrings: Boolean, default false. + * E.g. "10b" as a byte, "20s" as a short, "30f" as a float, "40d" as a double, + * "50l" as a long + * - preferArraysOverLists: Boolean, default false + * E.g. a list with all bytes or integers will be converted to an NBTTagByteArray or + * NBTTagIntArray accordingly + * + * @return [NBTTagCompound] if [nbt] is an object, [NBTTagList] if [nbt] + * is an array and preferArraysOverLists is false, or [NBTBase] otherwise. + */ + parse(nbt: any): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; + /** + * Creates a new [NBTBase] from the given [nbt] + * + * @param nbt the value to convert to NBT + * @param options optional argument to allow refinement of the NBT data. + * Possible options include: + * - coerceNumericStrings: Boolean, default false. + * E.g. "10b" as a byte, "20s" as a short, "30f" as a float, "40d" as a double, + * "50l" as a long + * - preferArraysOverLists: Boolean, default false + * E.g. a list with all bytes or integers will be converted to an NBTTagByteArray or + * NBTTagIntArray accordingly + * + * @return [NBTTagCompound] if [nbt] is an object, [NBTTagList] if [nbt] + * is an array and preferArraysOverLists is false, or [NBTBase] otherwise. + */ + parse(nbt: any, options: org.mozilla.javascript.NativeObject | null | undefined): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; + toObject(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound): org.mozilla.javascript.NativeObject; + toArray(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTTagList): org.mozilla.javascript.NativeArray; + new(): com.chattriggers.ctjs.api.inventory.nbt.NBT; + } + interface NBT { + /** + * Creates a new [NBTBase] from the given [nbt] + * + * @param nbt the value to convert to NBT + * @param options optional argument to allow refinement of the NBT data. + * Possible options include: + * - coerceNumericStrings: Boolean, default false. + * E.g. "10b" as a byte, "20s" as a short, "30f" as a float, "40d" as a double, + * "50l" as a long + * - preferArraysOverLists: Boolean, default false + * E.g. a list with all bytes or integers will be converted to an NBTTagByteArray or + * NBTTagIntArray accordingly + * + * @return [NBTTagCompound] if [nbt] is an object, [NBTTagList] if [nbt] + * is an array and preferArraysOverLists is false, or [NBTBase] otherwise. + */ + parse(nbt: any): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; + /** + * Creates a new [NBTBase] from the given [nbt] + * + * @param nbt the value to convert to NBT + * @param options optional argument to allow refinement of the NBT data. + * Possible options include: + * - coerceNumericStrings: Boolean, default false. + * E.g. "10b" as a byte, "20s" as a short, "30f" as a float, "40d" as a double, + * "50l" as a long + * - preferArraysOverLists: Boolean, default false + * E.g. a list with all bytes or integers will be converted to an NBTTagByteArray or + * NBTTagIntArray accordingly + * + * @return [NBTTagCompound] if [nbt] is an object, [NBTTagList] if [nbt] + * is an array and preferArraysOverLists is false, or [NBTBase] otherwise. + */ + parse(nbt: any, options: org.mozilla.javascript.NativeObject | null | undefined): com.chattriggers.ctjs.api.inventory.nbt.NBTBase; + toObject(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound): org.mozilla.javascript.NativeObject; + toArray(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTTagList): org.mozilla.javascript.NativeArray; + new(): com.chattriggers.ctjs.api.inventory.nbt.NBT; + } + } + const Slot: { + new(mcValue: net.minecraft.world.inventory.Slot): com.chattriggers.ctjs.api.inventory.Slot; + } + interface Slot extends com.chattriggers.ctjs.api.CTWrapper { + getIndex(): number; + getDisplayX(): number; + getDisplayY(): number; + getInventory(): com.chattriggers.ctjs.api.inventory.Inventory; + getItem(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + isEnabled(): boolean; + } + const Inventory: { + new(inventory: net.minecraft.world.Container): com.chattriggers.ctjs.api.inventory.Inventory; + new(container: net.minecraft.client.gui.screens.inventory.AbstractContainerScreen): com.chattriggers.ctjs.api.inventory.Inventory; + } + interface Inventory { + getInventory(): net.minecraft.world.Container; + getScreen(): net.minecraft.client.gui.screens.inventory.AbstractContainerScreen | null | undefined; + /** + * Gets the total size of the Inventory. + * The player's inventory size is 36, 27 for the main inventory, plus 9 for the hotbar. + * A single chest's size would be 63, because it also counts the player's inventory. + * + * @return the size of the Inventory + */ + getSize(): number; + /** + * Gets the item in any slot, starting from 0. + * + * @param slot the slot index + * @return the [Item] in that slot, or null if there is no item + */ + getStackInSlot(slot: number): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + /** + * Returns the window identifier number of this Inventory. + * This Inventory must be backed by a HandledScreen [isScreen] + * + * @return the window id + */ + getWindowId(): number; + /** + * Checks if an item can be shift clicked into a certain slot, i.e. coal into the bottom of a furnace. + * + * @param slot the slot index + * @param item the item for checking + * @return whether it can be shift clicked in + */ + isItemValidForSlot(slot: number, item: com.chattriggers.ctjs.api.inventory.Item): boolean; + /** + * @return a list of the [Item]s in an inventory + */ + getItems(): Array; + /** + * Checks whether the inventory contains the given item. + * + * @param item the item to check for + * @return whether the inventory contains the item + */ + contains(item: com.chattriggers.ctjs.api.inventory.Item): boolean; + /** + * Checks whether the inventory contains an item with ID. + * + * @param id the ID of the item to match + * @return whether the inventory contains an item with ID + */ + contains(id: number): boolean; + /** + * Gets the index of any item in the inventory, and returns the slot number. + * Returns -1 if the inventory does not contain the item. + * + * @param item the item to check for + * @return the index of the given item + */ + indexOf(item: com.chattriggers.ctjs.api.inventory.Item): number; + /** + * Gets the index of any item in the inventory with matching ID, and returns the slot number. + * Returns -1 if the inventory does not contain the item. + * + * @param id the item ID to check for + * @return the index of the given item with ID + */ + indexOf(id: number): number; + /** + * Returns true if this Inventory wraps a [HandledScreen] object + * rather than an [MCInventory] object + * + * @return if this is a container + */ + isScreen(): boolean; + /** + * Shorthand for [ClickAction] + * + * @param slot the slot to click on + * @param button the mouse button to use. "LEFT" by default. + * @param shift whether shift is being held. False by default + * @return this inventory for method chaining + */ + click(slot: number): com.chattriggers.ctjs.api.inventory.Inventory; + /** + * Shorthand for [ClickAction] + * + * @param slot the slot to click on + * @param button the mouse button to use. "LEFT" by default. + * @param shift whether shift is being held. False by default + * @return this inventory for method chaining + */ + click(slot: number, shift: boolean): com.chattriggers.ctjs.api.inventory.Inventory; + /** + * Shorthand for [ClickAction] + * + * @param slot the slot to click on + * @param button the mouse button to use. "LEFT" by default. + * @param shift whether shift is being held. False by default + * @return this inventory for method chaining + */ + click(slot: number, shift: boolean, button: string): com.chattriggers.ctjs.api.inventory.Inventory; + /** + * Shorthand for [DropAction] + * + * @param slot the slot to drop + * @param ctrl whether control should be held (drops whole stack) + * @return this inventory for method chaining + */ + drop(slot: number, ctrl: boolean): com.chattriggers.ctjs.api.inventory.Inventory; + /** + * Shorthand for [DragAction] + * + * @param type what click type this should be: LEFT, MIDDLE, RIGHT + * @param slots all of the slots to drag onto + * @return this inventory for method chaining + */ + drag(type: string, slots: number): com.chattriggers.ctjs.api.inventory.Inventory; + /** + * Gets the name of the inventory, simply "container" for most chest-like blocks. + * + * @return the name of the inventory + */ + getName(): com.chattriggers.ctjs.api.message.TextComponent; + getClassName(): string; + } + const Item: { + new(mcValue: net.minecraft.world.item.ItemStack): com.chattriggers.ctjs.api.inventory.Item; + new(type: com.chattriggers.ctjs.api.inventory.ItemType): com.chattriggers.ctjs.api.inventory.Item; + } + interface Item extends com.chattriggers.ctjs.api.CTWrapper { + getType(): com.chattriggers.ctjs.api.inventory.ItemType; + getStackSize(): number; + setStackSize(size: number): com.chattriggers.ctjs.api.inventory.Item; + getEnchantments(): Map | null | undefined, number>; + isEnchantable(): boolean; + isEnchanted(): boolean; + canPlaceOn(pos: com.chattriggers.ctjs.api.world.block.BlockPos): boolean; + canPlaceOn(block: com.chattriggers.ctjs.api.world.block.Block): boolean; + canHarvest(pos: com.chattriggers.ctjs.api.world.block.BlockPos): boolean; + canHarvest(block: com.chattriggers.ctjs.api.world.block.Block): boolean; + getDurability(): number; + getMaxDamage(): number; + getDamage(): number; + isDamageable(): boolean; + getName(): string; + setName(name: com.chattriggers.ctjs.api.message.TextComponent | null | undefined): com.chattriggers.ctjs.api.inventory.Item; + resetName(): void; + getLore(): Array; + getLore(advanced: boolean): Array; + setLore(lore: Array): void; + resetLore(): void; + getNBT(): net.minecraft.core.component.DataComponentMap; + draw(): void; + draw(x: number): void; + draw(x: number, y: number): void; + draw(x: number, y: number, scale: number): void; + } + const ItemType: { + new(mcValue: net.minecraft.world.item.Item): com.chattriggers.ctjs.api.inventory.ItemType; + new(itemName: string): com.chattriggers.ctjs.api.inventory.ItemType; + new(id: number): com.chattriggers.ctjs.api.inventory.ItemType; + new(blockType: com.chattriggers.ctjs.api.world.block.BlockType): com.chattriggers.ctjs.api.inventory.ItemType; + } + interface ItemType extends com.chattriggers.ctjs.api.CTWrapper { + getName(): string; + getNameComponent(): com.chattriggers.ctjs.api.message.TextComponent; + getId(): number; + getTranslationKey(): string; + getRegistryName(): string; + asItem(): com.chattriggers.ctjs.api.inventory.Item; + } + const ItemType$Companion: { + fromMC(mcValue: net.minecraft.world.item.Item): com.chattriggers.ctjs.api.inventory.ItemType | null | undefined; + new(): com.chattriggers.ctjs.api.inventory.ItemType$Companion; + } + interface ItemType$Companion { + fromMC(mcValue: net.minecraft.world.item.Item): com.chattriggers.ctjs.api.inventory.ItemType | null | undefined; + new(): com.chattriggers.ctjs.api.inventory.ItemType$Companion; + } + const Item$Companion: { + fromMC(mcValue: net.minecraft.world.item.ItemStack): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + new(): com.chattriggers.ctjs.api.inventory.Item$Companion; + } + interface Item$Companion { + fromMC(mcValue: net.minecraft.world.item.ItemStack): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + new(): com.chattriggers.ctjs.api.inventory.Item$Companion; + } + } + namespace message { + const TextComponent: { + /** + * Creates an empty [TextComponent] with a single, unstyled, empty part. + */ + new(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Creates a [TextComponent] from a variable number of objects. These + * objects can be: + * - A plain string possibly containing formatting codes. If the string has + * formatting codes, it will be split into different parts accordingly + * - A [TextComponent], whose parts will be appended in sequence to this + * [TextComponent]'s list of parts + * - A [Text] object, which acts as a single part + * - A JS object, which must contain a "text" key, and can optionally contain + * any of the [Style] keys: + * - color: a [TextColor] or string format of a [TextColor], [Formatting], or a hex value + * - bold: boolean + * - italic: boolean + * - underline: boolean + * - strikethrough: boolean + * - obfuscated: boolean + * - clickEvent: object with { action: [ClickEvent.Action] or string format of a [ClickEvent.Action], value: string or null } + * - hoverEvent: object with { action: [HoverEvent.Action], string format of a [HoverEvent.Action], or null, value: string or null } + * - insertion: string or null + * - font: string format of an [net.minecraft.util.Identifier] + * + * @see Style + */ + new(parts: any): com.chattriggers.ctjs.api.message.TextComponent; + } + interface TextComponent extends net.minecraft.network.chat.Component, kotlin.collections.Iterable { + /** + * Returns the text of all parts concatenated without formatting codes. + */ + getUnformattedText(): string; + /** + * Returns the text of all parts concatenated with formatting codes. + */ + getFormattedText(): string; + getSize(): number; + /** + * If this [TextComponent] is recursive, sending this instance (via [chat] or + * [actionBar]) may trigger other `chat` triggers as if it had been received by + * the server. [TextComponent]s are non-recursive by default. + * + * @return true if the message can trigger other triggers. + */ + isRecursive(): boolean; + /** + * Get the chat line ID of this message, if it exists. The chat line can be used + * to easily edit or delete a message later via [ChatLib.editChat] and + * [ChatLib.deleteChat]. + * + * @return the chat line ID of the message, or -1 if this [TextComponent] does + * not have an associated chat line ID. + */ + getChatLineId(): number; + /** + * @return a new [TextComponent] with the given chat line id + */ + withChatLineId(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * @return a new [TextComponent] with the given chat line id + */ + withChatLineId(id: number): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Sets whether the message can trigger other triggers. + * + * @param recursive true if message can trigger other triggers. + */ + withRecursive(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Sets whether the message can trigger other triggers. + * + * @param recursive true if message can trigger other triggers. + */ + withRecursive(recursive: boolean): com.chattriggers.ctjs.api.message.TextComponent; + /** + * @return a new [TextComponent] with the specified [value] appended to the end. + * This accepts all types of objects that the vararg constructor does. + */ + withText(value: any): com.chattriggers.ctjs.api.message.TextComponent; + /** + * @return a new [TextComponent] with the specified [value] inserted at [index]. + * This accepts all types of objects that the vararg constructor does. + */ + withTextAt(index: number, value: any): com.chattriggers.ctjs.api.message.TextComponent; + /** + * @return a new [TextComponent] without the part at [index] + */ + withoutTextAt(index: number): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Edits this text component, replacing it with the given [newText]. Note that + * this compares [TextComponent]s based on [formattedText]; if an exact match + * is needed, use [ChatLib.editChat] in conjunction with a chat line ID. + */ + edit(newText: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Edits this text component, replacing it with a new [TextComponent] from the + * given [parts]. Note that this compares [TextComponent]s based on + * [formattedText]; if an exact match is needed, use [ChatLib.editChat] in + * conjunction with a chat line ID. + */ + edit(parts: any): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Sends this [TextComponent] to the players chat. + * + * Note that this is purely client-side, and will not be sent to the server. If [isRecursive], + * will trigger any matching `chat` triggers + * + * @see ChatLib.chat + * @see ChatLib.say + */ + chat(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Sends this [TextComponent] to the players action bar. + * + * If [isRecursive], will trigger any matching `actionBar` triggers + * + * @see ChatLib.actionBar + */ + actionBar(): com.chattriggers.ctjs.api.message.TextComponent; + contains(element: org.mozilla.javascript.NativeObject): boolean; + containsAll(elements: Array): boolean; + get(index: number): org.mozilla.javascript.NativeObject; + indexOf(element: org.mozilla.javascript.NativeObject): number; + isEmpty(): boolean; + } + const ChatLib: { + /** + * Prints text in the chat. + * The text can be a String or a [TextComponent] + * + * @param text the text to be printed + */ + chat(text: any | null | undefined): void; + /** + * Shows text in the action bar. + * The text can be a String or a [TextComponent] + * + * @param text the text to show + */ + actionBar(text: any | null | undefined): void; + /** + * Simulates a chat message to be caught by other triggers for testing. + * The text can be a String or a [TextComponent] + * + * @param text The message to simulate + */ + simulateChat(text: any | null | undefined): void; + /** + * Replaces the easier to type '&' color codes with proper color codes in a string. + * + * @param message The string to add color codes to + * @return the formatted message + */ + addColor(message: string | null | undefined): string; + /** + * Says chat message. + * This message is actually sent to the server. + * + * @param text the message to be sent + */ + say(text: string): void; + /** + * Runs a command. + * + * @param text the command to run, without the leading slash (Ex. "help") + * @param clientSide should the command be run as a client side command + */ + command(text: string): void; + /** + * Runs a command. + * + * @param text the command to run, without the leading slash (Ex. "help") + * @param clientSide should the command be run as a client side command + */ + command(text: string, clientSide: boolean): void; + /** + * Clear all chat messages + */ + clearChat(): void; + /** + * Get a message that will be perfectly one line of chat, + * the separator repeated as many times as necessary. + * The separator defaults to "-" + * + * @param separator the message to split chat with + * @return the message that would split chat + */ + getChatBreak(): string; + /** + * Get a message that will be perfectly one line of chat, + * the separator repeated as many times as necessary. + * The separator defaults to "-" + * + * @param separator the message to split chat with + * @return the message that would split chat + */ + getChatBreak(separator: string): string; + /** + * Gets the width of Minecraft's chat + * + * @return the width of chat + */ + getChatWidth(): number; + /** + * Remove all formatting + * + * @param text the string to un-format + * @return the unformatted string + */ + removeFormatting(text: string): string; + /** + * Replaces Minecraft formatted text with normal formatted text + * + * @param text the formatted string + * @return the unformatted string + */ + replaceFormatting(text: string): string; + /** + * Get a message that will be perfectly centered in chat. + * + * @param text the text to be centered + * @return the centered message + */ + getCenteredText(text: string): string; + /** + * Copies the given String to the user's clipboard + * + * @param text the text to copy + */ + copyToClipboard(text: string): void; + /** + * Edits an already sent chat message matched by [regexp]. + * + * @param regexp the regex object to match to the message + * @param replacements the new message(s) to be put in replace of the old one + */ + editChat(regexp: org.mozilla.javascript.regexp.NativeRegExp, replacements: any): void; + /** + * Edits an already sent chat message by the text of the chat + * + * @param toReplace the unformatted text of the message to be replaced + * @param replacements the new message(s) to be put in place of the old one + */ + editChat(toReplace: string, replacements: any): void; + /** + * Edits an already sent chat message by the [TextComponent] + * + * @param toReplace the message to be replaced + * @param replacements the new message(s) to be put in place of the old one + */ + editChat(toReplace: com.chattriggers.ctjs.api.message.TextComponent, replacements: any): void; + /** + * Edits an already sent chat message by its chat line id + * + * @param chatLineId the chat line id of the message to be replaced + * @param replacements the new message(s) to be put in place of the old one + */ + editChat(chatLineId: number, replacements: any): void; + /** + * Edits an already sent chat message by given a callback that receives + * [TextComponent] instances + * + * @param matcher a function that accepts a [TextComponent] and returns a boolean + * @param replacements the new message(s) to be put in place of the old one + */ + editChat(matcher: kotlin.Function1, replacements: any): void; + /** + * Deletes an already sent chat message matching [regexp]. + * + * @param regexp the regex object to match to the message + */ + deleteChat(regexp: org.mozilla.javascript.regexp.NativeRegExp): void; + /** + * Deletes an already sent chat message by the text of the chat + * + * @param toDelete the unformatted text of the message to be deleted + */ + deleteChat(toDelete: string): void; + /** + * Deletes an already sent chat message by the [TextComponent] + * + * @param toDelete the message to be deleted + */ + deleteChat(toDelete: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Deletes an already sent chat message by its chat line id + * + * @param chatLineId the chat line id of the message to be deleted + */ + deleteChat(chatLineId: number): void; + /** + * Deletes an already sent chat message given a callback that receives + * [TextComponent] instances + * + * @param matcher a function that accepts a [TextComponent] and returns a boolean + */ + deleteChat(matcher: kotlin.Function1): void; + /** + * Gets the previous 1000 lines of chat + * + * @return A list of the last 1000 chat lines + */ + getChatLines(): Array; + /** + * Adds a message to the player's chat history. This allows the message to + * show up for the player when pressing the up/down keys while in the chat gui + * + * @param index the index to insert the message + * @param message the message to add to chat history + */ + addToSentMessageHistory(message: string): void; + /** + * Adds a message to the player's chat history. This allows the message to + * show up for the player when pressing the up/down keys while in the chat gui + * + * @param index the index to insert the message + * @param message the message to add to chat history + */ + addToSentMessageHistory(index: number, message: string): void; + new(): com.chattriggers.ctjs.api.message.ChatLib; + } + interface ChatLib { + /** + * Prints text in the chat. + * The text can be a String or a [TextComponent] + * + * @param text the text to be printed + */ + chat(text: any | null | undefined): void; + /** + * Shows text in the action bar. + * The text can be a String or a [TextComponent] + * + * @param text the text to show + */ + actionBar(text: any | null | undefined): void; + /** + * Simulates a chat message to be caught by other triggers for testing. + * The text can be a String or a [TextComponent] + * + * @param text The message to simulate + */ + simulateChat(text: any | null | undefined): void; + /** + * Replaces the easier to type '&' color codes with proper color codes in a string. + * + * @param message The string to add color codes to + * @return the formatted message + */ + addColor(message: string | null | undefined): string; + /** + * Says chat message. + * This message is actually sent to the server. + * + * @param text the message to be sent + */ + say(text: string): void; + /** + * Runs a command. + * + * @param text the command to run, without the leading slash (Ex. "help") + * @param clientSide should the command be run as a client side command + */ + command(text: string): void; + /** + * Runs a command. + * + * @param text the command to run, without the leading slash (Ex. "help") + * @param clientSide should the command be run as a client side command + */ + command(text: string, clientSide: boolean): void; + /** + * Clear all chat messages + */ + clearChat(): void; + /** + * Get a message that will be perfectly one line of chat, + * the separator repeated as many times as necessary. + * The separator defaults to "-" + * + * @param separator the message to split chat with + * @return the message that would split chat + */ + getChatBreak(): string; + /** + * Get a message that will be perfectly one line of chat, + * the separator repeated as many times as necessary. + * The separator defaults to "-" + * + * @param separator the message to split chat with + * @return the message that would split chat + */ + getChatBreak(separator: string): string; + /** + * Gets the width of Minecraft's chat + * + * @return the width of chat + */ + getChatWidth(): number; + /** + * Remove all formatting + * + * @param text the string to un-format + * @return the unformatted string + */ + removeFormatting(text: string): string; + /** + * Replaces Minecraft formatted text with normal formatted text + * + * @param text the formatted string + * @return the unformatted string + */ + replaceFormatting(text: string): string; + /** + * Get a message that will be perfectly centered in chat. + * + * @param text the text to be centered + * @return the centered message + */ + getCenteredText(text: string): string; + /** + * Copies the given String to the user's clipboard + * + * @param text the text to copy + */ + copyToClipboard(text: string): void; + /** + * Edits an already sent chat message matched by [regexp]. + * + * @param regexp the regex object to match to the message + * @param replacements the new message(s) to be put in replace of the old one + */ + editChat(regexp: org.mozilla.javascript.regexp.NativeRegExp, replacements: any): void; + /** + * Edits an already sent chat message by the text of the chat + * + * @param toReplace the unformatted text of the message to be replaced + * @param replacements the new message(s) to be put in place of the old one + */ + editChat(toReplace: string, replacements: any): void; + /** + * Edits an already sent chat message by the [TextComponent] + * + * @param toReplace the message to be replaced + * @param replacements the new message(s) to be put in place of the old one + */ + editChat(toReplace: com.chattriggers.ctjs.api.message.TextComponent, replacements: any): void; + /** + * Edits an already sent chat message by its chat line id + * + * @param chatLineId the chat line id of the message to be replaced + * @param replacements the new message(s) to be put in place of the old one + */ + editChat(chatLineId: number, replacements: any): void; + /** + * Edits an already sent chat message by given a callback that receives + * [TextComponent] instances + * + * @param matcher a function that accepts a [TextComponent] and returns a boolean + * @param replacements the new message(s) to be put in place of the old one + */ + editChat(matcher: kotlin.Function1, replacements: any): void; + /** + * Deletes an already sent chat message matching [regexp]. + * + * @param regexp the regex object to match to the message + */ + deleteChat(regexp: org.mozilla.javascript.regexp.NativeRegExp): void; + /** + * Deletes an already sent chat message by the text of the chat + * + * @param toDelete the unformatted text of the message to be deleted + */ + deleteChat(toDelete: string): void; + /** + * Deletes an already sent chat message by the [TextComponent] + * + * @param toDelete the message to be deleted + */ + deleteChat(toDelete: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Deletes an already sent chat message by its chat line id + * + * @param chatLineId the chat line id of the message to be deleted + */ + deleteChat(chatLineId: number): void; + /** + * Deletes an already sent chat message given a callback that receives + * [TextComponent] instances + * + * @param matcher a function that accepts a [TextComponent] and returns a boolean + */ + deleteChat(matcher: kotlin.Function1): void; + /** + * Gets the previous 1000 lines of chat + * + * @return A list of the last 1000 chat lines + */ + getChatLines(): Array; + /** + * Adds a message to the player's chat history. This allows the message to + * show up for the player when pressing the up/down keys while in the chat gui + * + * @param index the index to insert the message + * @param message the message to add to chat history + */ + addToSentMessageHistory(message: string): void; + /** + * Adds a message to the player's chat history. This allows the message to + * show up for the player when pressing the up/down keys while in the chat gui + * + * @param index the index to insert the message + * @param message the message to add to chat history + */ + addToSentMessageHistory(index: number, message: string): void; + new(): com.chattriggers.ctjs.api.message.ChatLib; + } + const Chat: { + sendGradientMsg(prefix: string, startRgb: number, endRgb: number, messages: any): void; + new(): com.chattriggers.ctjs.api.message.Chat; + } + interface Chat { + sendGradientMsg(prefix: string, startRgb: number, endRgb: number, messages: any): void; + new(): com.chattriggers.ctjs.api.message.Chat; + } + } + namespace world { + namespace block { + const BlockType: { + new(mcValue: net.minecraft.world.level.block.Block): com.chattriggers.ctjs.api.world.block.BlockType; + new(block: com.chattriggers.ctjs.api.world.block.BlockType): com.chattriggers.ctjs.api.world.block.BlockType; + new(blockName: string): com.chattriggers.ctjs.api.world.block.BlockType; + new(blockID: number): com.chattriggers.ctjs.api.world.block.BlockType; + new(item: com.chattriggers.ctjs.api.inventory.Item): com.chattriggers.ctjs.api.world.block.BlockType; + } + interface BlockType extends com.chattriggers.ctjs.api.CTWrapper { + /** + * Returns a [Block] based on this block and the + * provided BlockPos + * + * @param blockPos the block position + * @return a [Block] object + */ + withBlockPos(blockPos: com.chattriggers.ctjs.api.world.block.BlockPos): com.chattriggers.ctjs.api.world.block.Block; + getID(): number; + /** + * Gets the block's registry name. + * Example: minecraft:oak_planks + * + * @return the block's registry name + */ + getRegistryName(): string; + /** + * Gets the block's translation key. + * Example: block.minecraft.oak_planks + * + * @return the block's translation key + */ + getTranslationKey(): string; + /** + * Gets the block's localized name. + * Example: Wooden Planks + * + * @return the block's localized name + */ + getName(): string; + getLightValue(): number; + getDefaultState(): net.minecraft.world.level.block.state.BlockState; + canProvidePower(): boolean; + isTranslucent(): boolean; + } + const BlockPos: { + new(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.block.BlockPos; + new(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.block.BlockPos; + new(pos: com.chattriggers.ctjs.api.vec.Vec3i): com.chattriggers.ctjs.api.world.block.BlockPos; + new(pos: net.minecraft.core.BlockPos): com.chattriggers.ctjs.api.world.block.BlockPos; + new(source: com.chattriggers.ctjs.api.entity.Entity): com.chattriggers.ctjs.api.world.block.BlockPos; + } + interface BlockPos extends com.chattriggers.ctjs.api.vec.Vec3i, com.chattriggers.ctjs.api.CTWrapper { + up(): com.chattriggers.ctjs.api.world.block.BlockPos; + up(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; + down(): com.chattriggers.ctjs.api.world.block.BlockPos; + down(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; + north(): com.chattriggers.ctjs.api.world.block.BlockPos; + north(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; + south(): com.chattriggers.ctjs.api.world.block.BlockPos; + south(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; + east(): com.chattriggers.ctjs.api.world.block.BlockPos; + east(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; + west(): com.chattriggers.ctjs.api.world.block.BlockPos; + west(n: number): com.chattriggers.ctjs.api.world.block.BlockPos; + offset(facing: com.chattriggers.ctjs.api.world.block.BlockFace): com.chattriggers.ctjs.api.world.block.BlockPos; + offset(facing: com.chattriggers.ctjs.api.world.block.BlockFace, n: number): com.chattriggers.ctjs.api.world.block.BlockPos; + distanceTo(other: com.chattriggers.ctjs.api.world.block.BlockPos): number; + toVec3d(): net.minecraft.world.phys.Vec3; + } + const BlockFace: { + DOWN: com.chattriggers.ctjs.api.world.block.BlockFace; + UP: com.chattriggers.ctjs.api.world.block.BlockFace; + NORTH: com.chattriggers.ctjs.api.world.block.BlockFace; + SOUTH: com.chattriggers.ctjs.api.world.block.BlockFace; + WEST: com.chattriggers.ctjs.api.world.block.BlockFace; + EAST: com.chattriggers.ctjs.api.world.block.BlockFace; + Plane: typeof com.chattriggers.ctjs.api.world.block.BlockFace$Plane; + AxisDirection: typeof com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; + Axis: typeof com.chattriggers.ctjs.api.world.block.BlockFace$Axis; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.world.block.BlockFace; + } + interface BlockFace extends kotlin.Enum, net.minecraft.util.StringRepresentable, com.chattriggers.ctjs.api.CTWrapper { + getAxisDirection(): com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; + getAxis(): com.chattriggers.ctjs.api.world.block.BlockFace$Axis; + getDirectionVec(): com.chattriggers.ctjs.api.vec.Vec3i; + getOpposite(): com.chattriggers.ctjs.api.world.block.BlockFace; + getOffsetX(): number; + getOffsetY(): number; + getOffsetZ(): number; + rotateAround(axis: com.chattriggers.ctjs.api.world.block.BlockFace$Axis): com.chattriggers.ctjs.api.world.block.BlockFace; + rotateX(): com.chattriggers.ctjs.api.world.block.BlockFace; + rotateY(): com.chattriggers.ctjs.api.world.block.BlockFace; + rotateZ(): com.chattriggers.ctjs.api.world.block.BlockFace; + } + const BlockFace$AxisDirection: { + POSITIVE: com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; + NEGATIVE: com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; + } + interface BlockFace$AxisDirection extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { + getOffset(): number; + } + const BlockFace$AxisDirection$Companion: { + fromMC(axisDirection: net.minecraft.core.Direction$AxisDirection): com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; + new(): unknown; + } + interface BlockFace$AxisDirection$Companion { + fromMC(axisDirection: net.minecraft.core.Direction$AxisDirection): com.chattriggers.ctjs.api.world.block.BlockFace$AxisDirection; + new(): unknown; + } + const BlockFace$Axis: { + X: com.chattriggers.ctjs.api.world.block.BlockFace$Axis; + Y: com.chattriggers.ctjs.api.world.block.BlockFace$Axis; + Z: com.chattriggers.ctjs.api.world.block.BlockFace$Axis; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.world.block.BlockFace$Axis; + } + interface BlockFace$Axis extends kotlin.Enum, net.minecraft.util.StringRepresentable, com.chattriggers.ctjs.api.CTWrapper { + getPlane(): com.chattriggers.ctjs.api.world.block.BlockFace$Plane; + isHorizontal(): boolean; + isVertical(): boolean; + } + const BlockFace$Plane: { + HORIZONTAL: com.chattriggers.ctjs.api.world.block.BlockFace$Plane; + VERTICAL: com.chattriggers.ctjs.api.world.block.BlockFace$Plane; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.world.block.BlockFace$Plane; + } + interface BlockFace$Plane extends kotlin.Enum, kotlin.collections.Iterable { + facings(): Array; + } + const BlockFace$Axis$Companion: { + fromMC(axis: net.minecraft.core.Direction$Axis): com.chattriggers.ctjs.api.world.block.BlockFace$Axis; + new(): unknown; + } + interface BlockFace$Axis$Companion { + fromMC(axis: net.minecraft.core.Direction$Axis): com.chattriggers.ctjs.api.world.block.BlockFace$Axis; + new(): unknown; + } + const BlockFace$Companion: { + fromMC(facing: net.minecraft.core.Direction): com.chattriggers.ctjs.api.world.block.BlockFace; + new(): com.chattriggers.ctjs.api.world.block.BlockFace$Companion; + } + interface BlockFace$Companion { + fromMC(facing: net.minecraft.core.Direction): com.chattriggers.ctjs.api.world.block.BlockFace; + new(): com.chattriggers.ctjs.api.world.block.BlockFace$Companion; + } + const Block: { + new(type: com.chattriggers.ctjs.api.world.block.BlockType, pos: com.chattriggers.ctjs.api.world.block.BlockPos, face: com.chattriggers.ctjs.api.world.block.BlockFace | null | undefined): com.chattriggers.ctjs.api.world.block.Block; + } + interface Block { + getType(): com.chattriggers.ctjs.api.world.block.BlockType; + getPos(): com.chattriggers.ctjs.api.world.block.BlockPos; + getFace(): com.chattriggers.ctjs.api.world.block.BlockFace | null | undefined; + getX(): number; + getY(): number; + getZ(): number; + withType(type: com.chattriggers.ctjs.api.world.block.BlockType): com.chattriggers.ctjs.api.world.block.Block; + withPos(pos: com.chattriggers.ctjs.api.world.block.BlockPos): com.chattriggers.ctjs.api.world.block.Block; + /** + * Narrows this block to reference a certain face. Used by + * [Player.lookingAt] to specify the block face + * being looked at. + */ + withFace(face: com.chattriggers.ctjs.api.world.block.BlockFace): com.chattriggers.ctjs.api.world.block.Block; + getState(): net.minecraft.world.level.block.state.BlockState | null | undefined; + isEmittingPower(): boolean; + isEmittingPower(face: com.chattriggers.ctjs.api.world.block.BlockFace | null | undefined): boolean; + getEmittingPower(): number; + getEmittingPower(face: com.chattriggers.ctjs.api.world.block.BlockFace | null | undefined): number; + isReceivingPower(): boolean; + getReceivingPower(): number; + /** + * Checks whether the block can be mined with the tool in the player's hand + * + * @return whether the block can be mined + */ + canBeHarvested(): boolean; + canBeHarvestedWith(item: com.chattriggers.ctjs.api.inventory.Item): boolean; + } + } + namespace pathfinding { + const HypixelManager: { + new(): com.chattriggers.ctjs.api.world.pathfinding.HypixelManager; + } + interface HypixelManager { + new(): com.chattriggers.ctjs.api.world.pathfinding.HypixelManager; + init(): void; + onDisconnect(): void; + } + const NativeStateEncoder: { + flagsForStateId(stateId: number): number; + flagsForState(state: net.minecraft.world.level.block.state.BlockState): number; + flagsShortForState(state: net.minecraft.world.level.block.state.BlockState): number; + flagsShortForStateId(stateId: number): number; + new(): com.chattriggers.ctjs.api.world.pathfinding.NativeStateEncoder; + } + interface NativeStateEncoder { + flagsForStateId(stateId: number): number; + flagsForState(state: net.minecraft.world.level.block.state.BlockState): number; + flagsShortForState(state: net.minecraft.world.level.block.state.BlockState): number; + flagsShortForStateId(stateId: number): number; + new(): com.chattriggers.ctjs.api.world.pathfinding.NativeStateEncoder; + } + const NativeVoxelFlags: { + new(): com.chattriggers.ctjs.api.world.pathfinding.NativeVoxelFlags; + } + interface NativeVoxelFlags { + new(): com.chattriggers.ctjs.api.world.pathfinding.NativeVoxelFlags; + getPASSABLE(): number; + getSOLID(): number; + getPASSABLE_FLY(): number; + getBLOCKING_WALL(): number; + getFLUID(): number; + getSLAB_BOTTOM(): number; + getSLAB_TOP(): number; + getFENCE_LIKE(): number; + getSTAIRS_BOTTOM(): number; + getCARPET_LIKE(): number; + getETHER_PASSABLE(): number; + getETHER_TELEPORT_CLEAR(): number; + getETHER_FEET_BLOCKER(): number; + getETHER_FAKE_FULL_BLOCKER(): number; + } + const WorldSerializer: { + new(): com.chattriggers.ctjs.api.world.pathfinding.WorldSerializer; + } + interface WorldSerializer { + new(): com.chattriggers.ctjs.api.world.pathfinding.WorldSerializer; + save(name: string, chunks: Map): void; + load(name: string): java.util.concurrent.ConcurrentHashMap | null | undefined; + } + const CachedChunk: { + minY: number; + maxY: number; + ready: boolean; + new(minY: number, maxY: number): com.chattriggers.ctjs.api.world.pathfinding.CachedChunk; + } + interface CachedChunk { + getFlags(localX: number, y: number, localZ: number): number; + setFlags(localX: number, y: number, localZ: number, flags: number): void; + hasSection(index: number): boolean; + copySectionFlags(index: number, dest: Array, destOffset: number): void; + setSection(sectionIndex: number, data: Array): void; + } + const CachedChunk$Companion: { + AIR_FLAGS: number; + new(): com.chattriggers.ctjs.api.world.pathfinding.CachedChunk$Companion; + } + interface CachedChunk$Companion { + AIR_FLAGS: number; + new(): com.chattriggers.ctjs.api.world.pathfinding.CachedChunk$Companion; + } + const EtherwarpLandingCandidatesResult: { + goals: Array; + centers: kotlin.DoubleArray; + new(goals: Array, centers: kotlin.DoubleArray): com.chattriggers.ctjs.api.world.pathfinding.EtherwarpLandingCandidatesResult; + } + interface EtherwarpLandingCandidatesResult { + } + const NativeEtherwarpResult: { + path: Array; + angles: kotlin.FloatArray; + timeMs: number; + nodesExplored: number; + nanosecondsPerNode: number; + new(path: Array, angles: kotlin.FloatArray, timeMs: number, nodesExplored: number, nanosecondsPerNode: number): com.chattriggers.ctjs.api.world.pathfinding.NativeEtherwarpResult; + } + interface NativeEtherwarpResult { + } + const NativePathfinderBridge: { + NativePathSearchRequest: typeof com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativePathSearchRequest; + NativeEtherwarpSearchRequest: typeof com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativeEtherwarpSearchRequest; + isAvailable(): boolean; + getLastError(): string | null | undefined; + setWorld(worldKey: string, minY: number, maxY: number): void; + clearWorld(): void; + upsertChunk(chunkX: number, chunkZ: number, minY: number, maxY: number, sectionMask: number, sectionFlags: Array): void; + applyBlockUpdates(updates: Array): void; + findPath(request: com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativePathSearchRequest): com.chattriggers.ctjs.api.world.pathfinding.NativePathResult | null | undefined; + findEtherwarpPath(request: com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativeEtherwarpSearchRequest): com.chattriggers.ctjs.api.world.pathfinding.NativeEtherwarpResult | null | undefined; + cancelSearch(): void; + new(): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge; + } + interface NativePathfinderBridge { + isAvailable(): boolean; + getLastError(): string | null | undefined; + setWorld(worldKey: string, minY: number, maxY: number): void; + clearWorld(): void; + upsertChunk(chunkX: number, chunkZ: number, minY: number, maxY: number, sectionMask: number, sectionFlags: Array): void; + applyBlockUpdates(updates: Array): void; + findPath(request: com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativePathSearchRequest): com.chattriggers.ctjs.api.world.pathfinding.NativePathResult | null | undefined; + findEtherwarpPath(request: com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativeEtherwarpSearchRequest): com.chattriggers.ctjs.api.world.pathfinding.NativeEtherwarpResult | null | undefined; + cancelSearch(): void; + new(): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge; + } + const NativePathfinderBridge$NativePathSearchRequest: { + new(startPoints: Array, endPoints: Array, isFly: boolean, maxIterations: number, heuristicWeight: number, nonPrimaryStartPenalty: number, moveOrderOffset: number, avoidMeta: Array, avoidPenalty: kotlin.DoubleArray): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativePathSearchRequest; + } + interface NativePathfinderBridge$NativePathSearchRequest { + getStartPoints(): Array; + getEndPoints(): Array; + isFly(): boolean; + getMaxIterations(): number; + getHeuristicWeight(): number; + getNonPrimaryStartPenalty(): number; + getMoveOrderOffset(): number; + getAvoidMeta(): Array; + getAvoidPenalty(): kotlin.DoubleArray; + component1(): Array; + component2(): Array; + component3(): boolean; + component4(): number; + component5(): number; + component6(): number; + component7(): number; + component8(): Array; + component9(): kotlin.DoubleArray; + copy(startPoints: Array, endPoints: Array, isFly: boolean, maxIterations: number, heuristicWeight: number, nonPrimaryStartPenalty: number, moveOrderOffset: number, avoidMeta: Array, avoidPenalty: kotlin.DoubleArray): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativePathSearchRequest; + } + const NativePathResult: { + path: Array; + keyPath: Array; + timeMs: number; + nodesExplored: number; + nanosecondsPerNode: number; + selectedStartIndex: number; + pathFlags: Array; + keyNodeFlags: Array; + keyNodeMetrics: Array; + pathSignature: string; + new(path: Array, keyPath: Array, timeMs: number, nodesExplored: number, nanosecondsPerNode: number, selectedStartIndex: number, pathFlags: Array, keyNodeFlags: Array, keyNodeMetrics: Array, pathSignature: string): com.chattriggers.ctjs.api.world.pathfinding.NativePathResult; + } + interface NativePathResult { + } + const NativePathfinderBridge$NativeEtherwarpSearchRequest: { + new(goalX: number, goalY: number, goalZ: number, startEyeX: number, startEyeY: number, startEyeZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number, eyeHeight: number): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativeEtherwarpSearchRequest; + } + interface NativePathfinderBridge$NativeEtherwarpSearchRequest { + getGoalX(): number; + getGoalY(): number; + getGoalZ(): number; + getStartEyeX(): number; + getStartEyeY(): number; + getStartEyeZ(): number; + getMaxIterations(): number; + getThreadCount(): number; + getYawStep(): number; + getPitchStep(): number; + getNewNodeCost(): number; + getHeuristicWeight(): number; + getRayLength(): number; + getRewireEpsilon(): number; + getEyeHeight(): number; + component1(): number; + component2(): number; + component3(): number; + component4(): number; + component5(): number; + component6(): number; + component7(): number; + component8(): number; + component9(): number; + component10(): number; + component11(): number; + component12(): number; + component13(): number; + component14(): number; + component15(): number; + copy(goalX: number, goalY: number, goalZ: number, startEyeX: number, startEyeY: number, startEyeZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number, eyeHeight: number): com.chattriggers.ctjs.api.world.pathfinding.NativePathfinderBridge$NativeEtherwarpSearchRequest; + } + const PathManager: { + isSearching(): boolean; + findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number): boolean; + findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, maxIterations: number): boolean; + findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, maxIterations: number, isFly: boolean): boolean; + findPath(startPoints: Array>, endPoints: Array>): boolean; + findPath(startPoints: Array>, endPoints: Array>, maxIterations: number): boolean; + findPath(startPoints: Array>, endPoints: Array>, maxIterations: number, isFly: boolean): boolean; + findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array): boolean; + findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array, maxIterations: number): boolean; + findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array, maxIterations: number, isFly: boolean): boolean; + findFlyPath(startPoints: Array>, endPoints: Array>): boolean; + findFlyPath(startPoints: Array>, endPoints: Array>, maxIterations: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number, eyeHeight: number): boolean; + isFlyPositionClear(x: number, y: number, z: number): boolean; + isValidEtherwarpLanding(x: number, y: number, z: number): boolean; + getEtherwarpLandingCenter(x: number, y: number, z: number): kotlin.DoubleArray | null | undefined; + getEtherwarpLandingCandidates(anchorX: number, anchorY: number, anchorZ: number, radius: number, maxDistance: number, sortOriginX: number, sortOriginY: number, sortOriginZ: number): com.chattriggers.ctjs.api.world.pathfinding.EtherwarpLandingCandidatesResult | null | undefined; + getCurrentEtherwarpEyeHeight(): number; + getCurrentEtherwarpSneakOffset(): number; + cancelSearch(): void; + getPathArray(): Array; + getKeyNodesArray(): Array; + getEtherwarpPathArray(): Array; + getEtherwarpAnglesArray(): kotlin.FloatArray; + getPathFlagsArray(): Array; + getKeyNodeFlagsArray(): Array; + getKeyNodeMetricsArray(): Array; + getPathSignature(): string; + getPathFlagBits(): Array; + getEtherwarpVoxelFlagsAt(x: number, y: number, z: number): number; + isEtherwarpSupportSolid(flags: number): boolean; + getEtherwarpStandOffsetForFlags(flags: number): number; + isEtherwarpTeleportSpaceClearFlags(flags: number): boolean; + addTransientAvoidPoint(x: number, y: number, z: number): void; + addTransientAvoidPoint(x: number, y: number, z: number, radius: number): void; + addTransientAvoidPoint(x: number, y: number, z: number, radius: number, penalty: number): void; + addTransientAvoidPoint(x: number, y: number, z: number, radius: number, penalty: number, ttlSearches: number): void; + addTransientAvoidPoints(points: Array): void; + addTransientAvoidPoints(points: Array, radius: number): void; + addTransientAvoidPoints(points: Array, radius: number, penalty: number): void; + addTransientAvoidPoints(points: Array, radius: number, penalty: number, ttlSearches: number): void; + clearTransientAvoidPoints(): void; + getPathSize(): number; + getEtherwarpPathSize(): number; + getKeyNodeCount(): number; + getLastTimeMs(): number; + getEtherwarpLastTimeMs(): number; + getNodesExplored(): number; + getEtherwarpNodesExplored(): number; + getNanosecondsPerNode(): number; + getEtherwarpNanosecondsPerNode(): number; + getSelectedStartIndex(): number; + setSearchVariantSeed(seed: number): void; + getLastError(): string | null | undefined; + hasPath(): boolean; + hasEtherwarpPath(): boolean; + clear(): void; + new(): com.chattriggers.ctjs.api.world.pathfinding.PathManager; + } + interface PathManager { + isSearching(): boolean; + findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number): boolean; + findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, maxIterations: number): boolean; + findPath(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, maxIterations: number, isFly: boolean): boolean; + findPath(startPoints: Array>, endPoints: Array>): boolean; + findPath(startPoints: Array>, endPoints: Array>, maxIterations: number): boolean; + findPath(startPoints: Array>, endPoints: Array>, maxIterations: number, isFly: boolean): boolean; + findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array): boolean; + findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array, maxIterations: number): boolean; + findPathMultipleGoals(startX: number, startY: number, startZ: number, endGoals: Array, maxIterations: number, isFly: boolean): boolean; + findFlyPath(startPoints: Array>, endPoints: Array>): boolean; + findFlyPath(startPoints: Array>, endPoints: Array>, maxIterations: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number): boolean; + findEtherwarpPath(goalX: number, goalY: number, goalZ: number, maxIterations: number, threadCount: number, yawStep: number, pitchStep: number, newNodeCost: number, heuristicWeight: number, rayLength: number, rewireEpsilon: number, eyeHeight: number): boolean; + isFlyPositionClear(x: number, y: number, z: number): boolean; + isValidEtherwarpLanding(x: number, y: number, z: number): boolean; + getEtherwarpLandingCenter(x: number, y: number, z: number): kotlin.DoubleArray | null | undefined; + getEtherwarpLandingCandidates(anchorX: number, anchorY: number, anchorZ: number, radius: number, maxDistance: number, sortOriginX: number, sortOriginY: number, sortOriginZ: number): com.chattriggers.ctjs.api.world.pathfinding.EtherwarpLandingCandidatesResult | null | undefined; + getCurrentEtherwarpEyeHeight(): number; + getCurrentEtherwarpSneakOffset(): number; + cancelSearch(): void; + getPathArray(): Array; + getKeyNodesArray(): Array; + getEtherwarpPathArray(): Array; + getEtherwarpAnglesArray(): kotlin.FloatArray; + getPathFlagsArray(): Array; + getKeyNodeFlagsArray(): Array; + getKeyNodeMetricsArray(): Array; + getPathSignature(): string; + getPathFlagBits(): Array; + getEtherwarpVoxelFlagsAt(x: number, y: number, z: number): number; + isEtherwarpSupportSolid(flags: number): boolean; + getEtherwarpStandOffsetForFlags(flags: number): number; + isEtherwarpTeleportSpaceClearFlags(flags: number): boolean; + addTransientAvoidPoint(x: number, y: number, z: number): void; + addTransientAvoidPoint(x: number, y: number, z: number, radius: number): void; + addTransientAvoidPoint(x: number, y: number, z: number, radius: number, penalty: number): void; + addTransientAvoidPoint(x: number, y: number, z: number, radius: number, penalty: number, ttlSearches: number): void; + addTransientAvoidPoints(points: Array): void; + addTransientAvoidPoints(points: Array, radius: number): void; + addTransientAvoidPoints(points: Array, radius: number, penalty: number): void; + addTransientAvoidPoints(points: Array, radius: number, penalty: number, ttlSearches: number): void; + clearTransientAvoidPoints(): void; + getPathSize(): number; + getEtherwarpPathSize(): number; + getKeyNodeCount(): number; + getLastTimeMs(): number; + getEtherwarpLastTimeMs(): number; + getNodesExplored(): number; + getEtherwarpNodesExplored(): number; + getNanosecondsPerNode(): number; + getEtherwarpNanosecondsPerNode(): number; + getSelectedStartIndex(): number; + setSearchVariantSeed(seed: number): void; + getLastError(): string | null | undefined; + hasPath(): boolean; + hasEtherwarpPath(): boolean; + clear(): void; + new(): com.chattriggers.ctjs.api.world.pathfinding.PathManager; + getFLAG_FLUID_FEET(): number; + getFLAG_FLUID_HEAD(): number; + getFLAG_LOW_HEADROOM(): number; + getFLAG_NEAR_EDGE(): number; + getFLAG_NEAR_WALL(): number; + getFLAG_STEP_UP_NEXT(): number; + getFLAG_DROP_NEXT(): number; + getFLAG_TIGHT_CORRIDOR(): number; + getETHERWARP_VOXEL_SOLID(): number; + getETHERWARP_VOXEL_FENCE_LIKE(): number; + getETHERWARP_VOXEL_TELEPORT_CLEAR(): number; + getETHERWARP_VOXEL_FEET_BLOCKER(): number; + } + const Swift: { + new(): com.chattriggers.ctjs.api.world.pathfinding.Swift; + } + interface Swift extends net.fabricmc.api.ClientModInitializer { + } + const Swift$Companion: { + executor: java.util.concurrent.ExecutorService; + new(): com.chattriggers.ctjs.api.world.pathfinding.Swift$Companion; + } + interface Swift$Companion { + executor: java.util.concurrent.ExecutorService; + new(): com.chattriggers.ctjs.api.world.pathfinding.Swift$Companion; + getCHUNKS_PER_TICK(): number; + getMAXIMUM_CACHED_CHUNKS(): number; + } + const WynncraftManager: { + new(): com.chattriggers.ctjs.api.world.pathfinding.WynncraftManager; + } + interface WynncraftManager { + new(): com.chattriggers.ctjs.api.world.pathfinding.WynncraftManager; + init(): void; + onDisconnect(): void; + } + const CachedWorld: { + getBlockFlags(x: number, y: number, z: number): number | null | undefined; + getChunk(x: number, z: number): com.chattriggers.ctjs.api.world.pathfinding.CachedChunk | null | undefined; + new(): com.chattriggers.ctjs.api.world.pathfinding.CachedWorld; + } + interface CachedWorld { + getBlockFlags(x: number, y: number, z: number): number | null | undefined; + getChunk(x: number, z: number): com.chattriggers.ctjs.api.world.pathfinding.CachedChunk | null | undefined; + new(): com.chattriggers.ctjs.api.world.pathfinding.CachedWorld; + onPacketReceive(packet: net.minecraft.network.protocol.Packet): void; + processPendingChunks(): void; + saveAndClear(lobbyName: string): void; + load(lobbyName: string): void; + waitForLoad(): void; + clear(): void; + getCacheStats(): string; + setUnlimitedChunkCache(enabled: boolean): void; + setWorldKey(newWorldKey: string | null | undefined): void; + } + } + const Chunk: { + new(mcValue: net.minecraft.world.level.chunk.ChunkAccess): com.chattriggers.ctjs.api.world.Chunk; + } + interface Chunk extends com.chattriggers.ctjs.api.CTWrapper { + /** + * Gets the x position of the chunk + */ + getX(): number; + /** + * Gets the z position of the chunk + */ + getZ(): number; + /** + * Gets the minimum x coordinate of a block in the chunk + * + * @return the minimum x coordinate + */ + getMinBlockX(): number; + /** + * Gets the minimum z coordinate of a block in the chunk + * + * @return the minimum z coordinate + */ + getMinBlockZ(): number; + /** + * Gets every entity in this chunk + * + * @return the entity list + */ + getAllEntities(): Array; + /** + * Gets every entity in this chunk of a certain class + * + * @param clazz the class to filter for (Use `Java.type().class` to get this) + * @return the entity list + */ + getAllEntitiesOfType(clazz: java.lang.Class): Array; + /** + * Gets every block entity in this chunk + * + * @return the block entity list + */ + getAllBlockEntities(): Array; + /** + * Gets every block entity in this chunk of a certain class + * + * @param clazz the class to filter for (Use `Java.type().class` to get this) + * @return the block entity list + */ + getAllBlockEntitiesOfType(clazz: java.lang.Class): Array; + } + const PotionEffectType: { + new(type: net.minecraft.world.effect.MobEffect): com.chattriggers.ctjs.api.world.PotionEffectType; + } + interface PotionEffectType { + getType(): net.minecraft.world.effect.MobEffect; + /** + * The Int associated with this type + */ + getRawId(): number; + /** + * Whether this effect is instant (e.g. instant health) + */ + isInstant(): boolean; + /** + * The raw key used for this effect type + */ + getTranslationKey(): string; + /** + * The user-friendly name of this type as a [TextComponent] + */ + getName(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * The [net.minecraft.entity.effect.StatusEffectCategory] of this type + */ + getCategory(): net.minecraft.world.effect.MobEffectCategory; + /** + * The color of this type + */ + getColor(): java.awt.Color; + } + const PotionEffect: { + new(effect: net.minecraft.world.effect.MobEffectInstance): com.chattriggers.ctjs.api.world.PotionEffect; + } + interface PotionEffect { + getEffect(): net.minecraft.world.effect.MobEffectInstance; + /** + * The type of this potion + */ + getType(): com.chattriggers.ctjs.api.world.PotionEffectType; + /** + * Returns the translation key of the potion. + * Ex: "potion.poison" + */ + getName(): string; + /** + * Returns the localized name of the potion that + * is displayed in the player's inventory. + * Ex: "Poison" + */ + getLocalizedName(): string; + getAmplifier(): number; + getDuration(): number; + getId(): number; + getAmbient(): boolean; + isInfinite(): boolean; + getShowsParticles(): boolean; + } + const BossBars: { + BossBar: typeof com.chattriggers.ctjs.api.world.BossBars$BossBar; + Color: typeof com.chattriggers.ctjs.api.world.BossBars$Color; + Style: typeof com.chattriggers.ctjs.api.world.BossBars$Style; + toMC(): net.minecraft.client.gui.components.BossHealthOverlay; + /** + * Gets the list of currently shown [BossBar]s + * + * @return the currently displayed [BossBar]s + */ + getBossBars(): Array; + /** + * Gets all [BossBar]s with a given name + * + * @param name the name to match + * @return the [BossBar]s + */ + getBossBarsByName(name: string): Array; + /** + * Adds a new [BossBar] to be displayed + * + * Takes a parameter with the following options: + * - name: The name to appear above the BossBar. Defaults to an empty string + * - percent: The percent full the BossBar is. Defaults to 1 (full health) + * - color: The color of the BossBar. Can be any [Color], but defaults to white + * - sections: The number of notches/sections to appear on the BossBar. Can be any [Style], but + * defaults to 1 entire section + * - darkenSky: Whether the BossBar should darken the screen of the player. Defaults to false + * - dragonMusic: Whether the BossBar should play dragon music while in the End. Defaults to false + * - thickenFog: Whether the BossBar should thicken the fog around the player. Defaults to false + * + * @param obj An options bag + * + * @return the [BossBar] for further modification + */ + addBossBar(obj: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.world.BossBars$BossBar; + /** + * Clears all [BossBar]s on screen + */ + clearBossBars(): void; + /** + * Removes all [BossBar]s with the given name + * + * @param name the name to match + */ + removeBossBarsByName(name: string): void; + /** + * Removes the given [BossBar] + * + * @param bossBar the BossBar to remove + */ + removeBossBar(bossBar: com.chattriggers.ctjs.api.world.BossBars$BossBar): void; + new(): com.chattriggers.ctjs.api.world.BossBars; + } + interface BossBars { + toMC(): net.minecraft.client.gui.components.BossHealthOverlay; + /** + * Gets the list of currently shown [BossBar]s + * + * @return the currently displayed [BossBar]s + */ + getBossBars(): Array; + /** + * Gets all [BossBar]s with a given name + * + * @param name the name to match + * @return the [BossBar]s + */ + getBossBarsByName(name: string): Array; + /** + * Adds a new [BossBar] to be displayed + * + * Takes a parameter with the following options: + * - name: The name to appear above the BossBar. Defaults to an empty string + * - percent: The percent full the BossBar is. Defaults to 1 (full health) + * - color: The color of the BossBar. Can be any [Color], but defaults to white + * - sections: The number of notches/sections to appear on the BossBar. Can be any [Style], but + * defaults to 1 entire section + * - darkenSky: Whether the BossBar should darken the screen of the player. Defaults to false + * - dragonMusic: Whether the BossBar should play dragon music while in the End. Defaults to false + * - thickenFog: Whether the BossBar should thicken the fog around the player. Defaults to false + * + * @param obj An options bag + * + * @return the [BossBar] for further modification + */ + addBossBar(obj: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.world.BossBars$BossBar; + /** + * Clears all [BossBar]s on screen + */ + clearBossBars(): void; + /** + * Removes all [BossBar]s with the given name + * + * @param name the name to match + */ + removeBossBarsByName(name: string): void; + /** + * Removes the given [BossBar] + * + * @param bossBar the BossBar to remove + */ + removeBossBar(bossBar: com.chattriggers.ctjs.api.world.BossBars$BossBar): void; + new(): com.chattriggers.ctjs.api.world.BossBars; + } + const BossBars$BossBar: { + new(mcValue: net.minecraft.client.gui.components.LerpingBossEvent): com.chattriggers.ctjs.api.world.BossBars$BossBar; + } + interface BossBars$BossBar extends com.chattriggers.ctjs.api.CTWrapper { + /** + * Gets the UUID of this BossBar + * + * @return the uuid + */ + getUUID(): java.util.UUID; + /** + * Gets the name of this BossBar + * + * @return the name + */ + getName(): string; + /** + * Sets the name of this BossBar + * + * @param name the name to set + */ + setName(name: string): com.chattriggers.ctjs.api.world.BossBars$BossBar; + /** + * Gets how full this BossBar is + * + * @return how full the BossBar is + */ + getPercent(): number; + /** + * Sets how full this BossBar is + * + * @param percent how full to set this BossBar. Must be between 0 and 1 + */ + setPercent(percent: number): com.chattriggers.ctjs.api.world.BossBars$BossBar; + /** + * Gets the [Color] of this BossBar + */ + getColor(): com.chattriggers.ctjs.api.world.BossBars$Color; + /** + * Sets the [Color] of this BossBar + * + * @param color the color to set. Can be [Color], [MCBossBarColor], or a string + */ + setColor(color: any): com.chattriggers.ctjs.api.world.BossBars$BossBar; + /** + * Gets the style of this BossBar. e.g. how many notches are displayed + */ + getStyle(): com.chattriggers.ctjs.api.world.BossBars$Style; + /** + * Sets the style of this BossBar + * + * @param style the style to set. Can be [Style], [MCBossBarStyle], a string, + * or a number of how many notches to put + */ + setStyle(style: any): com.chattriggers.ctjs.api.world.BossBars$BossBar; + /** + * Gets whether this BossBar darkens the sky + */ + shouldDarkenSky(): boolean; + /** + * Sets whether this BossBar should darken the sky + * + * @param darken whether to darken the sky + */ + setShouldDarkenSky(darken: boolean): com.chattriggers.ctjs.api.world.BossBars$BossBar; + /** + * Gets whether this BossBar will play dragon music. + * This will do nothing when the player is not in the end dimension + */ + hasDragonMusic(): boolean; + /** + * Sets whether this BossBar will play dragon music + * + * @param music whether to play dragon music + */ + setHasDragonMusic(music: boolean): com.chattriggers.ctjs.api.world.BossBars$BossBar; + /** + * Gets whether this BossBar should thicken the fog around the player + */ + shouldThickenFog(): boolean; + /** + * Sets whether this BossBar should thicken the fog around the player + * + * @param fog whether to thicken the fog + */ + setShouldThickenFog(fog: boolean): com.chattriggers.ctjs.api.world.BossBars$BossBar; + } + const BossBars$Color: { + PINK: com.chattriggers.ctjs.api.world.BossBars$Color; + BLUE: com.chattriggers.ctjs.api.world.BossBars$Color; + RED: com.chattriggers.ctjs.api.world.BossBars$Color; + GREEN: com.chattriggers.ctjs.api.world.BossBars$Color; + YELLOW: com.chattriggers.ctjs.api.world.BossBars$Color; + PURPLE: com.chattriggers.ctjs.api.world.BossBars$Color; + WHITE: com.chattriggers.ctjs.api.world.BossBars$Color; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.world.BossBars$Color; + } + interface BossBars$Color extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { + } + const BossBars$Color$Companion: { + fromMC(mcValue: net.minecraft.world.BossEvent$BossBarColor): com.chattriggers.ctjs.api.world.BossBars$Color; + from(value: any): com.chattriggers.ctjs.api.world.BossBars$Color; + new(): unknown; + } + interface BossBars$Color$Companion { + fromMC(mcValue: net.minecraft.world.BossEvent$BossBarColor): com.chattriggers.ctjs.api.world.BossBars$Color; + from(value: any): com.chattriggers.ctjs.api.world.BossBars$Color; + new(): unknown; + } + const BossBars$Style: { + ONE: com.chattriggers.ctjs.api.world.BossBars$Style; + SIX: com.chattriggers.ctjs.api.world.BossBars$Style; + TEN: com.chattriggers.ctjs.api.world.BossBars$Style; + TWELVE: com.chattriggers.ctjs.api.world.BossBars$Style; + TWENTY: com.chattriggers.ctjs.api.world.BossBars$Style; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.world.BossBars$Style; + } + interface BossBars$Style extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { + getSections(): number; + } + const BossBars$Style$Companion: { + fromMC(mcValue: net.minecraft.world.BossEvent$BossBarOverlay): com.chattriggers.ctjs.api.world.BossBars$Style; + from(value: any): com.chattriggers.ctjs.api.world.BossBars$Style; + new(): unknown; + } + interface BossBars$Style$Companion { + fromMC(mcValue: net.minecraft.world.BossEvent$BossBarOverlay): com.chattriggers.ctjs.api.world.BossBars$Style; + from(value: any): com.chattriggers.ctjs.api.world.BossBars$Style; + new(): unknown; + } + const Server: { + toMC(): net.minecraft.client.multiplayer.ServerData | null | undefined; + isSingleplayer(): boolean; + /** + * Gets the current server's IP, or "localhost" if the player + * is in a single-player world. + * + * @return The IP of the current server + */ + getIP(): string; + /** + * Gets the current server's name, or "SinglePlayer" if the player + * is in a single-player world. + * + * @return The name of the current server + */ + getName(): string; + /** + * Gets the current server's MOTD, or "SinglePlayer" if the player + * is in a single-player world. + * + * @return The MOTD of the current server + */ + getMOTD(): string; + /** + * Gets the ping to the current server, or 5 if the player + * is in a single-player world. Returns -1 if not in a world + * + * @return The ping to the current server + */ + getPing(): number; + new(): com.chattriggers.ctjs.api.world.Server; + } + interface Server { + toMC(): net.minecraft.client.multiplayer.ServerData | null | undefined; + isSingleplayer(): boolean; + /** + * Gets the current server's IP, or "localhost" if the player + * is in a single-player world. + * + * @return The IP of the current server + */ + getIP(): string; + /** + * Gets the current server's name, or "SinglePlayer" if the player + * is in a single-player world. + * + * @return The name of the current server + */ + getName(): string; + /** + * Gets the current server's MOTD, or "SinglePlayer" if the player + * is in a single-player world. + * + * @return The MOTD of the current server + */ + getMOTD(): string; + /** + * Gets the ping to the current server, or 5 if the player + * is in a single-player world. Returns -1 if not in a world + * + * @return The ping to the current server + */ + getPing(): number; + new(): com.chattriggers.ctjs.api.world.Server; + } + const World: { + BorderWrapper: typeof com.chattriggers.ctjs.api.world.World$BorderWrapper; + SpawnWrapper: typeof com.chattriggers.ctjs.api.world.World$SpawnWrapper; + ParticleWrapper: typeof com.chattriggers.ctjs.api.world.World$ParticleWrapper; + spawn: com.chattriggers.ctjs.api.world.World$SpawnWrapper; + particle: com.chattriggers.ctjs.api.world.World$ParticleWrapper; + border: com.chattriggers.ctjs.api.world.World$BorderWrapper; + toMC(): net.minecraft.client.multiplayer.ClientLevel | null | undefined; + getWorld(): net.minecraft.client.multiplayer.ClientLevel | null | undefined; + isLoaded(): boolean; + isRaining(): boolean; + getTime(): number; + /** + * Gets the [Block] at a location in the world. + * + * @param x the x position + * @param y the y position + * @param z the z position + * @return the [Block] at the location + */ + getBlockAt(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.block.Block; + /** + * Gets the [Block] at a location in the world. + * + * @param pos The block position + * @return the [Block] at the location + */ + getBlockAt(pos: com.chattriggers.ctjs.api.world.block.BlockPos): com.chattriggers.ctjs.api.world.block.Block; + getBlocksInBox(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): Array; + getBlocksInBox(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number, types: Array): Array; + /** + * Gets the [BlockState] at a location in the world. + * + * @param pos The block position + * @return the [BlockState] at the location + */ + getBlockStateAt(pos: com.chattriggers.ctjs.api.world.block.BlockPos): net.minecraft.world.level.block.state.BlockState; + /** + * Gets the skylight level at the given position. This is the value seen in the debug (F3) menu + * + * @param x the x coordinate + * @param y the y coordinate + * @param z the z coordinate + * @return the skylight level at the location + */ + getSkyLightLevel(x: number, y: number, z: number): number; + /** + * Gets the skylight level at the given position. This is the value seen in the debug (F3) menu + * + * @param pos The block position + * @return the skylight level at the location + */ + getSkyLightLevel(pos: com.chattriggers.ctjs.api.world.block.BlockPos): number; + /** + * Gets the block light level at the given position. This is the value seen in the debug (F3) menu + * + * @param x the x coordinate + * @param y the y coordinate + * @param z the z coordinate + * @return the block light level at the location + */ + getBlockLightLevel(x: number, y: number, z: number): number; + /** + * Gets the block light level at the given position. This is the value seen in the debug (F3) menu + * + * @param pos The block position + * @return the block light level at the location + */ + getBlockLightLevel(pos: com.chattriggers.ctjs.api.world.block.BlockPos): number; + /** + * Gets all of the players in the world, and returns their wrapped versions. + * + * @return the players + */ + getAllPlayers(): Array; + /** + * Gets a player by their username, must be in the currently loaded chunks! + * + * @param name the username + * @return the player with said username, or null if they don't exist. + */ + getPlayerByName(name: string): com.chattriggers.ctjs.api.entity.PlayerMP | null | undefined; + getChunk(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.Chunk; + getAllEntities(): Array; + /** + * Gets every entity loaded in the world of a certain class + * + * @param clazz the class to filter for (Use `Java.type().class` to get this) + * @return the entity list + */ + getAllEntitiesOfType(clazz: java.lang.Class): Array; + getAllBlockEntities(): Array; + getAllBlockEntitiesOfType(clazz: java.lang.Class): Array; + /** + * Returns the TPS of the current world. + * + * On modern version (1.20.3+), this is variable. On earlier versions, + * it is always 20. + */ + getTicksPerSecond(): number; + new(): com.chattriggers.ctjs.api.world.World; + } + interface World { + spawn: com.chattriggers.ctjs.api.world.World$SpawnWrapper; + particle: com.chattriggers.ctjs.api.world.World$ParticleWrapper; + border: com.chattriggers.ctjs.api.world.World$BorderWrapper; + toMC(): net.minecraft.client.multiplayer.ClientLevel | null | undefined; + getWorld(): net.minecraft.client.multiplayer.ClientLevel | null | undefined; + isLoaded(): boolean; + isRaining(): boolean; + getTime(): number; + /** + * Gets the [Block] at a location in the world. + * + * @param x the x position + * @param y the y position + * @param z the z position + * @return the [Block] at the location + */ + getBlockAt(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.block.Block; + /** + * Gets the [Block] at a location in the world. + * + * @param pos The block position + * @return the [Block] at the location + */ + getBlockAt(pos: com.chattriggers.ctjs.api.world.block.BlockPos): com.chattriggers.ctjs.api.world.block.Block; + getBlocksInBox(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): Array; + getBlocksInBox(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number, types: Array): Array; + /** + * Gets the [BlockState] at a location in the world. + * + * @param pos The block position + * @return the [BlockState] at the location + */ + getBlockStateAt(pos: com.chattriggers.ctjs.api.world.block.BlockPos): net.minecraft.world.level.block.state.BlockState; + /** + * Gets the skylight level at the given position. This is the value seen in the debug (F3) menu + * + * @param x the x coordinate + * @param y the y coordinate + * @param z the z coordinate + * @return the skylight level at the location + */ + getSkyLightLevel(x: number, y: number, z: number): number; + /** + * Gets the skylight level at the given position. This is the value seen in the debug (F3) menu + * + * @param pos The block position + * @return the skylight level at the location + */ + getSkyLightLevel(pos: com.chattriggers.ctjs.api.world.block.BlockPos): number; + /** + * Gets the block light level at the given position. This is the value seen in the debug (F3) menu + * + * @param x the x coordinate + * @param y the y coordinate + * @param z the z coordinate + * @return the block light level at the location + */ + getBlockLightLevel(x: number, y: number, z: number): number; + /** + * Gets the block light level at the given position. This is the value seen in the debug (F3) menu + * + * @param pos The block position + * @return the block light level at the location + */ + getBlockLightLevel(pos: com.chattriggers.ctjs.api.world.block.BlockPos): number; + /** + * Gets all of the players in the world, and returns their wrapped versions. + * + * @return the players + */ + getAllPlayers(): Array; + /** + * Gets a player by their username, must be in the currently loaded chunks! + * + * @param name the username + * @return the player with said username, or null if they don't exist. + */ + getPlayerByName(name: string): com.chattriggers.ctjs.api.entity.PlayerMP | null | undefined; + getChunk(x: number, y: number, z: number): com.chattriggers.ctjs.api.world.Chunk; + getAllEntities(): Array; + /** + * Gets every entity loaded in the world of a certain class + * + * @param clazz the class to filter for (Use `Java.type().class` to get this) + * @return the entity list + */ + getAllEntitiesOfType(clazz: java.lang.Class): Array; + getAllBlockEntities(): Array; + getAllBlockEntitiesOfType(clazz: java.lang.Class): Array; + /** + * Returns the TPS of the current world. + * + * On modern version (1.20.3+), this is variable. On earlier versions, + * it is always 20. + */ + getTicksPerSecond(): number; + new(): com.chattriggers.ctjs.api.world.World; + } + const World$SpawnWrapper: { + /** + * World spawn object for getting spawn location. + */ + new(): com.chattriggers.ctjs.api.world.World$SpawnWrapper; + } + interface World$SpawnWrapper { + /** + * Gets the spawn x location. + * + * @return the spawn x location. + */ + getX(): number; + /** + * Gets the spawn y location. + * + * @return the spawn y location. + */ + getY(): number; + /** + * Gets the spawn z location. + * + * @return the spawn z location. + */ + getZ(): number; + } + const World$ParticleWrapper: { + new(): com.chattriggers.ctjs.api.world.World$ParticleWrapper; + } + interface World$ParticleWrapper { + /** + * Gets an array of all the different particle names you can pass + * to [spawnParticle] + * + * @return the array of name strings + */ + getParticleNames(): Array; + /** + * Spawns a particle into the world with the given attributes, + * which can be configured further with the returned [com.chattriggers.ctjs.api.entity.Particle] + * + * @param particle the name of the particle to spawn, see [getParticleNames] + * @param x the x coordinate to spawn the particle at + * @param y the y coordinate to spawn the particle at + * @param z the z coordinate to spawn the particle at + * @param xSpeed the motion the particle should have in the x direction + * @param ySpeed the motion the particle should have in the y direction + * @param zSpeed the motion the particle should have in the z direction + * @return the newly spawned particle for further configuration + */ + spawnParticle(particle: string, x: number, y: number, z: number, xSpeed: number, ySpeed: number, zSpeed: number): com.chattriggers.ctjs.api.entity.Particle | null | undefined; + spawnParticle(particle: net.minecraft.client.particle.Particle): com.chattriggers.ctjs.api.entity.Particle; + } + const World$BorderWrapper: { + /** + * World border object to get border parameters + */ + new(): com.chattriggers.ctjs.api.world.World$BorderWrapper; + } + interface World$BorderWrapper { + /** + * Gets the border center x location. + * + * @return the border center x location + */ + getCenterX(): number; + /** + * Gets the border center z location. + * + * @return the border center z location + */ + getCenterZ(): number; + /** + * Gets the border size. + * + * @return the border size + */ + getSize(): number; + } + const StructureFinder: { + submitChunkScan(chunkX: number, chunkZ: number): void; + submitBlockUpdate(blockX: number, blockY: number, blockZ: number): void; + getRenderBlocksArray(): Array; + getRenderLabelsArray(): Array; + clear(): void; + shutdown(): void; + new(): com.chattriggers.ctjs.api.world.StructureFinder; + } + interface StructureFinder { + submitChunkScan(chunkX: number, chunkZ: number): void; + submitBlockUpdate(blockX: number, blockY: number, blockZ: number): void; + getRenderBlocksArray(): Array; + getRenderLabelsArray(): Array; + clear(): void; + shutdown(): void; + new(): com.chattriggers.ctjs.api.world.StructureFinder; + } + const TabList: { + Name: typeof com.chattriggers.ctjs.api.world.TabList$Name; + toMC(): net.minecraft.client.gui.components.PlayerTabOverlay | null | undefined; + /** + * Gets the scoreboard objective corresponding to the tab list, or null if it doesn't exist + */ + getObjective(): net.minecraft.world.scores.Objective | null | undefined; + /** + * Gets the tab list header as a [TextComponent] + * + * @return the header + */ + getHeaderComponent(): com.chattriggers.ctjs.api.message.TextComponent | null | undefined; + /** + * Gets the tab list header as a formatted string. + * + * @return the header + */ + getHeader(): string | null | undefined; + /** + * Sets the header text for the TabList. + * If [header] is null, it will remove the header entirely + * + * @param header the header to set, or null to clear + */ + setHeader(header: any | null | undefined): void; + clearHeader(): void; + /** + * Gets the tab list footer as a [TextComponent] + * + * @return the footer + */ + getFooterComponent(): com.chattriggers.ctjs.api.message.TextComponent | null | undefined; + /** + * Gets the tab list footer as a string. + * Be aware that this can contain color codes. + * + * @return the footer + */ + getFooter(): string | null | undefined; + /** + * Sets the footer text for the TabList. + * If [footer] is null, it will remove the footer entirely + * + * @param footer the footer to set, or null to clear + */ + setFooter(footer: any | null | undefined): void; + clearFooter(): void; + /** + * Gets names set in scoreboard objectives + * + * @return The formatted names + */ + getNamesByObjectives(): Array; + /** + * Get all names on the tab list + * + * @return the list of names + */ + getNames(): Array; + /** + * Gets all names in tabs without formatting + * + * @return the unformatted names + */ + getUnformattedNames(): Array; + /** + * Adds a new name to the tab list + * + * @param name the formatted name to add + * @param useExistingSkin whether to use the skin of the associated Minecraft account using [name]. + * If false, will use a random default skin (Steve, Alex, etc) + */ + addName(name: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Adds a new name to the tab list + * + * @param name the formatted name to add + * @param useExistingSkin whether to use the skin of the associated Minecraft account using [name]. + * If false, will use a random default skin (Steve, Alex, etc) + */ + addName(name: com.chattriggers.ctjs.api.message.TextComponent, useExistingSkin: boolean): void; + addName(name: string): void; + addName(name: string, useExistingSkin: boolean): void; + /** + * Removes all names from the tab list with a certain name + * + * @param name the name of the entry to remove + */ + removeNames(name: com.chattriggers.ctjs.api.message.TextComponent): void; + removeNames(name: string): void; + new(): com.chattriggers.ctjs.api.world.TabList; + } + interface TabList { + toMC(): net.minecraft.client.gui.components.PlayerTabOverlay | null | undefined; + /** + * Gets the scoreboard objective corresponding to the tab list, or null if it doesn't exist + */ + getObjective(): net.minecraft.world.scores.Objective | null | undefined; + /** + * Gets the tab list header as a [TextComponent] + * + * @return the header + */ + getHeaderComponent(): com.chattriggers.ctjs.api.message.TextComponent | null | undefined; + /** + * Gets the tab list header as a formatted string. + * + * @return the header + */ + getHeader(): string | null | undefined; + /** + * Sets the header text for the TabList. + * If [header] is null, it will remove the header entirely + * + * @param header the header to set, or null to clear + */ + setHeader(header: any | null | undefined): void; + clearHeader(): void; + /** + * Gets the tab list footer as a [TextComponent] + * + * @return the footer + */ + getFooterComponent(): com.chattriggers.ctjs.api.message.TextComponent | null | undefined; + /** + * Gets the tab list footer as a string. + * Be aware that this can contain color codes. + * + * @return the footer + */ + getFooter(): string | null | undefined; + /** + * Sets the footer text for the TabList. + * If [footer] is null, it will remove the footer entirely + * + * @param footer the footer to set, or null to clear + */ + setFooter(footer: any | null | undefined): void; + clearFooter(): void; + /** + * Gets names set in scoreboard objectives + * + * @return The formatted names + */ + getNamesByObjectives(): Array; + /** + * Get all names on the tab list + * + * @return the list of names + */ + getNames(): Array; + /** + * Gets all names in tabs without formatting + * + * @return the unformatted names + */ + getUnformattedNames(): Array; + /** + * Adds a new name to the tab list + * + * @param name the formatted name to add + * @param useExistingSkin whether to use the skin of the associated Minecraft account using [name]. + * If false, will use a random default skin (Steve, Alex, etc) + */ + addName(name: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Adds a new name to the tab list + * + * @param name the formatted name to add + * @param useExistingSkin whether to use the skin of the associated Minecraft account using [name]. + * If false, will use a random default skin (Steve, Alex, etc) + */ + addName(name: com.chattriggers.ctjs.api.message.TextComponent, useExistingSkin: boolean): void; + addName(name: string): void; + addName(name: string, useExistingSkin: boolean): void; + /** + * Removes all names from the tab list with a certain name + * + * @param name the name of the entry to remove + */ + removeNames(name: com.chattriggers.ctjs.api.message.TextComponent): void; + removeNames(name: string): void; + new(): com.chattriggers.ctjs.api.world.TabList; + } + const TabList$Name: { + new(mcValue: net.minecraft.client.multiplayer.PlayerInfo): com.chattriggers.ctjs.api.world.TabList$Name; + } + interface TabList$Name extends com.chattriggers.ctjs.api.CTWrapper { + /** + * Gets the latency associated with this name + * + * @return the latency + */ + getLatency(): number; + /** + * Sets the latency associated with this name. + * - latency between 0 and 149 represents all 5 bars + * - latency between 150 and 299 represents 4 bars + * - latency between 300 and 599 represents 3 bars + * - latency between 600 and 999 represents 2 bars + * - latency between 1000 and more represents 1 bar + * + * @param latency the latency to set + * @return the name to allow for method chaining + */ + setLatency(latency: number): com.chattriggers.ctjs.api.world.TabList$Name; + /** + * Gets the team associated with this name, if it exists + * + * @return the team, or null if it does not exist + */ + getTeam(): com.chattriggers.ctjs.api.entity.Team | null | undefined; + /** + * Sets the team associated with this name + * + * @param team the new team to set for this name. Custom teams can be created + * using [Scoreboard.createTeam] + * @return the score to allow for method chaining + */ + setTeam(team: com.chattriggers.ctjs.api.entity.Team | null | undefined): com.chattriggers.ctjs.api.world.TabList$Name; + /** + * Gets the display text of this name + * + * @return the display name + */ + getName(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Sets the display name of this name + * + * @param name the new name + * @return the name to allow for method chaining + */ + setName(name: com.chattriggers.ctjs.api.message.TextComponent | null | undefined): com.chattriggers.ctjs.api.world.TabList$Name; + /** + * Removes this name from the tab list + */ + remove(): void; + } + const Scoreboard: { + Score: typeof com.chattriggers.ctjs.api.world.Scoreboard$Score; + toMC(): net.minecraft.world.scores.Scoreboard | null | undefined; + getSidebar(): net.minecraft.world.scores.Objective | null | undefined; + /** + * Gets the top-most string which is displayed on the scoreboard. (doesn't have a score on the side). + * Be aware that this can contain color codes. + * + * @return the scoreboard title + */ + getTitle(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Sets the scoreboard title. + * + * @param title the new title + * @return the scoreboard title + */ + setTitle(title: com.chattriggers.ctjs.api.message.TextComponent): void; + setTitle(title: string): void; + /** + * Get all currently visible strings on the scoreboard. (excluding title) + * Be aware that this can contain color codes. + * + * @return the list of lines + */ + getLines(): Array; + /** + * Get all currently visible strings on the scoreboard. (excluding title) + * Be aware that this can contain color codes. + * + * @return the list of lines + */ + getLines(descending: boolean): Array; + /** + * Gets the line at the specified index (0 based) + * Equivalent to Scoreboard.getLines().get(index) + * + * @param index the line index + * @return the score object at the index + */ + getLineByIndex(index: number): com.chattriggers.ctjs.api.world.Scoreboard$Score; + /** + * Gets a list of lines that have a certain score, + * i.e. the numbers shown on the right + * + * @param score the score to look for + * @return a list of actual score objects + */ + getLinesByScore(score: number): Array; + /** + * Sets a line in the scoreboard to the specified name and score. + * + * @param score the score value for this item + * @param line the [TextComponent] to display on said line + * @param override whether to remove old lines with the same score + */ + setLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Sets a line in the scoreboard to the specified name and score. + * + * @param score the score value for this item + * @param line the [TextComponent] to display on said line + * @param override whether to remove old lines with the same score + */ + setLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent, override: boolean): void; + setLine(score: number, line: string): void; + setLine(score: number, line: string, override: boolean): void; + /** + * Adds a line to the scoreboard + * + * @param score the score value for this item + * @param line the [TextComponent] to display on said line + */ + addLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent): void; + addLine(score: number, line: string): void; + /** + * Removes all lines from the scoreboard matching with a certain score + * + * @param score the score of the lines to remove + */ + removeScores(score: number): void; + /** + * Removes the line at a certain index + * + * @param index the index of the line to remove + */ + removeIndex(index: number): void; + /** + * Removes the line at a certain index + * + * @param index the index of the line to remove + */ + removeIndex(index: number, descending: boolean): void; + setShouldRender(shouldRender: boolean): void; + getShouldRender(): boolean; + /** + * Creates or gets a [Team] with a given name + * + * @param name the name of the team + */ + createTeam(name: string): com.chattriggers.ctjs.api.entity.Team; + new(): com.chattriggers.ctjs.api.world.Scoreboard; + } + interface Scoreboard { + toMC(): net.minecraft.world.scores.Scoreboard | null | undefined; + getSidebar(): net.minecraft.world.scores.Objective | null | undefined; + /** + * Gets the top-most string which is displayed on the scoreboard. (doesn't have a score on the side). + * Be aware that this can contain color codes. + * + * @return the scoreboard title + */ + getTitle(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Sets the scoreboard title. + * + * @param title the new title + * @return the scoreboard title + */ + setTitle(title: com.chattriggers.ctjs.api.message.TextComponent): void; + setTitle(title: string): void; + /** + * Get all currently visible strings on the scoreboard. (excluding title) + * Be aware that this can contain color codes. + * + * @return the list of lines + */ + getLines(): Array; + /** + * Get all currently visible strings on the scoreboard. (excluding title) + * Be aware that this can contain color codes. + * + * @return the list of lines + */ + getLines(descending: boolean): Array; + /** + * Gets the line at the specified index (0 based) + * Equivalent to Scoreboard.getLines().get(index) + * + * @param index the line index + * @return the score object at the index + */ + getLineByIndex(index: number): com.chattriggers.ctjs.api.world.Scoreboard$Score; + /** + * Gets a list of lines that have a certain score, + * i.e. the numbers shown on the right + * + * @param score the score to look for + * @return a list of actual score objects + */ + getLinesByScore(score: number): Array; + /** + * Sets a line in the scoreboard to the specified name and score. + * + * @param score the score value for this item + * @param line the [TextComponent] to display on said line + * @param override whether to remove old lines with the same score + */ + setLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Sets a line in the scoreboard to the specified name and score. + * + * @param score the score value for this item + * @param line the [TextComponent] to display on said line + * @param override whether to remove old lines with the same score + */ + setLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent, override: boolean): void; + setLine(score: number, line: string): void; + setLine(score: number, line: string, override: boolean): void; + /** + * Adds a line to the scoreboard + * + * @param score the score value for this item + * @param line the [TextComponent] to display on said line + */ + addLine(score: number, line: com.chattriggers.ctjs.api.message.TextComponent): void; + addLine(score: number, line: string): void; + /** + * Removes all lines from the scoreboard matching with a certain score + * + * @param score the score of the lines to remove + */ + removeScores(score: number): void; + /** + * Removes the line at a certain index + * + * @param index the index of the line to remove + */ + removeIndex(index: number): void; + /** + * Removes the line at a certain index + * + * @param index the index of the line to remove + */ + removeIndex(index: number, descending: boolean): void; + setShouldRender(shouldRender: boolean): void; + getShouldRender(): boolean; + /** + * Creates or gets a [Team] with a given name + * + * @param name the name of the team + */ + createTeam(name: string): com.chattriggers.ctjs.api.entity.Team; + new(): com.chattriggers.ctjs.api.world.Scoreboard; + } + const Scoreboard$Score: { + new(mcValue: net.minecraft.world.scores.ScoreAccess): com.chattriggers.ctjs.api.world.Scoreboard$Score; + } + interface Scoreboard$Score extends com.chattriggers.ctjs.api.CTWrapper { + /** + * Gets the team associated with this score, if it exists + * + * @return the team, or null if it does not exist + */ + getTeam(): com.chattriggers.ctjs.api.entity.Team | null | undefined; + /** + * Sets the team associated with this score + * + * @param team the new team to set for this line. Custom teams can be created using [createTeam] + * @return the score to allow for method chaining + */ + setTeam(team: com.chattriggers.ctjs.api.entity.Team | null | undefined): com.chattriggers.ctjs.api.world.Scoreboard$Score; + /** + * Gets the score value for this score, + * i.e. the number on the right of the board + * + * @return the actual point value + */ + getScore(): number; + /** + * Sets the score value for this score + * + * @param score the new point value + * @return the score to allow for method chaining + */ + setScore(score: number): com.chattriggers.ctjs.api.world.Scoreboard$Score; + /** + * Gets the display text of this score + * + * @return the display name + */ + getName(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Sets the name of this score + * + * @param name the new name + * @return the score to allow for method chaining + */ + setName(name: com.chattriggers.ctjs.api.message.TextComponent | null | undefined): com.chattriggers.ctjs.api.world.Scoreboard$Score; + /** + * Gets the number format of this score + * + * @return the number format + */ + getNumberFormat(): net.minecraft.network.chat.numbers.NumberFormat | null | undefined; + /** + * Sets the number format of this score + * + * @param format either a formatting string, i.e. "&6", style in the form of an object, see [TextComponent], a + * [NumberFormat], or hex value + * @return the score to allow for method chaining + * + * @see [TextComponent] + */ + setNumberFormat(format: any | null | undefined): com.chattriggers.ctjs.api.world.Scoreboard$Score; + /** + * Removes this score from the scoreboard + */ + remove(): void; + } + } + namespace vec { + const Vec3i: { + new(): com.chattriggers.ctjs.api.vec.Vec3i; + new(x: number): com.chattriggers.ctjs.api.vec.Vec3i; + new(x: number, y: number): com.chattriggers.ctjs.api.vec.Vec3i; + new(x: number, y: number, z: number): com.chattriggers.ctjs.api.vec.Vec3i; + } + interface Vec3i { + getX(): number; + getY(): number; + getZ(): number; + magnitudeSquared(): number; + magnitude(): number; + translated(dx: number, dy: number, dz: number): com.chattriggers.ctjs.api.vec.Vec3i; + scaled(scale: number): com.chattriggers.ctjs.api.vec.Vec3i; + scaled(xScale: number, yScale: number, zScale: number): com.chattriggers.ctjs.api.vec.Vec3i; + crossProduct(other: com.chattriggers.ctjs.api.vec.Vec3i): com.chattriggers.ctjs.api.vec.Vec3i; + dotProduct(other: com.chattriggers.ctjs.api.vec.Vec3i): number; + angleTo(other: com.chattriggers.ctjs.api.vec.Vec3i): number; + normalized(): com.chattriggers.ctjs.api.vec.Vec3f; + unaryMinus(): com.chattriggers.ctjs.api.vec.Vec3i; + plus(other: com.chattriggers.ctjs.api.vec.Vec3i): com.chattriggers.ctjs.api.vec.Vec3i; + minus(other: com.chattriggers.ctjs.api.vec.Vec3i): com.chattriggers.ctjs.api.vec.Vec3i; + } + const Vec3f: { + new(): com.chattriggers.ctjs.api.vec.Vec3f; + new(x: number): com.chattriggers.ctjs.api.vec.Vec3f; + new(x: number, y: number): com.chattriggers.ctjs.api.vec.Vec3f; + new(x: number, y: number, z: number): com.chattriggers.ctjs.api.vec.Vec3f; + } + interface Vec3f { + getX(): number; + getY(): number; + getZ(): number; + magnitudeSquared(): number; + magnitude(): number; + translated(dx: number, dy: number, dz: number): com.chattriggers.ctjs.api.vec.Vec3f; + scaled(scale: number): com.chattriggers.ctjs.api.vec.Vec3f; + scaled(xScale: number, yScale: number, zScale: number): com.chattriggers.ctjs.api.vec.Vec3f; + crossProduct(other: com.chattriggers.ctjs.api.vec.Vec3f): com.chattriggers.ctjs.api.vec.Vec3f; + dotProduct(other: com.chattriggers.ctjs.api.vec.Vec3f): number; + angleTo(other: com.chattriggers.ctjs.api.vec.Vec3f): number; + normalized(): com.chattriggers.ctjs.api.vec.Vec3f; + unaryMinus(): com.chattriggers.ctjs.api.vec.Vec3f; + plus(other: com.chattriggers.ctjs.api.vec.Vec3f): com.chattriggers.ctjs.api.vec.Vec3f; + minus(other: com.chattriggers.ctjs.api.vec.Vec3f): com.chattriggers.ctjs.api.vec.Vec3f; + component1(): number; + component2(): number; + component3(): number; + copy(x: number, y: number, z: number): com.chattriggers.ctjs.api.vec.Vec3f; + } + const Vec2f: { + new(): com.chattriggers.ctjs.api.vec.Vec2f; + new(x: number): com.chattriggers.ctjs.api.vec.Vec2f; + new(x: number, y: number): com.chattriggers.ctjs.api.vec.Vec2f; + } + interface Vec2f { + getX(): number; + getY(): number; + magnitudeSquared(): number; + magnitude(): number; + translated(dx: number, dy: number): com.chattriggers.ctjs.api.vec.Vec2f; + scaled(scale: number): com.chattriggers.ctjs.api.vec.Vec2f; + scaled(xScale: number, yScale: number): com.chattriggers.ctjs.api.vec.Vec2f; + dotProduct(other: com.chattriggers.ctjs.api.vec.Vec2f): number; + angleTo(other: com.chattriggers.ctjs.api.vec.Vec2f): number; + normalized(): com.chattriggers.ctjs.api.vec.Vec2f; + unaryMinus(): com.chattriggers.ctjs.api.vec.Vec2f; + plus(other: com.chattriggers.ctjs.api.vec.Vec2f): com.chattriggers.ctjs.api.vec.Vec2f; + minus(other: com.chattriggers.ctjs.api.vec.Vec2f): com.chattriggers.ctjs.api.vec.Vec2f; + component1(): number; + component2(): number; + copy(x: number, y: number): com.chattriggers.ctjs.api.vec.Vec2f; + } + } + namespace entity { + const Entity: { + DimensionType: typeof com.chattriggers.ctjs.api.entity.Entity$DimensionType; + new(mcValue: net.minecraft.world.entity.Entity): com.chattriggers.ctjs.api.entity.Entity; + } + interface Entity extends com.chattriggers.ctjs.api.CTWrapper { + getX(): number; + getY(): number; + getZ(): number; + getPos(): com.chattriggers.ctjs.api.world.block.BlockPos; + getRotation(): net.minecraft.world.phys.Vec2; + getLastX(): number; + getLastY(): number; + getLastZ(): number; + getRenderX(): number; + getRenderY(): number; + getRenderZ(): number; + /** + * Gets the pitch, the horizontal direction the entity is facing towards. + * This has a range of -180 to 180. + * + * @return the entity's pitch + */ + getPitch(): number; + /** + * Gets the yaw, the vertical direction the entity is facing towards. + * This has a range of -180 to 180. + * + * @return the entity's yaw + */ + getYaw(): number; + /** + * Gets the entity's x motion. + * This is the amount the entity will move in the x direction next tick. + * + * @return the entity's x motion + */ + getMotionX(): number; + /** + * Gets the entity's y motion. + * This is the amount the entity will move in the y direction next tick. + * + * @return the entity's y motion + */ + getMotionY(): number; + /** + * Gets the entity's z motion. + * This is the amount the entity will move in the z direction next tick. + * + * @return the entity's z motion + */ + getMotionZ(): number; + /** + * Returns the entity this entity is riding, if one exists + * + * @return an Entity or null + */ + getRiding(): com.chattriggers.ctjs.api.entity.Entity | null | undefined; + /** + * Returns a list of all entity riding this entity + * + * @return List of entities, empty if there are no riders + */ + getRiders(): Array; + /** + * Checks whether the entity is dead. + * This is a fairly loose term, dead for a particle could mean it has faded, + * while dead for an entity means it has no health. + * + * @return whether an entity is dead + */ + isDead(): boolean; + /** + * Gets the entire width of the entity's hitbox + * + * @return the entity's width + */ + getWidth(): number; + /** + * Gets the entire height of the entity's hitbox + * + * @return the entity's height + */ + getHeight(): number; + /** + * Gets the height of the eyes on the entity, + * can be added to its Y coordinate to get the actual Y location of the eyes. + * This value defaults to 85% of an entity's height, however is different for some entities. + * + * @return the height of the entity's eyes + */ + getEyeHeight(): number; + /** + * Gets the name of the entity, could be "Villager", + * or, if the entity has a custom name, it returns that. + * + * @return the (custom) name of the entity as a String + */ + getName(): string; + /** + * Gets the name of the entity, could be "Villager", + * or, if the entity has a custom name, it returns that. + * + * @return the (custom) name of the entity as a [TextComponent] + */ + getNameComponent(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Gets the Java class name of the entity, for example "EntityVillager" + * + * @return the entity's class name + */ + getClassName(): string; + /** + * Gets the Java UUID object of this entity. + * Use of [UUID.toString] in conjunction is recommended. + * + * @return the entity's uuid + */ + getUUID(): java.util.UUID; + /** + * Gets the entity'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 entity's air level + */ + getAir(): number; + distanceTo(other: com.chattriggers.ctjs.api.entity.Entity): number; + distanceTo(other: net.minecraft.world.entity.Entity): number; + distanceTo(blockPos: com.chattriggers.ctjs.api.world.block.BlockPos): number; + distanceTo(x: number, y: number, z: number): number; + isOnGround(): boolean; + isCollided(): boolean; + getDistanceWalked(): number; + getStepHeight(): number; + hasNoClip(): boolean; + getTicksExisted(): number; + getFireResistance(): number; + isImmuneToFire(): boolean; + isInWater(): boolean; + isWet(): boolean; + getDimension(): com.chattriggers.ctjs.api.entity.Entity$DimensionType; + getMaxInPortalTime(): number; + isSilent(): boolean; + isInLava(): boolean; + getLookVector(): net.minecraft.world.phys.Vec3; + getLookVector(partialTicks: number): net.minecraft.world.phys.Vec3; + getEyePosition(): net.minecraft.world.phys.Vec3; + getEyePosition(partialTicks: number): net.minecraft.world.phys.Vec3; + canBeCollidedWith(): boolean; + canBePushed(): boolean; + isSneaking(): boolean; + isSprinting(): boolean; + isInvisible(): boolean; + isOutsideBorder(): boolean; + isBurning(): boolean; + getWorld(): net.minecraft.world.level.Level; + getChunk(): com.chattriggers.ctjs.api.world.Chunk; + } + const Entity$DimensionType: { + OVERWORLD: com.chattriggers.ctjs.api.entity.Entity$DimensionType; + NETHER: com.chattriggers.ctjs.api.entity.Entity$DimensionType; + END: com.chattriggers.ctjs.api.entity.Entity$DimensionType; + OVERWORLD_CAVES: com.chattriggers.ctjs.api.entity.Entity$DimensionType; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.entity.Entity$DimensionType; + } + interface Entity$DimensionType extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper> { + } + const Entity$Companion: { + fromMC(entity: net.minecraft.world.entity.Entity): com.chattriggers.ctjs.api.entity.Entity; + new(): com.chattriggers.ctjs.api.entity.Entity$Companion; + } + interface Entity$Companion { + fromMC(entity: net.minecraft.world.entity.Entity): com.chattriggers.ctjs.api.entity.Entity; + new(): com.chattriggers.ctjs.api.entity.Entity$Companion; + } + const PlayerInteraction: { + UseBlock: typeof com.chattriggers.ctjs.api.entity.PlayerInteraction$UseBlock; + UseEntity: typeof com.chattriggers.ctjs.api.entity.PlayerInteraction$UseEntity; + UseItem: typeof com.chattriggers.ctjs.api.entity.PlayerInteraction$UseItem; + new(name: string, mainHand: boolean): com.chattriggers.ctjs.api.entity.PlayerInteraction; + } + interface PlayerInteraction { + getName(): string; + getMainHand(): boolean; + } + const PlayerInteraction$AttackBlock: { + new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$AttackBlock; + } + interface PlayerInteraction$AttackBlock extends com.chattriggers.ctjs.api.entity.PlayerInteraction { + new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$AttackBlock; + } + const PlayerInteraction$AttackEntity: { + new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$AttackEntity; + } + interface PlayerInteraction$AttackEntity extends com.chattriggers.ctjs.api.entity.PlayerInteraction { + new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$AttackEntity; + } + const PlayerInteraction$BreakBlock: { + new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$BreakBlock; + } + interface PlayerInteraction$BreakBlock extends com.chattriggers.ctjs.api.entity.PlayerInteraction { + new(): com.chattriggers.ctjs.api.entity.PlayerInteraction$BreakBlock; + } + const PlayerInteraction$UseBlock: { + new(hand: net.minecraft.world.InteractionHand): com.chattriggers.ctjs.api.entity.PlayerInteraction$UseBlock; + } + interface PlayerInteraction$UseBlock extends com.chattriggers.ctjs.api.entity.PlayerInteraction { + } + const PlayerInteraction$UseEntity: { + new(hand: net.minecraft.world.InteractionHand): com.chattriggers.ctjs.api.entity.PlayerInteraction$UseEntity; + } + interface PlayerInteraction$UseEntity extends com.chattriggers.ctjs.api.entity.PlayerInteraction { + } + const PlayerInteraction$UseItem: { + new(hand: net.minecraft.world.InteractionHand): com.chattriggers.ctjs.api.entity.PlayerInteraction$UseItem; + } + interface PlayerInteraction$UseItem extends com.chattriggers.ctjs.api.entity.PlayerInteraction { + } + const LivingEntity: { + new(mcValue: net.minecraft.world.entity.LivingEntity): com.chattriggers.ctjs.api.entity.LivingEntity; + } + interface LivingEntity extends com.chattriggers.ctjs.api.entity.Entity { + getActivePotionEffects(): Array; + canSeeEntity(other: net.minecraft.world.entity.Entity): boolean; + canSeeEntity(other: com.chattriggers.ctjs.api.entity.Entity): boolean; + /** + * Gets the item currently in the entity's specified inventory slot. + * 0 for main hand, 1 for offhand, 2-5 for armor + * + * @param slot the slot to access + * @return the item in said slot + */ + getStackInSlot(slot: number): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + getHP(): number; + getMaxHP(): number; + getAbsorption(): number; + getAge(): number; + getArmorValue(): number; + isPotionActive(id: number): boolean; + isPotionActive(type: com.chattriggers.ctjs.api.world.PotionEffectType): boolean; + isPotionActive(effect: com.chattriggers.ctjs.api.world.PotionEffect): boolean; + } + const BlockEntity: { + new(mcValue: net.minecraft.world.level.block.entity.BlockEntity): com.chattriggers.ctjs.api.entity.BlockEntity; + } + interface BlockEntity extends com.chattriggers.ctjs.api.CTWrapper { + getX(): number; + getY(): number; + getZ(): number; + getBlockType(): com.chattriggers.ctjs.api.world.block.BlockType; + getBlockPos(): com.chattriggers.ctjs.api.world.block.BlockPos; + getBlock(): com.chattriggers.ctjs.api.world.block.Block; + } + const Particle: { + new(mcValue: net.minecraft.client.particle.Particle): com.chattriggers.ctjs.api.entity.Particle; + } + interface Particle extends com.chattriggers.ctjs.api.CTWrapper { + getX(): number; + setX(value: number): void; + getY(): number; + setY(value: number): void; + getZ(): number; + setZ(value: number): void; + getLastX(): number; + setLastX(value: number): void; + getLastY(): number; + setLastY(value: number): void; + getLastZ(): number; + setLastZ(value: number): void; + getRenderX(): number; + getRenderY(): number; + getRenderZ(): number; + getMotionX(): number; + setMotionX(value: number): void; + getMotionY(): number; + setMotionY(value: number): void; + getMotionZ(): number; + setMotionZ(value: number): void; + getAge(): number; + setAge(value: number): void; + getDead(): boolean; + setDead(value: boolean): void; + scale(scale: number): com.chattriggers.ctjs.api.entity.Particle; + /** + * Sets the amount of ticks this particle will live for + * + * @param maxAge the particle's max age (in ticks) + */ + setMaxAge(maxAge: number): com.chattriggers.ctjs.api.entity.Particle; + remove(): com.chattriggers.ctjs.api.entity.Particle; + } + const PlayerMP: { + new(mcValue: net.minecraft.world.entity.player.Player): com.chattriggers.ctjs.api.entity.PlayerMP; + } + interface PlayerMP extends com.chattriggers.ctjs.api.entity.LivingEntity { + isSpectator(): boolean; + getPing(): number; + getTeam(): com.chattriggers.ctjs.api.entity.Team | null | undefined; + /** + * Gets the display name for this player, + * i.e. the name shown in tab list and in the player's nametag. + * @return the display name + */ + getDisplayName(): com.chattriggers.ctjs.api.message.TextComponent; + setTabDisplayName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Sets the name for this player shown above their head, + * in their name tag + * + * @param textComponent the new name to display + */ + setNametagName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Draws the player in the GUI. Takes the same parameters as [Render2D.drawPlayer] + * minus `player`. + * + * @see Render2D.drawPlayer + */ + draw(obj: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.entity.PlayerMP; + } + const Team: { + Visibility: typeof com.chattriggers.ctjs.api.entity.Team$Visibility; + new(mcValue: net.minecraft.world.scores.PlayerTeam): com.chattriggers.ctjs.api.entity.Team; + } + interface Team extends com.chattriggers.ctjs.api.CTWrapper { + /** + * Gets the registered name of the team + */ + getRegisteredName(): string; + /** + * Gets the display name of the team + */ + getName(): string; + /** + * Sets the display name of the team + * @param name the new display name + * @return the team for method chaining + */ + setName(name: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.entity.Team; + /** + * Sets the display name of the team + * @param name the new display name + * @return the team for method chaining + */ + setName(name: string): com.chattriggers.ctjs.api.entity.Team; + /** + * Gets the list of names on the team + */ + getMembers(): Array; + /** + * Gets the team prefix + */ + getPrefix(): string; + /** + * Sets the team prefix + * @param prefix the prefix to set + * @return the team for method chaining + */ + setPrefix(prefix: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.entity.Team; + /** + * Sets the team prefix + * @param prefix the prefix to set + * @return the team for method chaining + */ + setPrefix(prefix: string): com.chattriggers.ctjs.api.entity.Team; + /** + * Gets the team suffix + */ + getSuffix(): string; + /** + * Sets the team suffix + * @param suffix the suffix to set + * @return the team for method chaining + */ + setSuffix(suffix: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.entity.Team; + /** + * Sets the team suffix + * @param suffix the suffix to set + * @return the team for method chaining + */ + setSuffix(suffix: string): com.chattriggers.ctjs.api.entity.Team; + getColor(): string; + /** + * Sets the team color using the legacy ChatFormatting name or numeric id. + */ + setColor(color: any | null | undefined): com.chattriggers.ctjs.api.entity.Team; + /** + * Gets the team's friendly fire setting + */ + getFriendlyFire(): boolean; + /** + * Gets whether the team can see invisible players on the same team + */ + canSeeInvisibleTeammates(): boolean; + /** + * Gets the team's name tag visibility + */ + getNameTagVisibility(): com.chattriggers.ctjs.api.entity.Team$Visibility; + /** + * Gets the team's death message visibility + */ + getDeathMessageVisibility(): com.chattriggers.ctjs.api.entity.Team$Visibility; + } + const Team$Visibility: { + ALWAYS: com.chattriggers.ctjs.api.entity.Team$Visibility; + NEVER: com.chattriggers.ctjs.api.entity.Team$Visibility; + HIDE_FOR_OTHERS_TEAMS: com.chattriggers.ctjs.api.entity.Team$Visibility; + HIDE_FOR_OWN_TEAM: com.chattriggers.ctjs.api.entity.Team$Visibility; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.entity.Team$Visibility; + } + interface Team$Visibility extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { + } + const Team$Visibility$Companion: { + fromMC(mcValue: net.minecraft.world.scores.Team$Visibility): com.chattriggers.ctjs.api.entity.Team$Visibility; + new(): unknown; + } + interface Team$Visibility$Companion { + fromMC(mcValue: net.minecraft.world.scores.Team$Visibility): com.chattriggers.ctjs.api.entity.Team$Visibility; + new(): unknown; + } + } + namespace commands { + interface RootCommand { + register(): void; + } + const DynamicCommands: { + AngleArgumentWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$AngleArgumentWrapper; + PosArgumentWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$PosArgumentWrapper; + BlockPredicateWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$BlockPredicateWrapper; + BlockStateArgumentWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$BlockStateArgumentWrapper; + EntitySelectorWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$EntitySelectorWrapper; + ItemStackArgumentWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$ItemStackArgumentWrapper; + MessageFormatArgumentWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$MessageFormatArgumentWrapper; + NbtPathWrapper: typeof com.chattriggers.ctjs.api.commands.DynamicCommands$NbtPathWrapper; + registerCommand(name: string): com.chattriggers.ctjs.api.commands.RootCommand; + registerCommand(name: string, builder: org.mozilla.javascript.Function | null | undefined): com.chattriggers.ctjs.api.commands.RootCommand; + buildCommand(name: string): com.chattriggers.ctjs.api.commands.RootCommand; + buildCommand(name: string, builder: org.mozilla.javascript.Function | null | undefined): com.chattriggers.ctjs.api.commands.RootCommand; + argument(name: string, type: com.mojang.brigadier.arguments.ArgumentType, builder: org.mozilla.javascript.Function): void; + literal(name: string, builder: org.mozilla.javascript.Function): void; + redirect(node: com.chattriggers.ctjs.api.commands.RootCommand): void; + redirect(node: com.mojang.brigadier.tree.CommandNode): void; + exec(method: org.mozilla.javascript.Function): void; + /** + * 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 `/`. + */ + getDispatcherRoot(): com.mojang.brigadier.tree.RootCommandNode | null | undefined; + /** + * @see Argument Types: bool + */ + bool(): com.mojang.brigadier.arguments.BoolArgumentType; + /** + * @see brigadier:double + */ + double(): com.mojang.brigadier.arguments.DoubleArgumentType; + /** + * @see brigadier:double + */ + double(min: number): com.mojang.brigadier.arguments.DoubleArgumentType; + /** + * @see brigadier:double + */ + double(min: number, max: number): com.mojang.brigadier.arguments.DoubleArgumentType; + /** + * @see brigadier:float + */ + float(): com.mojang.brigadier.arguments.FloatArgumentType; + /** + * @see brigadier:float + */ + float(min: number): com.mojang.brigadier.arguments.FloatArgumentType; + /** + * @see brigadier:float + */ + float(min: number, max: number): com.mojang.brigadier.arguments.FloatArgumentType; + /** + * @see brigadier:integer + */ + integer(): com.mojang.brigadier.arguments.IntegerArgumentType; + /** + * @see brigadier:integer + */ + integer(min: number): com.mojang.brigadier.arguments.IntegerArgumentType; + /** + * @see brigadier:integer + */ + integer(min: number, max: number): com.mojang.brigadier.arguments.IntegerArgumentType; + /** + * @see brigadier:long + */ + long(): com.mojang.brigadier.arguments.LongArgumentType; + /** + * @see brigadier:long + */ + long(min: number): com.mojang.brigadier.arguments.LongArgumentType; + /** + * @see brigadier:long + */ + long(min: number, max: number): com.mojang.brigadier.arguments.LongArgumentType; + /** + * @see brigadier:string + */ + string(): com.mojang.brigadier.arguments.StringArgumentType; + /** + * @see brigadier:string + */ + greedyString(): com.mojang.brigadier.arguments.StringArgumentType; + /** + * @see brigadier:string + */ + word(): com.mojang.brigadier.arguments.StringArgumentType; + /** + * @see minecraft:angle + */ + angle(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:block_pos + */ + blockPos(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:block_predicate + */ + blockPredicate(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:block_state + */ + blockState(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:color + */ + color(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:column_pos + */ + columnPos(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:dimension + */ + dimension(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:entity + */ + entity(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:entity + */ + entities(): com.mojang.brigadier.arguments.ArgumentType>; + /** + * @see minecraft:float_range + */ + floatRange(): net.minecraft.commands.arguments.RangeArgument$Floats; + /** + * @see minecraft:game_profile + */ + gameProfile(): com.mojang.brigadier.arguments.ArgumentType>; + /** + * @see minecraft:game_profile + */ + player(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:game_profile + */ + players(): com.mojang.brigadier.arguments.ArgumentType>; + /** + * @see minecraft:gamemode + */ + gameMode(): net.minecraft.commands.arguments.GameModeArgument; + /** + * @see minecraft:int_range + */ + intRange(): net.minecraft.commands.arguments.RangeArgument$Ints; + /** + * @see minecraft:item_predicate + */ + itemPredicate(): com.mojang.brigadier.arguments.ArgumentType>; + /** + * @see minecraft:item_slot + */ + itemSlot(): net.minecraft.commands.arguments.SlotArgument; + /** + * @see minecraft:item_stack + */ + itemStack(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:message + */ + message(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:nbt_compound_tag + */ + nbtCompoundTag(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:nbt_path + */ + nbtPath(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:nbt_tag + */ + nbtTag(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:resource + */ + resource(): net.minecraft.commands.arguments.IdentifierArgument; + /** + * @see minecraft:rotation + */ + rotation(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:swizzle + */ + swizzle(): com.mojang.brigadier.arguments.ArgumentType>; + /** + * @see minecraft:time + */ + time(): net.minecraft.commands.arguments.TimeArgument; + /** + * @see minecraft:time + */ + time(minimum: number): net.minecraft.commands.arguments.TimeArgument; + /** + * @see minecraft:uuid + */ + uuid(): net.minecraft.commands.arguments.UuidArgument; + /** + * @see minecraft:vec2 + */ + vec2(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:vec2 + */ + vec2(centerIntegers: boolean): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:vec3 + */ + vec3(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:vec3 + */ + vec3(centerIntegers: boolean): com.mojang.brigadier.arguments.ArgumentType; + /** + * Allows choosing from a set list of strings. When suggested to the user, this + * will look as though this argument is multiple "literal()" nodes. + */ + choices(options: string): com.mojang.brigadier.arguments.ArgumentType; + /** + * 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 + */ + custom(obj: org.mozilla.javascript.NativeObject): com.mojang.brigadier.arguments.ArgumentType; + /** + * Throw a detailed error given the reader, meant to be used with [custom] + */ + error(reader: com.mojang.brigadier.ImmutableStringReader, message: string): never; + /** + * Throw a detailed error given the reader, meant to be used with [custom] + */ + error(reader: com.mojang.brigadier.ImmutableStringReader, message: com.chattriggers.ctjs.api.message.TextComponent): never; + /** + * 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); + * }); + * }); + * ``` + */ + new(): com.chattriggers.ctjs.api.commands.DynamicCommands; + } + interface DynamicCommands extends com.chattriggers.ctjs.internal.commands.CommandCollection { + registerCommand(name: string): com.chattriggers.ctjs.api.commands.RootCommand; + registerCommand(name: string, builder: org.mozilla.javascript.Function | null | undefined): com.chattriggers.ctjs.api.commands.RootCommand; + buildCommand(name: string): com.chattriggers.ctjs.api.commands.RootCommand; + buildCommand(name: string, builder: org.mozilla.javascript.Function | null | undefined): com.chattriggers.ctjs.api.commands.RootCommand; + argument(name: string, type: com.mojang.brigadier.arguments.ArgumentType, builder: org.mozilla.javascript.Function): void; + literal(name: string, builder: org.mozilla.javascript.Function): void; + redirect(node: com.chattriggers.ctjs.api.commands.RootCommand): void; + redirect(node: com.mojang.brigadier.tree.CommandNode): void; + exec(method: org.mozilla.javascript.Function): void; + /** + * 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 `/`. + */ + getDispatcherRoot(): com.mojang.brigadier.tree.RootCommandNode | null | undefined; + /** + * @see Argument Types: bool + */ + bool(): com.mojang.brigadier.arguments.BoolArgumentType; + /** + * @see brigadier:double + */ + double(): com.mojang.brigadier.arguments.DoubleArgumentType; + /** + * @see brigadier:double + */ + double(min: number): com.mojang.brigadier.arguments.DoubleArgumentType; + /** + * @see brigadier:double + */ + double(min: number, max: number): com.mojang.brigadier.arguments.DoubleArgumentType; + /** + * @see brigadier:float + */ + float(): com.mojang.brigadier.arguments.FloatArgumentType; + /** + * @see brigadier:float + */ + float(min: number): com.mojang.brigadier.arguments.FloatArgumentType; + /** + * @see brigadier:float + */ + float(min: number, max: number): com.mojang.brigadier.arguments.FloatArgumentType; + /** + * @see brigadier:integer + */ + integer(): com.mojang.brigadier.arguments.IntegerArgumentType; + /** + * @see brigadier:integer + */ + integer(min: number): com.mojang.brigadier.arguments.IntegerArgumentType; + /** + * @see brigadier:integer + */ + integer(min: number, max: number): com.mojang.brigadier.arguments.IntegerArgumentType; + /** + * @see brigadier:long + */ + long(): com.mojang.brigadier.arguments.LongArgumentType; + /** + * @see brigadier:long + */ + long(min: number): com.mojang.brigadier.arguments.LongArgumentType; + /** + * @see brigadier:long + */ + long(min: number, max: number): com.mojang.brigadier.arguments.LongArgumentType; + /** + * @see brigadier:string + */ + string(): com.mojang.brigadier.arguments.StringArgumentType; + /** + * @see brigadier:string + */ + greedyString(): com.mojang.brigadier.arguments.StringArgumentType; + /** + * @see brigadier:string + */ + word(): com.mojang.brigadier.arguments.StringArgumentType; + /** + * @see minecraft:angle + */ + angle(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:block_pos + */ + blockPos(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:block_predicate + */ + blockPredicate(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:block_state + */ + blockState(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:color + */ + color(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:column_pos + */ + columnPos(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:dimension + */ + dimension(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:entity + */ + entity(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:entity + */ + entities(): com.mojang.brigadier.arguments.ArgumentType>; + /** + * @see minecraft:float_range + */ + floatRange(): net.minecraft.commands.arguments.RangeArgument$Floats; + /** + * @see minecraft:game_profile + */ + gameProfile(): com.mojang.brigadier.arguments.ArgumentType>; + /** + * @see minecraft:game_profile + */ + player(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:game_profile + */ + players(): com.mojang.brigadier.arguments.ArgumentType>; + /** + * @see minecraft:gamemode + */ + gameMode(): net.minecraft.commands.arguments.GameModeArgument; + /** + * @see minecraft:int_range + */ + intRange(): net.minecraft.commands.arguments.RangeArgument$Ints; + /** + * @see minecraft:item_predicate + */ + itemPredicate(): com.mojang.brigadier.arguments.ArgumentType>; + /** + * @see minecraft:item_slot + */ + itemSlot(): net.minecraft.commands.arguments.SlotArgument; + /** + * @see minecraft:item_stack + */ + itemStack(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:message + */ + message(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:nbt_compound_tag + */ + nbtCompoundTag(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:nbt_path + */ + nbtPath(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:nbt_tag + */ + nbtTag(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:resource + */ + resource(): net.minecraft.commands.arguments.IdentifierArgument; + /** + * @see minecraft:rotation + */ + rotation(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:swizzle + */ + swizzle(): com.mojang.brigadier.arguments.ArgumentType>; + /** + * @see minecraft:time + */ + time(): net.minecraft.commands.arguments.TimeArgument; + /** + * @see minecraft:time + */ + time(minimum: number): net.minecraft.commands.arguments.TimeArgument; + /** + * @see minecraft:uuid + */ + uuid(): net.minecraft.commands.arguments.UuidArgument; + /** + * @see minecraft:vec2 + */ + vec2(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:vec2 + */ + vec2(centerIntegers: boolean): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:vec3 + */ + vec3(): com.mojang.brigadier.arguments.ArgumentType; + /** + * @see minecraft:vec3 + */ + vec3(centerIntegers: boolean): com.mojang.brigadier.arguments.ArgumentType; + /** + * Allows choosing from a set list of strings. When suggested to the user, this + * will look as though this argument is multiple "literal()" nodes. + */ + choices(options: string): com.mojang.brigadier.arguments.ArgumentType; + /** + * 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 + */ + custom(obj: org.mozilla.javascript.NativeObject): com.mojang.brigadier.arguments.ArgumentType; + /** + * Throw a detailed error given the reader, meant to be used with [custom] + */ + error(reader: com.mojang.brigadier.ImmutableStringReader, message: string): never; + /** + * Throw a detailed error given the reader, meant to be used with [custom] + */ + error(reader: com.mojang.brigadier.ImmutableStringReader, message: com.chattriggers.ctjs.api.message.TextComponent): never; + /** + * 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); + * }); + * }); + * ``` + */ + new(): com.chattriggers.ctjs.api.commands.DynamicCommands; + } + const DynamicCommands$AngleArgumentWrapper: { + new(angle: net.minecraft.commands.arguments.AngleArgument$SingleAngle): com.chattriggers.ctjs.api.commands.DynamicCommands$AngleArgumentWrapper; + } + interface DynamicCommands$AngleArgumentWrapper { + getAngle(): net.minecraft.commands.arguments.AngleArgument$SingleAngle; + getAngle(): number; + getAngle(entity: com.chattriggers.ctjs.api.entity.Entity): number; + component1(): net.minecraft.commands.arguments.AngleArgument$SingleAngle; + copy(angle: net.minecraft.commands.arguments.AngleArgument$SingleAngle): com.chattriggers.ctjs.api.commands.DynamicCommands$AngleArgumentWrapper; + } + const DynamicCommands$PosArgumentWrapper: { + new(impl: net.minecraft.commands.arguments.coordinates.Coordinates): com.chattriggers.ctjs.api.commands.DynamicCommands$PosArgumentWrapper; + } + interface DynamicCommands$PosArgumentWrapper extends net.minecraft.commands.arguments.coordinates.Coordinates { + getImpl(): net.minecraft.commands.arguments.coordinates.Coordinates; + toAbsolutePos(): net.minecraft.world.phys.Vec3; + toAbsoluteBlockPos(): com.chattriggers.ctjs.api.world.block.BlockPos; + toAbsoluteRotation(): net.minecraft.world.phys.Vec2; + component1(): net.minecraft.commands.arguments.coordinates.Coordinates; + copy(impl: net.minecraft.commands.arguments.coordinates.Coordinates): com.chattriggers.ctjs.api.commands.DynamicCommands$PosArgumentWrapper; + } + const DynamicCommands$BlockPredicateWrapper: { + new(impl: net.minecraft.commands.arguments.blocks.BlockPredicateArgument$Result): com.chattriggers.ctjs.api.commands.DynamicCommands$BlockPredicateWrapper; + } + interface DynamicCommands$BlockPredicateWrapper { + getImpl(): net.minecraft.commands.arguments.blocks.BlockPredicateArgument$Result; + test(blockPos: com.chattriggers.ctjs.api.world.block.BlockPos): boolean; + component1(): net.minecraft.commands.arguments.blocks.BlockPredicateArgument$Result; + copy(impl: net.minecraft.commands.arguments.blocks.BlockPredicateArgument$Result): com.chattriggers.ctjs.api.commands.DynamicCommands$BlockPredicateWrapper; + } + const DynamicCommands$BlockStateArgumentWrapper: { + new(impl: net.minecraft.commands.arguments.blocks.BlockInput): com.chattriggers.ctjs.api.commands.DynamicCommands$BlockStateArgumentWrapper; + } + interface DynamicCommands$BlockStateArgumentWrapper { + getImpl(): net.minecraft.commands.arguments.blocks.BlockInput; + test(blockPos: com.chattriggers.ctjs.api.world.block.BlockPos): boolean; + component1(): net.minecraft.commands.arguments.blocks.BlockInput; + copy(impl: net.minecraft.commands.arguments.blocks.BlockInput): com.chattriggers.ctjs.api.commands.DynamicCommands$BlockStateArgumentWrapper; + } + const DynamicCommands$EntitySelectorWrapper: { + new(impl: net.minecraft.commands.arguments.selector.EntitySelector): com.chattriggers.ctjs.api.commands.DynamicCommands$EntitySelectorWrapper; + } + interface DynamicCommands$EntitySelectorWrapper { + getEntity(): com.chattriggers.ctjs.api.entity.Entity; + getEntities(): Array; + getPlayers(): Array; + } + const DynamicCommands$ItemStackArgumentWrapper: { + new(impl: net.minecraft.commands.arguments.item.ItemInput): com.chattriggers.ctjs.api.commands.DynamicCommands$ItemStackArgumentWrapper; + } + interface DynamicCommands$ItemStackArgumentWrapper { + getItemType(): com.chattriggers.ctjs.api.inventory.ItemType; + test(type: com.chattriggers.ctjs.api.inventory.ItemType): boolean; + component1(): net.minecraft.commands.arguments.item.ItemInput; + copy(impl: net.minecraft.commands.arguments.item.ItemInput): com.chattriggers.ctjs.api.commands.DynamicCommands$ItemStackArgumentWrapper; + } + const DynamicCommands$MessageFormatArgumentWrapper: { + new(impl: net.minecraft.commands.arguments.MessageArgument$Message): com.chattriggers.ctjs.api.commands.DynamicCommands$MessageFormatArgumentWrapper; + } + interface DynamicCommands$MessageFormatArgumentWrapper { + getText(): string; + setText(value: string): void; + format(): com.chattriggers.ctjs.api.message.TextComponent; + component1(): net.minecraft.commands.arguments.MessageArgument$Message; + copy(impl: net.minecraft.commands.arguments.MessageArgument$Message): com.chattriggers.ctjs.api.commands.DynamicCommands$MessageFormatArgumentWrapper; + } + const DynamicCommands$NbtPathWrapper: { + new(impl: net.minecraft.commands.arguments.NbtPathArgument$NbtPath): com.chattriggers.ctjs.api.commands.DynamicCommands$NbtPathWrapper; + } + interface DynamicCommands$NbtPathWrapper { + get(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): Array; + count(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): number; + getOrInit(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase, supplier: kotlin.Function0): Array; + put(nbt: com.chattriggers.ctjs.api.inventory.nbt.NBTBase, source: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): number; + insert(index: number, compound: com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound, elements: Array): number; + remove(element: com.chattriggers.ctjs.api.inventory.nbt.NBTBase): number; + component1(): net.minecraft.commands.arguments.NbtPathArgument$NbtPath; + copy(impl: net.minecraft.commands.arguments.NbtPathArgument$NbtPath): com.chattriggers.ctjs.api.commands.DynamicCommands$NbtPathWrapper; + } + } + namespace client { + const KeyBind: { + /** + * 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) + */ + new(description: string, keyCode: number): com.chattriggers.ctjs.api.client.KeyBind; + /** + * 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) + */ + new(description: string, keyCode: number, category: string): com.chattriggers.ctjs.api.client.KeyBind; + new(keyBinding: net.minecraft.client.KeyMapping): com.chattriggers.ctjs.api.client.KeyBind; + } + interface KeyBind { + registerKeyPress(method: any): com.chattriggers.ctjs.api.client.KeyBind; + registerKeyRelease(method: any): com.chattriggers.ctjs.api.client.KeyBind; + registerKeyDown(method: any): com.chattriggers.ctjs.api.client.KeyBind; + unregisterKeyPress(): com.chattriggers.ctjs.api.client.KeyBind; + unregisterKeyRelease(): com.chattriggers.ctjs.api.client.KeyBind; + unregisterKeyDown(): com.chattriggers.ctjs.api.client.KeyBind; + /** + * Returns true if the key is pressed (used for continuous querying). + * + * @return whether the key is pressed + */ + isKeyDown(): boolean; + /** + * Returns true on the initial key press. For continuous querying use [isKeyDown]. + * + * @return whether the key has just been pressed + */ + isPressed(): boolean; + /** + * Gets the description of the key. + * + * @return the description + */ + getDescription(): string; + /** + * Gets the key code of the key. + * + * @return the integer key code + */ + getKeyCode(): number; + /** + * Gets the category of the key. + * + * @return the category + */ + getCategory(): string; + /** + * Sets the state of the key. + * + * @param pressed True to press, False to release + */ + setState(pressed: boolean): void; + } + const KeyBind$Companion: { + new(): com.chattriggers.ctjs.api.client.KeyBind$Companion; + } + interface KeyBind$Companion { + new(): com.chattriggers.ctjs.api.client.KeyBind$Companion; + } + const ScreenHelper: { + MenuButton: typeof com.chattriggers.ctjs.api.client.ScreenHelper$MenuButton; + titleFont: com.chattriggers.ctjs.api.render.Font; + smallerFont: com.chattriggers.ctjs.api.render.Font; + drawMenuButton(label: string, x: number, y: number, width: number, height: number, hovered: boolean, textColorOverride: number | null | undefined): void; + argb(a: number, r: number, g: number, b: number): number; + new(): com.chattriggers.ctjs.api.client.ScreenHelper; + } + interface ScreenHelper { + titleFont: com.chattriggers.ctjs.api.render.Font; + smallerFont: com.chattriggers.ctjs.api.render.Font; + drawMenuButton(label: string, x: number, y: number, width: number, height: number, hovered: boolean, textColorOverride: number | null | undefined): void; + argb(a: number, r: number, g: number, b: number): number; + new(): com.chattriggers.ctjs.api.client.ScreenHelper; + } + const ScreenHelper$MenuButton: { + new(label: string, x: number, y: number, width: number, height: number, onClick: kotlin.Function0): com.chattriggers.ctjs.api.client.ScreenHelper$MenuButton; + } + interface ScreenHelper$MenuButton { + getLabel(): string; + getX(): number; + getY(): number; + getWidth(): number; + getHeight(): number; + getOnClick(): kotlin.Function0; + isHovered(mouseX: number, mouseY: number): boolean; + component1(): string; + component2(): number; + component3(): number; + component4(): number; + component5(): number; + component6(): kotlin.Function0; + copy(label: string, x: number, y: number, width: number, height: number, onClick: kotlin.Function0): com.chattriggers.ctjs.api.client.ScreenHelper$MenuButton; + } + const WelcomeScreen: { + new(): com.chattriggers.ctjs.api.client.WelcomeScreen; + } + interface WelcomeScreen extends net.minecraft.client.gui.screens.Screen { + } + const WelcomeScreen$Companion: { + open(): void; + new(): com.chattriggers.ctjs.api.client.WelcomeScreen$Companion; + } + interface WelcomeScreen$Companion { + open(): void; + new(): com.chattriggers.ctjs.api.client.WelcomeScreen$Companion; + } + const FileLib: { + /** + * Writes a file to folder in modules. + * + * @param importName name of the import + * @param fileName name of the file + * @param toWrite string to write in file + * @param recursive whether to create folders to the file location if they don't exist + */ + write(importName: string, fileName: string, toWrite: string): void; + /** + * Writes a file to folder in modules. + * + * @param importName name of the import + * @param fileName name of the file + * @param toWrite string to write in file + * @param recursive whether to create folders to the file location if they don't exist + */ + write(importName: string, fileName: string, toWrite: string, recursive: boolean): void; + /** + * Writes a file to anywhere on the system. + * Use "./" for the ".minecraft" folder. + * + * @param fileLocation the location and file name + * @param toWrite string to write in file + * @param recursive whether to create folders to the file location if they don't exist + */ + write(fileLocation: string, toWrite: string): void; + /** + * Writes a file to anywhere on the system. + * Use "./" for the ".minecraft" folder. + * + * @param fileLocation the location and file name + * @param toWrite string to write in file + * @param recursive whether to create folders to the file location if they don't exist + */ + write(fileLocation: string, toWrite: string, recursive: boolean): void; + /** + * Writes a file to folder in modules. + * + * @param importName name of the import + * @param fileName name of the file + * @param toAppend string to append in file + */ + append(importName: string, fileName: string, toAppend: string): void; + /** + * Writes a file to anywhere on the system. + * Use "./" for the ".minecraft" folder. + * + * @param fileLocation the location and file name + * @param toAppend string to append in file + */ + append(fileLocation: string, toAppend: string): void; + /** + * Reads a file from folder in modules. + * Returns null if file is not found. + * + * @param importName name of the import + * @param fileName name of the file + * @return the string in the file, or null if not found + */ + read(importName: string, fileName: string): string | null | undefined; + /** + * Reads a file from anywhere on the system. + * Use "./" for the ".minecraft" folder. + * Returns null if file is not found. + * + * @param fileLocation the location and file name + * @return the string in the file, or null if not found + */ + read(fileLocation: string): string | null | undefined; + /** + * Reads a file from anywhere on the system using java.io.File. + * + * @param file the java.io.File to read + * @return the string in the file, or null if not found + */ + read(file: java.io.File): string | null | undefined; + /** + * Determines if a file or directory exists at the specified location + * + * @param importName name of the import + * @param fileName name of the file + * @return if the file exists + */ + exists(importName: string, fileName: string): boolean; + /** + * Determines if a file or directory exists at the specified location + * + * @param fileLocation the path of the file + * @return if the file exists + */ + exists(fileLocation: string): boolean; + /** + * Determines if a file or directory exists at the specified location + * + * @param importName name of the import + * @param fileName name of the file + * @return if the location is a directory + */ + isDirectory(importName: string, fileName: string): boolean; + /** + * Determines if a file or directory exists at the specified location + * + * @param fileLocation the path of the file + * @return if the location is a directory + */ + isDirectory(fileLocation: string): boolean; + /** + * Gets the contents of a url as a string. + * + * @param theUrl the url to get the data from + * @param userAgent the user agent to use in the connection + * @return the string stored in the url content + */ + getUrlContent(theUrl: string): string; + /** + * Gets the contents of a url as a string. + * + * @param theUrl the url to get the data from + * @param userAgent the user agent to use in the connection + * @return the string stored in the url content + */ + getUrlContent(theUrl: string, userAgent: string | null | undefined): string; + /** + * Deletes a directory at the specified location + * + * @param dir the directory to delete + * @return if the directory was deleted + */ + deleteDirectory(dir: string): boolean; + /** + * Deletes a directory at the specified location + * + * @param dir the directory to delete + * @return if the directory was deleted + */ + deleteDirectory(dir: java.io.File): boolean; + /** + * Extracts a zip file specified by the zipFilePath to a directory specified by + * destDirectory (will be created if does not exist). + * @param zipFilePath the zip file path + * @param destDirectory the destination directory + * @throws IOException IOException + */ + unzip(zipFilePath: string, destDirectory: string): void; + /** + * Encodes a string to a base64 string + * + * @param toEncode string to encode + * @return base64 encoded string + */ + encodeBase64(toEncode: string): string; + /** + * Decodes a base64 string to a string + * + * @param toDecode base64 encoded string to decode + * @return decoded string + */ + decodeBase64(toDecode: string): string; + /** + * Opens a url in the default browser + * + * @param url the url to open + */ + open(url: string): void; + /** + * Opens a path in the file explorer + * + * @param path the path to open + */ + open(path: java.io.File): void; + new(): com.chattriggers.ctjs.api.client.FileLib; + } + interface FileLib { + /** + * Writes a file to folder in modules. + * + * @param importName name of the import + * @param fileName name of the file + * @param toWrite string to write in file + * @param recursive whether to create folders to the file location if they don't exist + */ + write(importName: string, fileName: string, toWrite: string): void; + /** + * Writes a file to folder in modules. + * + * @param importName name of the import + * @param fileName name of the file + * @param toWrite string to write in file + * @param recursive whether to create folders to the file location if they don't exist + */ + write(importName: string, fileName: string, toWrite: string, recursive: boolean): void; + /** + * Writes a file to anywhere on the system. + * Use "./" for the ".minecraft" folder. + * + * @param fileLocation the location and file name + * @param toWrite string to write in file + * @param recursive whether to create folders to the file location if they don't exist + */ + write(fileLocation: string, toWrite: string): void; + /** + * Writes a file to anywhere on the system. + * Use "./" for the ".minecraft" folder. + * + * @param fileLocation the location and file name + * @param toWrite string to write in file + * @param recursive whether to create folders to the file location if they don't exist + */ + write(fileLocation: string, toWrite: string, recursive: boolean): void; + /** + * Writes a file to folder in modules. + * + * @param importName name of the import + * @param fileName name of the file + * @param toAppend string to append in file + */ + append(importName: string, fileName: string, toAppend: string): void; + /** + * Writes a file to anywhere on the system. + * Use "./" for the ".minecraft" folder. + * + * @param fileLocation the location and file name + * @param toAppend string to append in file + */ + append(fileLocation: string, toAppend: string): void; + /** + * Reads a file from folder in modules. + * Returns null if file is not found. + * + * @param importName name of the import + * @param fileName name of the file + * @return the string in the file, or null if not found + */ + read(importName: string, fileName: string): string | null | undefined; + /** + * Reads a file from anywhere on the system. + * Use "./" for the ".minecraft" folder. + * Returns null if file is not found. + * + * @param fileLocation the location and file name + * @return the string in the file, or null if not found + */ + read(fileLocation: string): string | null | undefined; + /** + * Reads a file from anywhere on the system using java.io.File. + * + * @param file the java.io.File to read + * @return the string in the file, or null if not found + */ + read(file: java.io.File): string | null | undefined; + /** + * Determines if a file or directory exists at the specified location + * + * @param importName name of the import + * @param fileName name of the file + * @return if the file exists + */ + exists(importName: string, fileName: string): boolean; + /** + * Determines if a file or directory exists at the specified location + * + * @param fileLocation the path of the file + * @return if the file exists + */ + exists(fileLocation: string): boolean; + /** + * Determines if a file or directory exists at the specified location + * + * @param importName name of the import + * @param fileName name of the file + * @return if the location is a directory + */ + isDirectory(importName: string, fileName: string): boolean; + /** + * Determines if a file or directory exists at the specified location + * + * @param fileLocation the path of the file + * @return if the location is a directory + */ + isDirectory(fileLocation: string): boolean; + /** + * Gets the contents of a url as a string. + * + * @param theUrl the url to get the data from + * @param userAgent the user agent to use in the connection + * @return the string stored in the url content + */ + getUrlContent(theUrl: string): string; + /** + * Gets the contents of a url as a string. + * + * @param theUrl the url to get the data from + * @param userAgent the user agent to use in the connection + * @return the string stored in the url content + */ + getUrlContent(theUrl: string, userAgent: string | null | undefined): string; + /** + * Deletes a directory at the specified location + * + * @param dir the directory to delete + * @return if the directory was deleted + */ + deleteDirectory(dir: string): boolean; + /** + * Deletes a directory at the specified location + * + * @param dir the directory to delete + * @return if the directory was deleted + */ + deleteDirectory(dir: java.io.File): boolean; + /** + * Extracts a zip file specified by the zipFilePath to a directory specified by + * destDirectory (will be created if does not exist). + * @param zipFilePath the zip file path + * @param destDirectory the destination directory + * @throws IOException IOException + */ + unzip(zipFilePath: string, destDirectory: string): void; + /** + * Encodes a string to a base64 string + * + * @param toEncode string to encode + * @return base64 encoded string + */ + encodeBase64(toEncode: string): string; + /** + * Decodes a base64 string to a string + * + * @param toDecode base64 encoded string to decode + * @return decoded string + */ + decodeBase64(toDecode: string): string; + /** + * Opens a url in the default browser + * + * @param url the url to open + */ + open(url: string): void; + /** + * Opens a path in the file explorer + * + * @param path the path to open + */ + open(path: java.io.File): void; + new(): com.chattriggers.ctjs.api.client.FileLib; + } + const 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 + */ + map(number: number, in_min: number, in_max: number, out_min: number, out_max: number): number; + /** + * 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 + */ + clampFloat(number: number, min: number, max: number): number; + /** + * 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 + */ + clamp(number: number, min: number, max: number): number; + new(): com.chattriggers.ctjs.api.client.MathLib; + } + interface 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 + */ + map(number: number, in_min: number, in_max: number, out_min: number, out_max: number): number; + /** + * 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 + */ + clampFloat(number: number, min: number, max: number): number; + /** + * 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 + */ + clamp(number: number, min: number, max: number): number; + new(): com.chattriggers.ctjs.api.client.MathLib; + } + const ProxyInfo: { + getProxies(): Array; + addProxy(proxy: com.chattriggers.ctjs.api.client.Proxy): void; + removeProxy(proxy: com.chattriggers.ctjs.api.client.Proxy): void; + updateProxy(original: com.chattriggers.ctjs.api.client.Proxy, newProxy: com.chattriggers.ctjs.api.client.Proxy): void; + setProxyEnabled(proxy: com.chattriggers.ctjs.api.client.Proxy, enabled: boolean): void; + getEnabledProxies(): Array; + new(): com.chattriggers.ctjs.api.client.ProxyInfo; + } + interface ProxyInfo { + getProxies(): Array; + addProxy(proxy: com.chattriggers.ctjs.api.client.Proxy): void; + removeProxy(proxy: com.chattriggers.ctjs.api.client.Proxy): void; + updateProxy(original: com.chattriggers.ctjs.api.client.Proxy, newProxy: com.chattriggers.ctjs.api.client.Proxy): void; + setProxyEnabled(proxy: com.chattriggers.ctjs.api.client.Proxy, enabled: boolean): void; + getEnabledProxies(): Array; + new(): com.chattriggers.ctjs.api.client.ProxyInfo; + } + const Proxy: { + new(ip: string, port: number, name: string, username: string, password: string, isEnabled: boolean): com.chattriggers.ctjs.api.client.Proxy; + } + interface Proxy { + getIp(): string; + setIp(value: string): void; + getPort(): number; + setPort(value: number): void; + getName(): string; + setName(value: string): void; + getUsername(): string; + setUsername(value: string): void; + getPassword(): string; + setPassword(value: string): void; + isEnabled(): boolean; + setEnabled(value: boolean): void; + component1(): string; + component2(): number; + component3(): string; + component4(): string; + component5(): string; + component6(): boolean; + copy(ip: string, port: number, name: string, username: string, password: string, isEnabled: boolean): com.chattriggers.ctjs.api.client.Proxy; + } + const DiscordRPC: { + stayOn(): void; + turnOff(): void; + updatePresence(details: string, state: string): void; + resetTimestamp(): void; + revertToIdle(): void; + new(): com.chattriggers.ctjs.api.client.DiscordRPC; + } + interface DiscordRPC { + stayOn(): void; + turnOff(): void; + updatePresence(details: string, state: string): void; + resetTimestamp(): void; + revertToIdle(): void; + new(): com.chattriggers.ctjs.api.client.DiscordRPC; + } + const ProxyManagerScreen: { + new(parent: net.minecraft.client.gui.screens.Screen): com.chattriggers.ctjs.api.client.ProxyManagerScreen; + } + interface ProxyManagerScreen extends net.minecraft.client.gui.screens.Screen { + refreshList(): void; + } + const ProxyEditScreen: { + new(parent: com.chattriggers.ctjs.api.client.ProxyManagerScreen, existingProxy: com.chattriggers.ctjs.api.client.Proxy | null | undefined): com.chattriggers.ctjs.api.client.ProxyEditScreen; + } + interface ProxyEditScreen extends net.minecraft.client.gui.screens.Screen { + } + const Client: { + RenderLimiter: typeof com.chattriggers.ctjs.api.client.Client$RenderLimiter; + CurrentGuiWrapper: typeof com.chattriggers.ctjs.api.client.Client$CurrentGuiWrapper; + CameraWrapper: typeof com.chattriggers.ctjs.api.client.Client$CameraWrapper; + isFreecam(): boolean; + setFreecam(value: boolean): void; + isFreelook(): boolean; + setFreelook(value: boolean): void; + isUngrabbed(): boolean; + setUngrabbed(value: boolean): void; + isInputLocked(): boolean; + setInputLocked(value: boolean): void; + isMacroEnabled(): boolean; + setMacroEnabled(value: boolean): void; + isForcePerspective(): boolean; + setForcePerspective(value: boolean): void; + getLimitFps(): boolean; + setLimitFps(value: boolean): void; + getMuteGame(): boolean; + setMuteGame(value: boolean): void; + getRenderLimiter(): com.chattriggers.ctjs.api.client.Client$RenderLimiter; + setRenderLimiter(value: com.chattriggers.ctjs.api.client.Client$RenderLimiter): void; + getCameraPosition(): net.minecraft.world.phys.Vec3 | null | undefined; + setCameraPosition(value: net.minecraft.world.phys.Vec3 | null | undefined): void; + getFreelookDistance(): number; + setFreelookDistance(value: number): void; + getSpectatedEntity(): net.minecraft.world.entity.LivingEntity | null | undefined; + setSpectatedEntity(value: net.minecraft.world.entity.LivingEntity | null | undefined): void; + currentGui: com.chattriggers.ctjs.api.client.Client$CurrentGuiWrapper; + camera: com.chattriggers.ctjs.api.client.Client$CameraWrapper; + setCameraRotation(yaw: number, pitch: number): void; + clearCameraRotation(): void; + getCameraYaw(): number | null | undefined; + getCameraPitch(): number | null | undefined; + setNameProcessor(processor: org.mozilla.javascript.Callable | null | undefined): void; + processName(original: net.minecraft.network.chat.Component): net.minecraft.network.chat.Component; + /** + * Gets Minecraft's Minecraft object + * + * @return The Minecraft object + */ + getMinecraft(): net.minecraft.client.Minecraft; + /** + * Gets Minecraft's NetHandlerPlayClient object + * + * @return The NetHandlerPlayClient object + */ + getConnection(): net.minecraft.client.multiplayer.ClientPacketListener | null | undefined; + /** + * 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 + */ + scheduleTask(callback: kotlin.Function0): void; + /** + * 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 + */ + scheduleTask(delay: number, callback: kotlin.Function0): void; + /** + * Quits the client back to the main menu. + * This acts just like clicking the "Disconnect" or "Save and quit to title" button. + */ + disconnect(): void; + /** + * Connects to the server with the given ip. + * @param ip The ip to connect to + */ + connect(ip: string): void; + /** + * Connects to the server with the given ip. + * @param ip The ip to connect to + */ + connect(ip: string, port: number): void; + getCurrentScreen(): net.minecraft.client.gui.screens.Screen | null | undefined; + setCurrentScreen(screen: net.minecraft.client.gui.screens.Screen | null | undefined): void; + getMainRenderTarget(): com.mojang.blaze3d.pipeline.RenderTarget; + reloadWorldRenderer(): void; + /** + * Gets the Minecraft ChatHud object for the chat gui + * + * @return The GuiNewChat object for the chat gui + */ + getChatGui(): net.minecraft.client.gui.components.ChatComponent | null | undefined; + isInChat(): boolean; + getTabGui(): net.minecraft.client.gui.components.PlayerTabOverlay | null | undefined; + isInTab(): boolean; + /** + * 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 + */ + isTabbedIn(): boolean; + isControlDown(): boolean; + isShiftDown(): boolean; + isAltDown(): boolean; + getFPS(): number; + getVersion(): string; + getSystemTime(): number; + getMouseX(): number; + getMouseY(): number; + isInGui(): boolean; + /** + * Gets the chat message currently typed into the chat gui. + * + * @return A blank string if the gui isn't open, otherwise, the message + */ + getCurrentChatMessage(): string; + /** + * 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. + */ + setCurrentChatMessage(message: string): void; + setSignLine(line: number, text: string): void; + resumeHeldKeys(): void; + releaseHeldKey(input: com.mojang.blaze3d.platform.InputConstants$Key): void; + leftClick(): void; + rightClick(): void; + setKey(key: string): boolean; + setKey(key: string, pressed: boolean): boolean; + isKeyDown(key: string): boolean; + stopMovement(): void; + unpressKeys(): void; + sendPacket(packet: net.minecraft.network.protocol.Packet): void; + sendSequencedPacket(packetFactory: kotlin.Function1>): void; + /** + * 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 + */ + showTitle(title: string | null | undefined, subtitle: string | null | undefined, fadeIn: number, time: number, fadeOut: number): void; + /** + * Copies a string to the clipboard + * + * @param text The text to copy + */ + copy(): void; + /** + * Copies a string to the clipboard + * + * @param text The text to copy + */ + copy(text: string): void; + /** + * Get the string currently on the clipboard + */ + paste(): string; + /** + * 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) + */ + getKeyBindFromKey(keyCode: number): com.chattriggers.ctjs.api.client.KeyBind | null | undefined; + /** + * 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) + */ + getKeyBindFromKey(keyCode: number, description: string): com.chattriggers.ctjs.api.client.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) + */ + getKeyBindFromKey(keyCode: number, description: string, category: string): com.chattriggers.ctjs.api.client.KeyBind; + /** + * 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 + */ + getKeyBindFromDescription(description: string): com.chattriggers.ctjs.api.client.KeyBind | null | undefined; + new(): com.chattriggers.ctjs.api.client.Client; + } + interface Client { + isFreecam(): boolean; + setFreecam(value: boolean): void; + isFreelook(): boolean; + setFreelook(value: boolean): void; + isUngrabbed(): boolean; + setUngrabbed(value: boolean): void; + isInputLocked(): boolean; + setInputLocked(value: boolean): void; + isMacroEnabled(): boolean; + setMacroEnabled(value: boolean): void; + isForcePerspective(): boolean; + setForcePerspective(value: boolean): void; + getLimitFps(): boolean; + setLimitFps(value: boolean): void; + getMuteGame(): boolean; + setMuteGame(value: boolean): void; + getRenderLimiter(): com.chattriggers.ctjs.api.client.Client$RenderLimiter; + setRenderLimiter(value: com.chattriggers.ctjs.api.client.Client$RenderLimiter): void; + getCameraPosition(): net.minecraft.world.phys.Vec3 | null | undefined; + setCameraPosition(value: net.minecraft.world.phys.Vec3 | null | undefined): void; + getFreelookDistance(): number; + setFreelookDistance(value: number): void; + getSpectatedEntity(): net.minecraft.world.entity.LivingEntity | null | undefined; + setSpectatedEntity(value: net.minecraft.world.entity.LivingEntity | null | undefined): void; + currentGui: com.chattriggers.ctjs.api.client.Client$CurrentGuiWrapper; + camera: com.chattriggers.ctjs.api.client.Client$CameraWrapper; + setCameraRotation(yaw: number, pitch: number): void; + clearCameraRotation(): void; + getCameraYaw(): number | null | undefined; + getCameraPitch(): number | null | undefined; + setNameProcessor(processor: org.mozilla.javascript.Callable | null | undefined): void; + processName(original: net.minecraft.network.chat.Component): net.minecraft.network.chat.Component; + /** + * Gets Minecraft's Minecraft object + * + * @return The Minecraft object + */ + getMinecraft(): net.minecraft.client.Minecraft; + /** + * Gets Minecraft's NetHandlerPlayClient object + * + * @return The NetHandlerPlayClient object + */ + getConnection(): net.minecraft.client.multiplayer.ClientPacketListener | null | undefined; + /** + * 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 + */ + scheduleTask(callback: kotlin.Function0): void; + /** + * 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 + */ + scheduleTask(delay: number, callback: kotlin.Function0): void; + /** + * Quits the client back to the main menu. + * This acts just like clicking the "Disconnect" or "Save and quit to title" button. + */ + disconnect(): void; + /** + * Connects to the server with the given ip. + * @param ip The ip to connect to + */ + connect(ip: string): void; + /** + * Connects to the server with the given ip. + * @param ip The ip to connect to + */ + connect(ip: string, port: number): void; + getCurrentScreen(): net.minecraft.client.gui.screens.Screen | null | undefined; + setCurrentScreen(screen: net.minecraft.client.gui.screens.Screen | null | undefined): void; + getMainRenderTarget(): com.mojang.blaze3d.pipeline.RenderTarget; + reloadWorldRenderer(): void; + /** + * Gets the Minecraft ChatHud object for the chat gui + * + * @return The GuiNewChat object for the chat gui + */ + getChatGui(): net.minecraft.client.gui.components.ChatComponent | null | undefined; + isInChat(): boolean; + getTabGui(): net.minecraft.client.gui.components.PlayerTabOverlay | null | undefined; + isInTab(): boolean; + /** + * 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 + */ + isTabbedIn(): boolean; + isControlDown(): boolean; + isShiftDown(): boolean; + isAltDown(): boolean; + getFPS(): number; + getVersion(): string; + getSystemTime(): number; + getMouseX(): number; + getMouseY(): number; + isInGui(): boolean; + /** + * Gets the chat message currently typed into the chat gui. + * + * @return A blank string if the gui isn't open, otherwise, the message + */ + getCurrentChatMessage(): string; + /** + * 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. + */ + setCurrentChatMessage(message: string): void; + setSignLine(line: number, text: string): void; + resumeHeldKeys(): void; + releaseHeldKey(input: com.mojang.blaze3d.platform.InputConstants$Key): void; + leftClick(): void; + rightClick(): void; + setKey(key: string): boolean; + setKey(key: string, pressed: boolean): boolean; + isKeyDown(key: string): boolean; + stopMovement(): void; + unpressKeys(): void; + sendPacket(packet: net.minecraft.network.protocol.Packet): void; + sendSequencedPacket(packetFactory: kotlin.Function1>): void; + /** + * 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 + */ + showTitle(title: string | null | undefined, subtitle: string | null | undefined, fadeIn: number, time: number, fadeOut: number): void; + /** + * Copies a string to the clipboard + * + * @param text The text to copy + */ + copy(): void; + /** + * Copies a string to the clipboard + * + * @param text The text to copy + */ + copy(text: string): void; + /** + * Get the string currently on the clipboard + */ + paste(): string; + /** + * 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) + */ + getKeyBindFromKey(keyCode: number): com.chattriggers.ctjs.api.client.KeyBind | null | undefined; + /** + * 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) + */ + getKeyBindFromKey(keyCode: number, description: string): com.chattriggers.ctjs.api.client.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) + */ + getKeyBindFromKey(keyCode: number, description: string, category: string): com.chattriggers.ctjs.api.client.KeyBind; + /** + * 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 + */ + getKeyBindFromDescription(description: string): com.chattriggers.ctjs.api.client.KeyBind | null | undefined; + new(): com.chattriggers.ctjs.api.client.Client; + } + const Client$RenderLimiter: { + OFF: com.chattriggers.ctjs.api.client.Client$RenderLimiter; + LIMIT_CHUNKS: com.chattriggers.ctjs.api.client.Client$RenderLimiter; + NO_RENDER: com.chattriggers.ctjs.api.client.Client$RenderLimiter; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.client.Client$RenderLimiter; + } + interface Client$RenderLimiter extends kotlin.Enum { + } + const Client$CurrentGuiWrapper: { + new(): com.chattriggers.ctjs.api.client.Client$CurrentGuiWrapper; + } + interface Client$CurrentGuiWrapper { + /** + * Gets the Java class name of the currently open gui, for example, "GuiChest" + * + * @return the class name of the current gui + */ + getClassName(): string; + /** + * Gets the Minecraft gui class that is currently open + * + * @return the Minecraft gui + */ + get(): net.minecraft.client.gui.screens.Screen | null | undefined; + set(screen: net.minecraft.client.gui.screens.Screen | null | undefined): void; + /** + * Gets the slot under the mouse in the current gui, if one exists. + * + * @return the [Slot] under the mouse + */ + getSlotUnderMouse(): com.chattriggers.ctjs.api.inventory.Slot | null | undefined; + /** + * Closes the currently open gui + */ + close(): void; + } + const Client$CameraWrapper: { + new(): com.chattriggers.ctjs.api.client.Client$CameraWrapper; + } + interface Client$CameraWrapper { + getX(): number; + getY(): number; + getZ(): number; + } + const Player: { + ArmorWrapper: typeof com.chattriggers.ctjs.api.client.Player$ArmorWrapper; + armor: com.chattriggers.ctjs.api.client.Player$ArmorWrapper; + toMC(): net.minecraft.client.player.LocalPlayer | null | undefined; + /** + * Gets Minecraft's EntityPlayerSP object representing the user + * + * @return The Minecraft EntityPlayerSP object representing the user + */ + getPlayer(): net.minecraft.client.player.LocalPlayer | null | undefined; + getTeam(): com.chattriggers.ctjs.api.entity.Team | null | undefined; + asPlayerMP(): com.chattriggers.ctjs.api.entity.PlayerMP | null | undefined; + getX(): number; + getY(): number; + getZ(): number; + getPos(): com.chattriggers.ctjs.api.world.block.BlockPos; + getRotation(): net.minecraft.world.phys.Vec2; + getLastX(): number; + getLastY(): number; + getLastZ(): number; + getRenderX(): number; + getRenderY(): number; + getRenderZ(): number; + /** + * 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 + */ + getMotionX(): number; + /** + * 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 + */ + getMotionY(): number; + /** + * 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 + */ + getMotionZ(): number; + /** + * Gets the player's camera pitch. + * + * @return the player's camera pitch + */ + getPitch(): number; + /** + * Gets the player's camera yaw. + * + * @return the player's camera yaw + */ + getYaw(): number; + /** + * Gets the player's username. + * + * @return the player's username + */ + getName(): string; + /** + * Gets the Java UUID object of the player. + * Use of [UUID.toString] in conjunction is recommended. + * + * @return the player's uuid + */ + getUUID(): java.util.UUID; + getHP(): number; + /** + * 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 + */ + getAirLevel(): number; + getXPLevel(): number; + isMoving(): boolean; + isSneaking(): boolean; + isSprinting(): boolean; + /** + * Checks if player can be pushed by water. + * + * @return true if the player is flying, false otherwise + */ + isFlying(): boolean; + isSleeping(): boolean; + /** + * Gets the direction the player is facing. + * Example: "South West" + * + * @return The direction the player is facing, one of the four cardinal directions + */ + facing(): string; + /** + * 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 + */ + getActivePotionEffects(): Array; + /** + * 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 + */ + lookingAt(): any | null | undefined; + /** + * Gets the current item in the player's hand. + * + * @param hand the hand of the item + * @return the current held [Item] + */ + getHeldItem(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + /** + * Gets the current item in the player's hand. + * + * @param hand the hand of the item + * @return the current held [Item] + */ + getHeldItem(hand: net.minecraft.world.InteractionHand): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + /** + * Sets the current held item based on the provided index. + * + * @param index the new held item index + */ + setHeldItemIndex(index: number): void; + /** + * Gets the current index of the held item. + * + * @return the current index + */ + getHeldItemIndex(): number; + /** + * Gets the inventory of the player, i.e. the inventory accessed by 'e'. + * + * @return the player's inventory + */ + getInventory(): com.chattriggers.ctjs.api.inventory.Inventory | null | undefined; + /** + * 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 + */ + getDisplayName(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Sets the name for this player shown in tab list + * + * @param textComponent the new name to display + */ + setTabDisplayName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Sets the name for this player shown above their head, + * in their name tag + * + * @param textComponent the new name to display + */ + setNametagName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Gets the container the user currently has open, i.e. a chest. + * + * @return the currently opened container + */ + getContainer(): com.chattriggers.ctjs.api.inventory.Inventory | null | undefined; + /** + * Draws the player in the GUI. Takes the same parameters as [Render2D.drawPlayer] + * minus `player`. + * + * @see Render2D.drawPlayer + */ + draw(obj: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.client.Player; + new(): com.chattriggers.ctjs.api.client.Player; + } + interface Player { + armor: com.chattriggers.ctjs.api.client.Player$ArmorWrapper; + toMC(): net.minecraft.client.player.LocalPlayer | null | undefined; + /** + * Gets Minecraft's EntityPlayerSP object representing the user + * + * @return The Minecraft EntityPlayerSP object representing the user + */ + getPlayer(): net.minecraft.client.player.LocalPlayer | null | undefined; + getTeam(): com.chattriggers.ctjs.api.entity.Team | null | undefined; + asPlayerMP(): com.chattriggers.ctjs.api.entity.PlayerMP | null | undefined; + getX(): number; + getY(): number; + getZ(): number; + getPos(): com.chattriggers.ctjs.api.world.block.BlockPos; + getRotation(): net.minecraft.world.phys.Vec2; + getLastX(): number; + getLastY(): number; + getLastZ(): number; + getRenderX(): number; + getRenderY(): number; + getRenderZ(): number; + /** + * 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 + */ + getMotionX(): number; + /** + * 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 + */ + getMotionY(): number; + /** + * 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 + */ + getMotionZ(): number; + /** + * Gets the player's camera pitch. + * + * @return the player's camera pitch + */ + getPitch(): number; + /** + * Gets the player's camera yaw. + * + * @return the player's camera yaw + */ + getYaw(): number; + /** + * Gets the player's username. + * + * @return the player's username + */ + getName(): string; + /** + * Gets the Java UUID object of the player. + * Use of [UUID.toString] in conjunction is recommended. + * + * @return the player's uuid + */ + getUUID(): java.util.UUID; + getHP(): number; + /** + * 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 + */ + getAirLevel(): number; + getXPLevel(): number; + isMoving(): boolean; + isSneaking(): boolean; + isSprinting(): boolean; + /** + * Checks if player can be pushed by water. + * + * @return true if the player is flying, false otherwise + */ + isFlying(): boolean; + isSleeping(): boolean; + /** + * Gets the direction the player is facing. + * Example: "South West" + * + * @return The direction the player is facing, one of the four cardinal directions + */ + facing(): string; + /** + * 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 + */ + getActivePotionEffects(): Array; + /** + * 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 + */ + lookingAt(): any | null | undefined; + /** + * Gets the current item in the player's hand. + * + * @param hand the hand of the item + * @return the current held [Item] + */ + getHeldItem(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + /** + * Gets the current item in the player's hand. + * + * @param hand the hand of the item + * @return the current held [Item] + */ + getHeldItem(hand: net.minecraft.world.InteractionHand): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + /** + * Sets the current held item based on the provided index. + * + * @param index the new held item index + */ + setHeldItemIndex(index: number): void; + /** + * Gets the current index of the held item. + * + * @return the current index + */ + getHeldItemIndex(): number; + /** + * Gets the inventory of the player, i.e. the inventory accessed by 'e'. + * + * @return the player's inventory + */ + getInventory(): com.chattriggers.ctjs.api.inventory.Inventory | null | undefined; + /** + * 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 + */ + getDisplayName(): com.chattriggers.ctjs.api.message.TextComponent; + /** + * Sets the name for this player shown in tab list + * + * @param textComponent the new name to display + */ + setTabDisplayName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Sets the name for this player shown above their head, + * in their name tag + * + * @param textComponent the new name to display + */ + setNametagName(textComponent: com.chattriggers.ctjs.api.message.TextComponent): void; + /** + * Gets the container the user currently has open, i.e. a chest. + * + * @return the currently opened container + */ + getContainer(): com.chattriggers.ctjs.api.inventory.Inventory | null | undefined; + /** + * Draws the player in the GUI. Takes the same parameters as [Render2D.drawPlayer] + * minus `player`. + * + * @see Render2D.drawPlayer + */ + draw(obj: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.client.Player; + new(): com.chattriggers.ctjs.api.client.Player; + } + const Player$ArmorWrapper: { + new(): com.chattriggers.ctjs.api.client.Player$ArmorWrapper; + } + interface Player$ArmorWrapper { + /** + * @return the [Item] in the player's helmet slot or null if the slot is empty + */ + getHelmet(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + /** + * @return the [Item] in the player's chestplate slot or null if the slot is empty + */ + getChestplate(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + /** + * @return the [Item] in the player's leggings slot or null if the slot is empty + */ + getLeggings(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + /** + * @return the [Item] in the player's boots slot or null if the slot is empty + */ + getBoots(): com.chattriggers.ctjs.api.inventory.Item | null | undefined; + } + const Sound: { + Category: typeof com.chattriggers.ctjs.api.client.Sound$Category; + AttenuationType: typeof com.chattriggers.ctjs.api.client.Sound$AttenuationType; + new(config: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.client.Sound; + } + interface Sound { + destroy(): void; + /** + * Gets the category of this sound, making it respect the Player's sound volume sliders. + * + * @return the category + */ + getCategory(): com.chattriggers.ctjs.api.client.Sound$Category; + /** + * Sets the category of this sound, making it respect the Player's sound volume sliders. + * + * @param category the category + */ + setCategory(category: com.chattriggers.ctjs.api.client.Sound$Category): com.chattriggers.ctjs.api.client.Sound; + /** + * Gets this sound's volume. + * + * @return A float value (0.0f - 1.0f). + */ + getVolume(): number; + /** + * Sets this sound's volume. + * + * @param volume A float value (0.0f - 1.0f). + */ + setVolume(volume: number): com.chattriggers.ctjs.api.client.Sound; + getX(): number; + getY(): number; + getZ(): number; + setX(x: number): com.chattriggers.ctjs.api.client.Sound; + setY(y: number): com.chattriggers.ctjs.api.client.Sound; + setZ(z: number): com.chattriggers.ctjs.api.client.Sound; + getPosition(): net.minecraft.world.phys.Vec3; + setPosition(x: number, y: number, z: number): com.chattriggers.ctjs.api.client.Sound; + /** + * Gets this sound's pitch. + * + * @return A float value (0.5f - 2.0f). + */ + getPitch(): number; + /** + * Sets this sound's pitch. + * + * @param pitch A float value (0.5f - 2.0f). + */ + setPitch(pitch: number): com.chattriggers.ctjs.api.client.Sound; + /** + * Gets the attenuation type (fade out over space) of the sound + * + * @return The type of Attenuation + */ + getAttenuationType(): com.chattriggers.ctjs.api.client.Sound$AttenuationType; + /** + * Sets the attenuation type (fade out over space) of the sound + * + * @param attenuationType The type of Attenuation + */ + setAttenuationType(attenuationType: com.chattriggers.ctjs.api.client.Sound$AttenuationType): com.chattriggers.ctjs.api.client.Sound; + /** + * Gets the attenuation distance of the sound + */ + getAttenuation(): number; + /** + * Sets the attenuation distance of the sound + */ + setAttenuation(attenuation: number): com.chattriggers.ctjs.api.client.Sound; + /** + * Gets whether the sound should repeat after finishing + */ + getLoop(): boolean; + /** + * Sets whether the sound should repeat after finishing + */ + setLoop(loop: boolean): com.chattriggers.ctjs.api.client.Sound; + /** + * Gets the tick delay after finishing before looping again (if getLoop() is true) + */ + getLoopDelay(): number; + /** + * Sets the tick delay after finishing before looping again (if getLoop() is true) + */ + setLoopDelay(loopDelay: number): com.chattriggers.ctjs.api.client.Sound; + /** + * Plays/resumes the sound. This requires the world to be loaded + */ + play(): void; + /** + * Plays/resumes the sound. This requires the world to be loaded + */ + play(delay: number): void; + /** + * Pauses the sound, to be resumed later. This requires the world to be loaded + */ + pause(): void; + /** + * Completely stops the sound. This requires the world to be loaded + */ + stop(): void; + /** + * Immediately restarts the sound. This requires the world to be loaded + */ + rewind(): void; + } + const Sound$Category: { + MASTER: com.chattriggers.ctjs.api.client.Sound$Category; + MUSIC: com.chattriggers.ctjs.api.client.Sound$Category; + RECORDS: com.chattriggers.ctjs.api.client.Sound$Category; + WEATHER: com.chattriggers.ctjs.api.client.Sound$Category; + BLOCKS: com.chattriggers.ctjs.api.client.Sound$Category; + HOSTILE: com.chattriggers.ctjs.api.client.Sound$Category; + NEUTRAL: com.chattriggers.ctjs.api.client.Sound$Category; + PLAYERS: com.chattriggers.ctjs.api.client.Sound$Category; + AMBIENT: com.chattriggers.ctjs.api.client.Sound$Category; + VOICE: com.chattriggers.ctjs.api.client.Sound$Category; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.client.Sound$Category; + } + interface Sound$Category extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { + } + const Sound$Category$Companion: { + fromMC(mcValue: net.minecraft.sounds.SoundSource): com.chattriggers.ctjs.api.client.Sound$Category; + from(value: any): com.chattriggers.ctjs.api.client.Sound$Category; + new(): unknown; + } + interface Sound$Category$Companion { + fromMC(mcValue: net.minecraft.sounds.SoundSource): com.chattriggers.ctjs.api.client.Sound$Category; + from(value: any): com.chattriggers.ctjs.api.client.Sound$Category; + new(): unknown; + } + const Sound$AttenuationType: { + NONE: com.chattriggers.ctjs.api.client.Sound$AttenuationType; + LINEAR: com.chattriggers.ctjs.api.client.Sound$AttenuationType; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.client.Sound$AttenuationType; + } + interface Sound$AttenuationType extends kotlin.Enum, com.chattriggers.ctjs.api.CTWrapper { + } + const Sound$AttenuationType$Companion: { + fromMC(mcValue: net.minecraft.client.resources.sounds.SoundInstance$Attenuation): com.chattriggers.ctjs.api.client.Sound$AttenuationType; + from(value: any): com.chattriggers.ctjs.api.client.Sound$AttenuationType; + new(): unknown; + } + interface Sound$AttenuationType$Companion { + fromMC(mcValue: net.minecraft.client.resources.sounds.SoundInstance$Attenuation): com.chattriggers.ctjs.api.client.Sound$AttenuationType; + from(value: any): com.chattriggers.ctjs.api.client.Sound$AttenuationType; + new(): unknown; + } + } + namespace render { + namespace skia { + const SkijaBootstrap: { + new(): com.chattriggers.ctjs.api.render.skia.SkijaBootstrap; + } + interface SkijaBootstrap extends net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint { + } + } + const Font: { + new(name: string, resourcePath: string): com.chattriggers.ctjs.api.render.Font; + new(name: string, inputStream: java.io.InputStream): com.chattriggers.ctjs.api.render.Font; + } + interface Font { + getName(): string; + buffer(): java.nio.ByteBuffer; + } + const Render2D: { + ScreenWrapper: typeof com.chattriggers.ctjs.api.render.Render2D$ScreenWrapper; + screen: com.chattriggers.ctjs.api.render.Render2D$ScreenWrapper; + getPartialTicks(): number; + BLACK: number; + DARK_BLUE: number; + DARK_GREEN: number; + DARK_AQUA: number; + DARK_RED: number; + DARK_PURPLE: number; + GOLD: number; + GRAY: number; + DARK_GRAY: number; + BLUE: number; + GREEN: number; + AQUA: number; + RED: number; + LIGHT_PURPLE: number; + YELLOW: number; + WHITE: number; + color(color: number): number; + getFontRenderer(): net.minecraft.client.gui.Font; + getRenderManager(): net.minecraft.client.renderer.LevelRenderer; + getStringWidth(text: string): number; + getColor(red: number, green: number, blue: number): number; + getColor(red: number, green: number, blue: number, alpha: number): number; + getRainbow(step: number): number; + getRainbow(step: number, speed: number): number; + getRainbowColors(step: number): Array; + getRainbowColors(step: number, speed: number): Array; + deleteTexture(texture: com.chattriggers.ctjs.api.render.Image): com.chattriggers.ctjs.api.render.Render2D; + pushMatrix(): com.chattriggers.ctjs.api.render.Render2D; + pushMatrix(stack: gg.essential.universal.UMatrixStack): com.chattriggers.ctjs.api.render.Render2D; + popMatrix(): com.chattriggers.ctjs.api.render.Render2D; + translate(x: number, y: number): com.chattriggers.ctjs.api.render.Render2D; + translate(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Render2D; + scale(scaleX: number): com.chattriggers.ctjs.api.render.Render2D; + scale(scaleX: number, scaleY: number): com.chattriggers.ctjs.api.render.Render2D; + scale(scaleX: number, scaleY: number, scaleZ: number): com.chattriggers.ctjs.api.render.Render2D; + rotate(angle: number): com.chattriggers.ctjs.api.render.Render2D; + rotate(angle: number, x: number): com.chattriggers.ctjs.api.render.Render2D; + rotate(angle: number, x: number, y: number): com.chattriggers.ctjs.api.render.Render2D; + rotate(angle: number, x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Render2D; + multiply(quaternion: org.joml.Quaternionf): com.chattriggers.ctjs.api.render.Render2D; + fixAlpha(color: number): number; + /** + * Gets a fixed render position from x, y, and z inputs adjusted with partial ticks + * @param x the X coordinate + * @param y the Y coordinate + * @param z the Z coordinate + * @return the Vec3f position to render at + */ + getRenderPos(x: number, y: number, z: number): com.chattriggers.ctjs.api.vec.Vec3f; + drawString(text: string, x: number, y: number): void; + drawString(text: string, x: number, y: number, color: number): void; + drawString(text: string, x: number, y: number, color: number, shadow: boolean): void; + drawStringWithShadow(text: string, x: number, y: number): void; + drawStringWithShadow(text: string, x: number, y: number, color: number): void; + drawImage(image: com.chattriggers.ctjs.api.render.Image, x: number, y: number, width: number, height: number): void; + /** + * Draws a player entity to the screen, similar to the one displayed in the inventory screen. + * + * Takes a parameter with the following options: + * - player: The player entity to draw. Can be a [PlayerMP] or [AbstractClientPlayerEntity]. + * Defaults to Player.toMC() + * - x: The x position on the screen to render the player + * - y: The y position on the screen to render the player + * - size: The size of the rendered player + * - rotate: Whether the player should look at the mouse cursor, similar to the inventory screen + * - pitch: THe pitch the rendered player will face, if rotate is false + * - yaw: The yaw the rendered player will face, if rotate is false + * - showNametag: Whether the nametag of the player should be rendered + * - showArmor: Whether the armor of the player should be rendered + * - showCape: Whether the cape of the player should be rendered + * - showHeldItem: Whether the held item of the player should be rendered + * - showArrows: Whether any arrows stuck in the player's model should be rendered + * - showElytra: Whether the player's Elytra should be rendered + * - showParrot: Whether a perched parrot should be rendered + * - showBeeStinger: Whether any stuck bee stingers should be rendered + * + * @param obj An options bag + */ + drawPlayer(obj: org.mozilla.javascript.NativeObject): void; + new(): com.chattriggers.ctjs.api.render.Render2D; + } + interface Render2D extends com.chattriggers.ctjs.api.render.GuiRendererBackend { + screen: com.chattriggers.ctjs.api.render.Render2D$ScreenWrapper; + getPartialTicks(): number; + BLACK: number; + DARK_BLUE: number; + DARK_GREEN: number; + DARK_AQUA: number; + DARK_RED: number; + DARK_PURPLE: number; + GOLD: number; + GRAY: number; + DARK_GRAY: number; + BLUE: number; + GREEN: number; + AQUA: number; + RED: number; + LIGHT_PURPLE: number; + YELLOW: number; + WHITE: number; + color(color: number): number; + getFontRenderer(): net.minecraft.client.gui.Font; + getRenderManager(): net.minecraft.client.renderer.LevelRenderer; + getStringWidth(text: string): number; + getColor(red: number, green: number, blue: number): number; + getColor(red: number, green: number, blue: number, alpha: number): number; + getRainbow(step: number): number; + getRainbow(step: number, speed: number): number; + getRainbowColors(step: number): Array; + getRainbowColors(step: number, speed: number): Array; + deleteTexture(texture: com.chattriggers.ctjs.api.render.Image): com.chattriggers.ctjs.api.render.Render2D; + pushMatrix(): com.chattriggers.ctjs.api.render.Render2D; + pushMatrix(stack: gg.essential.universal.UMatrixStack): com.chattriggers.ctjs.api.render.Render2D; + popMatrix(): com.chattriggers.ctjs.api.render.Render2D; + translate(x: number, y: number): com.chattriggers.ctjs.api.render.Render2D; + translate(x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Render2D; + scale(scaleX: number): com.chattriggers.ctjs.api.render.Render2D; + scale(scaleX: number, scaleY: number): com.chattriggers.ctjs.api.render.Render2D; + scale(scaleX: number, scaleY: number, scaleZ: number): com.chattriggers.ctjs.api.render.Render2D; + rotate(angle: number): com.chattriggers.ctjs.api.render.Render2D; + rotate(angle: number, x: number): com.chattriggers.ctjs.api.render.Render2D; + rotate(angle: number, x: number, y: number): com.chattriggers.ctjs.api.render.Render2D; + rotate(angle: number, x: number, y: number, z: number): com.chattriggers.ctjs.api.render.Render2D; + multiply(quaternion: org.joml.Quaternionf): com.chattriggers.ctjs.api.render.Render2D; + fixAlpha(color: number): number; + /** + * Gets a fixed render position from x, y, and z inputs adjusted with partial ticks + * @param x the X coordinate + * @param y the Y coordinate + * @param z the Z coordinate + * @return the Vec3f position to render at + */ + getRenderPos(x: number, y: number, z: number): com.chattriggers.ctjs.api.vec.Vec3f; + drawString(text: string, x: number, y: number): void; + drawString(text: string, x: number, y: number, color: number): void; + drawString(text: string, x: number, y: number, color: number, shadow: boolean): void; + drawStringWithShadow(text: string, x: number, y: number): void; + drawStringWithShadow(text: string, x: number, y: number, color: number): void; + drawImage(image: com.chattriggers.ctjs.api.render.Image, x: number, y: number, width: number, height: number): void; + /** + * Draws a player entity to the screen, similar to the one displayed in the inventory screen. + * + * Takes a parameter with the following options: + * - player: The player entity to draw. Can be a [PlayerMP] or [AbstractClientPlayerEntity]. + * Defaults to Player.toMC() + * - x: The x position on the screen to render the player + * - y: The y position on the screen to render the player + * - size: The size of the rendered player + * - rotate: Whether the player should look at the mouse cursor, similar to the inventory screen + * - pitch: THe pitch the rendered player will face, if rotate is false + * - yaw: The yaw the rendered player will face, if rotate is false + * - showNametag: Whether the nametag of the player should be rendered + * - showArmor: Whether the armor of the player should be rendered + * - showCape: Whether the cape of the player should be rendered + * - showHeldItem: Whether the held item of the player should be rendered + * - showArrows: Whether any arrows stuck in the player's model should be rendered + * - showElytra: Whether the player's Elytra should be rendered + * - showParrot: Whether a perched parrot should be rendered + * - showBeeStinger: Whether any stuck bee stingers should be rendered + * + * @param obj An options bag + */ + drawPlayer(obj: org.mozilla.javascript.NativeObject): void; + new(): com.chattriggers.ctjs.api.render.Render2D; + } + const GuiRendererBackend: { + GifData: typeof com.chattriggers.ctjs.api.render.GuiRendererBackend$GifData; + defaultFont: com.chattriggers.ctjs.api.render.Font; + ALIGN_CENTER: number; + ALIGN_MIDDLE: number; + /** + * Skija-backed 2D renderer used by the JavaScript-facing [Render2D] API. + */ + new(): com.chattriggers.ctjs.api.render.GuiRendererBackend; + } + interface GuiRendererBackend { + registerV5Render(callback: java.lang.Runnable): java.lang.Runnable; + unregisterV5Render(callback: java.lang.Runnable): void; + registerV5PreRender(callback: java.lang.Runnable): java.lang.Runnable; + unregisterV5PreRender(callback: java.lang.Runnable): void; + clearCallbacks(): void; + runPreDrawables(context: net.minecraft.client.gui.GuiGraphicsExtractor): void; + runDrawables(context: net.minecraft.client.gui.GuiGraphicsExtractor): void; + blurBackground(): void; + save(): void; + restore(): void; + globalAlpha(value: number): void; + scissor(x: number, y: number, width: number, height: number): void; + resetScissor(): void; + pushScissor(x: number, y: number, width: number, height: number): void; + popScissor(): void; + drawRect(x: number, y: number, width: number, height: number, color: number): void; + drawRoundedRect(x: number, y: number, width: number, height: number, radius: number, color: number): void; + drawRoundedRectVaried(x: number, y: number, width: number, height: number, color: number, tl: number, tr: number, br: number, bl: number): void; + drawCircle(x: number, y: number, radius: number, color: number): void; + drawHollowRect(x: number, y: number, width: number, height: number, thickness: number, color: number): void; + drawHollowRect(x: number, y: number, width: number, height: number, thickness: number, color: number, radius: number): void; + drawLine(x1: number, y1: number, x2: number, y2: number, thickness: number, color: number): void; + drawDropShadow(x: number, y: number, width: number, height: number, radius: number, blur: number, spread: number, color: number): void; + drawGradientRect(x: number, y: number, width: number, height: number, color1: number, color2: number, direction: any): void; + drawGradientRect(x: number, y: number, width: number, height: number, color1: number, color2: number, direction: any, radius: number): void; + drawHollowGradientRect(x: number, y: number, width: number, height: number, thickness: number, color1: number, color2: number, direction: any): void; + drawHollowGradientRect(x: number, y: number, width: number, height: number, thickness: number, color1: number, color2: number, direction: any, radius: number): void; + drawCheckerboard(x: number, y: number, width: number, height: number, radius: number): void; + drawCheckerboard(x: number, y: number, width: number, height: number, radius: number, size: number): void; + drawHueBar(x: number, y: number, width: number, height: number, radius: number): void; + getDefaultFont(): com.chattriggers.ctjs.api.render.Font; + text(text: string, x: number, y: number, size: number, color: number, align: number): void; + text(text: string, x: number, y: number, size: number, color: number, font: com.chattriggers.ctjs.api.render.Font | null | undefined, align: number): void; + textWidth(text: string, size: number): number; + textWidth(text: string, size: number, font: com.chattriggers.ctjs.api.render.Font | null | undefined): number; + loadImage(path: string): string; + unloadImage(path: string): void | null | undefined; + isImageLoaded(path: string): boolean; + drawImage(path: string, x: number, y: number, width: number, height: number): void; + drawImage(path: string, x: number, y: number, width: number, height: number, radius: number): void; + drawImage(path: string, x: number, y: number, width: number, height: number, radius: number, imageAlpha: number): void; + drawImageFromUrl(url: string, x: number, y: number, width: number, height: number): void; + drawImageFromUrl(url: string, x: number, y: number, width: number, height: number, radius: number): void; + drawImageFromUrl(url: string, x: number, y: number, width: number, height: number, radius: number, imageAlpha: number): void; + loadGif(path: string): com.chattriggers.ctjs.api.render.GuiRendererBackend$GifData | null | undefined; + unloadGif(path: string): void | null | undefined; + drawGif(path: string, x: number, y: number, width: number, height: number, frameIndex: number): void; + drawGif(path: string, x: number, y: number, width: number, height: number, frameIndex: number, radius: number): void; + drawGif(path: string, x: number, y: number, width: number, height: number, frameIndex: number, radius: number, imageAlpha: number): void; + clearImageCache(): void; + getCacheStats(): string; + destroy(): void; + } + const GuiRendererBackend$GifData: { + new(width: number, height: number, frameCount: number, delays: Array): com.chattriggers.ctjs.api.render.GuiRendererBackend$GifData; + } + interface GuiRendererBackend$GifData { + getWidth(): number; + getHeight(): number; + getFrameCount(): number; + getDelays(): Array; + component1(): number; + component2(): number; + component3(): number; + component4(): Array; + copy(width: number, height: number, frameCount: number, delays: Array): com.chattriggers.ctjs.api.render.GuiRendererBackend$GifData; + } + const Render2D$ScreenWrapper: { + new(): com.chattriggers.ctjs.api.render.Render2D$ScreenWrapper; + } + interface Render2D$ScreenWrapper { + getWidth(): number; + getHeight(): number; + getScale(): number; + } + const Image: { + new(image: java.awt.image.BufferedImage | null | undefined): com.chattriggers.ctjs.api.render.Image; + } + interface Image { + getImage(): java.awt.image.BufferedImage | null | undefined; + setImage(value: java.awt.image.BufferedImage | null | undefined): void; + getTextureWidth(): number; + getTextureHeight(): number; + getTexture(): net.minecraft.client.renderer.texture.DynamicTexture | null | undefined; + /** + * Clears the image from GPU memory and removes its references CT side + * that way it can be garbage collected if not referenced in js code. + */ + destroy(): void; + draw(x: number, y: number): com.chattriggers.ctjs.api.render.Image; + draw(x: number, y: number, width: number | null | undefined): com.chattriggers.ctjs.api.render.Image; + draw(x: number, y: number, width: number | null | undefined, height: number | null | undefined): com.chattriggers.ctjs.api.render.Image; + } + const Image$Companion: { + /** + * Create an image object from a java.io.File object. Throws an exception + * if the file cannot be found. + */ + fromFile(file: java.io.File): com.chattriggers.ctjs.api.render.Image; + /** + * Create an image object from a file path. Throws an exception + * if the file cannot be found. + */ + fromFile(file: string): com.chattriggers.ctjs.api.render.Image; + /** + * Create an image object from a file path, relative to the assets directory. + * Throws an exception if the file cannot be found. + */ + fromAsset(name: string): com.chattriggers.ctjs.api.render.Image; + /** + * Creates an image object from a URL. Throws an exception if an image + * cannot be created from the URL. Will cache the image in the assets + */ + fromUrl(url: string): com.chattriggers.ctjs.api.render.Image; + /** + * Creates an image object from a URL. Throws an exception if an image + * cannot be created from the URL. Will cache the image in the assets + */ + fromUrl(url: string, cachedImageName: string | null | undefined): com.chattriggers.ctjs.api.render.Image; + new(): com.chattriggers.ctjs.api.render.Image$Companion; + } + interface Image$Companion { + /** + * Create an image object from a java.io.File object. Throws an exception + * if the file cannot be found. + */ + fromFile(file: java.io.File): com.chattriggers.ctjs.api.render.Image; + /** + * Create an image object from a file path. Throws an exception + * if the file cannot be found. + */ + fromFile(file: string): com.chattriggers.ctjs.api.render.Image; + /** + * Create an image object from a file path, relative to the assets directory. + * Throws an exception if the file cannot be found. + */ + fromAsset(name: string): com.chattriggers.ctjs.api.render.Image; + /** + * Creates an image object from a URL. Throws an exception if an image + * cannot be created from the URL. Will cache the image in the assets + */ + fromUrl(url: string): com.chattriggers.ctjs.api.render.Image; + /** + * Creates an image object from a URL. Throws an exception if an image + * cannot be created from the URL. Will cache the image in the assets + */ + fromUrl(url: string, cachedImageName: string | null | undefined): com.chattriggers.ctjs.api.render.Image; + new(): com.chattriggers.ctjs.api.render.Image$Companion; + } + const Display: { + Background: typeof com.chattriggers.ctjs.api.render.Display$Background; + Order: typeof com.chattriggers.ctjs.api.render.Display$Order; + new(): com.chattriggers.ctjs.api.render.Display; + new(config: org.mozilla.javascript.NativeObject | null | undefined): com.chattriggers.ctjs.api.render.Display; + } + interface Display { + getTextColor(): number; + /** + * Sets the color of the texts + * + * Overrides the color of the individual texts + */ + setTextColor(textColor: number): com.chattriggers.ctjs.api.render.Display; + getAlign(): com.chattriggers.ctjs.api.render.Text$Align; + /** + * Set the alignment of the texts in the display + * + * Overrides alignment of the individual texts + */ + setAlign(align: any): com.chattriggers.ctjs.api.render.Display; + getOrder(): com.chattriggers.ctjs.api.render.Display$Order; + setOrder(order: any): com.chattriggers.ctjs.api.render.Display; + getBackground(): com.chattriggers.ctjs.api.render.Display$Background; + setBackground(background: any): com.chattriggers.ctjs.api.render.Display; + getBackgroundColor(): number; + setBackgroundColor(backgroundColor: number): com.chattriggers.ctjs.api.render.Display; + setLine(index: number, line: any): com.chattriggers.ctjs.api.render.Display; + getLine(index: number): com.chattriggers.ctjs.api.render.Text; + getLines(): Array; + setLines(lines: Array): com.chattriggers.ctjs.api.render.Display; + addLine(line: any): com.chattriggers.ctjs.api.render.Display; + addLines(lines: any): com.chattriggers.ctjs.api.render.Display; + removeLine(index: number): com.chattriggers.ctjs.api.render.Display; + clearLines(): com.chattriggers.ctjs.api.render.Display; + getX(): number; + setX(x: number): com.chattriggers.ctjs.api.render.Display; + getY(): number; + setY(y: number): com.chattriggers.ctjs.api.render.Display; + getWidth(): number; + getHeight(): number; + getMinWidth(): number; + setMinWidth(minWidth: number): com.chattriggers.ctjs.api.render.Display; + draw(ctx: net.minecraft.client.gui.GuiGraphicsExtractor): void; + } + const Text$Align: { + LEFT: com.chattriggers.ctjs.api.render.Text$Align; + CENTER: com.chattriggers.ctjs.api.render.Text$Align; + RIGHT: com.chattriggers.ctjs.api.render.Text$Align; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.render.Text$Align; + } + interface Text$Align extends kotlin.Enum { + } + const Display$Order: { + REVERSED: com.chattriggers.ctjs.api.render.Display$Order; + NORMAL: com.chattriggers.ctjs.api.render.Display$Order; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.render.Display$Order; + } + interface Display$Order extends kotlin.Enum { + } + const Display$Background: { + NONE: com.chattriggers.ctjs.api.render.Display$Background; + FULL: com.chattriggers.ctjs.api.render.Display$Background; + PER_LINE: com.chattriggers.ctjs.api.render.Display$Background; + getEntries(): kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): com.chattriggers.ctjs.api.render.Display$Background; + } + interface Display$Background extends kotlin.Enum { + } + const Text: { + Align: typeof com.chattriggers.ctjs.api.render.Text$Align; + new(string: string): com.chattriggers.ctjs.api.render.Text; + new(string: string, x: number): com.chattriggers.ctjs.api.render.Text; + new(string: string, x: number, y: number): com.chattriggers.ctjs.api.render.Text; + new(string: string, config: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.render.Text; + } + interface Text { + getString(): string; + setString(string: string): com.chattriggers.ctjs.api.render.Text; + getColor(): number; + setColor(color: number): com.chattriggers.ctjs.api.render.Text; + getFormatted(): boolean; + setFormatted(formatted: boolean): com.chattriggers.ctjs.api.render.Text; + getShadow(): boolean; + setShadow(shadow: boolean): com.chattriggers.ctjs.api.render.Text; + getAlign(): com.chattriggers.ctjs.api.render.Text$Align; + setAlign(align: any): com.chattriggers.ctjs.api.render.Text; + getBackground(): boolean; + /** + * Set the background + * + * true: Background is enabled + * false: Background is disabled + */ + setBackground(background: boolean): com.chattriggers.ctjs.api.render.Text; + getBackgroundColor(): number; + setBackgroundColor(backgroundColor: number): com.chattriggers.ctjs.api.render.Text; + getX(): number; + setX(x: number): com.chattriggers.ctjs.api.render.Text; + getY(): number; + setY(y: number): com.chattriggers.ctjs.api.render.Text; + /** + * Gets the width of the text + * This is automatically updated when the text is drawn. + * + * @return the width of the text + */ + getWidth(): number; + getLines(): Array; + getMaxLines(): number; + setMaxLines(maxLines: number): com.chattriggers.ctjs.api.render.Text; + getScale(): number; + setScale(scale: number): com.chattriggers.ctjs.api.render.Text; + /** + * Sets the maximum width of the text, splitting it into multiple lines if necessary. + * + * @param maxWidth the maximum width of the text + * @return the Text object for method chaining + */ + setMaxWidth(maxWidth: number): com.chattriggers.ctjs.api.render.Text; + getMaxWidth(): number; + getHeight(): number; + exceedsMaxLines(): boolean; + draw(ctx: net.minecraft.client.gui.GuiGraphicsExtractor): com.chattriggers.ctjs.api.render.Text; + draw(ctx: net.minecraft.client.gui.GuiGraphicsExtractor, x: number | null | undefined): com.chattriggers.ctjs.api.render.Text; + draw(ctx: net.minecraft.client.gui.GuiGraphicsExtractor, x: number | null | undefined, y: number | null | undefined): com.chattriggers.ctjs.api.render.Text; + } + const DrawContextHolder: { + currentContext: net.minecraft.client.gui.GuiGraphicsExtractor | null | undefined; + new(): com.chattriggers.ctjs.api.render.DrawContextHolder; + } + interface DrawContextHolder { + currentContext: net.minecraft.client.gui.GuiGraphicsExtractor | null | undefined; + new(): com.chattriggers.ctjs.api.render.DrawContextHolder; + withContext(context: net.minecraft.client.gui.GuiGraphicsExtractor, block: kotlin.Function0): T; + } + const Rectangle: { + new(color: number, x: number, y: number, width: number, height: number): com.chattriggers.ctjs.api.render.Rectangle; + } + interface Rectangle { + getColor(): number; + setColor(color: number): com.chattriggers.ctjs.api.render.Rectangle; + getX(): number; + setX(x: number): com.chattriggers.ctjs.api.render.Rectangle; + getY(): number; + setY(y: number): com.chattriggers.ctjs.api.render.Rectangle; + getWidth(): number; + setWidth(width: number): com.chattriggers.ctjs.api.render.Rectangle; + getHeight(): number; + setHeight(height: number): com.chattriggers.ctjs.api.render.Rectangle; + isShadow(): boolean; + setShadow(shadow: boolean): com.chattriggers.ctjs.api.render.Rectangle; + setShadow(color: number, x: number, y: number): com.chattriggers.ctjs.api.render.Rectangle; + getShadowOffset(): com.chattriggers.ctjs.api.vec.Vec2f; + getShadowOffsetX(): number; + getShadowOffsetY(): number; + setShadowOffset(x: number, y: number): com.chattriggers.ctjs.api.render.Rectangle; + setShadowOffsetX(x: number): com.chattriggers.ctjs.api.render.Rectangle; + setShadowOffsetY(y: number): com.chattriggers.ctjs.api.render.Rectangle; + getShadowColor(): number; + setShadowColor(color: number): com.chattriggers.ctjs.api.render.Rectangle; + getOutline(): boolean; + setOutline(outline: boolean): com.chattriggers.ctjs.api.render.Rectangle; + setOutline(color: number, thickness: number): com.chattriggers.ctjs.api.render.Rectangle; + getOutlineColor(): number; + setOutlineColor(color: number): com.chattriggers.ctjs.api.render.Rectangle; + getThickness(): number; + setThickness(thickness: number): com.chattriggers.ctjs.api.render.Rectangle; + draw(): com.chattriggers.ctjs.api.render.Rectangle; + } + const Book: { + new(): com.chattriggers.ctjs.api.render.Book; + } + interface Book { + /** + * Add a page to the book. + * + * @param contents the entire message for what the page should be + * @return the current book to allow method chaining + */ + addPage(contents: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Book; + /** + * Overloaded method for adding a simple page to the book. + * + * @param message a simple string to make the page + * @return the current book to allow method chaining + */ + addPage(message: string): com.chattriggers.ctjs.api.render.Book; + /** + * Inserts a page at the specified index of the book + * + * @param pageIndex the index of the page to set + * @param message the message to set the page to + * @return the current book to allow method chaining + */ + insertPage(pageIndex: number, message: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Book; + insertPage(pageIndex: number, message: string): com.chattriggers.ctjs.api.render.Book; + /** + * Sets a page of the book to the specified message. + * + * @param pageIndex the index of the page to set + * @param message the message to set the page to + * @return the current book to allow method chaining + */ + setPage(pageIndex: number, message: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Book; + setPage(pageIndex: number, message: string): com.chattriggers.ctjs.api.render.Book; + display(): void; + display(pageIndex: number): void; + isOpen(): boolean; + getCurrentPage(): number; + } + const Render3D: { + Color: typeof com.chattriggers.ctjs.api.render.Render3D$Color; + drawFilledBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawFilledBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, depth: boolean): void; + drawFilledBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawFilledBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color, depth: boolean): void; + drawFilledBoxes(positions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawFilledBoxes(positions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, depth: boolean): void; + drawFilledAABBs(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawFilledAABBs(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, depth: boolean): void; + drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawWireFrameBoxes(positions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawWireFrameBoxes(positions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawWireFrameBoxes(positions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawWireFrameAABBs(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawWireFrameAABBs(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawWireFrameAABBs(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawBoxes(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawBoxes(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawBoxes(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color, wireThickness: number): void; + drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color, wireThickness: number, depth: boolean): void; + drawStyledBoxes(positions: Array, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawStyledBoxes(positions: Array, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color, wireThickness: number): void; + drawStyledBoxes(positions: Array, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color, wireThickness: number, depth: boolean): void; + drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean): void; + drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean, thickness: number): void; + drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean, thickness: number, depth: boolean): void; + drawSizedBoxes(positions: Array, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawSizedBoxes(positions: Array, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean): void; + drawSizedBoxes(positions: Array, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean, thickness: number): void; + drawSizedBoxes(positions: Array, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean, thickness: number, depth: boolean): void; + drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawHitboxes(entities: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawHitboxes(entities: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawHitboxes(entities: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawLines(points: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawLines(points: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawLines(points: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawLines(points: Array, colors: Array): void; + drawLines(points: Array, colors: Array, thickness: number): void; + drawLines(points: Array, colors: Array, thickness: number, depth: boolean): void; + drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawTracers(targetPositions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawTracers(targetPositions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawTracers(targetPositions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean, translate: boolean): void; + drawTexts(texts: Array, positions: Array): void; + drawTexts(texts: Array, positions: Array, scale: number): void; + drawTexts(texts: Array, positions: Array, scale: number, backgroundBox: boolean): void; + drawTexts(texts: Array, positions: Array, scale: number, backgroundBox: boolean, increase: boolean): void; + drawTexts(texts: Array, positions: Array, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean): void; + drawTexts(texts: Array, positions: Array, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean, translate: boolean): void; + new(): com.chattriggers.ctjs.api.render.Render3D; + } + interface Render3D { + drawFilledBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawFilledBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, depth: boolean): void; + drawFilledBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawFilledBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color, depth: boolean): void; + drawFilledBoxes(positions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawFilledBoxes(positions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, depth: boolean): void; + drawFilledAABBs(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawFilledAABBs(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, depth: boolean): void; + drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawWireFrameBox(pos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawWireFrameBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawWireFrameBoxes(positions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawWireFrameBoxes(positions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawWireFrameBoxes(positions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawWireFrameAABBs(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawWireFrameAABBs(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawWireFrameAABBs(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawBox(box: net.minecraft.world.phys.AABB, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawBoxes(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawBoxes(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawBoxes(boxes: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color, wireThickness: number): void; + drawStyledBox(pos: net.minecraft.world.phys.Vec3, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color, wireThickness: number, depth: boolean): void; + drawStyledBoxes(positions: Array, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawStyledBoxes(positions: Array, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color, wireThickness: number): void; + drawStyledBoxes(positions: Array, color1: com.chattriggers.ctjs.api.render.Render3D$Color, color2: com.chattriggers.ctjs.api.render.Render3D$Color, wireThickness: number, depth: boolean): void; + drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean): void; + drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean, thickness: number): void; + drawSizedBox(pos: net.minecraft.world.phys.Vec3, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean, thickness: number, depth: boolean): void; + drawSizedBoxes(positions: Array, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawSizedBoxes(positions: Array, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean): void; + drawSizedBoxes(positions: Array, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean, thickness: number): void; + drawSizedBoxes(positions: Array, width: number, height: number, length: number, color: com.chattriggers.ctjs.api.render.Render3D$Color, filled: boolean, thickness: number, depth: boolean): void; + drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawHitbox(entity: net.minecraft.world.entity.Entity, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawHitboxes(entities: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawHitboxes(entities: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawHitboxes(entities: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawLine(start: net.minecraft.world.phys.Vec3, end: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawLines(points: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawLines(points: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawLines(points: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawLines(points: Array, colors: Array): void; + drawLines(points: Array, colors: Array, thickness: number): void; + drawLines(points: Array, colors: Array, thickness: number, depth: boolean): void; + drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawTracer(targetPos: net.minecraft.world.phys.Vec3, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawTracers(targetPositions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color): void; + drawTracers(targetPositions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number): void; + drawTracers(targetPositions: Array, color: com.chattriggers.ctjs.api.render.Render3D$Color, thickness: number, depth: boolean): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean): void; + drawText(text: string, pos: net.minecraft.world.phys.Vec3, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean, translate: boolean): void; + drawTexts(texts: Array, positions: Array): void; + drawTexts(texts: Array, positions: Array, scale: number): void; + drawTexts(texts: Array, positions: Array, scale: number, backgroundBox: boolean): void; + drawTexts(texts: Array, positions: Array, scale: number, backgroundBox: boolean, increase: boolean): void; + drawTexts(texts: Array, positions: Array, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean): void; + drawTexts(texts: Array, positions: Array, scale: number, backgroundBox: boolean, increase: boolean, seeThrough: boolean, translate: boolean): void; + new(): com.chattriggers.ctjs.api.render.Render3D; + } + const Render3D$Color: { + new(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.Render3D$Color; + } + interface Render3D$Color { + getR(): number; + getG(): number; + getB(): number; + getA(): number; + getPacked(): number; + component1(): number; + component2(): number; + component3(): number; + component4(): number; + copy(r: number, g: number, b: number, a: number): com.chattriggers.ctjs.api.render.Render3D$Color; + } + const Gui: { + new(): com.chattriggers.ctjs.api.render.Gui; + new(title: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Gui; + } + interface Gui extends gg.essential.universal.UScreen { + open(): void; + isOpen(): boolean; + /** + * Registers a method to be run while gui is open. + * Registered method runs on draw. + * Arguments passed through to method: + * - int mouseX + * - int mouseY + * - float partialTicks + * + * @param method the method to run + * @return the trigger + */ + registerDraw(method: any): com.chattriggers.ctjs.api.render.Gui; + /** + * Registers a method to be run while gui is open. + * Registered method runs on mouse click. + * Arguments passed through to method: + * - int mouseX + * - int mouseY + * - int button + * + * @param method the method to run + * @return the trigger + */ + registerClicked(method: any): com.chattriggers.ctjs.api.render.Gui; + /** + * Registers a method to be run while the gui is open. + * Registered method runs on mouse scroll. + * Arguments passed through to method: + * - int mouseX + * - int mouseY + * - int scroll direction + */ + registerScrolled(method: any): com.chattriggers.ctjs.api.render.Gui; + /** + * Registers a method to be run while gui is open. + * Registered method runs on key input. + * Arguments passed through to method: + * - char typed character + * - int key code + * + * @param method the method to run + * @return the trigger + */ + registerKeyTyped(method: any): com.chattriggers.ctjs.api.render.Gui; + /** + * Registers a method to be run while gui is open. + * Registered method runs on key input. + * Arguments passed through to method: + * - int mouseX + * - int mouseY + * - int clickedMouseButton + * - long timeSinceLastClick + * + * @param method the method to run + * @return the trigger + */ + registerMouseDragged(method: any): com.chattriggers.ctjs.api.render.Gui; + /** + * Registers a method to be run while gui is open. + * Registered method runs on mouse release. + * Arguments passed through to method: + * - int mouseX + * - int mouseY + * - int button + * + * @param method the method to run + * @return the trigger + */ + registerMouseReleased(method: any): com.chattriggers.ctjs.api.render.Gui; + /** + * Registers a method to be run while gui is open. + * Registered method runs when an action is performed (clicking a button) + * Arguments passed through to method: + * - the button that is clicked + * + * @param method the method to run + * @return the trigger + */ + registerActionPerformed(method: any): com.chattriggers.ctjs.api.render.Gui; + /** + * Registers a method to be run when the gui is opened. + * Arguments passed through to method: + * - the gui that is opened + * + * @param method the method to run + * @return the trigger + */ + registerOpened(method: any): com.chattriggers.ctjs.api.render.Gui; + /** + * Registers a method to be run when the gui is closed. + * Arguments passed through to method: + * - the gui that is closed + * + * @param method the method to run + * @return the trigger + */ + registerClosed(method: any): com.chattriggers.ctjs.api.render.Gui; + unregisterDraw(): com.chattriggers.ctjs.api.render.Gui; + unregisterClicked(): com.chattriggers.ctjs.api.render.Gui; + unregisterScrolled(): com.chattriggers.ctjs.api.render.Gui; + unregisterKeyTyped(): com.chattriggers.ctjs.api.render.Gui; + unregisterMouseDragged(): com.chattriggers.ctjs.api.render.Gui; + unregisterMouseReleased(): com.chattriggers.ctjs.api.render.Gui; + unregisterActionPerformed(): com.chattriggers.ctjs.api.render.Gui; + unregisterOpened(): com.chattriggers.ctjs.api.render.Gui; + unregisterClosed(): com.chattriggers.ctjs.api.render.Gui; + setDoesPauseGame(doesPauseGame: boolean): com.chattriggers.ctjs.api.render.Gui; + /** + * Add a base Minecraft button to the gui + * + * @param button the button to add + * @return the button ID for use in actionPerformed + */ + addButton(button: net.minecraft.client.gui.components.Button): number; + /** + * Add a base Minecraft button to the gui + * + * @param x the x position of the button + * @param y the y position of the button + * @param width the width of the button + * @param height the height of the button + * @param buttonText the label of the button + * @return the button ID for use in actionPerformed + */ + addButton(x: number, y: number, buttonText: com.chattriggers.ctjs.api.message.TextComponent): number; + /** + * Add a base Minecraft button to the gui + * + * @param x the x position of the button + * @param y the y position of the button + * @param width the width of the button + * @param height the height of the button + * @param buttonText the label of the button + * @return the button ID for use in actionPerformed + */ + addButton(x: number, y: number, width: number, buttonText: com.chattriggers.ctjs.api.message.TextComponent): number; + /** + * Add a base Minecraft button to the gui + * + * @param x the x position of the button + * @param y the y position of the button + * @param width the width of the button + * @param height the height of the button + * @param buttonText the label of the button + * @return the button ID for use in actionPerformed + */ + addButton(x: number, y: number, width: number, height: number, buttonText: com.chattriggers.ctjs.api.message.TextComponent): number; + addButton(x: number, y: number, width: number, height: number, buttonText: string): number; + /** + * Removes a button from the gui with the given id + * + * @param buttonId the id of the button to remove + * @return the Gui for method chaining + */ + removeButton(buttonId: number): com.chattriggers.ctjs.api.render.Gui; + clearButtons(): com.chattriggers.ctjs.api.render.Gui; + getButtonVisibility(buttonId: number): boolean; + /** + * Sets the visibility of a button + * + * @param buttonId the id of the button to change + * @param visible the new visibility of the button + * @return the Gui for method chaining + */ + setButtonVisibility(buttonId: number, visible: boolean): com.chattriggers.ctjs.api.render.Gui; + getButtonEnabled(buttonId: number): boolean; + /** + * Sets the enabled state of a button + * + * @param buttonId the id of the button to set + * @param enabled the enabled state of the button + * @return the Gui for method chaining + */ + setButtonEnabled(buttonId: number, enabled: boolean): com.chattriggers.ctjs.api.render.Gui; + getButtonWidth(buttonId: number): number; + /** + * Sets the button's width. Button textures break if the width is greater than 200 + * + * @param buttonId id of the button + * @param width the new width + * @return the Gui for method chaining + */ + setButtonWidth(buttonId: number, width: number): com.chattriggers.ctjs.api.render.Gui; + getButtonHeight(buttonId: number): number; + /** + * Sets the button's height. Button textures break if the height is not 20 + * + * @param buttonId id of the button + * @param height the new height + * @return the Gui for method chaining + */ + setButtonHeight(buttonId: number, height: number): com.chattriggers.ctjs.api.render.Gui; + getButtonX(buttonId: number): number; + /** + * Sets the button's x position + * + * @param buttonId id of the button + * @param x the new x position + * @return the Gui for method chaining + */ + setButtonX(buttonId: number, x: number): com.chattriggers.ctjs.api.render.Gui; + getButtonY(buttonId: number): number; + /** + * Sets the button's y position + * + * @param buttonId id of the button + * @param y the new y position + * @return the Gui for method chaining + */ + setButtonY(buttonId: number, y: number): com.chattriggers.ctjs.api.render.Gui; + /** + * Sets the button's position + * + * @param buttonId id of the button + * @param x the new x position + * @param y the new y position + * @return the Gui for method chaining + */ + setButtonLoc(buttonId: number, x: number, y: number): com.chattriggers.ctjs.api.render.Gui; + /** + * Sets the button's text + * + * @param buttonId id of the button + * @param text the new text + */ + setButtonText(buttonId: number, text: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Gui; + /** + * Sets the button's text + * + * @param buttonId id of the button + * @param text the new text + */ + setButtonText(buttonId: number, text: string): com.chattriggers.ctjs.api.render.Gui; + /** + * Sets the gui's tooltip, this will be visible on top of the cursor + * when the gui is open. + * + * @param text the contents of the tooltip + */ + setTooltip(text: com.chattriggers.ctjs.api.message.TextComponent): com.chattriggers.ctjs.api.render.Gui; + /** + * Sets the gui's tooltip, this will be visible on top of the cursor + * when the gui is open. + * + * @param text the contents of the tooltip + */ + setTooltip(text: string): com.chattriggers.ctjs.api.render.Gui; + } + const Toast: { + new(config: org.mozilla.javascript.NativeObject): com.chattriggers.ctjs.api.render.Toast; + } + interface Toast extends net.minecraft.client.gui.components.toasts.Toast { + getTitle(): any | null | undefined; + setTitle(value: any | null | undefined): void; + getDescription(): any | null | undefined; + setDescription(value: any | null | undefined): void; + getBackground(): any | null | undefined; + setBackground(value: any | null | undefined): void; + getIcon(): any | null | undefined; + setIcon(value: any | null | undefined): void; + getDisplayTime(): number; + setDisplayTime(value: number): void; + show(): com.chattriggers.ctjs.api.render.Toast; + } + } + const Config$ConsoleSettings: { + new(clearConsoleOnLoad: boolean, openConsoleOnError: boolean, consoleFiraCodeFont: boolean, consoleFontSize: number, customTheme: boolean, consoleTheme: number, consoleTextColor: java.awt.Color, consoleBackgroundColor: java.awt.Color, consoleErrorColor: java.awt.Color, consoleWarningColor: java.awt.Color): com.chattriggers.ctjs.api.Config$ConsoleSettings; + } + interface Config$ConsoleSettings { + getClearConsoleOnLoad(): boolean; + setClearConsoleOnLoad(value: boolean): void; + getOpenConsoleOnError(): boolean; + setOpenConsoleOnError(value: boolean): void; + getConsoleFiraCodeFont(): boolean; + setConsoleFiraCodeFont(value: boolean): void; + getConsoleFontSize(): number; + setConsoleFontSize(value: number): void; + getCustomTheme(): boolean; + setCustomTheme(value: boolean): void; + getConsoleTheme(): number; + setConsoleTheme(value: number): void; + getConsoleTextColor(): java.awt.Color; + setConsoleTextColor(value: java.awt.Color): void; + getConsoleBackgroundColor(): java.awt.Color; + setConsoleBackgroundColor(value: java.awt.Color): void; + getConsoleErrorColor(): java.awt.Color; + setConsoleErrorColor(value: java.awt.Color): void; + getConsoleWarningColor(): java.awt.Color; + setConsoleWarningColor(value: java.awt.Color): void; + component1(): boolean; + component2(): boolean; + component3(): boolean; + component4(): number; + component5(): boolean; + component6(): number; + component7(): java.awt.Color; + component8(): java.awt.Color; + component9(): java.awt.Color; + component10(): java.awt.Color; + copy(clearConsoleOnLoad: boolean, openConsoleOnError: boolean, consoleFiraCodeFont: boolean, consoleFontSize: number, customTheme: boolean, consoleTheme: number, consoleTextColor: java.awt.Color, consoleBackgroundColor: java.awt.Color, consoleErrorColor: java.awt.Color, consoleWarningColor: java.awt.Color): com.chattriggers.ctjs.api.Config$ConsoleSettings; + } + const Config$ConsoleSettings$Companion: { + new(): unknown; + } + interface Config$ConsoleSettings$Companion { + new(): unknown; + make(): com.chattriggers.ctjs.api.Config$ConsoleSettings; + } + interface CTWrapper { + getMcValue(): MCClass; + toMC(): MCClass; + } + const Config: { + ConsoleSettings: typeof com.chattriggers.ctjs.api.Config$ConsoleSettings; + getModuleImportHelp(): boolean; + setModuleImportHelp(value: boolean): void; + getModuleChangelog(): boolean; + setModuleChangelog(value: boolean): void; + getShowUpdatesInChat(): boolean; + setShowUpdatesInChat(value: boolean): void; + getAutoUpdateModules(): boolean; + setAutoUpdateModules(value: boolean): void; + getSendStatistics(): boolean; + setSendStatistics(value: boolean): void; + getClearConsoleOnLoad(): boolean; + setClearConsoleOnLoad(value: boolean): void; + getOpenConsoleOnError(): boolean; + setOpenConsoleOnError(value: boolean): void; + getConsoleFiraCodeFont(): boolean; + setConsoleFiraCodeFont(value: boolean): void; + getConsoleFontSize(): number; + setConsoleFontSize(value: number): void; + getCustomTheme(): boolean; + setCustomTheme(value: boolean): void; + getConsoleTheme(): number; + setConsoleTheme(value: number): void; + getConsoleTextColor(): java.awt.Color; + setConsoleTextColor(value: java.awt.Color): void; + getConsoleBackgroundColor(): java.awt.Color; + setConsoleBackgroundColor(value: java.awt.Color): void; + getConsoleErrorColor(): java.awt.Color; + setConsoleErrorColor(value: java.awt.Color): void; + getConsoleWarningColor(): java.awt.Color; + setConsoleWarningColor(value: java.awt.Color): void; + wasWelcomeShown(): boolean; + markWelcomeShown(): void; + new(): com.chattriggers.ctjs.api.Config; + } + interface Config extends gg.essential.vigilance.Vigilant { + getModuleImportHelp(): boolean; + setModuleImportHelp(value: boolean): void; + getModuleChangelog(): boolean; + setModuleChangelog(value: boolean): void; + getShowUpdatesInChat(): boolean; + setShowUpdatesInChat(value: boolean): void; + getAutoUpdateModules(): boolean; + setAutoUpdateModules(value: boolean): void; + getSendStatistics(): boolean; + setSendStatistics(value: boolean): void; + getClearConsoleOnLoad(): boolean; + setClearConsoleOnLoad(value: boolean): void; + getOpenConsoleOnError(): boolean; + setOpenConsoleOnError(value: boolean): void; + getConsoleFiraCodeFont(): boolean; + setConsoleFiraCodeFont(value: boolean): void; + getConsoleFontSize(): number; + setConsoleFontSize(value: number): void; + getCustomTheme(): boolean; + setCustomTheme(value: boolean): void; + getConsoleTheme(): number; + setConsoleTheme(value: number): void; + getConsoleTextColor(): java.awt.Color; + setConsoleTextColor(value: java.awt.Color): void; + getConsoleBackgroundColor(): java.awt.Color; + setConsoleBackgroundColor(value: java.awt.Color): void; + getConsoleErrorColor(): java.awt.Color; + setConsoleErrorColor(value: java.awt.Color): void; + getConsoleWarningColor(): java.awt.Color; + setConsoleWarningColor(value: java.awt.Color): void; + wasWelcomeShown(): boolean; + markWelcomeShown(): void; + new(): com.chattriggers.ctjs.api.Config; + } + const V5Auth: { + getJwtToken(): string | null | undefined; + getFreshJwtToken(): string | null | undefined; + setJwtToken(token: string | null | undefined): void; + shutDownHard(): java.lang.Void; + new(): com.chattriggers.ctjs.api.V5Auth; + } + interface V5Auth { + getJwtToken(): string | null | undefined; + getFreshJwtToken(): string | null | undefined; + setJwtToken(token: string | null | undefined): void; + shutDownHard(): java.lang.Void; + new(): com.chattriggers.ctjs.api.V5Auth; + } + const Mappings: { /** - * Registers a new trigger that runs whenever a packet is sent from the client to the server - * - * Passes through two arguments: - * - The packet - * - The event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - [ClassFilterTrigger.setFilteredClasses] Sets the packet classes which this trigger - * gets fired for - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification + * Gets a classes unmapped class name, or throws an error if it is not mapped */ - registerPacketSent(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + unmapClass(clazz: java.lang.Class): string | null | undefined; /** - * Registers a new trigger that runs whenever a packet is sent to the client from the server - * - * Passes through two arguments: - * - The packet - * - The event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - [ClassFilterTrigger.setFilteredClasses] Sets the packet classes which this trigger - * gets fired for - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification + * Gets an unmapped class name from a mapped class name, or returns null if + * it either does not exist or is not mapped. */ - registerPacketReceived(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + unmapClassName(className: string): string | null | undefined; /** - * Registers a new trigger that runs whenever the player connects to a server - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification + * 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. */ - registerServerConnect(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + mapClassName(className: string): string | null | undefined; /** - * Registers a new trigger that runs whenever the player disconnects from a server - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification + * Allows runtime inspection of mappings */ - registerServerDisconnect(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + new(): com.chattriggers.ctjs.api.Mappings; + } + interface Mappings { /** - * Registers a new trigger that runs whenever an entity is rendered - * - * Passes through three arguments: - * - The [com.chattriggers.ctjs.api.entity.Entity] - * - The partial ticks - * - The event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - [ClassFilterTrigger.setFilteredClasses] Sets the entity classes which this trigger - * gets fired for - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification + * Gets a classes unmapped class name, or throws an error if it is not mapped */ - registerRenderEntity(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + unmapClass(clazz: java.lang.Class): string | null | undefined; /** - * Registers a new trigger that runs whenever a block entity is rendered - * - * Passes through three arguments: - * - The [com.chattriggers.ctjs.api.entity.BlockEntity] - * - The partial ticks - * - The event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - [ClassFilterTrigger.setFilteredClasses] Sets the tile entity classes which this trigger - * gets fired for - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification + * Gets an unmapped class name from a mapped class name, or returns null if + * it either does not exist or is not mapped. */ - registerRenderBlockEntity(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + unmapClassName(className: string): string | null | undefined; /** - * Registers a new trigger that runs after the current screen is rendered - * - * Passes through three arguments: - * - The mouseX - * - The mouseY - * - The GuiScreen - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification + * 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. */ - registerPostGuiRender(method: any): com.chattriggers.ctjs.api.triggers.Trigger; + mapClassName(className: string): string | null | undefined; /** - * Registers a new trigger that runs whenever a particle is spawned - * - * Passes through two arguments: - * - The [com.chattriggers.ctjs.api.entity.Particle] - * - The event, which can be cancelled - * - * Available modifications: - * - [Trigger.setPriority] Sets the priority - * - * @param method The method to call when the event is fired - * @return The trigger for additional modification + * Allows runtime inspection of mappings */ - registerSpawnParticle(method: any): com.chattriggers.ctjs.api.triggers.Trigger; - new(): com.chattriggers.ctjs.engine.Register; + new(): com.chattriggers.ctjs.api.Mappings; + } + } + namespace internal { + namespace launch { + interface IInjector { + } + } + namespace commands { + const CommandCollection: { + new(): com.chattriggers.ctjs.internal.commands.CommandCollection; + } + interface CommandCollection { + register(command: com.chattriggers.ctjs.internal.commands.Command): void; + unregister(command: com.chattriggers.ctjs.internal.commands.Command): void; + unregisterAll(): void; + onExecute(block: kotlin.Function1, void>): T; + } + interface Command { + getOverrideExisting(): boolean; + getName(): string; + registerImpl(dispatcher: com.mojang.brigadier.CommandDispatcher): void; + unregisterImpl(dispatcher: com.mojang.brigadier.CommandDispatcher): void; + } } } const CTJS: { @@ -53015,121 +53002,15 @@ declare global { } } } - namespace v5 { - namespace loader { - const V5PreLaunch: { - new(): com.v5.loader.V5PreLaunch; - } - interface V5PreLaunch extends net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint { - } - } - namespace storage { - const V5MixinStorage: { - get(key: string, defaultValue: any): any; - getBoolean(key: string, defaultValue: boolean): boolean; - getString(key: string, defaultValue: string): string; - set(key: string, value: any): void; - clear(): void; - applyMethod(methodName: string, original: T, expectedType: java.lang.Class): T; - } - interface V5MixinStorage { - } - } - namespace mixins { - const CrossCollisionBlockMixin: { - new(): com.v5.mixins.CrossCollisionBlockMixin; - } - interface CrossCollisionBlockMixin { - } - const MinecraftMixin: { - new(): com.v5.mixins.MinecraftMixin; - } - interface MinecraftMixin { - options: net.minecraft.client.Options; - } - const MouseHandlerMixin: { - new(): com.v5.mixins.MouseHandlerMixin; - } - interface MouseHandlerMixin { - } - const DrawContextCapture: { - new(): com.v5.mixins.DrawContextCapture; - } - interface DrawContextCapture { - } - const BlockMixin: { - new(): com.v5.mixins.BlockMixin; - } - interface BlockMixin { - } - const FramerateLimitTrackerMixin: { - new(): com.v5.mixins.FramerateLimitTrackerMixin; - } - interface FramerateLimitTrackerMixin { - } - interface JoinMultiplayerScreenMixin extends net.minecraft.client.gui.screens.Screen { - } - const KeyboardHandlerMixin: { - new(): com.v5.mixins.KeyboardHandlerMixin; - } - interface KeyboardHandlerMixin { - } - const YggdrasilServicesKeyInfoMixin: { - new(): com.v5.mixins.YggdrasilServicesKeyInfoMixin; - } - interface YggdrasilServicesKeyInfoMixin { - } - const EntityRendererMixin: { - new(): com.v5.mixins.EntityRendererMixin; - } - interface EntityRendererMixin { - } - const ChatComponentMixin: { - new(): com.v5.mixins.ChatComponentMixin; - } - interface ChatComponentMixin { - } - const FirmamentModAnnouncerMixin: { - new(): com.v5.mixins.FirmamentModAnnouncerMixin; - } - interface FirmamentModAnnouncerMixin { - } - const ConnectionProxyMixin: { - new(): com.v5.mixins.ConnectionProxyMixin; - } - interface ConnectionProxyMixin { - } - const GameRendererMixin: { - new(): com.v5.mixins.GameRendererMixin; - } - interface GameRendererMixin { - } - const LevelRendererMixin: { - new(): com.v5.mixins.LevelRendererMixin; - } - interface LevelRendererMixin { - } - const CameraMixin: { - new(): com.v5.mixins.CameraMixin; - } - interface CameraMixin { - } - const ConnectionMixin: { - new(): com.v5.mixins.ConnectionMixin; - } - interface ConnectionMixin { - } - const PlayerTabOverlayMixin: { - new(): com.v5.mixins.PlayerTabOverlayMixin; - } - interface PlayerTabOverlayMixin { - } - } - } } namespace javax { namespace security { namespace auth { + namespace callback { + interface CallbackHandler { + handle(p0: Array): void; + } + } const Subject: { new(): javax.security.auth.Subject; new(p0: boolean, p1: Set, p2: Set, p3: Set): javax.security.auth.Subject; @@ -53233,6 +53114,195 @@ declare global { } interface CipherSpi { } + const SecretKey: { + serialVersionUID: number; + } + interface SecretKey extends java.security.Key, javax.security.auth.Destroyable { + } + } + namespace net { + namespace ssl { + interface SSLEngine { + getPeerHost(): string; + getPeerPort(): number; + wrap(p0: java.nio.ByteBuffer, p1: java.nio.ByteBuffer): javax.net.ssl.SSLEngineResult; + wrap(p0: Array, p1: java.nio.ByteBuffer): javax.net.ssl.SSLEngineResult; + wrap(p0: Array, p1: number, p2: number, p3: java.nio.ByteBuffer): javax.net.ssl.SSLEngineResult; + unwrap(p0: java.nio.ByteBuffer, p1: java.nio.ByteBuffer): javax.net.ssl.SSLEngineResult; + unwrap(p0: java.nio.ByteBuffer, p1: Array): javax.net.ssl.SSLEngineResult; + unwrap(p0: java.nio.ByteBuffer, p1: Array, p2: number, p3: number): javax.net.ssl.SSLEngineResult; + getDelegatedTask(): java.lang.Runnable; + closeInbound(): void; + isInboundDone(): boolean; + closeOutbound(): void; + isOutboundDone(): boolean; + getSupportedCipherSuites(): Array; + getEnabledCipherSuites(): Array; + setEnabledCipherSuites(p0: Array): void; + getSupportedProtocols(): Array; + getEnabledProtocols(): Array; + setEnabledProtocols(p0: Array): void; + getSession(): javax.net.ssl.SSLSession; + getHandshakeSession(): javax.net.ssl.SSLSession; + beginHandshake(): void; + getHandshakeStatus(): javax.net.ssl.SSLEngineResult$HandshakeStatus; + setUseClientMode(p0: boolean): void; + getUseClientMode(): boolean; + setNeedClientAuth(p0: boolean): void; + getNeedClientAuth(): boolean; + setWantClientAuth(p0: boolean): void; + getWantClientAuth(): boolean; + setEnableSessionCreation(p0: boolean): void; + getEnableSessionCreation(): boolean; + getSSLParameters(): javax.net.ssl.SSLParameters; + setSSLParameters(p0: javax.net.ssl.SSLParameters): void; + getApplicationProtocol(): string; + getHandshakeApplicationProtocol(): string; + setHandshakeApplicationProtocolSelector(p0: unknown): void; + getHandshakeApplicationProtocolSelector(): unknown; + } + const SSLEngineResult: { + Status: typeof javax.net.ssl.SSLEngineResult$Status; + HandshakeStatus: typeof javax.net.ssl.SSLEngineResult$HandshakeStatus; + new(p0: javax.net.ssl.SSLEngineResult$Status, p1: javax.net.ssl.SSLEngineResult$HandshakeStatus, p2: number, p3: number): javax.net.ssl.SSLEngineResult; + new(p0: javax.net.ssl.SSLEngineResult$Status, p1: javax.net.ssl.SSLEngineResult$HandshakeStatus, p2: number, p3: number, p4: number): javax.net.ssl.SSLEngineResult; + } + interface SSLEngineResult { + bytesConsumed(): number; + bytesProduced(): number; + sequenceNumber(): number; + getStatus(): javax.net.ssl.SSLEngineResult$Status; + getHandshakeStatus(): javax.net.ssl.SSLEngineResult$HandshakeStatus; + } + const SSLEngineResult$Status: { + BUFFER_UNDERFLOW: javax.net.ssl.SSLEngineResult$Status; + BUFFER_OVERFLOW: javax.net.ssl.SSLEngineResult$Status; + OK: javax.net.ssl.SSLEngineResult$Status; + CLOSED: javax.net.ssl.SSLEngineResult$Status; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): javax.net.ssl.SSLEngineResult$Status; + } + interface SSLEngineResult$Status extends kotlin.Enum { + } + const SSLEngineResult$HandshakeStatus: { + NOT_HANDSHAKING: javax.net.ssl.SSLEngineResult$HandshakeStatus; + FINISHED: javax.net.ssl.SSLEngineResult$HandshakeStatus; + NEED_TASK: javax.net.ssl.SSLEngineResult$HandshakeStatus; + NEED_WRAP: javax.net.ssl.SSLEngineResult$HandshakeStatus; + NEED_UNWRAP: javax.net.ssl.SSLEngineResult$HandshakeStatus; + NEED_UNWRAP_AGAIN: javax.net.ssl.SSLEngineResult$HandshakeStatus; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): javax.net.ssl.SSLEngineResult$HandshakeStatus; + } + interface SSLEngineResult$HandshakeStatus extends kotlin.Enum { + } + interface SSLSession { + getId(): Array; + getSessionContext(): javax.net.ssl.SSLSessionContext; + getCreationTime(): number; + getLastAccessedTime(): number; + invalidate(): void; + isValid(): boolean; + putValue(p0: string, p1: any): void; + getValue(p0: string): any; + removeValue(p0: string): void; + getValueNames(): Array; + getPeerCertificates(): Array; + getLocalCertificates(): Array; + getPeerCertificateChain(): Array; + getPeerPrincipal(): java.security.Principal; + getLocalPrincipal(): java.security.Principal; + getCipherSuite(): string; + getProtocol(): string; + getPeerHost(): string; + getPeerPort(): number; + getPacketBufferSize(): number; + getApplicationBufferSize(): number; + } + interface SSLSessionContext { + getSession(p0: Array): javax.net.ssl.SSLSession; + getIds(): java.util.Enumeration>; + setSessionTimeout(p0: number): void; + getSessionTimeout(): number; + setSessionCacheSize(p0: number): void; + getSessionCacheSize(): number; + } + const SSLParameters: { + new(): javax.net.ssl.SSLParameters; + new(p0: Array): javax.net.ssl.SSLParameters; + new(p0: Array, p1: Array): javax.net.ssl.SSLParameters; + } + interface SSLParameters { + getCipherSuites(): Array; + setCipherSuites(p0: Array): void; + getProtocols(): Array; + setProtocols(p0: Array): void; + getWantClientAuth(): boolean; + setWantClientAuth(p0: boolean): void; + getNeedClientAuth(): boolean; + setNeedClientAuth(p0: boolean): void; + getAlgorithmConstraints(): java.security.AlgorithmConstraints; + setAlgorithmConstraints(p0: java.security.AlgorithmConstraints): void; + getEndpointIdentificationAlgorithm(): string; + setEndpointIdentificationAlgorithm(p0: string): void; + setServerNames(p0: Array): void; + getServerNames(): Array; + setSNIMatchers(p0: Array): void; + getSNIMatchers(): Array; + setUseCipherSuitesOrder(p0: boolean): void; + getUseCipherSuitesOrder(): boolean; + setEnableRetransmissions(p0: boolean): void; + getEnableRetransmissions(): boolean; + setMaximumPacketSize(p0: number): void; + getMaximumPacketSize(): number; + getApplicationProtocols(): Array; + setApplicationProtocols(p0: Array): void; + getSignatureSchemes(): Array; + setSignatureSchemes(p0: Array): void; + getNamedGroups(): Array; + setNamedGroups(p0: Array): void; + } + const TrustManagerFactory: { + getDefaultAlgorithm(): string; + getInstance(p0: string): javax.net.ssl.TrustManagerFactory; + getInstance(p0: string, p1: string): javax.net.ssl.TrustManagerFactory; + getInstance(p0: string, p1: java.security.Provider): javax.net.ssl.TrustManagerFactory; + } + interface TrustManagerFactory { + getAlgorithm(): string; + getProvider(): java.security.Provider; + init(p0: java.security.KeyStore): void; + init(p0: javax.net.ssl.ManagerFactoryParameters): void; + getTrustManagers(): Array; + } + interface ManagerFactoryParameters { + } + const TrustManagerFactorySpi: { + new(): javax.net.ssl.TrustManagerFactorySpi; + } + interface TrustManagerFactorySpi { + } + const KeyManagerFactory: { + getDefaultAlgorithm(): string; + getInstance(p0: string): javax.net.ssl.KeyManagerFactory; + getInstance(p0: string, p1: string): javax.net.ssl.KeyManagerFactory; + getInstance(p0: string, p1: java.security.Provider): javax.net.ssl.KeyManagerFactory; + } + interface KeyManagerFactory { + getAlgorithm(): string; + getProvider(): java.security.Provider; + init(p0: java.security.KeyStore, p1: Array): void; + init(p0: javax.net.ssl.ManagerFactoryParameters): void; + getKeyManagers(): Array; + } + const KeyManagerFactorySpi: { + new(): javax.net.ssl.KeyManagerFactorySpi; + } + interface KeyManagerFactorySpi { + } + } } namespace sound { namespace sampled { @@ -59099,5035 +59169,230 @@ declare global { minComponent(): number; absolute(p0: org.joml.Vector2L): org.joml.Vector2L; } - const Matrix3x2fStack: { - new(p0: number): org.joml.Matrix3x2fStack; - new(): org.joml.Matrix3x2fStack; - } - interface Matrix3x2fStack extends org.joml.Matrix3x2f { - clear(): org.joml.Matrix3x2fStack; - pushMatrix(): org.joml.Matrix3x2fStack; - popMatrix(): org.joml.Matrix3x2fStack; - } - } - namespace slf4j { - namespace event { - const Level: { - ERROR: org.slf4j.event.Level; - WARN: org.slf4j.event.Level; - INFO: org.slf4j.event.Level; - DEBUG: org.slf4j.event.Level; - TRACE: org.slf4j.event.Level; - entries: kotlin.enums.EnumEntries; - intToLevel(p0: number): org.slf4j.event.Level; - values(): Array; - valueOf(value: string): org.slf4j.event.Level; - } - interface Level extends kotlin.Enum { - toInt(): number; - } - } - namespace spi { - interface LoggingEventBuilder { - setCause(p0: kotlin.Throwable): org.slf4j.spi.LoggingEventBuilder; - addMarker(p0: org.slf4j.Marker): org.slf4j.spi.LoggingEventBuilder; - addArgument(p0: any): org.slf4j.spi.LoggingEventBuilder; - addArgument(p0: unknown): org.slf4j.spi.LoggingEventBuilder; - addKeyValue(p0: string, p1: any): org.slf4j.spi.LoggingEventBuilder; - addKeyValue(p0: string, p1: unknown): org.slf4j.spi.LoggingEventBuilder; - setMessage(p0: string): org.slf4j.spi.LoggingEventBuilder; - setMessage(p0: unknown): org.slf4j.spi.LoggingEventBuilder; - log(): void; - log(p0: string): void; - log(p0: string, p1: any): void; - log(p0: string, p1: any, p2: any): void; - log(p0: string, p1: any): void; - log(p0: unknown): void; - } - } - const Logger: { - ROOT_LOGGER_NAME: string; - } - interface Logger { - getName(): string; - makeLoggingEventBuilder(p0: org.slf4j.event.Level): org.slf4j.spi.LoggingEventBuilder; - atLevel(p0: org.slf4j.event.Level): org.slf4j.spi.LoggingEventBuilder; - isEnabledForLevel(p0: org.slf4j.event.Level): boolean; - isTraceEnabled(): boolean; - isTraceEnabled(p0: org.slf4j.Marker): boolean; - trace(p0: string): void; - trace(p0: string, p1: any): void; - trace(p0: string, p1: any, p2: any): void; - trace(p0: string, p1: any): void; - trace(p0: string, p1: kotlin.Throwable): void; - trace(p0: org.slf4j.Marker, p1: string): void; - trace(p0: org.slf4j.Marker, p1: string, p2: any): void; - trace(p0: org.slf4j.Marker, p1: string, p2: any, p3: any): void; - trace(p0: org.slf4j.Marker, p1: string, p2: any): void; - trace(p0: org.slf4j.Marker, p1: string, p2: kotlin.Throwable): void; - atTrace(): org.slf4j.spi.LoggingEventBuilder; - isDebugEnabled(): boolean; - isDebugEnabled(p0: org.slf4j.Marker): boolean; - debug(p0: string): void; - debug(p0: string, p1: any): void; - debug(p0: string, p1: any, p2: any): void; - debug(p0: string, p1: any): void; - debug(p0: string, p1: kotlin.Throwable): void; - debug(p0: org.slf4j.Marker, p1: string): void; - debug(p0: org.slf4j.Marker, p1: string, p2: any): void; - debug(p0: org.slf4j.Marker, p1: string, p2: any, p3: any): void; - debug(p0: org.slf4j.Marker, p1: string, p2: any): void; - debug(p0: org.slf4j.Marker, p1: string, p2: kotlin.Throwable): void; - atDebug(): org.slf4j.spi.LoggingEventBuilder; - isInfoEnabled(): boolean; - isInfoEnabled(p0: org.slf4j.Marker): boolean; - info(p0: string): void; - info(p0: string, p1: any): void; - info(p0: string, p1: any, p2: any): void; - info(p0: string, p1: any): void; - info(p0: string, p1: kotlin.Throwable): void; - info(p0: org.slf4j.Marker, p1: string): void; - info(p0: org.slf4j.Marker, p1: string, p2: any): void; - info(p0: org.slf4j.Marker, p1: string, p2: any, p3: any): void; - info(p0: org.slf4j.Marker, p1: string, p2: any): void; - info(p0: org.slf4j.Marker, p1: string, p2: kotlin.Throwable): void; - atInfo(): org.slf4j.spi.LoggingEventBuilder; - isWarnEnabled(): boolean; - isWarnEnabled(p0: org.slf4j.Marker): boolean; - warn(p0: string): void; - warn(p0: string, p1: any): void; - warn(p0: string, p1: any): void; - warn(p0: string, p1: any, p2: any): void; - warn(p0: string, p1: kotlin.Throwable): void; - warn(p0: org.slf4j.Marker, p1: string): void; - warn(p0: org.slf4j.Marker, p1: string, p2: any): void; - warn(p0: org.slf4j.Marker, p1: string, p2: any, p3: any): void; - warn(p0: org.slf4j.Marker, p1: string, p2: any): void; - warn(p0: org.slf4j.Marker, p1: string, p2: kotlin.Throwable): void; - atWarn(): org.slf4j.spi.LoggingEventBuilder; - isErrorEnabled(): boolean; - isErrorEnabled(p0: org.slf4j.Marker): boolean; - error(p0: string): void; - error(p0: string, p1: any): void; - error(p0: string, p1: any, p2: any): void; - error(p0: string, p1: any): void; - error(p0: string, p1: kotlin.Throwable): void; - error(p0: org.slf4j.Marker, p1: string): void; - error(p0: org.slf4j.Marker, p1: string, p2: any): void; - error(p0: org.slf4j.Marker, p1: string, p2: any, p3: any): void; - error(p0: org.slf4j.Marker, p1: string, p2: any): void; - error(p0: org.slf4j.Marker, p1: string, p2: kotlin.Throwable): void; - atError(): org.slf4j.spi.LoggingEventBuilder; - } - const Marker: { - ANY_MARKER: string; - ANY_NON_NULL_MARKER: string; - } - interface Marker extends java.io.Serializable { - getName(): string; - add(p0: org.slf4j.Marker): void; - remove(p0: org.slf4j.Marker): boolean; - hasChildren(): boolean; - hasReferences(): boolean; - iterator(): kotlin.collections.MutableIterator; - contains(p0: org.slf4j.Marker): boolean; - contains(p0: string): boolean; - } - } - namespace apache { - namespace commons { - namespace io { - } - namespace lang3 { - } - } - } - namespace lwjgl { - namespace opengl { - const GL11: { - GL_ACCUM: number; - GL_LOAD: number; - GL_RETURN: number; - GL_MULT: number; - GL_ADD: number; - GL_NEVER: number; - GL_LESS: number; - GL_EQUAL: number; - GL_LEQUAL: number; - GL_GREATER: number; - GL_NOTEQUAL: number; - GL_GEQUAL: number; - GL_ALWAYS: number; - GL_CURRENT_BIT: number; - GL_POINT_BIT: number; - GL_LINE_BIT: number; - GL_POLYGON_BIT: number; - GL_POLYGON_STIPPLE_BIT: number; - GL_PIXEL_MODE_BIT: number; - GL_LIGHTING_BIT: number; - GL_FOG_BIT: number; - GL_DEPTH_BUFFER_BIT: number; - GL_ACCUM_BUFFER_BIT: number; - GL_STENCIL_BUFFER_BIT: number; - GL_VIEWPORT_BIT: number; - GL_TRANSFORM_BIT: number; - GL_ENABLE_BIT: number; - GL_COLOR_BUFFER_BIT: number; - GL_HINT_BIT: number; - GL_EVAL_BIT: number; - GL_LIST_BIT: number; - GL_TEXTURE_BIT: number; - GL_SCISSOR_BIT: number; - GL_ALL_ATTRIB_BITS: number; - GL_POINTS: number; - GL_LINES: number; - GL_LINE_LOOP: number; - GL_LINE_STRIP: number; - GL_TRIANGLES: number; - GL_TRIANGLE_STRIP: number; - GL_TRIANGLE_FAN: number; - GL_QUADS: number; - GL_QUAD_STRIP: number; - GL_POLYGON: number; - GL_ZERO: number; - GL_ONE: number; - GL_SRC_COLOR: number; - GL_ONE_MINUS_SRC_COLOR: number; - GL_SRC_ALPHA: number; - GL_ONE_MINUS_SRC_ALPHA: number; - GL_DST_ALPHA: number; - GL_ONE_MINUS_DST_ALPHA: number; - GL_DST_COLOR: number; - GL_ONE_MINUS_DST_COLOR: number; - GL_SRC_ALPHA_SATURATE: number; - GL_TRUE: number; - GL_FALSE: number; - GL_CLIP_PLANE0: number; - GL_CLIP_PLANE1: number; - GL_CLIP_PLANE2: number; - GL_CLIP_PLANE3: number; - GL_CLIP_PLANE4: number; - GL_CLIP_PLANE5: number; - GL_BYTE: number; - GL_UNSIGNED_BYTE: number; - GL_SHORT: number; - GL_UNSIGNED_SHORT: number; - GL_INT: number; - GL_UNSIGNED_INT: number; - GL_FLOAT: number; - GL_2_BYTES: number; - GL_3_BYTES: number; - GL_4_BYTES: number; - GL_DOUBLE: number; - GL_NONE: number; - GL_FRONT_LEFT: number; - GL_FRONT_RIGHT: number; - GL_BACK_LEFT: number; - GL_BACK_RIGHT: number; - GL_FRONT: number; - GL_BACK: number; - GL_LEFT: number; - GL_RIGHT: number; - GL_FRONT_AND_BACK: number; - GL_AUX0: number; - GL_AUX1: number; - GL_AUX2: number; - GL_AUX3: number; - GL_NO_ERROR: number; - GL_INVALID_ENUM: number; - GL_INVALID_VALUE: number; - GL_INVALID_OPERATION: number; - GL_STACK_OVERFLOW: number; - GL_STACK_UNDERFLOW: number; - GL_OUT_OF_MEMORY: number; - GL_2D: number; - GL_3D: number; - GL_3D_COLOR: number; - GL_3D_COLOR_TEXTURE: number; - GL_4D_COLOR_TEXTURE: number; - GL_PASS_THROUGH_TOKEN: number; - GL_POINT_TOKEN: number; - GL_LINE_TOKEN: number; - GL_POLYGON_TOKEN: number; - GL_BITMAP_TOKEN: number; - GL_DRAW_PIXEL_TOKEN: number; - GL_COPY_PIXEL_TOKEN: number; - GL_LINE_RESET_TOKEN: number; - GL_EXP: number; - GL_EXP2: number; - GL_CW: number; - GL_CCW: number; - GL_COEFF: number; - GL_ORDER: number; - GL_DOMAIN: number; - GL_CURRENT_COLOR: number; - GL_CURRENT_INDEX: number; - GL_CURRENT_NORMAL: number; - GL_CURRENT_TEXTURE_COORDS: number; - GL_CURRENT_RASTER_COLOR: number; - GL_CURRENT_RASTER_INDEX: number; - GL_CURRENT_RASTER_TEXTURE_COORDS: number; - GL_CURRENT_RASTER_POSITION: number; - GL_CURRENT_RASTER_POSITION_VALID: number; - GL_CURRENT_RASTER_DISTANCE: number; - GL_POINT_SMOOTH: number; - GL_POINT_SIZE: number; - GL_POINT_SIZE_RANGE: number; - GL_POINT_SIZE_GRANULARITY: number; - GL_LINE_SMOOTH: number; - GL_LINE_WIDTH: number; - GL_LINE_WIDTH_RANGE: number; - GL_LINE_WIDTH_GRANULARITY: number; - GL_LINE_STIPPLE: number; - GL_LINE_STIPPLE_PATTERN: number; - GL_LINE_STIPPLE_REPEAT: number; - GL_LIST_MODE: number; - GL_MAX_LIST_NESTING: number; - GL_LIST_BASE: number; - GL_LIST_INDEX: number; - GL_POLYGON_MODE: number; - GL_POLYGON_SMOOTH: number; - GL_POLYGON_STIPPLE: number; - GL_EDGE_FLAG: number; - GL_CULL_FACE: number; - GL_CULL_FACE_MODE: number; - GL_FRONT_FACE: number; - GL_LIGHTING: number; - GL_LIGHT_MODEL_LOCAL_VIEWER: number; - GL_LIGHT_MODEL_TWO_SIDE: number; - GL_LIGHT_MODEL_AMBIENT: number; - GL_SHADE_MODEL: number; - GL_COLOR_MATERIAL_FACE: number; - GL_COLOR_MATERIAL_PARAMETER: number; - GL_COLOR_MATERIAL: number; - GL_FOG: number; - GL_FOG_INDEX: number; - GL_FOG_DENSITY: number; - GL_FOG_START: number; - GL_FOG_END: number; - GL_FOG_MODE: number; - GL_FOG_COLOR: number; - GL_DEPTH_RANGE: number; - GL_DEPTH_TEST: number; - GL_DEPTH_WRITEMASK: number; - GL_DEPTH_CLEAR_VALUE: number; - GL_DEPTH_FUNC: number; - GL_ACCUM_CLEAR_VALUE: number; - GL_STENCIL_TEST: number; - GL_STENCIL_CLEAR_VALUE: number; - GL_STENCIL_FUNC: number; - GL_STENCIL_VALUE_MASK: number; - GL_STENCIL_FAIL: number; - GL_STENCIL_PASS_DEPTH_FAIL: number; - GL_STENCIL_PASS_DEPTH_PASS: number; - GL_STENCIL_REF: number; - GL_STENCIL_WRITEMASK: number; - GL_MATRIX_MODE: number; - GL_NORMALIZE: number; - GL_VIEWPORT: number; - GL_MODELVIEW_STACK_DEPTH: number; - GL_PROJECTION_STACK_DEPTH: number; - GL_TEXTURE_STACK_DEPTH: number; - GL_MODELVIEW_MATRIX: number; - GL_PROJECTION_MATRIX: number; - GL_TEXTURE_MATRIX: number; - GL_ATTRIB_STACK_DEPTH: number; - GL_CLIENT_ATTRIB_STACK_DEPTH: number; - GL_ALPHA_TEST: number; - GL_ALPHA_TEST_FUNC: number; - GL_ALPHA_TEST_REF: number; - GL_DITHER: number; - GL_BLEND_DST: number; - GL_BLEND_SRC: number; - GL_BLEND: number; - GL_LOGIC_OP_MODE: number; - GL_INDEX_LOGIC_OP: number; - GL_LOGIC_OP: number; - GL_COLOR_LOGIC_OP: number; - GL_AUX_BUFFERS: number; - GL_DRAW_BUFFER: number; - GL_READ_BUFFER: number; - GL_SCISSOR_BOX: number; - GL_SCISSOR_TEST: number; - GL_INDEX_CLEAR_VALUE: number; - GL_INDEX_WRITEMASK: number; - GL_COLOR_CLEAR_VALUE: number; - GL_COLOR_WRITEMASK: number; - GL_INDEX_MODE: number; - GL_RGBA_MODE: number; - GL_DOUBLEBUFFER: number; - GL_STEREO: number; - GL_RENDER_MODE: number; - GL_PERSPECTIVE_CORRECTION_HINT: number; - GL_POINT_SMOOTH_HINT: number; - GL_LINE_SMOOTH_HINT: number; - GL_POLYGON_SMOOTH_HINT: number; - GL_FOG_HINT: number; - GL_TEXTURE_GEN_S: number; - GL_TEXTURE_GEN_T: number; - GL_TEXTURE_GEN_R: number; - GL_TEXTURE_GEN_Q: number; - GL_PIXEL_MAP_I_TO_I: number; - GL_PIXEL_MAP_S_TO_S: number; - GL_PIXEL_MAP_I_TO_R: number; - GL_PIXEL_MAP_I_TO_G: number; - GL_PIXEL_MAP_I_TO_B: number; - GL_PIXEL_MAP_I_TO_A: number; - GL_PIXEL_MAP_R_TO_R: number; - GL_PIXEL_MAP_G_TO_G: number; - GL_PIXEL_MAP_B_TO_B: number; - GL_PIXEL_MAP_A_TO_A: number; - GL_PIXEL_MAP_I_TO_I_SIZE: number; - GL_PIXEL_MAP_S_TO_S_SIZE: number; - GL_PIXEL_MAP_I_TO_R_SIZE: number; - GL_PIXEL_MAP_I_TO_G_SIZE: number; - GL_PIXEL_MAP_I_TO_B_SIZE: number; - GL_PIXEL_MAP_I_TO_A_SIZE: number; - GL_PIXEL_MAP_R_TO_R_SIZE: number; - GL_PIXEL_MAP_G_TO_G_SIZE: number; - GL_PIXEL_MAP_B_TO_B_SIZE: number; - GL_PIXEL_MAP_A_TO_A_SIZE: number; - GL_UNPACK_SWAP_BYTES: number; - GL_UNPACK_LSB_FIRST: number; - GL_UNPACK_ROW_LENGTH: number; - GL_UNPACK_SKIP_ROWS: number; - GL_UNPACK_SKIP_PIXELS: number; - GL_UNPACK_ALIGNMENT: number; - GL_PACK_SWAP_BYTES: number; - GL_PACK_LSB_FIRST: number; - GL_PACK_ROW_LENGTH: number; - GL_PACK_SKIP_ROWS: number; - GL_PACK_SKIP_PIXELS: number; - GL_PACK_ALIGNMENT: number; - GL_MAP_COLOR: number; - GL_MAP_STENCIL: number; - GL_INDEX_SHIFT: number; - GL_INDEX_OFFSET: number; - GL_RED_SCALE: number; - GL_RED_BIAS: number; - GL_ZOOM_X: number; - GL_ZOOM_Y: number; - GL_GREEN_SCALE: number; - GL_GREEN_BIAS: number; - GL_BLUE_SCALE: number; - GL_BLUE_BIAS: number; - GL_ALPHA_SCALE: number; - GL_ALPHA_BIAS: number; - GL_DEPTH_SCALE: number; - GL_DEPTH_BIAS: number; - GL_MAX_EVAL_ORDER: number; - GL_MAX_LIGHTS: number; - GL_MAX_CLIP_PLANES: number; - GL_MAX_TEXTURE_SIZE: number; - GL_MAX_PIXEL_MAP_TABLE: number; - GL_MAX_ATTRIB_STACK_DEPTH: number; - GL_MAX_MODELVIEW_STACK_DEPTH: number; - GL_MAX_NAME_STACK_DEPTH: number; - GL_MAX_PROJECTION_STACK_DEPTH: number; - GL_MAX_TEXTURE_STACK_DEPTH: number; - GL_MAX_VIEWPORT_DIMS: number; - GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: number; - GL_SUBPIXEL_BITS: number; - GL_INDEX_BITS: number; - GL_RED_BITS: number; - GL_GREEN_BITS: number; - GL_BLUE_BITS: number; - GL_ALPHA_BITS: number; - GL_DEPTH_BITS: number; - GL_STENCIL_BITS: number; - GL_ACCUM_RED_BITS: number; - GL_ACCUM_GREEN_BITS: number; - GL_ACCUM_BLUE_BITS: number; - GL_ACCUM_ALPHA_BITS: number; - GL_NAME_STACK_DEPTH: number; - GL_AUTO_NORMAL: number; - GL_MAP1_COLOR_4: number; - GL_MAP1_INDEX: number; - GL_MAP1_NORMAL: number; - GL_MAP1_TEXTURE_COORD_1: number; - GL_MAP1_TEXTURE_COORD_2: number; - GL_MAP1_TEXTURE_COORD_3: number; - GL_MAP1_TEXTURE_COORD_4: number; - GL_MAP1_VERTEX_3: number; - GL_MAP1_VERTEX_4: number; - GL_MAP2_COLOR_4: number; - GL_MAP2_INDEX: number; - GL_MAP2_NORMAL: number; - GL_MAP2_TEXTURE_COORD_1: number; - GL_MAP2_TEXTURE_COORD_2: number; - GL_MAP2_TEXTURE_COORD_3: number; - GL_MAP2_TEXTURE_COORD_4: number; - GL_MAP2_VERTEX_3: number; - GL_MAP2_VERTEX_4: number; - GL_MAP1_GRID_DOMAIN: number; - GL_MAP1_GRID_SEGMENTS: number; - GL_MAP2_GRID_DOMAIN: number; - GL_MAP2_GRID_SEGMENTS: number; - GL_TEXTURE_1D: number; - GL_TEXTURE_2D: number; - GL_FEEDBACK_BUFFER_POINTER: number; - GL_FEEDBACK_BUFFER_SIZE: number; - GL_FEEDBACK_BUFFER_TYPE: number; - GL_SELECTION_BUFFER_POINTER: number; - GL_SELECTION_BUFFER_SIZE: number; - GL_TEXTURE_WIDTH: number; - GL_TEXTURE_HEIGHT: number; - GL_TEXTURE_INTERNAL_FORMAT: number; - GL_TEXTURE_COMPONENTS: number; - GL_TEXTURE_BORDER_COLOR: number; - GL_TEXTURE_BORDER: number; - GL_DONT_CARE: number; - GL_FASTEST: number; - GL_NICEST: number; - GL_LIGHT0: number; - GL_LIGHT1: number; - GL_LIGHT2: number; - GL_LIGHT3: number; - GL_LIGHT4: number; - GL_LIGHT5: number; - GL_LIGHT6: number; - GL_LIGHT7: number; - GL_AMBIENT: number; - GL_DIFFUSE: number; - GL_SPECULAR: number; - GL_POSITION: number; - GL_SPOT_DIRECTION: number; - GL_SPOT_EXPONENT: number; - GL_SPOT_CUTOFF: number; - GL_CONSTANT_ATTENUATION: number; - GL_LINEAR_ATTENUATION: number; - GL_QUADRATIC_ATTENUATION: number; - GL_COMPILE: number; - GL_COMPILE_AND_EXECUTE: number; - GL_CLEAR: number; - GL_AND: number; - GL_AND_REVERSE: number; - GL_COPY: number; - GL_AND_INVERTED: number; - GL_NOOP: number; - GL_XOR: number; - GL_OR: number; - GL_NOR: number; - GL_EQUIV: number; - GL_INVERT: number; - GL_OR_REVERSE: number; - GL_COPY_INVERTED: number; - GL_OR_INVERTED: number; - GL_NAND: number; - GL_SET: number; - GL_EMISSION: number; - GL_SHININESS: number; - GL_AMBIENT_AND_DIFFUSE: number; - GL_COLOR_INDEXES: number; - GL_MODELVIEW: number; - GL_PROJECTION: number; - GL_TEXTURE: number; - GL_COLOR: number; - GL_DEPTH: number; - GL_STENCIL: number; - GL_COLOR_INDEX: number; - GL_STENCIL_INDEX: number; - GL_DEPTH_COMPONENT: number; - GL_RED: number; - GL_GREEN: number; - GL_BLUE: number; - GL_ALPHA: number; - GL_RGB: number; - GL_RGBA: number; - GL_LUMINANCE: number; - GL_LUMINANCE_ALPHA: number; - GL_BITMAP: number; - GL_POINT: number; - GL_LINE: number; - GL_FILL: number; - GL_RENDER: number; - GL_FEEDBACK: number; - GL_SELECT: number; - GL_FLAT: number; - GL_SMOOTH: number; - GL_KEEP: number; - GL_REPLACE: number; - GL_INCR: number; - GL_DECR: number; - GL_VENDOR: number; - GL_RENDERER: number; - GL_VERSION: number; - GL_EXTENSIONS: number; - GL_S: number; - GL_T: number; - GL_R: number; - GL_Q: number; - GL_MODULATE: number; - GL_DECAL: number; - GL_TEXTURE_ENV_MODE: number; - GL_TEXTURE_ENV_COLOR: number; - GL_TEXTURE_ENV: number; - GL_EYE_LINEAR: number; - GL_OBJECT_LINEAR: number; - GL_SPHERE_MAP: number; - GL_TEXTURE_GEN_MODE: number; - GL_OBJECT_PLANE: number; - GL_EYE_PLANE: number; - GL_NEAREST: number; - GL_LINEAR: number; - GL_NEAREST_MIPMAP_NEAREST: number; - GL_LINEAR_MIPMAP_NEAREST: number; - GL_NEAREST_MIPMAP_LINEAR: number; - GL_LINEAR_MIPMAP_LINEAR: number; - GL_TEXTURE_MAG_FILTER: number; - GL_TEXTURE_MIN_FILTER: number; - GL_TEXTURE_WRAP_S: number; - GL_TEXTURE_WRAP_T: number; - GL_CLAMP: number; - GL_REPEAT: number; - GL_CLIENT_PIXEL_STORE_BIT: number; - GL_CLIENT_VERTEX_ARRAY_BIT: number; - GL_CLIENT_ALL_ATTRIB_BITS: number; - GL_POLYGON_OFFSET_FACTOR: number; - GL_POLYGON_OFFSET_UNITS: number; - GL_POLYGON_OFFSET_POINT: number; - GL_POLYGON_OFFSET_LINE: number; - GL_POLYGON_OFFSET_FILL: number; - GL_ALPHA4: number; - GL_ALPHA8: number; - GL_ALPHA12: number; - GL_ALPHA16: number; - GL_LUMINANCE4: number; - GL_LUMINANCE8: number; - GL_LUMINANCE12: number; - GL_LUMINANCE16: number; - GL_LUMINANCE4_ALPHA4: number; - GL_LUMINANCE6_ALPHA2: number; - GL_LUMINANCE8_ALPHA8: number; - GL_LUMINANCE12_ALPHA4: number; - GL_LUMINANCE12_ALPHA12: number; - GL_LUMINANCE16_ALPHA16: number; - GL_INTENSITY: number; - GL_INTENSITY4: number; - GL_INTENSITY8: number; - GL_INTENSITY12: number; - GL_INTENSITY16: number; - GL_R3_G3_B2: number; - GL_RGB4: number; - GL_RGB5: number; - GL_RGB8: number; - GL_RGB10: number; - GL_RGB12: number; - GL_RGB16: number; - GL_RGBA2: number; - GL_RGBA4: number; - GL_RGB5_A1: number; - GL_RGBA8: number; - GL_RGB10_A2: number; - GL_RGBA12: number; - GL_RGBA16: number; - GL_TEXTURE_RED_SIZE: number; - GL_TEXTURE_GREEN_SIZE: number; - GL_TEXTURE_BLUE_SIZE: number; - GL_TEXTURE_ALPHA_SIZE: number; - GL_TEXTURE_LUMINANCE_SIZE: number; - GL_TEXTURE_INTENSITY_SIZE: number; - GL_PROXY_TEXTURE_1D: number; - GL_PROXY_TEXTURE_2D: number; - GL_TEXTURE_PRIORITY: number; - GL_TEXTURE_RESIDENT: number; - GL_TEXTURE_BINDING_1D: number; - GL_TEXTURE_BINDING_2D: number; - GL_VERTEX_ARRAY: number; - GL_NORMAL_ARRAY: number; - GL_COLOR_ARRAY: number; - GL_INDEX_ARRAY: number; - GL_TEXTURE_COORD_ARRAY: number; - GL_EDGE_FLAG_ARRAY: number; - GL_VERTEX_ARRAY_SIZE: number; - GL_VERTEX_ARRAY_TYPE: number; - GL_VERTEX_ARRAY_STRIDE: number; - GL_NORMAL_ARRAY_TYPE: number; - GL_NORMAL_ARRAY_STRIDE: number; - GL_COLOR_ARRAY_SIZE: number; - GL_COLOR_ARRAY_TYPE: number; - GL_COLOR_ARRAY_STRIDE: number; - GL_INDEX_ARRAY_TYPE: number; - GL_INDEX_ARRAY_STRIDE: number; - GL_TEXTURE_COORD_ARRAY_SIZE: number; - GL_TEXTURE_COORD_ARRAY_TYPE: number; - GL_TEXTURE_COORD_ARRAY_STRIDE: number; - GL_EDGE_FLAG_ARRAY_STRIDE: number; - GL_VERTEX_ARRAY_POINTER: number; - GL_NORMAL_ARRAY_POINTER: number; - GL_COLOR_ARRAY_POINTER: number; - GL_INDEX_ARRAY_POINTER: number; - GL_TEXTURE_COORD_ARRAY_POINTER: number; - GL_EDGE_FLAG_ARRAY_POINTER: number; - GL_V2F: number; - GL_V3F: number; - GL_C4UB_V2F: number; - GL_C4UB_V3F: number; - GL_C3F_V3F: number; - GL_N3F_V3F: number; - GL_C4F_N3F_V3F: number; - GL_T2F_V3F: number; - GL_T4F_V4F: number; - GL_T2F_C4UB_V3F: number; - GL_T2F_C3F_V3F: number; - GL_T2F_N3F_V3F: number; - GL_T2F_C4F_N3F_V3F: number; - GL_T4F_C4F_N3F_V4F: number; - glEnable(p0: number): void; - glDisable(p0: number): void; - glAccum(p0: number, p1: number): void; - glAlphaFunc(p0: number, p1: number): void; - nglAreTexturesResident(p0: number, p1: number, p2: number): boolean; - glAreTexturesResident(p0: java.nio.IntBuffer, p1: java.nio.ByteBuffer): boolean; - glAreTexturesResident(p0: number, p1: java.nio.ByteBuffer): boolean; - glAreTexturesResident(p0: Array, p1: java.nio.ByteBuffer): boolean; - glArrayElement(p0: number): void; - glBegin(p0: number): void; - glBindTexture(p0: number, p1: number): void; - nglBitmap(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glBitmap(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ByteBuffer | null | undefined): void; - glBitmap(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glBlendFunc(p0: number, p1: number): void; - glCallList(p0: number): void; - nglCallLists(p0: number, p1: number, p2: number): void; - glCallLists(p0: number, p1: java.nio.ByteBuffer): void; - glCallLists(p0: java.nio.ByteBuffer): void; - glCallLists(p0: java.nio.ShortBuffer): void; - glCallLists(p0: java.nio.IntBuffer): void; - glClear(p0: number): void; - glClearAccum(p0: number, p1: number, p2: number, p3: number): void; - glClearColor(p0: number, p1: number, p2: number, p3: number): void; - glClearDepth(p0: number): void; - glClearIndex(p0: number): void; - glClearStencil(p0: number): void; - nglClipPlane(p0: number, p1: number): void; - glClipPlane(p0: number, p1: java.nio.DoubleBuffer): void; - glClipPlane(p0: number, p1: kotlin.DoubleArray): void; - glColor3b(p0: number, p1: number, p2: number): void; - glColor3s(p0: number, p1: number, p2: number): void; - glColor3i(p0: number, p1: number, p2: number): void; - glColor3f(p0: number, p1: number, p2: number): void; - glColor3d(p0: number, p1: number, p2: number): void; - glColor3ub(p0: number, p1: number, p2: number): void; - glColor3us(p0: number, p1: number, p2: number): void; - glColor3ui(p0: number, p1: number, p2: number): void; - nglColor3bv(p0: number): void; - glColor3bv(p0: java.nio.ByteBuffer): void; - nglColor3sv(p0: number): void; - glColor3sv(p0: java.nio.ShortBuffer): void; - glColor3sv(p0: Array): void; - nglColor3iv(p0: number): void; - glColor3iv(p0: java.nio.IntBuffer): void; - glColor3iv(p0: Array): void; - nglColor3fv(p0: number): void; - glColor3fv(p0: java.nio.FloatBuffer): void; - glColor3fv(p0: kotlin.FloatArray): void; - nglColor3dv(p0: number): void; - glColor3dv(p0: java.nio.DoubleBuffer): void; - glColor3dv(p0: kotlin.DoubleArray): void; - nglColor3ubv(p0: number): void; - glColor3ubv(p0: java.nio.ByteBuffer): void; - nglColor3usv(p0: number): void; - glColor3usv(p0: java.nio.ShortBuffer): void; - glColor3usv(p0: Array): void; - nglColor3uiv(p0: number): void; - glColor3uiv(p0: java.nio.IntBuffer): void; - glColor3uiv(p0: Array): void; - glColor4b(p0: number, p1: number, p2: number, p3: number): void; - glColor4s(p0: number, p1: number, p2: number, p3: number): void; - glColor4i(p0: number, p1: number, p2: number, p3: number): void; - glColor4f(p0: number, p1: number, p2: number, p3: number): void; - glColor4d(p0: number, p1: number, p2: number, p3: number): void; - glColor4ub(p0: number, p1: number, p2: number, p3: number): void; - glColor4us(p0: number, p1: number, p2: number, p3: number): void; - glColor4ui(p0: number, p1: number, p2: number, p3: number): void; - nglColor4bv(p0: number): void; - glColor4bv(p0: java.nio.ByteBuffer): void; - nglColor4sv(p0: number): void; - glColor4sv(p0: java.nio.ShortBuffer): void; - glColor4sv(p0: Array): void; - nglColor4iv(p0: number): void; - glColor4iv(p0: java.nio.IntBuffer): void; - glColor4iv(p0: Array): void; - nglColor4fv(p0: number): void; - glColor4fv(p0: java.nio.FloatBuffer): void; - glColor4fv(p0: kotlin.FloatArray): void; - nglColor4dv(p0: number): void; - glColor4dv(p0: java.nio.DoubleBuffer): void; - glColor4dv(p0: kotlin.DoubleArray): void; - nglColor4ubv(p0: number): void; - glColor4ubv(p0: java.nio.ByteBuffer): void; - nglColor4usv(p0: number): void; - glColor4usv(p0: java.nio.ShortBuffer): void; - glColor4usv(p0: Array): void; - nglColor4uiv(p0: number): void; - glColor4uiv(p0: java.nio.IntBuffer): void; - glColor4uiv(p0: Array): void; - glColorMask(p0: boolean, p1: boolean, p2: boolean, p3: boolean): void; - glColorMaterial(p0: number, p1: number): void; - nglColorPointer(p0: number, p1: number, p2: number, p3: number): void; - glColorPointer(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer): void; - glColorPointer(p0: number, p1: number, p2: number, p3: number): void; - glColorPointer(p0: number, p1: number, p2: number, p3: java.nio.ShortBuffer): void; - glColorPointer(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glColorPointer(p0: number, p1: number, p2: number, p3: java.nio.FloatBuffer): void; - glCopyPixels(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glCullFace(p0: number): void; - glDeleteLists(p0: number, p1: number): void; - glDepthFunc(p0: number): void; - glDepthMask(p0: boolean): void; - glDepthRange(p0: number, p1: number): void; - glDisableClientState(p0: number): void; - glDrawArrays(p0: number, p1: number, p2: number): void; - glDrawBuffer(p0: number): void; - nglDrawElements(p0: number, p1: number, p2: number, p3: number): void; - glDrawElements(p0: number, p1: number, p2: number, p3: number): void; - glDrawElements(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glDrawElements(p0: number, p1: java.nio.ByteBuffer): void; - glDrawElements(p0: number, p1: java.nio.ShortBuffer): void; - glDrawElements(p0: number, p1: java.nio.IntBuffer): void; - nglDrawPixels(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glDrawPixels(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer): void; - glDrawPixels(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glDrawPixels(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ShortBuffer): void; - glDrawPixels(p0: number, p1: number, p2: number, p3: number, p4: java.nio.IntBuffer): void; - glDrawPixels(p0: number, p1: number, p2: number, p3: number, p4: java.nio.FloatBuffer): void; - glDrawPixels(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glDrawPixels(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glDrawPixels(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray): void; - glEdgeFlag(p0: boolean): void; - nglEdgeFlagv(p0: number): void; - glEdgeFlagv(p0: java.nio.ByteBuffer): void; - nglEdgeFlagPointer(p0: number, p1: number): void; - glEdgeFlagPointer(p0: number, p1: java.nio.ByteBuffer): void; - glEdgeFlagPointer(p0: number, p1: number): void; - glEnableClientState(p0: number): void; - glEnd(): void; - glEvalCoord1f(p0: number): void; - nglEvalCoord1fv(p0: number): void; - glEvalCoord1fv(p0: java.nio.FloatBuffer): void; - glEvalCoord1fv(p0: kotlin.FloatArray): void; - glEvalCoord1d(p0: number): void; - nglEvalCoord1dv(p0: number): void; - glEvalCoord1dv(p0: java.nio.DoubleBuffer): void; - glEvalCoord1dv(p0: kotlin.DoubleArray): void; - glEvalCoord2f(p0: number, p1: number): void; - nglEvalCoord2fv(p0: number): void; - glEvalCoord2fv(p0: java.nio.FloatBuffer): void; - glEvalCoord2fv(p0: kotlin.FloatArray): void; - glEvalCoord2d(p0: number, p1: number): void; - nglEvalCoord2dv(p0: number): void; - glEvalCoord2dv(p0: java.nio.DoubleBuffer): void; - glEvalCoord2dv(p0: kotlin.DoubleArray): void; - glEvalMesh1(p0: number, p1: number, p2: number): void; - glEvalMesh2(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glEvalPoint1(p0: number): void; - glEvalPoint2(p0: number, p1: number): void; - nglFeedbackBuffer(p0: number, p1: number, p2: number): void; - glFeedbackBuffer(p0: number, p1: java.nio.FloatBuffer): void; - glFeedbackBuffer(p0: number, p1: kotlin.FloatArray): void; - glFinish(): void; - glFlush(): void; - glFogi(p0: number, p1: number): void; - nglFogiv(p0: number, p1: number): void; - glFogiv(p0: number, p1: java.nio.IntBuffer): void; - glFogiv(p0: number, p1: Array): void; - glFogf(p0: number, p1: number): void; - nglFogfv(p0: number, p1: number): void; - glFogfv(p0: number, p1: java.nio.FloatBuffer): void; - glFogfv(p0: number, p1: kotlin.FloatArray): void; - glFrontFace(p0: number): void; - glGenLists(p0: number): number; - nglGenTextures(p0: number, p1: number): void; - glGenTextures(p0: java.nio.IntBuffer): void; - glGenTextures(): number; - glGenTextures(p0: Array): void; - nglDeleteTextures(p0: number, p1: number): void; - glDeleteTextures(p0: java.nio.IntBuffer): void; - glDeleteTextures(p0: number): void; - glDeleteTextures(p0: Array): void; - nglGetClipPlane(p0: number, p1: number): void; - glGetClipPlane(p0: number, p1: java.nio.DoubleBuffer): void; - glGetClipPlane(p0: number, p1: kotlin.DoubleArray): void; - nglGetBooleanv(p0: number, p1: number): void; - glGetBooleanv(p0: number, p1: java.nio.ByteBuffer): void; - glGetBoolean(p0: number): boolean; - nglGetFloatv(p0: number, p1: number): void; - glGetFloatv(p0: number, p1: java.nio.FloatBuffer): void; - glGetFloatv(p0: number, p1: kotlin.FloatArray): void; - glGetFloat(p0: number): number; - nglGetIntegerv(p0: number, p1: number): void; - glGetIntegerv(p0: number, p1: java.nio.IntBuffer): void; - glGetIntegerv(p0: number, p1: Array): void; - glGetInteger(p0: number): number; - nglGetDoublev(p0: number, p1: number): void; - glGetDoublev(p0: number, p1: java.nio.DoubleBuffer): void; - glGetDoublev(p0: number, p1: kotlin.DoubleArray): void; - glGetDouble(p0: number): number; - glGetError(): number; - nglGetLightiv(p0: number, p1: number, p2: number): void; - glGetLightiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetLightiv(p0: number, p1: number, p2: Array): void; - glGetLighti(p0: number, p1: number): number; - nglGetLightfv(p0: number, p1: number, p2: number): void; - glGetLightfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetLightfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetLightf(p0: number, p1: number): number; - nglGetMapiv(p0: number, p1: number, p2: number): void; - glGetMapiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetMapiv(p0: number, p1: number, p2: Array): void; - glGetMapi(p0: number, p1: number): number; - nglGetMapfv(p0: number, p1: number, p2: number): void; - glGetMapfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetMapfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetMapf(p0: number, p1: number): number; - nglGetMapdv(p0: number, p1: number, p2: number): void; - glGetMapdv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glGetMapdv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - glGetMapd(p0: number, p1: number): number; - nglGetMaterialiv(p0: number, p1: number, p2: number): void; - glGetMaterialiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetMaterialiv(p0: number, p1: number, p2: Array): void; - nglGetMaterialfv(p0: number, p1: number, p2: number): void; - glGetMaterialfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetMaterialfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - nglGetPixelMapfv(p0: number, p1: number): void; - glGetPixelMapfv(p0: number, p1: java.nio.FloatBuffer): void; - glGetPixelMapfv(p0: number, p1: number): void; - glGetPixelMapfv(p0: number, p1: kotlin.FloatArray): void; - nglGetPixelMapusv(p0: number, p1: number): void; - glGetPixelMapusv(p0: number, p1: java.nio.ShortBuffer): void; - glGetPixelMapusv(p0: number, p1: number): void; - glGetPixelMapusv(p0: number, p1: Array): void; - nglGetPixelMapuiv(p0: number, p1: number): void; - glGetPixelMapuiv(p0: number, p1: java.nio.IntBuffer): void; - glGetPixelMapuiv(p0: number, p1: number): void; - glGetPixelMapuiv(p0: number, p1: Array): void; - nglGetPointerv(p0: number, p1: number): void; - glGetPointerv(p0: number, p1: org.lwjgl.PointerBuffer): void; - glGetPointer(p0: number): number; - nglGetPolygonStipple(p0: number): void; - glGetPolygonStipple(p0: java.nio.ByteBuffer): void; - glGetPolygonStipple(p0: number): void; - nglGetString(p0: number): number; - glGetString(p0: number): string | null | undefined; - nglGetTexEnviv(p0: number, p1: number, p2: number): void; - glGetTexEnviv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetTexEnviv(p0: number, p1: number, p2: Array): void; - glGetTexEnvi(p0: number, p1: number): number; - nglGetTexEnvfv(p0: number, p1: number, p2: number): void; - glGetTexEnvfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetTexEnvfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetTexEnvf(p0: number, p1: number): number; - nglGetTexGeniv(p0: number, p1: number, p2: number): void; - glGetTexGeniv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetTexGeniv(p0: number, p1: number, p2: Array): void; - glGetTexGeni(p0: number, p1: number): number; - nglGetTexGenfv(p0: number, p1: number, p2: number): void; - glGetTexGenfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetTexGenfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetTexGenf(p0: number, p1: number): number; - nglGetTexGendv(p0: number, p1: number, p2: number): void; - glGetTexGendv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glGetTexGendv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - glGetTexGend(p0: number, p1: number): number; - nglGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer): void; - glGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ShortBuffer): void; - glGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.IntBuffer): void; - glGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.FloatBuffer): void; - glGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.DoubleBuffer): void; - glGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray): void; - glGetTexImage(p0: number, p1: number, p2: number, p3: number, p4: kotlin.DoubleArray): void; - nglGetTexLevelParameteriv(p0: number, p1: number, p2: number, p3: number): void; - glGetTexLevelParameteriv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetTexLevelParameteriv(p0: number, p1: number, p2: number, p3: Array): void; - glGetTexLevelParameteri(p0: number, p1: number, p2: number): number; - nglGetTexLevelParameterfv(p0: number, p1: number, p2: number, p3: number): void; - glGetTexLevelParameterfv(p0: number, p1: number, p2: number, p3: java.nio.FloatBuffer): void; - glGetTexLevelParameterfv(p0: number, p1: number, p2: number, p3: kotlin.FloatArray): void; - glGetTexLevelParameterf(p0: number, p1: number, p2: number): number; - nglGetTexParameteriv(p0: number, p1: number, p2: number): void; - glGetTexParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetTexParameteriv(p0: number, p1: number, p2: Array): void; - glGetTexParameteri(p0: number, p1: number): number; - nglGetTexParameterfv(p0: number, p1: number, p2: number): void; - glGetTexParameterfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetTexParameterfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetTexParameterf(p0: number, p1: number): number; - glHint(p0: number, p1: number): void; - glIndexi(p0: number): void; - glIndexub(p0: number): void; - glIndexs(p0: number): void; - glIndexf(p0: number): void; - glIndexd(p0: number): void; - nglIndexiv(p0: number): void; - glIndexiv(p0: java.nio.IntBuffer): void; - glIndexiv(p0: Array): void; - nglIndexubv(p0: number): void; - glIndexubv(p0: java.nio.ByteBuffer): void; - nglIndexsv(p0: number): void; - glIndexsv(p0: java.nio.ShortBuffer): void; - glIndexsv(p0: Array): void; - nglIndexfv(p0: number): void; - glIndexfv(p0: java.nio.FloatBuffer): void; - glIndexfv(p0: kotlin.FloatArray): void; - nglIndexdv(p0: number): void; - glIndexdv(p0: java.nio.DoubleBuffer): void; - glIndexdv(p0: kotlin.DoubleArray): void; - glIndexMask(p0: number): void; - nglIndexPointer(p0: number, p1: number, p2: number): void; - glIndexPointer(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glIndexPointer(p0: number, p1: number, p2: number): void; - glIndexPointer(p0: number, p1: java.nio.ByteBuffer): void; - glIndexPointer(p0: number, p1: java.nio.ShortBuffer): void; - glIndexPointer(p0: number, p1: java.nio.IntBuffer): void; - glInitNames(): void; - nglInterleavedArrays(p0: number, p1: number, p2: number): void; - glInterleavedArrays(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glInterleavedArrays(p0: number, p1: number, p2: number): void; - glInterleavedArrays(p0: number, p1: number, p2: java.nio.ShortBuffer): void; - glInterleavedArrays(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glInterleavedArrays(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glInterleavedArrays(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glInterleavedArrays(p0: number, p1: number, p2: Array): void; - glInterleavedArrays(p0: number, p1: number, p2: Array): void; - glInterleavedArrays(p0: number, p1: number, p2: kotlin.FloatArray): void; - glInterleavedArrays(p0: number, p1: number, p2: kotlin.DoubleArray): void; - glIsEnabled(p0: number): boolean; - glIsList(p0: number): boolean; - glIsTexture(p0: number): boolean; - glLightModeli(p0: number, p1: number): void; - glLightModelf(p0: number, p1: number): void; - nglLightModeliv(p0: number, p1: number): void; - glLightModeliv(p0: number, p1: java.nio.IntBuffer): void; - glLightModeliv(p0: number, p1: Array): void; - nglLightModelfv(p0: number, p1: number): void; - glLightModelfv(p0: number, p1: java.nio.FloatBuffer): void; - glLightModelfv(p0: number, p1: kotlin.FloatArray): void; - glLighti(p0: number, p1: number, p2: number): void; - glLightf(p0: number, p1: number, p2: number): void; - nglLightiv(p0: number, p1: number, p2: number): void; - glLightiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glLightiv(p0: number, p1: number, p2: Array): void; - nglLightfv(p0: number, p1: number, p2: number): void; - glLightfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glLightfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glLineStipple(p0: number, p1: number): void; - glLineWidth(p0: number): void; - glListBase(p0: number): void; - nglLoadMatrixf(p0: number): void; - glLoadMatrixf(p0: java.nio.FloatBuffer): void; - glLoadMatrixf(p0: kotlin.FloatArray): void; - nglLoadMatrixd(p0: number): void; - glLoadMatrixd(p0: java.nio.DoubleBuffer): void; - glLoadMatrixd(p0: kotlin.DoubleArray): void; - glLoadIdentity(): void; - glLoadName(p0: number): void; - glLogicOp(p0: number): void; - nglMap1f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glMap1f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: java.nio.FloatBuffer): void; - glMap1f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: kotlin.FloatArray): void; - nglMap1d(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glMap1d(p0: number, p1: number, p2: number, p3: number, p4: number, p5: java.nio.DoubleBuffer): void; - glMap1d(p0: number, p1: number, p2: number, p3: number, p4: number, p5: kotlin.DoubleArray): void; - nglMap2f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): void; - glMap2f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: java.nio.FloatBuffer): void; - glMap2f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: kotlin.FloatArray): void; - nglMap2d(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): void; - glMap2d(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: java.nio.DoubleBuffer): void; - glMap2d(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: kotlin.DoubleArray): void; - glMapGrid1f(p0: number, p1: number, p2: number): void; - glMapGrid1d(p0: number, p1: number, p2: number): void; - glMapGrid2f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glMapGrid2d(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glMateriali(p0: number, p1: number, p2: number): void; - glMaterialf(p0: number, p1: number, p2: number): void; - nglMaterialiv(p0: number, p1: number, p2: number): void; - glMaterialiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glMaterialiv(p0: number, p1: number, p2: Array): void; - nglMaterialfv(p0: number, p1: number, p2: number): void; - glMaterialfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glMaterialfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glMatrixMode(p0: number): void; - nglMultMatrixf(p0: number): void; - glMultMatrixf(p0: java.nio.FloatBuffer): void; - glMultMatrixf(p0: kotlin.FloatArray): void; - nglMultMatrixd(p0: number): void; - glMultMatrixd(p0: java.nio.DoubleBuffer): void; - glMultMatrixd(p0: kotlin.DoubleArray): void; - glFrustum(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glNewList(p0: number, p1: number): void; - glEndList(): void; - glNormal3f(p0: number, p1: number, p2: number): void; - glNormal3b(p0: number, p1: number, p2: number): void; - glNormal3s(p0: number, p1: number, p2: number): void; - glNormal3i(p0: number, p1: number, p2: number): void; - glNormal3d(p0: number, p1: number, p2: number): void; - nglNormal3fv(p0: number): void; - glNormal3fv(p0: java.nio.FloatBuffer): void; - glNormal3fv(p0: kotlin.FloatArray): void; - nglNormal3bv(p0: number): void; - glNormal3bv(p0: java.nio.ByteBuffer): void; - nglNormal3sv(p0: number): void; - glNormal3sv(p0: java.nio.ShortBuffer): void; - glNormal3sv(p0: Array): void; - nglNormal3iv(p0: number): void; - glNormal3iv(p0: java.nio.IntBuffer): void; - glNormal3iv(p0: Array): void; - nglNormal3dv(p0: number): void; - glNormal3dv(p0: java.nio.DoubleBuffer): void; - glNormal3dv(p0: kotlin.DoubleArray): void; - nglNormalPointer(p0: number, p1: number, p2: number): void; - glNormalPointer(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glNormalPointer(p0: number, p1: number, p2: number): void; - glNormalPointer(p0: number, p1: number, p2: java.nio.ShortBuffer): void; - glNormalPointer(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glNormalPointer(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glOrtho(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glPassThrough(p0: number): void; - nglPixelMapfv(p0: number, p1: number, p2: number): void; - glPixelMapfv(p0: number, p1: number, p2: number): void; - glPixelMapfv(p0: number, p1: java.nio.FloatBuffer): void; - glPixelMapfv(p0: number, p1: kotlin.FloatArray): void; - nglPixelMapusv(p0: number, p1: number, p2: number): void; - glPixelMapusv(p0: number, p1: number, p2: number): void; - glPixelMapusv(p0: number, p1: java.nio.ShortBuffer): void; - glPixelMapusv(p0: number, p1: Array): void; - nglPixelMapuiv(p0: number, p1: number, p2: number): void; - glPixelMapuiv(p0: number, p1: number, p2: number): void; - glPixelMapuiv(p0: number, p1: java.nio.IntBuffer): void; - glPixelMapuiv(p0: number, p1: Array): void; - glPixelStorei(p0: number, p1: number): void; - glPixelStoref(p0: number, p1: number): void; - glPixelTransferi(p0: number, p1: number): void; - glPixelTransferf(p0: number, p1: number): void; - glPixelZoom(p0: number, p1: number): void; - glPointSize(p0: number): void; - glPolygonMode(p0: number, p1: number): void; - glPolygonOffset(p0: number, p1: number): void; - nglPolygonStipple(p0: number): void; - glPolygonStipple(p0: java.nio.ByteBuffer): void; - glPolygonStipple(p0: number): void; - glPushAttrib(p0: number): void; - glPushClientAttrib(p0: number): void; - glPopAttrib(): void; - glPopClientAttrib(): void; - glPopMatrix(): void; - glPopName(): void; - nglPrioritizeTextures(p0: number, p1: number, p2: number): void; - glPrioritizeTextures(p0: java.nio.IntBuffer, p1: java.nio.FloatBuffer): void; - glPrioritizeTextures(p0: Array, p1: kotlin.FloatArray): void; - glPushMatrix(): void; - glPushName(p0: number): void; - glRasterPos2i(p0: number, p1: number): void; - glRasterPos2s(p0: number, p1: number): void; - glRasterPos2f(p0: number, p1: number): void; - glRasterPos2d(p0: number, p1: number): void; - nglRasterPos2iv(p0: number): void; - glRasterPos2iv(p0: java.nio.IntBuffer): void; - glRasterPos2iv(p0: Array): void; - nglRasterPos2sv(p0: number): void; - glRasterPos2sv(p0: java.nio.ShortBuffer): void; - glRasterPos2sv(p0: Array): void; - nglRasterPos2fv(p0: number): void; - glRasterPos2fv(p0: java.nio.FloatBuffer): void; - glRasterPos2fv(p0: kotlin.FloatArray): void; - nglRasterPos2dv(p0: number): void; - glRasterPos2dv(p0: java.nio.DoubleBuffer): void; - glRasterPos2dv(p0: kotlin.DoubleArray): void; - glRasterPos3i(p0: number, p1: number, p2: number): void; - glRasterPos3s(p0: number, p1: number, p2: number): void; - glRasterPos3f(p0: number, p1: number, p2: number): void; - glRasterPos3d(p0: number, p1: number, p2: number): void; - nglRasterPos3iv(p0: number): void; - glRasterPos3iv(p0: java.nio.IntBuffer): void; - glRasterPos3iv(p0: Array): void; - nglRasterPos3sv(p0: number): void; - glRasterPos3sv(p0: java.nio.ShortBuffer): void; - glRasterPos3sv(p0: Array): void; - nglRasterPos3fv(p0: number): void; - glRasterPos3fv(p0: java.nio.FloatBuffer): void; - glRasterPos3fv(p0: kotlin.FloatArray): void; - nglRasterPos3dv(p0: number): void; - glRasterPos3dv(p0: java.nio.DoubleBuffer): void; - glRasterPos3dv(p0: kotlin.DoubleArray): void; - glRasterPos4i(p0: number, p1: number, p2: number, p3: number): void; - glRasterPos4s(p0: number, p1: number, p2: number, p3: number): void; - glRasterPos4f(p0: number, p1: number, p2: number, p3: number): void; - glRasterPos4d(p0: number, p1: number, p2: number, p3: number): void; - nglRasterPos4iv(p0: number): void; - glRasterPos4iv(p0: java.nio.IntBuffer): void; - glRasterPos4iv(p0: Array): void; - nglRasterPos4sv(p0: number): void; - glRasterPos4sv(p0: java.nio.ShortBuffer): void; - glRasterPos4sv(p0: Array): void; - nglRasterPos4fv(p0: number): void; - glRasterPos4fv(p0: java.nio.FloatBuffer): void; - glRasterPos4fv(p0: kotlin.FloatArray): void; - nglRasterPos4dv(p0: number): void; - glRasterPos4dv(p0: java.nio.DoubleBuffer): void; - glRasterPos4dv(p0: kotlin.DoubleArray): void; - glReadBuffer(p0: number): void; - nglReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ByteBuffer): void; - glReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ShortBuffer): void; - glReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.IntBuffer): void; - glReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.FloatBuffer): void; - glReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: kotlin.FloatArray): void; - glRecti(p0: number, p1: number, p2: number, p3: number): void; - glRects(p0: number, p1: number, p2: number, p3: number): void; - glRectf(p0: number, p1: number, p2: number, p3: number): void; - glRectd(p0: number, p1: number, p2: number, p3: number): void; - nglRectiv(p0: number, p1: number): void; - glRectiv(p0: java.nio.IntBuffer, p1: java.nio.IntBuffer): void; - glRectiv(p0: Array, p1: Array): void; - nglRectsv(p0: number, p1: number): void; - glRectsv(p0: java.nio.ShortBuffer, p1: java.nio.ShortBuffer): void; - glRectsv(p0: Array, p1: Array): void; - nglRectfv(p0: number, p1: number): void; - glRectfv(p0: java.nio.FloatBuffer, p1: java.nio.FloatBuffer): void; - glRectfv(p0: kotlin.FloatArray, p1: kotlin.FloatArray): void; - nglRectdv(p0: number, p1: number): void; - glRectdv(p0: java.nio.DoubleBuffer, p1: java.nio.DoubleBuffer): void; - glRectdv(p0: kotlin.DoubleArray, p1: kotlin.DoubleArray): void; - glRenderMode(p0: number): number; - glRotatef(p0: number, p1: number, p2: number, p3: number): void; - glRotated(p0: number, p1: number, p2: number, p3: number): void; - glScalef(p0: number, p1: number, p2: number): void; - glScaled(p0: number, p1: number, p2: number): void; - glScissor(p0: number, p1: number, p2: number, p3: number): void; - nglSelectBuffer(p0: number, p1: number): void; - glSelectBuffer(p0: java.nio.IntBuffer): void; - glSelectBuffer(p0: Array): void; - glShadeModel(p0: number): void; - glStencilFunc(p0: number, p1: number, p2: number): void; - glStencilMask(p0: number): void; - glStencilOp(p0: number, p1: number, p2: number): void; - glTexCoord1f(p0: number): void; - glTexCoord1s(p0: number): void; - glTexCoord1i(p0: number): void; - glTexCoord1d(p0: number): void; - nglTexCoord1fv(p0: number): void; - glTexCoord1fv(p0: java.nio.FloatBuffer): void; - glTexCoord1fv(p0: kotlin.FloatArray): void; - nglTexCoord1sv(p0: number): void; - glTexCoord1sv(p0: java.nio.ShortBuffer): void; - glTexCoord1sv(p0: Array): void; - nglTexCoord1iv(p0: number): void; - glTexCoord1iv(p0: java.nio.IntBuffer): void; - glTexCoord1iv(p0: Array): void; - nglTexCoord1dv(p0: number): void; - glTexCoord1dv(p0: java.nio.DoubleBuffer): void; - glTexCoord1dv(p0: kotlin.DoubleArray): void; - glTexCoord2f(p0: number, p1: number): void; - glTexCoord2s(p0: number, p1: number): void; - glTexCoord2i(p0: number, p1: number): void; - glTexCoord2d(p0: number, p1: number): void; - nglTexCoord2fv(p0: number): void; - glTexCoord2fv(p0: java.nio.FloatBuffer): void; - glTexCoord2fv(p0: kotlin.FloatArray): void; - nglTexCoord2sv(p0: number): void; - glTexCoord2sv(p0: java.nio.ShortBuffer): void; - glTexCoord2sv(p0: Array): void; - nglTexCoord2iv(p0: number): void; - glTexCoord2iv(p0: java.nio.IntBuffer): void; - glTexCoord2iv(p0: Array): void; - nglTexCoord2dv(p0: number): void; - glTexCoord2dv(p0: java.nio.DoubleBuffer): void; - glTexCoord2dv(p0: kotlin.DoubleArray): void; - glTexCoord3f(p0: number, p1: number, p2: number): void; - glTexCoord3s(p0: number, p1: number, p2: number): void; - glTexCoord3i(p0: number, p1: number, p2: number): void; - glTexCoord3d(p0: number, p1: number, p2: number): void; - nglTexCoord3fv(p0: number): void; - glTexCoord3fv(p0: java.nio.FloatBuffer): void; - glTexCoord3fv(p0: kotlin.FloatArray): void; - nglTexCoord3sv(p0: number): void; - glTexCoord3sv(p0: java.nio.ShortBuffer): void; - glTexCoord3sv(p0: Array): void; - nglTexCoord3iv(p0: number): void; - glTexCoord3iv(p0: java.nio.IntBuffer): void; - glTexCoord3iv(p0: Array): void; - nglTexCoord3dv(p0: number): void; - glTexCoord3dv(p0: java.nio.DoubleBuffer): void; - glTexCoord3dv(p0: kotlin.DoubleArray): void; - glTexCoord4f(p0: number, p1: number, p2: number, p3: number): void; - glTexCoord4s(p0: number, p1: number, p2: number, p3: number): void; - glTexCoord4i(p0: number, p1: number, p2: number, p3: number): void; - glTexCoord4d(p0: number, p1: number, p2: number, p3: number): void; - nglTexCoord4fv(p0: number): void; - glTexCoord4fv(p0: java.nio.FloatBuffer): void; - glTexCoord4fv(p0: kotlin.FloatArray): void; - nglTexCoord4sv(p0: number): void; - glTexCoord4sv(p0: java.nio.ShortBuffer): void; - glTexCoord4sv(p0: Array): void; - nglTexCoord4iv(p0: number): void; - glTexCoord4iv(p0: java.nio.IntBuffer): void; - glTexCoord4iv(p0: Array): void; - nglTexCoord4dv(p0: number): void; - glTexCoord4dv(p0: java.nio.DoubleBuffer): void; - glTexCoord4dv(p0: kotlin.DoubleArray): void; - nglTexCoordPointer(p0: number, p1: number, p2: number, p3: number): void; - glTexCoordPointer(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer): void; - glTexCoordPointer(p0: number, p1: number, p2: number, p3: number): void; - glTexCoordPointer(p0: number, p1: number, p2: number, p3: java.nio.ShortBuffer): void; - glTexCoordPointer(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glTexCoordPointer(p0: number, p1: number, p2: number, p3: java.nio.FloatBuffer): void; - glTexEnvi(p0: number, p1: number, p2: number): void; - nglTexEnviv(p0: number, p1: number, p2: number): void; - glTexEnviv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glTexEnviv(p0: number, p1: number, p2: Array): void; - glTexEnvf(p0: number, p1: number, p2: number): void; - nglTexEnvfv(p0: number, p1: number, p2: number): void; - glTexEnvfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glTexEnvfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glTexGeni(p0: number, p1: number, p2: number): void; - nglTexGeniv(p0: number, p1: number, p2: number): void; - glTexGeniv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glTexGeniv(p0: number, p1: number, p2: Array): void; - glTexGenf(p0: number, p1: number, p2: number): void; - nglTexGenfv(p0: number, p1: number, p2: number): void; - glTexGenfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glTexGenfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glTexGend(p0: number, p1: number, p2: number): void; - nglTexGendv(p0: number, p1: number, p2: number): void; - glTexGendv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glTexGendv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - nglTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: java.nio.ByteBuffer | null | undefined): void; - glTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: java.nio.ShortBuffer | null | undefined): void; - glTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: java.nio.IntBuffer | null | undefined): void; - glTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: java.nio.FloatBuffer | null | undefined): void; - glTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: java.nio.DoubleBuffer | null | undefined): void; - glTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: Array): void; - glTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: Array): void; - glTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: kotlin.FloatArray | null | undefined): void; - glTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: kotlin.DoubleArray | null | undefined): void; - nglTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.ByteBuffer | null | undefined): void; - glTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.ShortBuffer | null | undefined): void; - glTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.IntBuffer | null | undefined): void; - glTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.FloatBuffer | null | undefined): void; - glTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.DoubleBuffer | null | undefined): void; - glTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: Array): void; - glTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: Array): void; - glTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: kotlin.FloatArray | null | undefined): void; - glTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: kotlin.DoubleArray | null | undefined): void; - glCopyTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glCopyTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glCopyTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glCopyTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glTexParameteri(p0: number, p1: number, p2: number): void; - nglTexParameteriv(p0: number, p1: number, p2: number): void; - glTexParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glTexParameteriv(p0: number, p1: number, p2: Array): void; - glTexParameterf(p0: number, p1: number, p2: number): void; - nglTexParameterfv(p0: number, p1: number, p2: number): void; - glTexParameterfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glTexParameterfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - nglTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ByteBuffer): void; - glTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ShortBuffer): void; - glTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.IntBuffer): void; - glTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.FloatBuffer): void; - glTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.DoubleBuffer): void; - glTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: kotlin.FloatArray): void; - glTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: kotlin.DoubleArray): void; - nglTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.ByteBuffer): void; - glTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.ShortBuffer): void; - glTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.IntBuffer): void; - glTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.FloatBuffer): void; - glTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.DoubleBuffer): void; - glTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: Array): void; - glTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: Array): void; - glTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: kotlin.FloatArray): void; - glTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: kotlin.DoubleArray): void; - glTranslatef(p0: number, p1: number, p2: number): void; - glTranslated(p0: number, p1: number, p2: number): void; - glVertex2f(p0: number, p1: number): void; - glVertex2s(p0: number, p1: number): void; - glVertex2i(p0: number, p1: number): void; - glVertex2d(p0: number, p1: number): void; - nglVertex2fv(p0: number): void; - glVertex2fv(p0: java.nio.FloatBuffer): void; - glVertex2fv(p0: kotlin.FloatArray): void; - nglVertex2sv(p0: number): void; - glVertex2sv(p0: java.nio.ShortBuffer): void; - glVertex2sv(p0: Array): void; - nglVertex2iv(p0: number): void; - glVertex2iv(p0: java.nio.IntBuffer): void; - glVertex2iv(p0: Array): void; - nglVertex2dv(p0: number): void; - glVertex2dv(p0: java.nio.DoubleBuffer): void; - glVertex2dv(p0: kotlin.DoubleArray): void; - glVertex3f(p0: number, p1: number, p2: number): void; - glVertex3s(p0: number, p1: number, p2: number): void; - glVertex3i(p0: number, p1: number, p2: number): void; - glVertex3d(p0: number, p1: number, p2: number): void; - nglVertex3fv(p0: number): void; - glVertex3fv(p0: java.nio.FloatBuffer): void; - glVertex3fv(p0: kotlin.FloatArray): void; - nglVertex3sv(p0: number): void; - glVertex3sv(p0: java.nio.ShortBuffer): void; - glVertex3sv(p0: Array): void; - nglVertex3iv(p0: number): void; - glVertex3iv(p0: java.nio.IntBuffer): void; - glVertex3iv(p0: Array): void; - nglVertex3dv(p0: number): void; - glVertex3dv(p0: java.nio.DoubleBuffer): void; - glVertex3dv(p0: kotlin.DoubleArray): void; - glVertex4f(p0: number, p1: number, p2: number, p3: number): void; - glVertex4s(p0: number, p1: number, p2: number, p3: number): void; - glVertex4i(p0: number, p1: number, p2: number, p3: number): void; - glVertex4d(p0: number, p1: number, p2: number, p3: number): void; - nglVertex4fv(p0: number): void; - glVertex4fv(p0: java.nio.FloatBuffer): void; - glVertex4fv(p0: kotlin.FloatArray): void; - nglVertex4sv(p0: number): void; - glVertex4sv(p0: java.nio.ShortBuffer): void; - glVertex4sv(p0: Array): void; - nglVertex4iv(p0: number): void; - glVertex4iv(p0: java.nio.IntBuffer): void; - glVertex4iv(p0: Array): void; - nglVertex4dv(p0: number): void; - glVertex4dv(p0: java.nio.DoubleBuffer): void; - glVertex4dv(p0: kotlin.DoubleArray): void; - nglVertexPointer(p0: number, p1: number, p2: number, p3: number): void; - glVertexPointer(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer): void; - glVertexPointer(p0: number, p1: number, p2: number, p3: number): void; - glVertexPointer(p0: number, p1: number, p2: number, p3: java.nio.ShortBuffer): void; - glVertexPointer(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glVertexPointer(p0: number, p1: number, p2: number, p3: java.nio.FloatBuffer): void; - glViewport(p0: number, p1: number, p2: number, p3: number): void; - } - interface GL11 { - } - const GL12: { - GL_ALIASED_POINT_SIZE_RANGE: number; - GL_ALIASED_LINE_WIDTH_RANGE: number; - GL_SMOOTH_POINT_SIZE_RANGE: number; - GL_SMOOTH_POINT_SIZE_GRANULARITY: number; - GL_SMOOTH_LINE_WIDTH_RANGE: number; - GL_SMOOTH_LINE_WIDTH_GRANULARITY: number; - GL_TEXTURE_BINDING_3D: number; - GL_PACK_SKIP_IMAGES: number; - GL_PACK_IMAGE_HEIGHT: number; - GL_UNPACK_SKIP_IMAGES: number; - GL_UNPACK_IMAGE_HEIGHT: number; - GL_TEXTURE_3D: number; - GL_PROXY_TEXTURE_3D: number; - GL_TEXTURE_DEPTH: number; - GL_TEXTURE_WRAP_R: number; - GL_MAX_3D_TEXTURE_SIZE: number; - GL_BGR: number; - GL_BGRA: number; - GL_UNSIGNED_BYTE_3_3_2: number; - GL_UNSIGNED_BYTE_2_3_3_REV: number; - GL_UNSIGNED_SHORT_5_6_5: number; - GL_UNSIGNED_SHORT_5_6_5_REV: number; - GL_UNSIGNED_SHORT_4_4_4_4: number; - GL_UNSIGNED_SHORT_4_4_4_4_REV: number; - GL_UNSIGNED_SHORT_5_5_5_1: number; - GL_UNSIGNED_SHORT_1_5_5_5_REV: number; - GL_UNSIGNED_INT_8_8_8_8: number; - GL_UNSIGNED_INT_8_8_8_8_REV: number; - GL_UNSIGNED_INT_10_10_10_2: number; - GL_UNSIGNED_INT_2_10_10_10_REV: number; - GL_RESCALE_NORMAL: number; - GL_LIGHT_MODEL_COLOR_CONTROL: number; - GL_SINGLE_COLOR: number; - GL_SEPARATE_SPECULAR_COLOR: number; - GL_CLAMP_TO_EDGE: number; - GL_TEXTURE_MIN_LOD: number; - GL_TEXTURE_MAX_LOD: number; - GL_TEXTURE_BASE_LEVEL: number; - GL_TEXTURE_MAX_LEVEL: number; - GL_MAX_ELEMENTS_VERTICES: number; - GL_MAX_ELEMENTS_INDICES: number; - nglTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): void; - glTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: java.nio.ByteBuffer | null | undefined): void; - glTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): void; - glTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: java.nio.ShortBuffer | null | undefined): void; - glTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: java.nio.IntBuffer | null | undefined): void; - glTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: java.nio.FloatBuffer | null | undefined): void; - glTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: java.nio.DoubleBuffer | null | undefined): void; - glTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: Array): void; - glTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: Array): void; - glTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: kotlin.FloatArray | null | undefined): void; - glTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: kotlin.DoubleArray | null | undefined): void; - nglTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number): void; - glTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.ByteBuffer): void; - glTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number): void; - glTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.ShortBuffer): void; - glTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.IntBuffer): void; - glTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.FloatBuffer): void; - glTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.DoubleBuffer): void; - glTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: Array): void; - glTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: Array): void; - glTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: kotlin.FloatArray): void; - glTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: kotlin.DoubleArray): void; - glCopyTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - nglDrawRangeElements(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glDrawRangeElements(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glDrawRangeElements(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer): void; - glDrawRangeElements(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer): void; - glDrawRangeElements(p0: number, p1: number, p2: number, p3: java.nio.ShortBuffer): void; - glDrawRangeElements(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - } - interface GL12 extends org.lwjgl.opengl.GL11 { - } - const GL13: { - GL_COMPRESSED_ALPHA: number; - GL_COMPRESSED_LUMINANCE: number; - GL_COMPRESSED_LUMINANCE_ALPHA: number; - GL_COMPRESSED_INTENSITY: number; - GL_COMPRESSED_RGB: number; - GL_COMPRESSED_RGBA: number; - GL_TEXTURE_COMPRESSION_HINT: number; - GL_TEXTURE_COMPRESSED_IMAGE_SIZE: number; - GL_TEXTURE_COMPRESSED: number; - GL_NUM_COMPRESSED_TEXTURE_FORMATS: number; - GL_COMPRESSED_TEXTURE_FORMATS: number; - GL_NORMAL_MAP: number; - GL_REFLECTION_MAP: number; - GL_TEXTURE_CUBE_MAP: number; - GL_TEXTURE_BINDING_CUBE_MAP: number; - GL_TEXTURE_CUBE_MAP_POSITIVE_X: number; - GL_TEXTURE_CUBE_MAP_NEGATIVE_X: number; - GL_TEXTURE_CUBE_MAP_POSITIVE_Y: number; - GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - GL_TEXTURE_CUBE_MAP_POSITIVE_Z: number; - GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - GL_PROXY_TEXTURE_CUBE_MAP: number; - GL_MAX_CUBE_MAP_TEXTURE_SIZE: number; - GL_MULTISAMPLE: number; - GL_SAMPLE_ALPHA_TO_COVERAGE: number; - GL_SAMPLE_ALPHA_TO_ONE: number; - GL_SAMPLE_COVERAGE: number; - GL_MULTISAMPLE_BIT: number; - GL_SAMPLE_BUFFERS: number; - GL_SAMPLES: number; - GL_SAMPLE_COVERAGE_VALUE: number; - GL_SAMPLE_COVERAGE_INVERT: number; - GL_TEXTURE0: number; - GL_TEXTURE1: number; - GL_TEXTURE2: number; - GL_TEXTURE3: number; - GL_TEXTURE4: number; - GL_TEXTURE5: number; - GL_TEXTURE6: number; - GL_TEXTURE7: number; - GL_TEXTURE8: number; - GL_TEXTURE9: number; - GL_TEXTURE10: number; - GL_TEXTURE11: number; - GL_TEXTURE12: number; - GL_TEXTURE13: number; - GL_TEXTURE14: number; - GL_TEXTURE15: number; - GL_TEXTURE16: number; - GL_TEXTURE17: number; - GL_TEXTURE18: number; - GL_TEXTURE19: number; - GL_TEXTURE20: number; - GL_TEXTURE21: number; - GL_TEXTURE22: number; - GL_TEXTURE23: number; - GL_TEXTURE24: number; - GL_TEXTURE25: number; - GL_TEXTURE26: number; - GL_TEXTURE27: number; - GL_TEXTURE28: number; - GL_TEXTURE29: number; - GL_TEXTURE30: number; - GL_TEXTURE31: number; - GL_ACTIVE_TEXTURE: number; - GL_CLIENT_ACTIVE_TEXTURE: number; - GL_MAX_TEXTURE_UNITS: number; - GL_COMBINE: number; - GL_COMBINE_RGB: number; - GL_COMBINE_ALPHA: number; - GL_SOURCE0_RGB: number; - GL_SOURCE1_RGB: number; - GL_SOURCE2_RGB: number; - GL_SOURCE0_ALPHA: number; - GL_SOURCE1_ALPHA: number; - GL_SOURCE2_ALPHA: number; - GL_OPERAND0_RGB: number; - GL_OPERAND1_RGB: number; - GL_OPERAND2_RGB: number; - GL_OPERAND0_ALPHA: number; - GL_OPERAND1_ALPHA: number; - GL_OPERAND2_ALPHA: number; - GL_RGB_SCALE: number; - GL_ADD_SIGNED: number; - GL_INTERPOLATE: number; - GL_SUBTRACT: number; - GL_CONSTANT: number; - GL_PRIMARY_COLOR: number; - GL_PREVIOUS: number; - GL_DOT3_RGB: number; - GL_DOT3_RGBA: number; - GL_CLAMP_TO_BORDER: number; - GL_TRANSPOSE_MODELVIEW_MATRIX: number; - GL_TRANSPOSE_PROJECTION_MATRIX: number; - GL_TRANSPOSE_TEXTURE_MATRIX: number; - GL_TRANSPOSE_COLOR_MATRIX: number; - nglCompressedTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glCompressedTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glCompressedTexImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: java.nio.ByteBuffer | null | undefined): void; - nglCompressedTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glCompressedTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glCompressedTexImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ByteBuffer | null | undefined): void; - nglCompressedTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glCompressedTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glCompressedTexImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: java.nio.ByteBuffer | null | undefined): void; - nglCompressedTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number): void; - glCompressedTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number): void; - glCompressedTexSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: java.nio.ByteBuffer): void; - nglCompressedTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glCompressedTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glCompressedTexSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: java.nio.ByteBuffer): void; - nglCompressedTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glCompressedTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glCompressedTexSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: java.nio.ByteBuffer): void; - nglGetCompressedTexImage(p0: number, p1: number, p2: number): void; - glGetCompressedTexImage(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glGetCompressedTexImage(p0: number, p1: number, p2: number): void; - glSampleCoverage(p0: number, p1: boolean): void; - glActiveTexture(p0: number): void; - glClientActiveTexture(p0: number): void; - glMultiTexCoord1f(p0: number, p1: number): void; - glMultiTexCoord1s(p0: number, p1: number): void; - glMultiTexCoord1i(p0: number, p1: number): void; - glMultiTexCoord1d(p0: number, p1: number): void; - nglMultiTexCoord1fv(p0: number, p1: number): void; - glMultiTexCoord1fv(p0: number, p1: java.nio.FloatBuffer): void; - glMultiTexCoord1fv(p0: number, p1: kotlin.FloatArray): void; - nglMultiTexCoord1sv(p0: number, p1: number): void; - glMultiTexCoord1sv(p0: number, p1: java.nio.ShortBuffer): void; - glMultiTexCoord1sv(p0: number, p1: Array): void; - nglMultiTexCoord1iv(p0: number, p1: number): void; - glMultiTexCoord1iv(p0: number, p1: java.nio.IntBuffer): void; - glMultiTexCoord1iv(p0: number, p1: Array): void; - nglMultiTexCoord1dv(p0: number, p1: number): void; - glMultiTexCoord1dv(p0: number, p1: java.nio.DoubleBuffer): void; - glMultiTexCoord1dv(p0: number, p1: kotlin.DoubleArray): void; - glMultiTexCoord2f(p0: number, p1: number, p2: number): void; - glMultiTexCoord2s(p0: number, p1: number, p2: number): void; - glMultiTexCoord2i(p0: number, p1: number, p2: number): void; - glMultiTexCoord2d(p0: number, p1: number, p2: number): void; - nglMultiTexCoord2fv(p0: number, p1: number): void; - glMultiTexCoord2fv(p0: number, p1: java.nio.FloatBuffer): void; - glMultiTexCoord2fv(p0: number, p1: kotlin.FloatArray): void; - nglMultiTexCoord2sv(p0: number, p1: number): void; - glMultiTexCoord2sv(p0: number, p1: java.nio.ShortBuffer): void; - glMultiTexCoord2sv(p0: number, p1: Array): void; - nglMultiTexCoord2iv(p0: number, p1: number): void; - glMultiTexCoord2iv(p0: number, p1: java.nio.IntBuffer): void; - glMultiTexCoord2iv(p0: number, p1: Array): void; - nglMultiTexCoord2dv(p0: number, p1: number): void; - glMultiTexCoord2dv(p0: number, p1: java.nio.DoubleBuffer): void; - glMultiTexCoord2dv(p0: number, p1: kotlin.DoubleArray): void; - glMultiTexCoord3f(p0: number, p1: number, p2: number, p3: number): void; - glMultiTexCoord3s(p0: number, p1: number, p2: number, p3: number): void; - glMultiTexCoord3i(p0: number, p1: number, p2: number, p3: number): void; - glMultiTexCoord3d(p0: number, p1: number, p2: number, p3: number): void; - nglMultiTexCoord3fv(p0: number, p1: number): void; - glMultiTexCoord3fv(p0: number, p1: java.nio.FloatBuffer): void; - glMultiTexCoord3fv(p0: number, p1: kotlin.FloatArray): void; - nglMultiTexCoord3sv(p0: number, p1: number): void; - glMultiTexCoord3sv(p0: number, p1: java.nio.ShortBuffer): void; - glMultiTexCoord3sv(p0: number, p1: Array): void; - nglMultiTexCoord3iv(p0: number, p1: number): void; - glMultiTexCoord3iv(p0: number, p1: java.nio.IntBuffer): void; - glMultiTexCoord3iv(p0: number, p1: Array): void; - nglMultiTexCoord3dv(p0: number, p1: number): void; - glMultiTexCoord3dv(p0: number, p1: java.nio.DoubleBuffer): void; - glMultiTexCoord3dv(p0: number, p1: kotlin.DoubleArray): void; - glMultiTexCoord4f(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glMultiTexCoord4s(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glMultiTexCoord4i(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glMultiTexCoord4d(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglMultiTexCoord4fv(p0: number, p1: number): void; - glMultiTexCoord4fv(p0: number, p1: java.nio.FloatBuffer): void; - glMultiTexCoord4fv(p0: number, p1: kotlin.FloatArray): void; - nglMultiTexCoord4sv(p0: number, p1: number): void; - glMultiTexCoord4sv(p0: number, p1: java.nio.ShortBuffer): void; - glMultiTexCoord4sv(p0: number, p1: Array): void; - nglMultiTexCoord4iv(p0: number, p1: number): void; - glMultiTexCoord4iv(p0: number, p1: java.nio.IntBuffer): void; - glMultiTexCoord4iv(p0: number, p1: Array): void; - nglMultiTexCoord4dv(p0: number, p1: number): void; - glMultiTexCoord4dv(p0: number, p1: java.nio.DoubleBuffer): void; - glMultiTexCoord4dv(p0: number, p1: kotlin.DoubleArray): void; - nglLoadTransposeMatrixf(p0: number): void; - glLoadTransposeMatrixf(p0: java.nio.FloatBuffer): void; - glLoadTransposeMatrixf(p0: kotlin.FloatArray): void; - nglLoadTransposeMatrixd(p0: number): void; - glLoadTransposeMatrixd(p0: java.nio.DoubleBuffer): void; - glLoadTransposeMatrixd(p0: kotlin.DoubleArray): void; - nglMultTransposeMatrixf(p0: number): void; - glMultTransposeMatrixf(p0: java.nio.FloatBuffer): void; - glMultTransposeMatrixf(p0: kotlin.FloatArray): void; - nglMultTransposeMatrixd(p0: number): void; - glMultTransposeMatrixd(p0: java.nio.DoubleBuffer): void; - glMultTransposeMatrixd(p0: kotlin.DoubleArray): void; - } - interface GL13 extends org.lwjgl.opengl.GL12 { - } - const GL14: { - GL_GENERATE_MIPMAP: number; - GL_GENERATE_MIPMAP_HINT: number; - GL_CONSTANT_COLOR: number; - GL_ONE_MINUS_CONSTANT_COLOR: number; - GL_CONSTANT_ALPHA: number; - GL_ONE_MINUS_CONSTANT_ALPHA: number; - GL_BLEND_COLOR: number; - GL_FUNC_ADD: number; - GL_MIN: number; - GL_MAX: number; - GL_BLEND_EQUATION: number; - GL_FUNC_SUBTRACT: number; - GL_FUNC_REVERSE_SUBTRACT: number; - GL_DEPTH_COMPONENT16: number; - GL_DEPTH_COMPONENT24: number; - GL_DEPTH_COMPONENT32: number; - GL_TEXTURE_DEPTH_SIZE: number; - GL_DEPTH_TEXTURE_MODE: number; - GL_TEXTURE_COMPARE_MODE: number; - GL_TEXTURE_COMPARE_FUNC: number; - GL_COMPARE_R_TO_TEXTURE: number; - GL_FOG_COORDINATE_SOURCE: number; - GL_FOG_COORDINATE: number; - GL_FRAGMENT_DEPTH: number; - GL_CURRENT_FOG_COORDINATE: number; - GL_FOG_COORDINATE_ARRAY_TYPE: number; - GL_FOG_COORDINATE_ARRAY_STRIDE: number; - GL_FOG_COORDINATE_ARRAY_POINTER: number; - GL_FOG_COORDINATE_ARRAY: number; - GL_POINT_SIZE_MIN: number; - GL_POINT_SIZE_MAX: number; - GL_POINT_FADE_THRESHOLD_SIZE: number; - GL_POINT_DISTANCE_ATTENUATION: number; - GL_COLOR_SUM: number; - GL_CURRENT_SECONDARY_COLOR: number; - GL_SECONDARY_COLOR_ARRAY_SIZE: number; - GL_SECONDARY_COLOR_ARRAY_TYPE: number; - GL_SECONDARY_COLOR_ARRAY_STRIDE: number; - GL_SECONDARY_COLOR_ARRAY_POINTER: number; - GL_SECONDARY_COLOR_ARRAY: number; - GL_BLEND_DST_RGB: number; - GL_BLEND_SRC_RGB: number; - GL_BLEND_DST_ALPHA: number; - GL_BLEND_SRC_ALPHA: number; - GL_INCR_WRAP: number; - GL_DECR_WRAP: number; - GL_TEXTURE_FILTER_CONTROL: number; - GL_TEXTURE_LOD_BIAS: number; - GL_MAX_TEXTURE_LOD_BIAS: number; - GL_MIRRORED_REPEAT: number; - glBlendColor(p0: number, p1: number, p2: number, p3: number): void; - glBlendEquation(p0: number): void; - glFogCoordf(p0: number): void; - glFogCoordd(p0: number): void; - nglFogCoordfv(p0: number): void; - glFogCoordfv(p0: java.nio.FloatBuffer): void; - glFogCoordfv(p0: kotlin.FloatArray): void; - nglFogCoorddv(p0: number): void; - glFogCoorddv(p0: java.nio.DoubleBuffer): void; - glFogCoorddv(p0: kotlin.DoubleArray): void; - nglFogCoordPointer(p0: number, p1: number, p2: number): void; - glFogCoordPointer(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glFogCoordPointer(p0: number, p1: number, p2: number): void; - glFogCoordPointer(p0: number, p1: number, p2: java.nio.ShortBuffer): void; - glFogCoordPointer(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - nglMultiDrawArrays(p0: number, p1: number, p2: number, p3: number): void; - glMultiDrawArrays(p0: number, p1: java.nio.IntBuffer, p2: java.nio.IntBuffer): void; - glMultiDrawArrays(p0: number, p1: Array, p2: Array): void; - nglMultiDrawElements(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glMultiDrawElements(p0: number, p1: java.nio.IntBuffer, p2: number, p3: org.lwjgl.PointerBuffer): void; - glMultiDrawElements(p0: number, p1: Array, p2: number, p3: org.lwjgl.PointerBuffer): void; - glPointParameterf(p0: number, p1: number): void; - glPointParameteri(p0: number, p1: number): void; - nglPointParameterfv(p0: number, p1: number): void; - glPointParameterfv(p0: number, p1: java.nio.FloatBuffer): void; - glPointParameterfv(p0: number, p1: kotlin.FloatArray): void; - nglPointParameteriv(p0: number, p1: number): void; - glPointParameteriv(p0: number, p1: java.nio.IntBuffer): void; - glPointParameteriv(p0: number, p1: Array): void; - glSecondaryColor3b(p0: number, p1: number, p2: number): void; - glSecondaryColor3s(p0: number, p1: number, p2: number): void; - glSecondaryColor3i(p0: number, p1: number, p2: number): void; - glSecondaryColor3f(p0: number, p1: number, p2: number): void; - glSecondaryColor3d(p0: number, p1: number, p2: number): void; - glSecondaryColor3ub(p0: number, p1: number, p2: number): void; - glSecondaryColor3us(p0: number, p1: number, p2: number): void; - glSecondaryColor3ui(p0: number, p1: number, p2: number): void; - nglSecondaryColor3bv(p0: number): void; - glSecondaryColor3bv(p0: java.nio.ByteBuffer): void; - nglSecondaryColor3sv(p0: number): void; - glSecondaryColor3sv(p0: java.nio.ShortBuffer): void; - glSecondaryColor3sv(p0: Array): void; - nglSecondaryColor3iv(p0: number): void; - glSecondaryColor3iv(p0: java.nio.IntBuffer): void; - glSecondaryColor3iv(p0: Array): void; - nglSecondaryColor3fv(p0: number): void; - glSecondaryColor3fv(p0: java.nio.FloatBuffer): void; - glSecondaryColor3fv(p0: kotlin.FloatArray): void; - nglSecondaryColor3dv(p0: number): void; - glSecondaryColor3dv(p0: java.nio.DoubleBuffer): void; - glSecondaryColor3dv(p0: kotlin.DoubleArray): void; - nglSecondaryColor3ubv(p0: number): void; - glSecondaryColor3ubv(p0: java.nio.ByteBuffer): void; - nglSecondaryColor3usv(p0: number): void; - glSecondaryColor3usv(p0: java.nio.ShortBuffer): void; - glSecondaryColor3usv(p0: Array): void; - nglSecondaryColor3uiv(p0: number): void; - glSecondaryColor3uiv(p0: java.nio.IntBuffer): void; - glSecondaryColor3uiv(p0: Array): void; - nglSecondaryColorPointer(p0: number, p1: number, p2: number, p3: number): void; - glSecondaryColorPointer(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer): void; - glSecondaryColorPointer(p0: number, p1: number, p2: number, p3: number): void; - glSecondaryColorPointer(p0: number, p1: number, p2: number, p3: java.nio.ShortBuffer): void; - glSecondaryColorPointer(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glSecondaryColorPointer(p0: number, p1: number, p2: number, p3: java.nio.FloatBuffer): void; - glBlendFuncSeparate(p0: number, p1: number, p2: number, p3: number): void; - glWindowPos2i(p0: number, p1: number): void; - glWindowPos2s(p0: number, p1: number): void; - glWindowPos2f(p0: number, p1: number): void; - glWindowPos2d(p0: number, p1: number): void; - nglWindowPos2iv(p0: number): void; - glWindowPos2iv(p0: java.nio.IntBuffer): void; - glWindowPos2iv(p0: Array): void; - nglWindowPos2sv(p0: number): void; - glWindowPos2sv(p0: java.nio.ShortBuffer): void; - glWindowPos2sv(p0: Array): void; - nglWindowPos2fv(p0: number): void; - glWindowPos2fv(p0: java.nio.FloatBuffer): void; - glWindowPos2fv(p0: kotlin.FloatArray): void; - nglWindowPos2dv(p0: number): void; - glWindowPos2dv(p0: java.nio.DoubleBuffer): void; - glWindowPos2dv(p0: kotlin.DoubleArray): void; - glWindowPos3i(p0: number, p1: number, p2: number): void; - glWindowPos3s(p0: number, p1: number, p2: number): void; - glWindowPos3f(p0: number, p1: number, p2: number): void; - glWindowPos3d(p0: number, p1: number, p2: number): void; - nglWindowPos3iv(p0: number): void; - glWindowPos3iv(p0: java.nio.IntBuffer): void; - glWindowPos3iv(p0: Array): void; - nglWindowPos3sv(p0: number): void; - glWindowPos3sv(p0: java.nio.ShortBuffer): void; - glWindowPos3sv(p0: Array): void; - nglWindowPos3fv(p0: number): void; - glWindowPos3fv(p0: java.nio.FloatBuffer): void; - glWindowPos3fv(p0: kotlin.FloatArray): void; - nglWindowPos3dv(p0: number): void; - glWindowPos3dv(p0: java.nio.DoubleBuffer): void; - glWindowPos3dv(p0: kotlin.DoubleArray): void; - } - interface GL14 extends org.lwjgl.opengl.GL13 { - } - const GL15: { - GL_FOG_COORD_SRC: number; - GL_FOG_COORD: number; - GL_CURRENT_FOG_COORD: number; - GL_FOG_COORD_ARRAY_TYPE: number; - GL_FOG_COORD_ARRAY_STRIDE: number; - GL_FOG_COORD_ARRAY_POINTER: number; - GL_FOG_COORD_ARRAY: number; - GL_FOG_COORD_ARRAY_BUFFER_BINDING: number; - GL_SRC0_RGB: number; - GL_SRC1_RGB: number; - GL_SRC2_RGB: number; - GL_SRC0_ALPHA: number; - GL_SRC1_ALPHA: number; - GL_SRC2_ALPHA: number; - GL_ARRAY_BUFFER: number; - GL_ELEMENT_ARRAY_BUFFER: number; - GL_ARRAY_BUFFER_BINDING: number; - GL_ELEMENT_ARRAY_BUFFER_BINDING: number; - GL_VERTEX_ARRAY_BUFFER_BINDING: number; - GL_NORMAL_ARRAY_BUFFER_BINDING: number; - GL_COLOR_ARRAY_BUFFER_BINDING: number; - GL_INDEX_ARRAY_BUFFER_BINDING: number; - GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING: number; - GL_EDGE_FLAG_ARRAY_BUFFER_BINDING: number; - GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING: number; - GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING: number; - GL_WEIGHT_ARRAY_BUFFER_BINDING: number; - GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - GL_STREAM_DRAW: number; - GL_STREAM_READ: number; - GL_STREAM_COPY: number; - GL_STATIC_DRAW: number; - GL_STATIC_READ: number; - GL_STATIC_COPY: number; - GL_DYNAMIC_DRAW: number; - GL_DYNAMIC_READ: number; - GL_DYNAMIC_COPY: number; - GL_READ_ONLY: number; - GL_WRITE_ONLY: number; - GL_READ_WRITE: number; - GL_BUFFER_SIZE: number; - GL_BUFFER_USAGE: number; - GL_BUFFER_ACCESS: number; - GL_BUFFER_MAPPED: number; - GL_BUFFER_MAP_POINTER: number; - GL_SAMPLES_PASSED: number; - GL_QUERY_COUNTER_BITS: number; - GL_CURRENT_QUERY: number; - GL_QUERY_RESULT: number; - GL_QUERY_RESULT_AVAILABLE: number; - glBindBuffer(p0: number, p1: number): void; - nglDeleteBuffers(p0: number, p1: number): void; - glDeleteBuffers(p0: java.nio.IntBuffer): void; - glDeleteBuffers(p0: number): void; - glDeleteBuffers(p0: Array): void; - nglGenBuffers(p0: number, p1: number): void; - glGenBuffers(p0: java.nio.IntBuffer): void; - glGenBuffers(): number; - glGenBuffers(p0: Array): void; - glIsBuffer(p0: number): boolean; - nglBufferData(p0: number, p1: number, p2: number, p3: number): void; - glBufferData(p0: number, p1: number, p2: number): void; - glBufferData(p0: number, p1: java.nio.ByteBuffer, p2: number): void; - glBufferData(p0: number, p1: java.nio.ShortBuffer, p2: number): void; - glBufferData(p0: number, p1: java.nio.IntBuffer, p2: number): void; - glBufferData(p0: number, p1: java.nio.LongBuffer, p2: number): void; - glBufferData(p0: number, p1: java.nio.FloatBuffer, p2: number): void; - glBufferData(p0: number, p1: java.nio.DoubleBuffer, p2: number): void; - glBufferData(p0: number, p1: Array, p2: number): void; - glBufferData(p0: number, p1: Array, p2: number): void; - glBufferData(p0: number, p1: Array, p2: number): void; - glBufferData(p0: number, p1: kotlin.FloatArray, p2: number): void; - glBufferData(p0: number, p1: kotlin.DoubleArray, p2: number): void; - nglBufferSubData(p0: number, p1: number, p2: number, p3: number): void; - glBufferSubData(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glBufferSubData(p0: number, p1: number, p2: java.nio.ShortBuffer): void; - glBufferSubData(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glBufferSubData(p0: number, p1: number, p2: java.nio.LongBuffer): void; - glBufferSubData(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glBufferSubData(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glBufferSubData(p0: number, p1: number, p2: Array): void; - glBufferSubData(p0: number, p1: number, p2: Array): void; - glBufferSubData(p0: number, p1: number, p2: Array): void; - glBufferSubData(p0: number, p1: number, p2: kotlin.FloatArray): void; - glBufferSubData(p0: number, p1: number, p2: kotlin.DoubleArray): void; - nglGetBufferSubData(p0: number, p1: number, p2: number, p3: number): void; - glGetBufferSubData(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glGetBufferSubData(p0: number, p1: number, p2: java.nio.ShortBuffer): void; - glGetBufferSubData(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetBufferSubData(p0: number, p1: number, p2: java.nio.LongBuffer): void; - glGetBufferSubData(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetBufferSubData(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glGetBufferSubData(p0: number, p1: number, p2: Array): void; - glGetBufferSubData(p0: number, p1: number, p2: Array): void; - glGetBufferSubData(p0: number, p1: number, p2: Array): void; - glGetBufferSubData(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetBufferSubData(p0: number, p1: number, p2: kotlin.DoubleArray): void; - nglMapBuffer(p0: number, p1: number): number; - glMapBuffer(p0: number, p1: number): java.nio.ByteBuffer | null | undefined; - glMapBuffer(p0: number, p1: number, p2: java.nio.ByteBuffer | null | undefined): java.nio.ByteBuffer | null | undefined; - glMapBuffer(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer | null | undefined): java.nio.ByteBuffer | null | undefined; - glUnmapBuffer(p0: number): boolean; - nglGetBufferParameteriv(p0: number, p1: number, p2: number): void; - glGetBufferParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetBufferParameteriv(p0: number, p1: number, p2: Array): void; - glGetBufferParameteri(p0: number, p1: number): number; - nglGetBufferPointerv(p0: number, p1: number, p2: number): void; - glGetBufferPointerv(p0: number, p1: number, p2: org.lwjgl.PointerBuffer): void; - glGetBufferPointer(p0: number, p1: number): number; - nglGenQueries(p0: number, p1: number): void; - glGenQueries(p0: java.nio.IntBuffer): void; - glGenQueries(): number; - glGenQueries(p0: Array): void; - nglDeleteQueries(p0: number, p1: number): void; - glDeleteQueries(p0: java.nio.IntBuffer): void; - glDeleteQueries(p0: number): void; - glDeleteQueries(p0: Array): void; - glIsQuery(p0: number): boolean; - glBeginQuery(p0: number, p1: number): void; - glEndQuery(p0: number): void; - nglGetQueryiv(p0: number, p1: number, p2: number): void; - glGetQueryiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetQueryiv(p0: number, p1: number, p2: Array): void; - glGetQueryi(p0: number, p1: number): number; - nglGetQueryObjectiv(p0: number, p1: number, p2: number): void; - glGetQueryObjectiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetQueryObjectiv(p0: number, p1: number, p2: number): void; - glGetQueryObjectiv(p0: number, p1: number, p2: Array): void; - glGetQueryObjecti(p0: number, p1: number): number; - nglGetQueryObjectuiv(p0: number, p1: number, p2: number): void; - glGetQueryObjectuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetQueryObjectuiv(p0: number, p1: number, p2: number): void; - glGetQueryObjectuiv(p0: number, p1: number, p2: Array): void; - glGetQueryObjectui(p0: number, p1: number): number; - } - interface GL15 extends org.lwjgl.opengl.GL14 { - } - const GL20: { - GL_SHADING_LANGUAGE_VERSION: number; - GL_CURRENT_PROGRAM: number; - GL_SHADER_TYPE: number; - GL_DELETE_STATUS: number; - GL_COMPILE_STATUS: number; - GL_LINK_STATUS: number; - GL_VALIDATE_STATUS: number; - GL_INFO_LOG_LENGTH: number; - GL_ATTACHED_SHADERS: number; - GL_ACTIVE_UNIFORMS: number; - GL_ACTIVE_UNIFORM_MAX_LENGTH: number; - GL_ACTIVE_ATTRIBUTES: number; - GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: number; - GL_SHADER_SOURCE_LENGTH: number; - GL_FLOAT_VEC2: number; - GL_FLOAT_VEC3: number; - GL_FLOAT_VEC4: number; - GL_INT_VEC2: number; - GL_INT_VEC3: number; - GL_INT_VEC4: number; - GL_BOOL: number; - GL_BOOL_VEC2: number; - GL_BOOL_VEC3: number; - GL_BOOL_VEC4: number; - GL_FLOAT_MAT2: number; - GL_FLOAT_MAT3: number; - GL_FLOAT_MAT4: number; - GL_SAMPLER_1D: number; - GL_SAMPLER_2D: number; - GL_SAMPLER_3D: number; - GL_SAMPLER_CUBE: number; - GL_SAMPLER_1D_SHADOW: number; - GL_SAMPLER_2D_SHADOW: number; - GL_VERTEX_SHADER: number; - GL_MAX_VERTEX_UNIFORM_COMPONENTS: number; - GL_MAX_VARYING_FLOATS: number; - GL_MAX_VERTEX_ATTRIBS: number; - GL_MAX_TEXTURE_IMAGE_UNITS: number; - GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - GL_MAX_TEXTURE_COORDS: number; - GL_VERTEX_PROGRAM_POINT_SIZE: number; - GL_VERTEX_PROGRAM_TWO_SIDE: number; - GL_VERTEX_ATTRIB_ARRAY_ENABLED: number; - GL_VERTEX_ATTRIB_ARRAY_SIZE: number; - GL_VERTEX_ATTRIB_ARRAY_STRIDE: number; - GL_VERTEX_ATTRIB_ARRAY_TYPE: number; - GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - GL_CURRENT_VERTEX_ATTRIB: number; - GL_VERTEX_ATTRIB_ARRAY_POINTER: number; - GL_FRAGMENT_SHADER: number; - GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: number; - GL_FRAGMENT_SHADER_DERIVATIVE_HINT: number; - GL_MAX_DRAW_BUFFERS: number; - GL_DRAW_BUFFER0: number; - GL_DRAW_BUFFER1: number; - GL_DRAW_BUFFER2: number; - GL_DRAW_BUFFER3: number; - GL_DRAW_BUFFER4: number; - GL_DRAW_BUFFER5: number; - GL_DRAW_BUFFER6: number; - GL_DRAW_BUFFER7: number; - GL_DRAW_BUFFER8: number; - GL_DRAW_BUFFER9: number; - GL_DRAW_BUFFER10: number; - GL_DRAW_BUFFER11: number; - GL_DRAW_BUFFER12: number; - GL_DRAW_BUFFER13: number; - GL_DRAW_BUFFER14: number; - GL_DRAW_BUFFER15: number; - GL_POINT_SPRITE: number; - GL_COORD_REPLACE: number; - GL_POINT_SPRITE_COORD_ORIGIN: number; - GL_LOWER_LEFT: number; - GL_UPPER_LEFT: number; - GL_BLEND_EQUATION_RGB: number; - GL_BLEND_EQUATION_ALPHA: number; - GL_STENCIL_BACK_FUNC: number; - GL_STENCIL_BACK_FAIL: number; - GL_STENCIL_BACK_PASS_DEPTH_FAIL: number; - GL_STENCIL_BACK_PASS_DEPTH_PASS: number; - GL_STENCIL_BACK_REF: number; - GL_STENCIL_BACK_VALUE_MASK: number; - GL_STENCIL_BACK_WRITEMASK: number; - glCreateProgram(): number; - glDeleteProgram(p0: number): void; - glIsProgram(p0: number): boolean; - glCreateShader(p0: number): number; - glDeleteShader(p0: number): void; - glIsShader(p0: number): boolean; - glAttachShader(p0: number, p1: number): void; - glDetachShader(p0: number, p1: number): void; - nglShaderSource(p0: number, p1: number, p2: number, p3: number): void; - glShaderSource(p0: number, p1: org.lwjgl.PointerBuffer, p2: java.nio.IntBuffer | null | undefined): void; - glShaderSource(p0: number, p1: kotlin.CharSequence): void; - glShaderSource(p0: number, p1: kotlin.CharSequence): void; - glShaderSource(p0: number, p1: org.lwjgl.PointerBuffer, p2: Array): void; - glCompileShader(p0: number): void; - glLinkProgram(p0: number): void; - glUseProgram(p0: number): void; - glValidateProgram(p0: number): void; - glUniform1f(p0: number, p1: number): void; - glUniform2f(p0: number, p1: number, p2: number): void; - glUniform3f(p0: number, p1: number, p2: number, p3: number): void; - glUniform4f(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glUniform1i(p0: number, p1: number): void; - glUniform2i(p0: number, p1: number, p2: number): void; - glUniform3i(p0: number, p1: number, p2: number, p3: number): void; - glUniform4i(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglUniform1fv(p0: number, p1: number, p2: number): void; - glUniform1fv(p0: number, p1: java.nio.FloatBuffer): void; - glUniform1fv(p0: number, p1: kotlin.FloatArray): void; - nglUniform2fv(p0: number, p1: number, p2: number): void; - glUniform2fv(p0: number, p1: java.nio.FloatBuffer): void; - glUniform2fv(p0: number, p1: kotlin.FloatArray): void; - nglUniform3fv(p0: number, p1: number, p2: number): void; - glUniform3fv(p0: number, p1: java.nio.FloatBuffer): void; - glUniform3fv(p0: number, p1: kotlin.FloatArray): void; - nglUniform4fv(p0: number, p1: number, p2: number): void; - glUniform4fv(p0: number, p1: java.nio.FloatBuffer): void; - glUniform4fv(p0: number, p1: kotlin.FloatArray): void; - nglUniform1iv(p0: number, p1: number, p2: number): void; - glUniform1iv(p0: number, p1: java.nio.IntBuffer): void; - glUniform1iv(p0: number, p1: Array): void; - nglUniform2iv(p0: number, p1: number, p2: number): void; - glUniform2iv(p0: number, p1: java.nio.IntBuffer): void; - glUniform2iv(p0: number, p1: Array): void; - nglUniform3iv(p0: number, p1: number, p2: number): void; - glUniform3iv(p0: number, p1: java.nio.IntBuffer): void; - glUniform3iv(p0: number, p1: Array): void; - nglUniform4iv(p0: number, p1: number, p2: number): void; - glUniform4iv(p0: number, p1: java.nio.IntBuffer): void; - glUniform4iv(p0: number, p1: Array): void; - nglUniformMatrix2fv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix2fv(p0: number, p1: boolean, p2: java.nio.FloatBuffer): void; - glUniformMatrix2fv(p0: number, p1: boolean, p2: kotlin.FloatArray): void; - nglUniformMatrix3fv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix3fv(p0: number, p1: boolean, p2: java.nio.FloatBuffer): void; - glUniformMatrix3fv(p0: number, p1: boolean, p2: kotlin.FloatArray): void; - nglUniformMatrix4fv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix4fv(p0: number, p1: boolean, p2: java.nio.FloatBuffer): void; - glUniformMatrix4fv(p0: number, p1: boolean, p2: kotlin.FloatArray): void; - nglGetShaderiv(p0: number, p1: number, p2: number): void; - glGetShaderiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetShaderiv(p0: number, p1: number, p2: Array): void; - glGetShaderi(p0: number, p1: number): number; - nglGetProgramiv(p0: number, p1: number, p2: number): void; - glGetProgramiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetProgramiv(p0: number, p1: number, p2: Array): void; - glGetProgrami(p0: number, p1: number): number; - nglGetShaderInfoLog(p0: number, p1: number, p2: number, p3: number): void; - glGetShaderInfoLog(p0: number, p1: java.nio.IntBuffer | null | undefined, p2: java.nio.ByteBuffer): void; - glGetShaderInfoLog(p0: number, p1: number): string; - glGetShaderInfoLog(p0: number): string; - glGetShaderInfoLog(p0: number, p1: Array, p2: java.nio.ByteBuffer): void; - nglGetProgramInfoLog(p0: number, p1: number, p2: number, p3: number): void; - glGetProgramInfoLog(p0: number, p1: java.nio.IntBuffer | null | undefined, p2: java.nio.ByteBuffer): void; - glGetProgramInfoLog(p0: number, p1: number): string; - glGetProgramInfoLog(p0: number): string; - glGetProgramInfoLog(p0: number, p1: Array, p2: java.nio.ByteBuffer): void; - nglGetAttachedShaders(p0: number, p1: number, p2: number, p3: number): void; - glGetAttachedShaders(p0: number, p1: java.nio.IntBuffer | null | undefined, p2: java.nio.IntBuffer): void; - glGetAttachedShaders(p0: number, p1: Array, p2: Array): void; - nglGetUniformLocation(p0: number, p1: number): number; - glGetUniformLocation(p0: number, p1: java.nio.ByteBuffer): number; - glGetUniformLocation(p0: number, p1: kotlin.CharSequence): number; - nglGetActiveUniform(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glGetActiveUniform(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined, p3: java.nio.IntBuffer, p4: java.nio.IntBuffer, p5: java.nio.ByteBuffer): void; - glGetActiveUniform(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer, p4: java.nio.IntBuffer): string; - glGetActiveUniform(p0: number, p1: number, p2: java.nio.IntBuffer, p3: java.nio.IntBuffer): string; - glGetActiveUniform(p0: number, p1: number, p2: Array, p3: Array, p4: Array, p5: java.nio.ByteBuffer): void; - nglGetUniformfv(p0: number, p1: number, p2: number): void; - glGetUniformfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetUniformfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetUniformf(p0: number, p1: number): number; - nglGetUniformiv(p0: number, p1: number, p2: number): void; - glGetUniformiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetUniformiv(p0: number, p1: number, p2: Array): void; - glGetUniformi(p0: number, p1: number): number; - nglGetShaderSource(p0: number, p1: number, p2: number, p3: number): void; - glGetShaderSource(p0: number, p1: java.nio.IntBuffer | null | undefined, p2: java.nio.ByteBuffer): void; - glGetShaderSource(p0: number, p1: number): string; - glGetShaderSource(p0: number): string; - glGetShaderSource(p0: number, p1: Array, p2: java.nio.ByteBuffer): void; - glVertexAttrib1f(p0: number, p1: number): void; - glVertexAttrib1s(p0: number, p1: number): void; - glVertexAttrib1d(p0: number, p1: number): void; - glVertexAttrib2f(p0: number, p1: number, p2: number): void; - glVertexAttrib2s(p0: number, p1: number, p2: number): void; - glVertexAttrib2d(p0: number, p1: number, p2: number): void; - glVertexAttrib3f(p0: number, p1: number, p2: number, p3: number): void; - glVertexAttrib3s(p0: number, p1: number, p2: number, p3: number): void; - glVertexAttrib3d(p0: number, p1: number, p2: number, p3: number): void; - glVertexAttrib4f(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glVertexAttrib4s(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glVertexAttrib4d(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glVertexAttrib4Nub(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglVertexAttrib1fv(p0: number, p1: number): void; - glVertexAttrib1fv(p0: number, p1: java.nio.FloatBuffer): void; - glVertexAttrib1fv(p0: number, p1: kotlin.FloatArray): void; - nglVertexAttrib1sv(p0: number, p1: number): void; - glVertexAttrib1sv(p0: number, p1: java.nio.ShortBuffer): void; - glVertexAttrib1sv(p0: number, p1: Array): void; - nglVertexAttrib1dv(p0: number, p1: number): void; - glVertexAttrib1dv(p0: number, p1: java.nio.DoubleBuffer): void; - glVertexAttrib1dv(p0: number, p1: kotlin.DoubleArray): void; - nglVertexAttrib2fv(p0: number, p1: number): void; - glVertexAttrib2fv(p0: number, p1: java.nio.FloatBuffer): void; - glVertexAttrib2fv(p0: number, p1: kotlin.FloatArray): void; - nglVertexAttrib2sv(p0: number, p1: number): void; - glVertexAttrib2sv(p0: number, p1: java.nio.ShortBuffer): void; - glVertexAttrib2sv(p0: number, p1: Array): void; - nglVertexAttrib2dv(p0: number, p1: number): void; - glVertexAttrib2dv(p0: number, p1: java.nio.DoubleBuffer): void; - glVertexAttrib2dv(p0: number, p1: kotlin.DoubleArray): void; - nglVertexAttrib3fv(p0: number, p1: number): void; - glVertexAttrib3fv(p0: number, p1: java.nio.FloatBuffer): void; - glVertexAttrib3fv(p0: number, p1: kotlin.FloatArray): void; - nglVertexAttrib3sv(p0: number, p1: number): void; - glVertexAttrib3sv(p0: number, p1: java.nio.ShortBuffer): void; - glVertexAttrib3sv(p0: number, p1: Array): void; - nglVertexAttrib3dv(p0: number, p1: number): void; - glVertexAttrib3dv(p0: number, p1: java.nio.DoubleBuffer): void; - glVertexAttrib3dv(p0: number, p1: kotlin.DoubleArray): void; - nglVertexAttrib4fv(p0: number, p1: number): void; - glVertexAttrib4fv(p0: number, p1: java.nio.FloatBuffer): void; - glVertexAttrib4fv(p0: number, p1: kotlin.FloatArray): void; - nglVertexAttrib4sv(p0: number, p1: number): void; - glVertexAttrib4sv(p0: number, p1: java.nio.ShortBuffer): void; - glVertexAttrib4sv(p0: number, p1: Array): void; - nglVertexAttrib4dv(p0: number, p1: number): void; - glVertexAttrib4dv(p0: number, p1: java.nio.DoubleBuffer): void; - glVertexAttrib4dv(p0: number, p1: kotlin.DoubleArray): void; - nglVertexAttrib4iv(p0: number, p1: number): void; - glVertexAttrib4iv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttrib4iv(p0: number, p1: Array): void; - nglVertexAttrib4bv(p0: number, p1: number): void; - glVertexAttrib4bv(p0: number, p1: java.nio.ByteBuffer): void; - nglVertexAttrib4ubv(p0: number, p1: number): void; - glVertexAttrib4ubv(p0: number, p1: java.nio.ByteBuffer): void; - nglVertexAttrib4usv(p0: number, p1: number): void; - glVertexAttrib4usv(p0: number, p1: java.nio.ShortBuffer): void; - glVertexAttrib4usv(p0: number, p1: Array): void; - nglVertexAttrib4uiv(p0: number, p1: number): void; - glVertexAttrib4uiv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttrib4uiv(p0: number, p1: Array): void; - nglVertexAttrib4Nbv(p0: number, p1: number): void; - glVertexAttrib4Nbv(p0: number, p1: java.nio.ByteBuffer): void; - nglVertexAttrib4Nsv(p0: number, p1: number): void; - glVertexAttrib4Nsv(p0: number, p1: java.nio.ShortBuffer): void; - glVertexAttrib4Nsv(p0: number, p1: Array): void; - nglVertexAttrib4Niv(p0: number, p1: number): void; - glVertexAttrib4Niv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttrib4Niv(p0: number, p1: Array): void; - nglVertexAttrib4Nubv(p0: number, p1: number): void; - glVertexAttrib4Nubv(p0: number, p1: java.nio.ByteBuffer): void; - nglVertexAttrib4Nusv(p0: number, p1: number): void; - glVertexAttrib4Nusv(p0: number, p1: java.nio.ShortBuffer): void; - glVertexAttrib4Nusv(p0: number, p1: Array): void; - nglVertexAttrib4Nuiv(p0: number, p1: number): void; - glVertexAttrib4Nuiv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttrib4Nuiv(p0: number, p1: Array): void; - nglVertexAttribPointer(p0: number, p1: number, p2: number, p3: boolean, p4: number, p5: number): void; - glVertexAttribPointer(p0: number, p1: number, p2: number, p3: boolean, p4: number, p5: java.nio.ByteBuffer): void; - glVertexAttribPointer(p0: number, p1: number, p2: number, p3: boolean, p4: number, p5: number): void; - glVertexAttribPointer(p0: number, p1: number, p2: number, p3: boolean, p4: number, p5: java.nio.ShortBuffer): void; - glVertexAttribPointer(p0: number, p1: number, p2: number, p3: boolean, p4: number, p5: java.nio.IntBuffer): void; - glVertexAttribPointer(p0: number, p1: number, p2: number, p3: boolean, p4: number, p5: java.nio.FloatBuffer): void; - glEnableVertexAttribArray(p0: number): void; - glDisableVertexAttribArray(p0: number): void; - nglBindAttribLocation(p0: number, p1: number, p2: number): void; - glBindAttribLocation(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glBindAttribLocation(p0: number, p1: number, p2: kotlin.CharSequence): void; - nglGetActiveAttrib(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glGetActiveAttrib(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined, p3: java.nio.IntBuffer, p4: java.nio.IntBuffer, p5: java.nio.ByteBuffer): void; - glGetActiveAttrib(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer, p4: java.nio.IntBuffer): string; - glGetActiveAttrib(p0: number, p1: number, p2: java.nio.IntBuffer, p3: java.nio.IntBuffer): string; - glGetActiveAttrib(p0: number, p1: number, p2: Array, p3: Array, p4: Array, p5: java.nio.ByteBuffer): void; - nglGetAttribLocation(p0: number, p1: number): number; - glGetAttribLocation(p0: number, p1: java.nio.ByteBuffer): number; - glGetAttribLocation(p0: number, p1: kotlin.CharSequence): number; - nglGetVertexAttribiv(p0: number, p1: number, p2: number): void; - glGetVertexAttribiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetVertexAttribiv(p0: number, p1: number, p2: Array): void; - glGetVertexAttribi(p0: number, p1: number): number; - nglGetVertexAttribfv(p0: number, p1: number, p2: number): void; - glGetVertexAttribfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetVertexAttribfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - nglGetVertexAttribdv(p0: number, p1: number, p2: number): void; - glGetVertexAttribdv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glGetVertexAttribdv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - nglGetVertexAttribPointerv(p0: number, p1: number, p2: number): void; - glGetVertexAttribPointerv(p0: number, p1: number, p2: org.lwjgl.PointerBuffer): void; - glGetVertexAttribPointer(p0: number, p1: number): number; - nglDrawBuffers(p0: number, p1: number): void; - glDrawBuffers(p0: java.nio.IntBuffer): void; - glDrawBuffers(p0: number): void; - glDrawBuffers(p0: Array): void; - glBlendEquationSeparate(p0: number, p1: number): void; - glStencilOpSeparate(p0: number, p1: number, p2: number, p3: number): void; - glStencilFuncSeparate(p0: number, p1: number, p2: number, p3: number): void; - glStencilMaskSeparate(p0: number, p1: number): void; - } - interface GL20 extends org.lwjgl.opengl.GL15 { - } - const GL21: { - GL_CURRENT_RASTER_SECONDARY_COLOR: number; - GL_FLOAT_MAT2x3: number; - GL_FLOAT_MAT2x4: number; - GL_FLOAT_MAT3x2: number; - GL_FLOAT_MAT3x4: number; - GL_FLOAT_MAT4x2: number; - GL_FLOAT_MAT4x3: number; - GL_PIXEL_PACK_BUFFER: number; - GL_PIXEL_UNPACK_BUFFER: number; - GL_PIXEL_PACK_BUFFER_BINDING: number; - GL_PIXEL_UNPACK_BUFFER_BINDING: number; - GL_SRGB: number; - GL_SRGB8: number; - GL_SRGB_ALPHA: number; - GL_SRGB8_ALPHA8: number; - GL_SLUMINANCE_ALPHA: number; - GL_SLUMINANCE8_ALPHA8: number; - GL_SLUMINANCE: number; - GL_SLUMINANCE8: number; - GL_COMPRESSED_SRGB: number; - GL_COMPRESSED_SRGB_ALPHA: number; - GL_COMPRESSED_SLUMINANCE: number; - GL_COMPRESSED_SLUMINANCE_ALPHA: number; - nglUniformMatrix2x3fv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix2x3fv(p0: number, p1: boolean, p2: java.nio.FloatBuffer): void; - glUniformMatrix2x3fv(p0: number, p1: boolean, p2: kotlin.FloatArray): void; - nglUniformMatrix3x2fv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix3x2fv(p0: number, p1: boolean, p2: java.nio.FloatBuffer): void; - glUniformMatrix3x2fv(p0: number, p1: boolean, p2: kotlin.FloatArray): void; - nglUniformMatrix2x4fv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix2x4fv(p0: number, p1: boolean, p2: java.nio.FloatBuffer): void; - glUniformMatrix2x4fv(p0: number, p1: boolean, p2: kotlin.FloatArray): void; - nglUniformMatrix4x2fv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix4x2fv(p0: number, p1: boolean, p2: java.nio.FloatBuffer): void; - glUniformMatrix4x2fv(p0: number, p1: boolean, p2: kotlin.FloatArray): void; - nglUniformMatrix3x4fv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix3x4fv(p0: number, p1: boolean, p2: java.nio.FloatBuffer): void; - glUniformMatrix3x4fv(p0: number, p1: boolean, p2: kotlin.FloatArray): void; - nglUniformMatrix4x3fv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix4x3fv(p0: number, p1: boolean, p2: java.nio.FloatBuffer): void; - glUniformMatrix4x3fv(p0: number, p1: boolean, p2: kotlin.FloatArray): void; - } - interface GL21 extends org.lwjgl.opengl.GL20 { - } - const GL30: { - GL_MAJOR_VERSION: number; - GL_MINOR_VERSION: number; - GL_NUM_EXTENSIONS: number; - GL_CONTEXT_FLAGS: number; - GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT: number; - GL_COMPARE_REF_TO_TEXTURE: number; - GL_CLIP_DISTANCE0: number; - GL_CLIP_DISTANCE1: number; - GL_CLIP_DISTANCE2: number; - GL_CLIP_DISTANCE3: number; - GL_CLIP_DISTANCE4: number; - GL_CLIP_DISTANCE5: number; - GL_CLIP_DISTANCE6: number; - GL_CLIP_DISTANCE7: number; - GL_MAX_CLIP_DISTANCES: number; - GL_MAX_VARYING_COMPONENTS: number; - GL_VERTEX_ATTRIB_ARRAY_INTEGER: number; - GL_SAMPLER_1D_ARRAY: number; - GL_SAMPLER_2D_ARRAY: number; - GL_SAMPLER_1D_ARRAY_SHADOW: number; - GL_SAMPLER_2D_ARRAY_SHADOW: number; - GL_SAMPLER_CUBE_SHADOW: number; - GL_UNSIGNED_INT_VEC2: number; - GL_UNSIGNED_INT_VEC3: number; - GL_UNSIGNED_INT_VEC4: number; - GL_INT_SAMPLER_1D: number; - GL_INT_SAMPLER_2D: number; - GL_INT_SAMPLER_3D: number; - GL_INT_SAMPLER_CUBE: number; - GL_INT_SAMPLER_1D_ARRAY: number; - GL_INT_SAMPLER_2D_ARRAY: number; - GL_UNSIGNED_INT_SAMPLER_1D: number; - GL_UNSIGNED_INT_SAMPLER_2D: number; - GL_UNSIGNED_INT_SAMPLER_3D: number; - GL_UNSIGNED_INT_SAMPLER_CUBE: number; - GL_UNSIGNED_INT_SAMPLER_1D_ARRAY: number; - GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: number; - GL_MIN_PROGRAM_TEXEL_OFFSET: number; - GL_MAX_PROGRAM_TEXEL_OFFSET: number; - GL_QUERY_WAIT: number; - GL_QUERY_NO_WAIT: number; - GL_QUERY_BY_REGION_WAIT: number; - GL_QUERY_BY_REGION_NO_WAIT: number; - GL_MAP_READ_BIT: number; - GL_MAP_WRITE_BIT: number; - GL_MAP_INVALIDATE_RANGE_BIT: number; - GL_MAP_INVALIDATE_BUFFER_BIT: number; - GL_MAP_FLUSH_EXPLICIT_BIT: number; - GL_MAP_UNSYNCHRONIZED_BIT: number; - GL_BUFFER_ACCESS_FLAGS: number; - GL_BUFFER_MAP_LENGTH: number; - GL_BUFFER_MAP_OFFSET: number; - GL_CLAMP_VERTEX_COLOR: number; - GL_CLAMP_FRAGMENT_COLOR: number; - GL_CLAMP_READ_COLOR: number; - GL_FIXED_ONLY: number; - GL_DEPTH_COMPONENT32F: number; - GL_DEPTH32F_STENCIL8: number; - GL_FLOAT_32_UNSIGNED_INT_24_8_REV: number; - GL_TEXTURE_RED_TYPE: number; - GL_TEXTURE_GREEN_TYPE: number; - GL_TEXTURE_BLUE_TYPE: number; - GL_TEXTURE_ALPHA_TYPE: number; - GL_TEXTURE_LUMINANCE_TYPE: number; - GL_TEXTURE_INTENSITY_TYPE: number; - GL_TEXTURE_DEPTH_TYPE: number; - GL_UNSIGNED_NORMALIZED: number; - GL_RGBA32F: number; - GL_RGB32F: number; - GL_RGBA16F: number; - GL_RGB16F: number; - GL_R11F_G11F_B10F: number; - GL_UNSIGNED_INT_10F_11F_11F_REV: number; - GL_RGB9_E5: number; - GL_UNSIGNED_INT_5_9_9_9_REV: number; - GL_TEXTURE_SHARED_SIZE: number; - GL_FRAMEBUFFER: number; - GL_READ_FRAMEBUFFER: number; - GL_DRAW_FRAMEBUFFER: number; - GL_RENDERBUFFER: number; - GL_STENCIL_INDEX1: number; - GL_STENCIL_INDEX4: number; - GL_STENCIL_INDEX8: number; - GL_STENCIL_INDEX16: number; - GL_RENDERBUFFER_WIDTH: number; - GL_RENDERBUFFER_HEIGHT: number; - GL_RENDERBUFFER_INTERNAL_FORMAT: number; - GL_RENDERBUFFER_RED_SIZE: number; - GL_RENDERBUFFER_GREEN_SIZE: number; - GL_RENDERBUFFER_BLUE_SIZE: number; - GL_RENDERBUFFER_ALPHA_SIZE: number; - GL_RENDERBUFFER_DEPTH_SIZE: number; - GL_RENDERBUFFER_STENCIL_SIZE: number; - GL_RENDERBUFFER_SAMPLES: number; - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: number; - GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: number; - GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: number; - GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: number; - GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: number; - GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: number; - GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: number; - GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: number; - GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: number; - GL_FRAMEBUFFER_DEFAULT: number; - GL_INDEX: number; - GL_COLOR_ATTACHMENT0: number; - GL_COLOR_ATTACHMENT1: number; - GL_COLOR_ATTACHMENT2: number; - GL_COLOR_ATTACHMENT3: number; - GL_COLOR_ATTACHMENT4: number; - GL_COLOR_ATTACHMENT5: number; - GL_COLOR_ATTACHMENT6: number; - GL_COLOR_ATTACHMENT7: number; - GL_COLOR_ATTACHMENT8: number; - GL_COLOR_ATTACHMENT9: number; - GL_COLOR_ATTACHMENT10: number; - GL_COLOR_ATTACHMENT11: number; - GL_COLOR_ATTACHMENT12: number; - GL_COLOR_ATTACHMENT13: number; - GL_COLOR_ATTACHMENT14: number; - GL_COLOR_ATTACHMENT15: number; - GL_COLOR_ATTACHMENT16: number; - GL_COLOR_ATTACHMENT17: number; - GL_COLOR_ATTACHMENT18: number; - GL_COLOR_ATTACHMENT19: number; - GL_COLOR_ATTACHMENT20: number; - GL_COLOR_ATTACHMENT21: number; - GL_COLOR_ATTACHMENT22: number; - GL_COLOR_ATTACHMENT23: number; - GL_COLOR_ATTACHMENT24: number; - GL_COLOR_ATTACHMENT25: number; - GL_COLOR_ATTACHMENT26: number; - GL_COLOR_ATTACHMENT27: number; - GL_COLOR_ATTACHMENT28: number; - GL_COLOR_ATTACHMENT29: number; - GL_COLOR_ATTACHMENT30: number; - GL_COLOR_ATTACHMENT31: number; - GL_DEPTH_ATTACHMENT: number; - GL_STENCIL_ATTACHMENT: number; - GL_DEPTH_STENCIL_ATTACHMENT: number; - GL_MAX_SAMPLES: number; - GL_FRAMEBUFFER_COMPLETE: number; - GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: number; - GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: number; - GL_FRAMEBUFFER_UNSUPPORTED: number; - GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: number; - GL_FRAMEBUFFER_UNDEFINED: number; - GL_FRAMEBUFFER_BINDING: number; - GL_DRAW_FRAMEBUFFER_BINDING: number; - GL_READ_FRAMEBUFFER_BINDING: number; - GL_RENDERBUFFER_BINDING: number; - GL_MAX_COLOR_ATTACHMENTS: number; - GL_MAX_RENDERBUFFER_SIZE: number; - GL_INVALID_FRAMEBUFFER_OPERATION: number; - GL_DEPTH_STENCIL: number; - GL_UNSIGNED_INT_24_8: number; - GL_DEPTH24_STENCIL8: number; - GL_TEXTURE_STENCIL_SIZE: number; - GL_HALF_FLOAT: number; - GL_RGBA32UI: number; - GL_RGB32UI: number; - GL_RGBA16UI: number; - GL_RGB16UI: number; - GL_RGBA8UI: number; - GL_RGB8UI: number; - GL_RGBA32I: number; - GL_RGB32I: number; - GL_RGBA16I: number; - GL_RGB16I: number; - GL_RGBA8I: number; - GL_RGB8I: number; - GL_RED_INTEGER: number; - GL_GREEN_INTEGER: number; - GL_BLUE_INTEGER: number; - GL_ALPHA_INTEGER: number; - GL_RGB_INTEGER: number; - GL_RGBA_INTEGER: number; - GL_BGR_INTEGER: number; - GL_BGRA_INTEGER: number; - GL_TEXTURE_1D_ARRAY: number; - GL_TEXTURE_2D_ARRAY: number; - GL_PROXY_TEXTURE_2D_ARRAY: number; - GL_PROXY_TEXTURE_1D_ARRAY: number; - GL_TEXTURE_BINDING_1D_ARRAY: number; - GL_TEXTURE_BINDING_2D_ARRAY: number; - GL_MAX_ARRAY_TEXTURE_LAYERS: number; - GL_COMPRESSED_RED_RGTC1: number; - GL_COMPRESSED_SIGNED_RED_RGTC1: number; - GL_COMPRESSED_RG_RGTC2: number; - GL_COMPRESSED_SIGNED_RG_RGTC2: number; - GL_R8: number; - GL_R16: number; - GL_RG8: number; - GL_RG16: number; - GL_R16F: number; - GL_R32F: number; - GL_RG16F: number; - GL_RG32F: number; - GL_R8I: number; - GL_R8UI: number; - GL_R16I: number; - GL_R16UI: number; - GL_R32I: number; - GL_R32UI: number; - GL_RG8I: number; - GL_RG8UI: number; - GL_RG16I: number; - GL_RG16UI: number; - GL_RG32I: number; - GL_RG32UI: number; - GL_RG: number; - GL_COMPRESSED_RED: number; - GL_COMPRESSED_RG: number; - GL_RG_INTEGER: number; - GL_TRANSFORM_FEEDBACK_BUFFER: number; - GL_TRANSFORM_FEEDBACK_BUFFER_START: number; - GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: number; - GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: number; - GL_INTERLEAVED_ATTRIBS: number; - GL_SEPARATE_ATTRIBS: number; - GL_PRIMITIVES_GENERATED: number; - GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: number; - GL_RASTERIZER_DISCARD: number; - GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: number; - GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: number; - GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: number; - GL_TRANSFORM_FEEDBACK_VARYINGS: number; - GL_TRANSFORM_FEEDBACK_BUFFER_MODE: number; - GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: number; - GL_VERTEX_ARRAY_BINDING: number; - GL_FRAMEBUFFER_SRGB: number; - nglGetStringi(p0: number, p1: number): number; - glGetStringi(p0: number, p1: number): string | null | undefined; - nglClearBufferiv(p0: number, p1: number, p2: number): void; - glClearBufferiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glClearBufferiv(p0: number, p1: number, p2: Array): void; - nglClearBufferuiv(p0: number, p1: number, p2: number): void; - glClearBufferuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glClearBufferuiv(p0: number, p1: number, p2: Array): void; - nglClearBufferfv(p0: number, p1: number, p2: number): void; - glClearBufferfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glClearBufferfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glClearBufferfi(p0: number, p1: number, p2: number, p3: number): void; - glVertexAttribI1i(p0: number, p1: number): void; - glVertexAttribI2i(p0: number, p1: number, p2: number): void; - glVertexAttribI3i(p0: number, p1: number, p2: number, p3: number): void; - glVertexAttribI4i(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glVertexAttribI1ui(p0: number, p1: number): void; - glVertexAttribI2ui(p0: number, p1: number, p2: number): void; - glVertexAttribI3ui(p0: number, p1: number, p2: number, p3: number): void; - glVertexAttribI4ui(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglVertexAttribI1iv(p0: number, p1: number): void; - glVertexAttribI1iv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttribI1iv(p0: number, p1: Array): void; - nglVertexAttribI2iv(p0: number, p1: number): void; - glVertexAttribI2iv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttribI2iv(p0: number, p1: Array): void; - nglVertexAttribI3iv(p0: number, p1: number): void; - glVertexAttribI3iv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttribI3iv(p0: number, p1: Array): void; - nglVertexAttribI4iv(p0: number, p1: number): void; - glVertexAttribI4iv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttribI4iv(p0: number, p1: Array): void; - nglVertexAttribI1uiv(p0: number, p1: number): void; - glVertexAttribI1uiv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttribI1uiv(p0: number, p1: Array): void; - nglVertexAttribI2uiv(p0: number, p1: number): void; - glVertexAttribI2uiv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttribI2uiv(p0: number, p1: Array): void; - nglVertexAttribI3uiv(p0: number, p1: number): void; - glVertexAttribI3uiv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttribI3uiv(p0: number, p1: Array): void; - nglVertexAttribI4uiv(p0: number, p1: number): void; - glVertexAttribI4uiv(p0: number, p1: java.nio.IntBuffer): void; - glVertexAttribI4uiv(p0: number, p1: Array): void; - nglVertexAttribI4bv(p0: number, p1: number): void; - glVertexAttribI4bv(p0: number, p1: java.nio.ByteBuffer): void; - nglVertexAttribI4sv(p0: number, p1: number): void; - glVertexAttribI4sv(p0: number, p1: java.nio.ShortBuffer): void; - glVertexAttribI4sv(p0: number, p1: Array): void; - nglVertexAttribI4ubv(p0: number, p1: number): void; - glVertexAttribI4ubv(p0: number, p1: java.nio.ByteBuffer): void; - nglVertexAttribI4usv(p0: number, p1: number): void; - glVertexAttribI4usv(p0: number, p1: java.nio.ShortBuffer): void; - glVertexAttribI4usv(p0: number, p1: Array): void; - nglVertexAttribIPointer(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glVertexAttribIPointer(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer): void; - glVertexAttribIPointer(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glVertexAttribIPointer(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ShortBuffer): void; - glVertexAttribIPointer(p0: number, p1: number, p2: number, p3: number, p4: java.nio.IntBuffer): void; - nglGetVertexAttribIiv(p0: number, p1: number, p2: number): void; - glGetVertexAttribIiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetVertexAttribIiv(p0: number, p1: number, p2: Array): void; - glGetVertexAttribIi(p0: number, p1: number): number; - nglGetVertexAttribIuiv(p0: number, p1: number, p2: number): void; - glGetVertexAttribIuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetVertexAttribIuiv(p0: number, p1: number, p2: Array): void; - glGetVertexAttribIui(p0: number, p1: number): number; - glUniform1ui(p0: number, p1: number): void; - glUniform2ui(p0: number, p1: number, p2: number): void; - glUniform3ui(p0: number, p1: number, p2: number, p3: number): void; - glUniform4ui(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglUniform1uiv(p0: number, p1: number, p2: number): void; - glUniform1uiv(p0: number, p1: java.nio.IntBuffer): void; - glUniform1uiv(p0: number, p1: Array): void; - nglUniform2uiv(p0: number, p1: number, p2: number): void; - glUniform2uiv(p0: number, p1: java.nio.IntBuffer): void; - glUniform2uiv(p0: number, p1: Array): void; - nglUniform3uiv(p0: number, p1: number, p2: number): void; - glUniform3uiv(p0: number, p1: java.nio.IntBuffer): void; - glUniform3uiv(p0: number, p1: Array): void; - nglUniform4uiv(p0: number, p1: number, p2: number): void; - glUniform4uiv(p0: number, p1: java.nio.IntBuffer): void; - glUniform4uiv(p0: number, p1: Array): void; - nglGetUniformuiv(p0: number, p1: number, p2: number): void; - glGetUniformuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetUniformuiv(p0: number, p1: number, p2: Array): void; - glGetUniformui(p0: number, p1: number): number; - nglBindFragDataLocation(p0: number, p1: number, p2: number): void; - glBindFragDataLocation(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glBindFragDataLocation(p0: number, p1: number, p2: kotlin.CharSequence): void; - nglGetFragDataLocation(p0: number, p1: number): number; - glGetFragDataLocation(p0: number, p1: java.nio.ByteBuffer): number; - glGetFragDataLocation(p0: number, p1: kotlin.CharSequence): number; - glBeginConditionalRender(p0: number, p1: number): void; - glEndConditionalRender(): void; - nglMapBufferRange(p0: number, p1: number, p2: number, p3: number): number; - glMapBufferRange(p0: number, p1: number, p2: number, p3: number): java.nio.ByteBuffer | null | undefined; - glMapBufferRange(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer | null | undefined): java.nio.ByteBuffer | null | undefined; - glFlushMappedBufferRange(p0: number, p1: number, p2: number): void; - glClampColor(p0: number, p1: number): void; - glIsRenderbuffer(p0: number): boolean; - glBindRenderbuffer(p0: number, p1: number): void; - nglDeleteRenderbuffers(p0: number, p1: number): void; - glDeleteRenderbuffers(p0: java.nio.IntBuffer): void; - glDeleteRenderbuffers(p0: number): void; - glDeleteRenderbuffers(p0: Array): void; - nglGenRenderbuffers(p0: number, p1: number): void; - glGenRenderbuffers(p0: java.nio.IntBuffer): void; - glGenRenderbuffers(): number; - glGenRenderbuffers(p0: Array): void; - glRenderbufferStorage(p0: number, p1: number, p2: number, p3: number): void; - glRenderbufferStorageMultisample(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglGetRenderbufferParameteriv(p0: number, p1: number, p2: number): void; - glGetRenderbufferParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetRenderbufferParameteriv(p0: number, p1: number, p2: Array): void; - glGetRenderbufferParameteri(p0: number, p1: number): number; - glIsFramebuffer(p0: number): boolean; - glBindFramebuffer(p0: number, p1: number): void; - nglDeleteFramebuffers(p0: number, p1: number): void; - glDeleteFramebuffers(p0: java.nio.IntBuffer): void; - glDeleteFramebuffers(p0: number): void; - glDeleteFramebuffers(p0: Array): void; - nglGenFramebuffers(p0: number, p1: number): void; - glGenFramebuffers(p0: java.nio.IntBuffer): void; - glGenFramebuffers(): number; - glGenFramebuffers(p0: Array): void; - glCheckFramebufferStatus(p0: number): number; - glFramebufferTexture1D(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glFramebufferTexture2D(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glFramebufferTexture3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glFramebufferTextureLayer(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glFramebufferRenderbuffer(p0: number, p1: number, p2: number, p3: number): void; - nglGetFramebufferAttachmentParameteriv(p0: number, p1: number, p2: number, p3: number): void; - glGetFramebufferAttachmentParameteriv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetFramebufferAttachmentParameteriv(p0: number, p1: number, p2: number, p3: Array): void; - glGetFramebufferAttachmentParameteri(p0: number, p1: number, p2: number): number; - glBlitFramebuffer(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): void; - glGenerateMipmap(p0: number): void; - nglTexParameterIiv(p0: number, p1: number, p2: number): void; - glTexParameterIiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glTexParameterIiv(p0: number, p1: number, p2: Array): void; - glTexParameterIi(p0: number, p1: number, p2: number): void; - nglTexParameterIuiv(p0: number, p1: number, p2: number): void; - glTexParameterIuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glTexParameterIuiv(p0: number, p1: number, p2: Array): void; - glTexParameterIui(p0: number, p1: number, p2: number): void; - nglGetTexParameterIiv(p0: number, p1: number, p2: number): void; - glGetTexParameterIiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetTexParameterIiv(p0: number, p1: number, p2: Array): void; - glGetTexParameterIi(p0: number, p1: number): number; - nglGetTexParameterIuiv(p0: number, p1: number, p2: number): void; - glGetTexParameterIuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetTexParameterIuiv(p0: number, p1: number, p2: Array): void; - glGetTexParameterIui(p0: number, p1: number): number; - glColorMaski(p0: number, p1: boolean, p2: boolean, p3: boolean, p4: boolean): void; - nglGetBooleani_v(p0: number, p1: number, p2: number): void; - glGetBooleani_v(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glGetBooleani(p0: number, p1: number): boolean; - nglGetIntegeri_v(p0: number, p1: number, p2: number): void; - glGetIntegeri_v(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetIntegeri_v(p0: number, p1: number, p2: Array): void; - glGetIntegeri(p0: number, p1: number): number; - glEnablei(p0: number, p1: number): void; - glDisablei(p0: number, p1: number): void; - glIsEnabledi(p0: number, p1: number): boolean; - glBindBufferRange(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glBindBufferBase(p0: number, p1: number, p2: number): void; - glBeginTransformFeedback(p0: number): void; - glEndTransformFeedback(): void; - nglTransformFeedbackVaryings(p0: number, p1: number, p2: number, p3: number): void; - glTransformFeedbackVaryings(p0: number, p1: org.lwjgl.PointerBuffer, p2: number): void; - glTransformFeedbackVaryings(p0: number, p1: Array, p2: number): void; - glTransformFeedbackVaryings(p0: number, p1: kotlin.CharSequence, p2: number): void; - nglGetTransformFeedbackVarying(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glGetTransformFeedbackVarying(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined, p3: java.nio.IntBuffer, p4: java.nio.IntBuffer, p5: java.nio.ByteBuffer): void; - glGetTransformFeedbackVarying(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer, p4: java.nio.IntBuffer): string; - glGetTransformFeedbackVarying(p0: number, p1: number, p2: java.nio.IntBuffer, p3: java.nio.IntBuffer): string; - glGetTransformFeedbackVarying(p0: number, p1: number, p2: Array, p3: Array, p4: Array, p5: java.nio.ByteBuffer): void; - glBindVertexArray(p0: number): void; - nglDeleteVertexArrays(p0: number, p1: number): void; - glDeleteVertexArrays(p0: java.nio.IntBuffer): void; - glDeleteVertexArrays(p0: number): void; - glDeleteVertexArrays(p0: Array): void; - nglGenVertexArrays(p0: number, p1: number): void; - glGenVertexArrays(p0: java.nio.IntBuffer): void; - glGenVertexArrays(): number; - glGenVertexArrays(p0: Array): void; - glIsVertexArray(p0: number): boolean; - } - interface GL30 extends org.lwjgl.opengl.GL21 { - } - const GL31: { - GL_R8_SNORM: number; - GL_RG8_SNORM: number; - GL_RGB8_SNORM: number; - GL_RGBA8_SNORM: number; - GL_R16_SNORM: number; - GL_RG16_SNORM: number; - GL_RGB16_SNORM: number; - GL_RGBA16_SNORM: number; - GL_SIGNED_NORMALIZED: number; - GL_SAMPLER_BUFFER: number; - GL_INT_SAMPLER_2D_RECT: number; - GL_INT_SAMPLER_BUFFER: number; - GL_UNSIGNED_INT_SAMPLER_2D_RECT: number; - GL_UNSIGNED_INT_SAMPLER_BUFFER: number; - GL_COPY_READ_BUFFER: number; - GL_COPY_WRITE_BUFFER: number; - GL_PRIMITIVE_RESTART: number; - GL_PRIMITIVE_RESTART_INDEX: number; - GL_TEXTURE_BUFFER: number; - GL_MAX_TEXTURE_BUFFER_SIZE: number; - GL_TEXTURE_BINDING_BUFFER: number; - GL_TEXTURE_BUFFER_DATA_STORE_BINDING: number; - GL_TEXTURE_RECTANGLE: number; - GL_TEXTURE_BINDING_RECTANGLE: number; - GL_PROXY_TEXTURE_RECTANGLE: number; - GL_MAX_RECTANGLE_TEXTURE_SIZE: number; - GL_SAMPLER_2D_RECT: number; - GL_SAMPLER_2D_RECT_SHADOW: number; - GL_UNIFORM_BUFFER: number; - GL_UNIFORM_BUFFER_BINDING: number; - GL_UNIFORM_BUFFER_START: number; - GL_UNIFORM_BUFFER_SIZE: number; - GL_MAX_VERTEX_UNIFORM_BLOCKS: number; - GL_MAX_GEOMETRY_UNIFORM_BLOCKS: number; - GL_MAX_FRAGMENT_UNIFORM_BLOCKS: number; - GL_MAX_COMBINED_UNIFORM_BLOCKS: number; - GL_MAX_UNIFORM_BUFFER_BINDINGS: number; - GL_MAX_UNIFORM_BLOCK_SIZE: number; - GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: number; - GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: number; - GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: number; - GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: number; - GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: number; - GL_ACTIVE_UNIFORM_BLOCKS: number; - GL_UNIFORM_TYPE: number; - GL_UNIFORM_SIZE: number; - GL_UNIFORM_NAME_LENGTH: number; - GL_UNIFORM_BLOCK_INDEX: number; - GL_UNIFORM_OFFSET: number; - GL_UNIFORM_ARRAY_STRIDE: number; - GL_UNIFORM_MATRIX_STRIDE: number; - GL_UNIFORM_IS_ROW_MAJOR: number; - GL_UNIFORM_BLOCK_BINDING: number; - GL_UNIFORM_BLOCK_DATA_SIZE: number; - GL_UNIFORM_BLOCK_NAME_LENGTH: number; - GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: number; - GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: number; - GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: number; - GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: number; - GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: number; - GL_INVALID_INDEX: number; - glDrawArraysInstanced(p0: number, p1: number, p2: number, p3: number): void; - nglDrawElementsInstanced(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glDrawElementsInstanced(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glDrawElementsInstanced(p0: number, p1: number, p2: java.nio.ByteBuffer, p3: number): void; - glDrawElementsInstanced(p0: number, p1: java.nio.ByteBuffer, p2: number): void; - glDrawElementsInstanced(p0: number, p1: java.nio.ShortBuffer, p2: number): void; - glDrawElementsInstanced(p0: number, p1: java.nio.IntBuffer, p2: number): void; - glCopyBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glPrimitiveRestartIndex(p0: number): void; - glTexBuffer(p0: number, p1: number, p2: number): void; - nglGetUniformIndices(p0: number, p1: number, p2: number, p3: number): void; - glGetUniformIndices(p0: number, p1: org.lwjgl.PointerBuffer, p2: java.nio.IntBuffer): void; - glGetUniformIndices(p0: number, p1: Array, p2: java.nio.IntBuffer): void; - glGetUniformIndices(p0: number, p1: kotlin.CharSequence): number; - glGetUniformIndices(p0: number, p1: org.lwjgl.PointerBuffer, p2: Array): void; - nglGetActiveUniformsiv(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetActiveUniformsiv(p0: number, p1: java.nio.IntBuffer, p2: number, p3: java.nio.IntBuffer): void; - glGetActiveUniformsiv(p0: number, p1: Array, p2: number, p3: Array): void; - glGetActiveUniformsi(p0: number, p1: number, p2: number): number; - nglGetActiveUniformName(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetActiveUniformName(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined, p3: java.nio.ByteBuffer): void; - glGetActiveUniformName(p0: number, p1: number, p2: number): string; - glGetActiveUniformName(p0: number, p1: number): string; - glGetActiveUniformName(p0: number, p1: number, p2: Array, p3: java.nio.ByteBuffer): void; - nglGetUniformBlockIndex(p0: number, p1: number): number; - glGetUniformBlockIndex(p0: number, p1: java.nio.ByteBuffer): number; - glGetUniformBlockIndex(p0: number, p1: kotlin.CharSequence): number; - nglGetActiveUniformBlockiv(p0: number, p1: number, p2: number, p3: number): void; - glGetActiveUniformBlockiv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetActiveUniformBlockiv(p0: number, p1: number, p2: number, p3: Array): void; - glGetActiveUniformBlocki(p0: number, p1: number, p2: number): number; - nglGetActiveUniformBlockName(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetActiveUniformBlockName(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined, p3: java.nio.ByteBuffer): void; - glGetActiveUniformBlockName(p0: number, p1: number, p2: number): string; - glGetActiveUniformBlockName(p0: number, p1: number): string; - glGetActiveUniformBlockName(p0: number, p1: number, p2: Array, p3: java.nio.ByteBuffer): void; - glUniformBlockBinding(p0: number, p1: number, p2: number): void; - } - interface GL31 extends org.lwjgl.opengl.GL30 { - } - const GL32: { - GL_CONTEXT_PROFILE_MASK: number; - GL_CONTEXT_CORE_PROFILE_BIT: number; - GL_CONTEXT_COMPATIBILITY_PROFILE_BIT: number; - GL_MAX_VERTEX_OUTPUT_COMPONENTS: number; - GL_MAX_GEOMETRY_INPUT_COMPONENTS: number; - GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: number; - GL_MAX_FRAGMENT_INPUT_COMPONENTS: number; - GL_FIRST_VERTEX_CONVENTION: number; - GL_LAST_VERTEX_CONVENTION: number; - GL_PROVOKING_VERTEX: number; - GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: number; - GL_TEXTURE_CUBE_MAP_SEAMLESS: number; - GL_SAMPLE_POSITION: number; - GL_SAMPLE_MASK: number; - GL_SAMPLE_MASK_VALUE: number; - GL_TEXTURE_2D_MULTISAMPLE: number; - GL_PROXY_TEXTURE_2D_MULTISAMPLE: number; - GL_TEXTURE_2D_MULTISAMPLE_ARRAY: number; - GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: number; - GL_MAX_SAMPLE_MASK_WORDS: number; - GL_MAX_COLOR_TEXTURE_SAMPLES: number; - GL_MAX_DEPTH_TEXTURE_SAMPLES: number; - GL_MAX_INTEGER_SAMPLES: number; - GL_TEXTURE_BINDING_2D_MULTISAMPLE: number; - GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: number; - GL_TEXTURE_SAMPLES: number; - GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: number; - GL_SAMPLER_2D_MULTISAMPLE: number; - GL_INT_SAMPLER_2D_MULTISAMPLE: number; - GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: number; - GL_SAMPLER_2D_MULTISAMPLE_ARRAY: number; - GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: number; - GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: number; - GL_DEPTH_CLAMP: number; - GL_GEOMETRY_SHADER: number; - GL_GEOMETRY_VERTICES_OUT: number; - GL_GEOMETRY_INPUT_TYPE: number; - GL_GEOMETRY_OUTPUT_TYPE: number; - GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: number; - GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: number; - GL_MAX_GEOMETRY_OUTPUT_VERTICES: number; - GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: number; - GL_LINES_ADJACENCY: number; - GL_LINE_STRIP_ADJACENCY: number; - GL_TRIANGLES_ADJACENCY: number; - GL_TRIANGLE_STRIP_ADJACENCY: number; - GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: number; - GL_FRAMEBUFFER_ATTACHMENT_LAYERED: number; - GL_PROGRAM_POINT_SIZE: number; - GL_MAX_SERVER_WAIT_TIMEOUT: number; - GL_OBJECT_TYPE: number; - GL_SYNC_CONDITION: number; - GL_SYNC_STATUS: number; - GL_SYNC_FLAGS: number; - GL_SYNC_FENCE: number; - GL_SYNC_GPU_COMMANDS_COMPLETE: number; - GL_UNSIGNALED: number; - GL_SIGNALED: number; - GL_SYNC_FLUSH_COMMANDS_BIT: number; - GL_TIMEOUT_IGNORED: number; - GL_ALREADY_SIGNALED: number; - GL_TIMEOUT_EXPIRED: number; - GL_CONDITION_SATISFIED: number; - GL_WAIT_FAILED: number; - nglGetBufferParameteri64v(p0: number, p1: number, p2: number): void; - glGetBufferParameteri64v(p0: number, p1: number, p2: java.nio.LongBuffer): void; - glGetBufferParameteri64v(p0: number, p1: number, p2: Array): void; - glGetBufferParameteri64(p0: number, p1: number): number; - nglDrawElementsBaseVertex(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glDrawElementsBaseVertex(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glDrawElementsBaseVertex(p0: number, p1: number, p2: java.nio.ByteBuffer, p3: number): void; - glDrawElementsBaseVertex(p0: number, p1: java.nio.ByteBuffer, p2: number): void; - glDrawElementsBaseVertex(p0: number, p1: java.nio.ShortBuffer, p2: number): void; - glDrawElementsBaseVertex(p0: number, p1: java.nio.IntBuffer, p2: number): void; - nglDrawRangeElementsBaseVertex(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glDrawRangeElementsBaseVertex(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glDrawRangeElementsBaseVertex(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer, p5: number): void; - glDrawRangeElementsBaseVertex(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer, p4: number): void; - glDrawRangeElementsBaseVertex(p0: number, p1: number, p2: number, p3: java.nio.ShortBuffer, p4: number): void; - glDrawRangeElementsBaseVertex(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer, p4: number): void; - nglDrawElementsInstancedBaseVertex(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glDrawElementsInstancedBaseVertex(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glDrawElementsInstancedBaseVertex(p0: number, p1: number, p2: java.nio.ByteBuffer, p3: number, p4: number): void; - glDrawElementsInstancedBaseVertex(p0: number, p1: java.nio.ByteBuffer, p2: number, p3: number): void; - glDrawElementsInstancedBaseVertex(p0: number, p1: java.nio.ShortBuffer, p2: number, p3: number): void; - glDrawElementsInstancedBaseVertex(p0: number, p1: java.nio.IntBuffer, p2: number, p3: number): void; - nglMultiDrawElementsBaseVertex(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glMultiDrawElementsBaseVertex(p0: number, p1: java.nio.IntBuffer, p2: number, p3: org.lwjgl.PointerBuffer, p4: java.nio.IntBuffer): void; - glMultiDrawElementsBaseVertex(p0: number, p1: Array, p2: number, p3: org.lwjgl.PointerBuffer, p4: Array): void; - glProvokingVertex(p0: number): void; - glTexImage2DMultisample(p0: number, p1: number, p2: number, p3: number, p4: number, p5: boolean): void; - glTexImage3DMultisample(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean): void; - nglGetMultisamplefv(p0: number, p1: number, p2: number): void; - glGetMultisamplefv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetMultisamplefv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetMultisamplef(p0: number, p1: number): number; - glSampleMaski(p0: number, p1: number): void; - glFramebufferTexture(p0: number, p1: number, p2: number, p3: number): void; - glFenceSync(p0: number, p1: number): number; - nglIsSync(p0: number): boolean; - glIsSync(p0: number): boolean; - glDeleteSync(p0: number): void; - nglClientWaitSync(p0: number, p1: number, p2: number): number; - glClientWaitSync(p0: number, p1: number, p2: number): number; - nglWaitSync(p0: number, p1: number, p2: number): void; - glWaitSync(p0: number, p1: number, p2: number): void; - nglGetInteger64v(p0: number, p1: number): void; - glGetInteger64v(p0: number, p1: java.nio.LongBuffer): void; - glGetInteger64v(p0: number, p1: Array): void; - glGetInteger64(p0: number): number; - nglGetInteger64i_v(p0: number, p1: number, p2: number): void; - glGetInteger64i_v(p0: number, p1: number, p2: java.nio.LongBuffer): void; - glGetInteger64i_v(p0: number, p1: number, p2: Array): void; - glGetInteger64i(p0: number, p1: number): number; - nglGetSynciv(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetSynciv(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined, p3: java.nio.IntBuffer): void; - glGetSynciv(p0: number, p1: number, p2: Array, p3: Array): void; - glGetSynci(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined): number; - } - interface GL32 extends org.lwjgl.opengl.GL31 { - } - const GL33: { - GL_SRC1_COLOR: number; - GL_ONE_MINUS_SRC1_COLOR: number; - GL_ONE_MINUS_SRC1_ALPHA: number; - GL_MAX_DUAL_SOURCE_DRAW_BUFFERS: number; - GL_ANY_SAMPLES_PASSED: number; - GL_SAMPLER_BINDING: number; - GL_RGB10_A2UI: number; - GL_TEXTURE_SWIZZLE_R: number; - GL_TEXTURE_SWIZZLE_G: number; - GL_TEXTURE_SWIZZLE_B: number; - GL_TEXTURE_SWIZZLE_A: number; - GL_TEXTURE_SWIZZLE_RGBA: number; - GL_TIME_ELAPSED: number; - GL_TIMESTAMP: number; - GL_VERTEX_ATTRIB_ARRAY_DIVISOR: number; - GL_INT_2_10_10_10_REV: number; - nglBindFragDataLocationIndexed(p0: number, p1: number, p2: number, p3: number): void; - glBindFragDataLocationIndexed(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer): void; - glBindFragDataLocationIndexed(p0: number, p1: number, p2: number, p3: kotlin.CharSequence): void; - nglGetFragDataIndex(p0: number, p1: number): number; - glGetFragDataIndex(p0: number, p1: java.nio.ByteBuffer): number; - glGetFragDataIndex(p0: number, p1: kotlin.CharSequence): number; - nglGenSamplers(p0: number, p1: number): void; - glGenSamplers(p0: java.nio.IntBuffer): void; - glGenSamplers(): number; - glGenSamplers(p0: Array): void; - nglDeleteSamplers(p0: number, p1: number): void; - glDeleteSamplers(p0: java.nio.IntBuffer): void; - glDeleteSamplers(p0: number): void; - glDeleteSamplers(p0: Array): void; - glIsSampler(p0: number): boolean; - glBindSampler(p0: number, p1: number): void; - glSamplerParameteri(p0: number, p1: number, p2: number): void; - glSamplerParameterf(p0: number, p1: number, p2: number): void; - nglSamplerParameteriv(p0: number, p1: number, p2: number): void; - glSamplerParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glSamplerParameteriv(p0: number, p1: number, p2: Array): void; - nglSamplerParameterfv(p0: number, p1: number, p2: number): void; - glSamplerParameterfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glSamplerParameterfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - nglSamplerParameterIiv(p0: number, p1: number, p2: number): void; - glSamplerParameterIiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glSamplerParameterIiv(p0: number, p1: number, p2: Array): void; - nglSamplerParameterIuiv(p0: number, p1: number, p2: number): void; - glSamplerParameterIuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glSamplerParameterIuiv(p0: number, p1: number, p2: Array): void; - nglGetSamplerParameteriv(p0: number, p1: number, p2: number): void; - glGetSamplerParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetSamplerParameteriv(p0: number, p1: number, p2: Array): void; - glGetSamplerParameteri(p0: number, p1: number): number; - nglGetSamplerParameterfv(p0: number, p1: number, p2: number): void; - glGetSamplerParameterfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetSamplerParameterfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetSamplerParameterf(p0: number, p1: number): number; - nglGetSamplerParameterIiv(p0: number, p1: number, p2: number): void; - glGetSamplerParameterIiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetSamplerParameterIiv(p0: number, p1: number, p2: Array): void; - glGetSamplerParameterIi(p0: number, p1: number): number; - nglGetSamplerParameterIuiv(p0: number, p1: number, p2: number): void; - glGetSamplerParameterIuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetSamplerParameterIuiv(p0: number, p1: number, p2: Array): void; - glGetSamplerParameterIui(p0: number, p1: number): number; - glQueryCounter(p0: number, p1: number): void; - nglGetQueryObjecti64v(p0: number, p1: number, p2: number): void; - glGetQueryObjecti64v(p0: number, p1: number, p2: java.nio.LongBuffer): void; - glGetQueryObjecti64v(p0: number, p1: number, p2: number): void; - glGetQueryObjecti64v(p0: number, p1: number, p2: Array): void; - glGetQueryObjecti64(p0: number, p1: number): number; - nglGetQueryObjectui64v(p0: number, p1: number, p2: number): void; - glGetQueryObjectui64v(p0: number, p1: number, p2: java.nio.LongBuffer): void; - glGetQueryObjectui64v(p0: number, p1: number, p2: number): void; - glGetQueryObjectui64v(p0: number, p1: number, p2: Array): void; - glGetQueryObjectui64(p0: number, p1: number): number; - glVertexAttribDivisor(p0: number, p1: number): void; - glVertexP2ui(p0: number, p1: number): void; - glVertexP3ui(p0: number, p1: number): void; - glVertexP4ui(p0: number, p1: number): void; - nglVertexP2uiv(p0: number, p1: number): void; - glVertexP2uiv(p0: number, p1: java.nio.IntBuffer): void; - glVertexP2uiv(p0: number, p1: Array): void; - nglVertexP3uiv(p0: number, p1: number): void; - glVertexP3uiv(p0: number, p1: java.nio.IntBuffer): void; - glVertexP3uiv(p0: number, p1: Array): void; - nglVertexP4uiv(p0: number, p1: number): void; - glVertexP4uiv(p0: number, p1: java.nio.IntBuffer): void; - glVertexP4uiv(p0: number, p1: Array): void; - glTexCoordP1ui(p0: number, p1: number): void; - glTexCoordP2ui(p0: number, p1: number): void; - glTexCoordP3ui(p0: number, p1: number): void; - glTexCoordP4ui(p0: number, p1: number): void; - nglTexCoordP1uiv(p0: number, p1: number): void; - glTexCoordP1uiv(p0: number, p1: java.nio.IntBuffer): void; - glTexCoordP1uiv(p0: number, p1: Array): void; - nglTexCoordP2uiv(p0: number, p1: number): void; - glTexCoordP2uiv(p0: number, p1: java.nio.IntBuffer): void; - glTexCoordP2uiv(p0: number, p1: Array): void; - nglTexCoordP3uiv(p0: number, p1: number): void; - glTexCoordP3uiv(p0: number, p1: java.nio.IntBuffer): void; - glTexCoordP3uiv(p0: number, p1: Array): void; - nglTexCoordP4uiv(p0: number, p1: number): void; - glTexCoordP4uiv(p0: number, p1: java.nio.IntBuffer): void; - glTexCoordP4uiv(p0: number, p1: Array): void; - glMultiTexCoordP1ui(p0: number, p1: number, p2: number): void; - glMultiTexCoordP2ui(p0: number, p1: number, p2: number): void; - glMultiTexCoordP3ui(p0: number, p1: number, p2: number): void; - glMultiTexCoordP4ui(p0: number, p1: number, p2: number): void; - nglMultiTexCoordP1uiv(p0: number, p1: number, p2: number): void; - glMultiTexCoordP1uiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glMultiTexCoordP1uiv(p0: number, p1: number, p2: Array): void; - nglMultiTexCoordP2uiv(p0: number, p1: number, p2: number): void; - glMultiTexCoordP2uiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glMultiTexCoordP2uiv(p0: number, p1: number, p2: Array): void; - nglMultiTexCoordP3uiv(p0: number, p1: number, p2: number): void; - glMultiTexCoordP3uiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glMultiTexCoordP3uiv(p0: number, p1: number, p2: Array): void; - nglMultiTexCoordP4uiv(p0: number, p1: number, p2: number): void; - glMultiTexCoordP4uiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glMultiTexCoordP4uiv(p0: number, p1: number, p2: Array): void; - glNormalP3ui(p0: number, p1: number): void; - nglNormalP3uiv(p0: number, p1: number): void; - glNormalP3uiv(p0: number, p1: java.nio.IntBuffer): void; - glNormalP3uiv(p0: number, p1: Array): void; - glColorP3ui(p0: number, p1: number): void; - glColorP4ui(p0: number, p1: number): void; - nglColorP3uiv(p0: number, p1: number): void; - glColorP3uiv(p0: number, p1: java.nio.IntBuffer): void; - glColorP3uiv(p0: number, p1: Array): void; - nglColorP4uiv(p0: number, p1: number): void; - glColorP4uiv(p0: number, p1: java.nio.IntBuffer): void; - glColorP4uiv(p0: number, p1: Array): void; - glSecondaryColorP3ui(p0: number, p1: number): void; - nglSecondaryColorP3uiv(p0: number, p1: number): void; - glSecondaryColorP3uiv(p0: number, p1: java.nio.IntBuffer): void; - glSecondaryColorP3uiv(p0: number, p1: Array): void; - glVertexAttribP1ui(p0: number, p1: number, p2: boolean, p3: number): void; - glVertexAttribP2ui(p0: number, p1: number, p2: boolean, p3: number): void; - glVertexAttribP3ui(p0: number, p1: number, p2: boolean, p3: number): void; - glVertexAttribP4ui(p0: number, p1: number, p2: boolean, p3: number): void; - nglVertexAttribP1uiv(p0: number, p1: number, p2: boolean, p3: number): void; - glVertexAttribP1uiv(p0: number, p1: number, p2: boolean, p3: java.nio.IntBuffer): void; - glVertexAttribP1uiv(p0: number, p1: number, p2: boolean, p3: Array): void; - nglVertexAttribP2uiv(p0: number, p1: number, p2: boolean, p3: number): void; - glVertexAttribP2uiv(p0: number, p1: number, p2: boolean, p3: java.nio.IntBuffer): void; - glVertexAttribP2uiv(p0: number, p1: number, p2: boolean, p3: Array): void; - nglVertexAttribP3uiv(p0: number, p1: number, p2: boolean, p3: number): void; - glVertexAttribP3uiv(p0: number, p1: number, p2: boolean, p3: java.nio.IntBuffer): void; - glVertexAttribP3uiv(p0: number, p1: number, p2: boolean, p3: Array): void; - nglVertexAttribP4uiv(p0: number, p1: number, p2: boolean, p3: number): void; - glVertexAttribP4uiv(p0: number, p1: number, p2: boolean, p3: java.nio.IntBuffer): void; - glVertexAttribP4uiv(p0: number, p1: number, p2: boolean, p3: Array): void; - } - interface GL33 extends org.lwjgl.opengl.GL32 { - } - const GL40: { - GL_DRAW_INDIRECT_BUFFER: number; - GL_DRAW_INDIRECT_BUFFER_BINDING: number; - GL_GEOMETRY_SHADER_INVOCATIONS: number; - GL_MAX_GEOMETRY_SHADER_INVOCATIONS: number; - GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: number; - GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: number; - GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: number; - GL_DOUBLE_VEC2: number; - GL_DOUBLE_VEC3: number; - GL_DOUBLE_VEC4: number; - GL_DOUBLE_MAT2: number; - GL_DOUBLE_MAT3: number; - GL_DOUBLE_MAT4: number; - GL_DOUBLE_MAT2x3: number; - GL_DOUBLE_MAT2x4: number; - GL_DOUBLE_MAT3x2: number; - GL_DOUBLE_MAT3x4: number; - GL_DOUBLE_MAT4x2: number; - GL_DOUBLE_MAT4x3: number; - GL_SAMPLE_SHADING: number; - GL_MIN_SAMPLE_SHADING_VALUE: number; - GL_ACTIVE_SUBROUTINES: number; - GL_ACTIVE_SUBROUTINE_UNIFORMS: number; - GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS: number; - GL_ACTIVE_SUBROUTINE_MAX_LENGTH: number; - GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH: number; - GL_MAX_SUBROUTINES: number; - GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS: number; - GL_NUM_COMPATIBLE_SUBROUTINES: number; - GL_COMPATIBLE_SUBROUTINES: number; - GL_PATCHES: number; - GL_PATCH_VERTICES: number; - GL_PATCH_DEFAULT_INNER_LEVEL: number; - GL_PATCH_DEFAULT_OUTER_LEVEL: number; - GL_TESS_CONTROL_OUTPUT_VERTICES: number; - GL_TESS_GEN_MODE: number; - GL_TESS_GEN_SPACING: number; - GL_TESS_GEN_VERTEX_ORDER: number; - GL_TESS_GEN_POINT_MODE: number; - GL_ISOLINES: number; - GL_FRACTIONAL_ODD: number; - GL_FRACTIONAL_EVEN: number; - GL_MAX_PATCH_VERTICES: number; - GL_MAX_TESS_GEN_LEVEL: number; - GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: number; - GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: number; - GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: number; - GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: number; - GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: number; - GL_MAX_TESS_PATCH_COMPONENTS: number; - GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: number; - GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: number; - GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: number; - GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: number; - GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: number; - GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: number; - GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: number; - GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: number; - GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER: number; - GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER: number; - GL_TESS_EVALUATION_SHADER: number; - GL_TESS_CONTROL_SHADER: number; - GL_TEXTURE_CUBE_MAP_ARRAY: number; - GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: number; - GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: number; - GL_SAMPLER_CUBE_MAP_ARRAY: number; - GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW: number; - GL_INT_SAMPLER_CUBE_MAP_ARRAY: number; - GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: number; - GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: number; - GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: number; - GL_TRANSFORM_FEEDBACK: number; - GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED: number; - GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE: number; - GL_TRANSFORM_FEEDBACK_BINDING: number; - GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: number; - GL_MAX_VERTEX_STREAMS: number; - glBlendEquationi(p0: number, p1: number): void; - glBlendEquationSeparatei(p0: number, p1: number, p2: number): void; - glBlendFunci(p0: number, p1: number, p2: number): void; - glBlendFuncSeparatei(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglDrawArraysIndirect(p0: number, p1: number): void; - glDrawArraysIndirect(p0: number, p1: java.nio.ByteBuffer): void; - glDrawArraysIndirect(p0: number, p1: number): void; - glDrawArraysIndirect(p0: number, p1: java.nio.IntBuffer): void; - glDrawArraysIndirect(p0: number, p1: Array): void; - nglDrawElementsIndirect(p0: number, p1: number, p2: number): void; - glDrawElementsIndirect(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glDrawElementsIndirect(p0: number, p1: number, p2: number): void; - glDrawElementsIndirect(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glDrawElementsIndirect(p0: number, p1: number, p2: Array): void; - glUniform1d(p0: number, p1: number): void; - glUniform2d(p0: number, p1: number, p2: number): void; - glUniform3d(p0: number, p1: number, p2: number, p3: number): void; - glUniform4d(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglUniform1dv(p0: number, p1: number, p2: number): void; - glUniform1dv(p0: number, p1: java.nio.DoubleBuffer): void; - glUniform1dv(p0: number, p1: kotlin.DoubleArray): void; - nglUniform2dv(p0: number, p1: number, p2: number): void; - glUniform2dv(p0: number, p1: java.nio.DoubleBuffer): void; - glUniform2dv(p0: number, p1: kotlin.DoubleArray): void; - nglUniform3dv(p0: number, p1: number, p2: number): void; - glUniform3dv(p0: number, p1: java.nio.DoubleBuffer): void; - glUniform3dv(p0: number, p1: kotlin.DoubleArray): void; - nglUniform4dv(p0: number, p1: number, p2: number): void; - glUniform4dv(p0: number, p1: java.nio.DoubleBuffer): void; - glUniform4dv(p0: number, p1: kotlin.DoubleArray): void; - nglUniformMatrix2dv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix2dv(p0: number, p1: boolean, p2: java.nio.DoubleBuffer): void; - glUniformMatrix2dv(p0: number, p1: boolean, p2: kotlin.DoubleArray): void; - nglUniformMatrix3dv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix3dv(p0: number, p1: boolean, p2: java.nio.DoubleBuffer): void; - glUniformMatrix3dv(p0: number, p1: boolean, p2: kotlin.DoubleArray): void; - nglUniformMatrix4dv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix4dv(p0: number, p1: boolean, p2: java.nio.DoubleBuffer): void; - glUniformMatrix4dv(p0: number, p1: boolean, p2: kotlin.DoubleArray): void; - nglUniformMatrix2x3dv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix2x3dv(p0: number, p1: boolean, p2: java.nio.DoubleBuffer): void; - glUniformMatrix2x3dv(p0: number, p1: boolean, p2: kotlin.DoubleArray): void; - nglUniformMatrix2x4dv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix2x4dv(p0: number, p1: boolean, p2: java.nio.DoubleBuffer): void; - glUniformMatrix2x4dv(p0: number, p1: boolean, p2: kotlin.DoubleArray): void; - nglUniformMatrix3x2dv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix3x2dv(p0: number, p1: boolean, p2: java.nio.DoubleBuffer): void; - glUniformMatrix3x2dv(p0: number, p1: boolean, p2: kotlin.DoubleArray): void; - nglUniformMatrix3x4dv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix3x4dv(p0: number, p1: boolean, p2: java.nio.DoubleBuffer): void; - glUniformMatrix3x4dv(p0: number, p1: boolean, p2: kotlin.DoubleArray): void; - nglUniformMatrix4x2dv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix4x2dv(p0: number, p1: boolean, p2: java.nio.DoubleBuffer): void; - glUniformMatrix4x2dv(p0: number, p1: boolean, p2: kotlin.DoubleArray): void; - nglUniformMatrix4x3dv(p0: number, p1: number, p2: boolean, p3: number): void; - glUniformMatrix4x3dv(p0: number, p1: boolean, p2: java.nio.DoubleBuffer): void; - glUniformMatrix4x3dv(p0: number, p1: boolean, p2: kotlin.DoubleArray): void; - nglGetUniformdv(p0: number, p1: number, p2: number): void; - glGetUniformdv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glGetUniformdv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - glGetUniformd(p0: number, p1: number): number; - glMinSampleShading(p0: number): void; - nglGetSubroutineUniformLocation(p0: number, p1: number, p2: number): number; - glGetSubroutineUniformLocation(p0: number, p1: number, p2: java.nio.ByteBuffer): number; - glGetSubroutineUniformLocation(p0: number, p1: number, p2: kotlin.CharSequence): number; - nglGetSubroutineIndex(p0: number, p1: number, p2: number): number; - glGetSubroutineIndex(p0: number, p1: number, p2: java.nio.ByteBuffer): number; - glGetSubroutineIndex(p0: number, p1: number, p2: kotlin.CharSequence): number; - nglGetActiveSubroutineUniformiv(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetActiveSubroutineUniformiv(p0: number, p1: number, p2: number, p3: number, p4: java.nio.IntBuffer): void; - glGetActiveSubroutineUniformiv(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glGetActiveSubroutineUniformi(p0: number, p1: number, p2: number, p3: number): number; - nglGetActiveSubroutineUniformName(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glGetActiveSubroutineUniformName(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer | null | undefined, p4: java.nio.ByteBuffer): void; - glGetActiveSubroutineUniformName(p0: number, p1: number, p2: number, p3: number): string; - glGetActiveSubroutineUniformName(p0: number, p1: number, p2: number): string; - glGetActiveSubroutineUniformName(p0: number, p1: number, p2: number, p3: Array, p4: java.nio.ByteBuffer): void; - nglGetActiveSubroutineName(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glGetActiveSubroutineName(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer | null | undefined, p4: java.nio.ByteBuffer): void; - glGetActiveSubroutineName(p0: number, p1: number, p2: number, p3: number): string; - glGetActiveSubroutineName(p0: number, p1: number, p2: number): string; - glGetActiveSubroutineName(p0: number, p1: number, p2: number, p3: Array, p4: java.nio.ByteBuffer): void; - nglUniformSubroutinesuiv(p0: number, p1: number, p2: number): void; - glUniformSubroutinesuiv(p0: number, p1: java.nio.IntBuffer): void; - glUniformSubroutinesuiv(p0: number, p1: Array): void; - glUniformSubroutinesui(p0: number, p1: number): void; - nglGetUniformSubroutineuiv(p0: number, p1: number, p2: number): void; - glGetUniformSubroutineuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetUniformSubroutineuiv(p0: number, p1: number, p2: Array): void; - glGetUniformSubroutineui(p0: number, p1: number): number; - nglGetProgramStageiv(p0: number, p1: number, p2: number, p3: number): void; - glGetProgramStageiv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetProgramStageiv(p0: number, p1: number, p2: number, p3: Array): void; - glGetProgramStagei(p0: number, p1: number, p2: number): number; - glPatchParameteri(p0: number, p1: number): void; - nglPatchParameterfv(p0: number, p1: number): void; - glPatchParameterfv(p0: number, p1: java.nio.FloatBuffer): void; - glPatchParameterfv(p0: number, p1: kotlin.FloatArray): void; - glBindTransformFeedback(p0: number, p1: number): void; - nglDeleteTransformFeedbacks(p0: number, p1: number): void; - glDeleteTransformFeedbacks(p0: java.nio.IntBuffer): void; - glDeleteTransformFeedbacks(p0: number): void; - glDeleteTransformFeedbacks(p0: Array): void; - nglGenTransformFeedbacks(p0: number, p1: number): void; - glGenTransformFeedbacks(p0: java.nio.IntBuffer): void; - glGenTransformFeedbacks(): number; - glGenTransformFeedbacks(p0: Array): void; - glIsTransformFeedback(p0: number): boolean; - glPauseTransformFeedback(): void; - glResumeTransformFeedback(): void; - glDrawTransformFeedback(p0: number, p1: number): void; - glDrawTransformFeedbackStream(p0: number, p1: number, p2: number): void; - glBeginQueryIndexed(p0: number, p1: number, p2: number): void; - glEndQueryIndexed(p0: number, p1: number): void; - nglGetQueryIndexediv(p0: number, p1: number, p2: number, p3: number): void; - glGetQueryIndexediv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetQueryIndexediv(p0: number, p1: number, p2: number, p3: Array): void; - glGetQueryIndexedi(p0: number, p1: number, p2: number): number; - } - interface GL40 extends org.lwjgl.opengl.GL33 { - } - const GL41: { - GL_SHADER_COMPILER: number; - GL_SHADER_BINARY_FORMATS: number; - GL_NUM_SHADER_BINARY_FORMATS: number; - GL_MAX_VERTEX_UNIFORM_VECTORS: number; - GL_MAX_VARYING_VECTORS: number; - GL_MAX_FRAGMENT_UNIFORM_VECTORS: number; - GL_IMPLEMENTATION_COLOR_READ_TYPE: number; - GL_IMPLEMENTATION_COLOR_READ_FORMAT: number; - GL_FIXED: number; - GL_LOW_FLOAT: number; - GL_MEDIUM_FLOAT: number; - GL_HIGH_FLOAT: number; - GL_LOW_INT: number; - GL_MEDIUM_INT: number; - GL_HIGH_INT: number; - GL_RGB565: number; - GL_PROGRAM_BINARY_RETRIEVABLE_HINT: number; - GL_PROGRAM_BINARY_LENGTH: number; - GL_NUM_PROGRAM_BINARY_FORMATS: number; - GL_PROGRAM_BINARY_FORMATS: number; - GL_VERTEX_SHADER_BIT: number; - GL_FRAGMENT_SHADER_BIT: number; - GL_GEOMETRY_SHADER_BIT: number; - GL_TESS_CONTROL_SHADER_BIT: number; - GL_TESS_EVALUATION_SHADER_BIT: number; - GL_ALL_SHADER_BITS: number; - GL_PROGRAM_SEPARABLE: number; - GL_ACTIVE_PROGRAM: number; - GL_PROGRAM_PIPELINE_BINDING: number; - GL_MAX_VIEWPORTS: number; - GL_VIEWPORT_SUBPIXEL_BITS: number; - GL_VIEWPORT_BOUNDS_RANGE: number; - GL_LAYER_PROVOKING_VERTEX: number; - GL_VIEWPORT_INDEX_PROVOKING_VERTEX: number; - GL_UNDEFINED_VERTEX: number; - glReleaseShaderCompiler(): void; - nglShaderBinary(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glShaderBinary(p0: java.nio.IntBuffer, p1: number, p2: java.nio.ByteBuffer): void; - glShaderBinary(p0: Array, p1: number, p2: java.nio.ByteBuffer): void; - nglGetShaderPrecisionFormat(p0: number, p1: number, p2: number, p3: number): void; - glGetShaderPrecisionFormat(p0: number, p1: number, p2: java.nio.IntBuffer, p3: java.nio.IntBuffer): void; - glGetShaderPrecisionFormat(p0: number, p1: number, p2: java.nio.IntBuffer): number; - glGetShaderPrecisionFormat(p0: number, p1: number, p2: Array, p3: Array): void; - glDepthRangef(p0: number, p1: number): void; - glClearDepthf(p0: number): void; - nglGetProgramBinary(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetProgramBinary(p0: number, p1: java.nio.IntBuffer | null | undefined, p2: java.nio.IntBuffer, p3: java.nio.ByteBuffer): void; - glGetProgramBinary(p0: number, p1: Array, p2: Array, p3: java.nio.ByteBuffer): void; - nglProgramBinary(p0: number, p1: number, p2: number, p3: number): void; - glProgramBinary(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glProgramParameteri(p0: number, p1: number, p2: number): void; - glUseProgramStages(p0: number, p1: number, p2: number): void; - glActiveShaderProgram(p0: number, p1: number): void; - nglCreateShaderProgramv(p0: number, p1: number, p2: number): number; - glCreateShaderProgramv(p0: number, p1: org.lwjgl.PointerBuffer): number; - glCreateShaderProgramv(p0: number, p1: kotlin.CharSequence): number; - glCreateShaderProgramv(p0: number, p1: kotlin.CharSequence): number; - glBindProgramPipeline(p0: number): void; - nglDeleteProgramPipelines(p0: number, p1: number): void; - glDeleteProgramPipelines(p0: java.nio.IntBuffer): void; - glDeleteProgramPipelines(p0: number): void; - glDeleteProgramPipelines(p0: Array): void; - nglGenProgramPipelines(p0: number, p1: number): void; - glGenProgramPipelines(p0: java.nio.IntBuffer): void; - glGenProgramPipelines(): number; - glGenProgramPipelines(p0: Array): void; - glIsProgramPipeline(p0: number): boolean; - nglGetProgramPipelineiv(p0: number, p1: number, p2: number): void; - glGetProgramPipelineiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetProgramPipelineiv(p0: number, p1: number, p2: Array): void; - glGetProgramPipelinei(p0: number, p1: number): number; - glProgramUniform1i(p0: number, p1: number, p2: number): void; - glProgramUniform2i(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform3i(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glProgramUniform4i(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glProgramUniform1ui(p0: number, p1: number, p2: number): void; - glProgramUniform2ui(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform3ui(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glProgramUniform4ui(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glProgramUniform1f(p0: number, p1: number, p2: number): void; - glProgramUniform2f(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform3f(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glProgramUniform4f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glProgramUniform1d(p0: number, p1: number, p2: number): void; - glProgramUniform2d(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform3d(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glProgramUniform4d(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - nglProgramUniform1iv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform1iv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glProgramUniform1iv(p0: number, p1: number, p2: Array): void; - nglProgramUniform2iv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform2iv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glProgramUniform2iv(p0: number, p1: number, p2: Array): void; - nglProgramUniform3iv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform3iv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glProgramUniform3iv(p0: number, p1: number, p2: Array): void; - nglProgramUniform4iv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform4iv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glProgramUniform4iv(p0: number, p1: number, p2: Array): void; - nglProgramUniform1uiv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform1uiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glProgramUniform1uiv(p0: number, p1: number, p2: Array): void; - nglProgramUniform2uiv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform2uiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glProgramUniform2uiv(p0: number, p1: number, p2: Array): void; - nglProgramUniform3uiv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform3uiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glProgramUniform3uiv(p0: number, p1: number, p2: Array): void; - nglProgramUniform4uiv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform4uiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glProgramUniform4uiv(p0: number, p1: number, p2: Array): void; - nglProgramUniform1fv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform1fv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glProgramUniform1fv(p0: number, p1: number, p2: kotlin.FloatArray): void; - nglProgramUniform2fv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform2fv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glProgramUniform2fv(p0: number, p1: number, p2: kotlin.FloatArray): void; - nglProgramUniform3fv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform3fv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glProgramUniform3fv(p0: number, p1: number, p2: kotlin.FloatArray): void; - nglProgramUniform4fv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform4fv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glProgramUniform4fv(p0: number, p1: number, p2: kotlin.FloatArray): void; - nglProgramUniform1dv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform1dv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glProgramUniform1dv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - nglProgramUniform2dv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform2dv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glProgramUniform2dv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - nglProgramUniform3dv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform3dv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glProgramUniform3dv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - nglProgramUniform4dv(p0: number, p1: number, p2: number, p3: number): void; - glProgramUniform4dv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glProgramUniform4dv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - nglProgramUniformMatrix2fv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix2fv(p0: number, p1: number, p2: boolean, p3: java.nio.FloatBuffer): void; - glProgramUniformMatrix2fv(p0: number, p1: number, p2: boolean, p3: kotlin.FloatArray): void; - nglProgramUniformMatrix3fv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix3fv(p0: number, p1: number, p2: boolean, p3: java.nio.FloatBuffer): void; - glProgramUniformMatrix3fv(p0: number, p1: number, p2: boolean, p3: kotlin.FloatArray): void; - nglProgramUniformMatrix4fv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix4fv(p0: number, p1: number, p2: boolean, p3: java.nio.FloatBuffer): void; - glProgramUniformMatrix4fv(p0: number, p1: number, p2: boolean, p3: kotlin.FloatArray): void; - nglProgramUniformMatrix2dv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix2dv(p0: number, p1: number, p2: boolean, p3: java.nio.DoubleBuffer): void; - glProgramUniformMatrix2dv(p0: number, p1: number, p2: boolean, p3: kotlin.DoubleArray): void; - nglProgramUniformMatrix3dv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix3dv(p0: number, p1: number, p2: boolean, p3: java.nio.DoubleBuffer): void; - glProgramUniformMatrix3dv(p0: number, p1: number, p2: boolean, p3: kotlin.DoubleArray): void; - nglProgramUniformMatrix4dv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix4dv(p0: number, p1: number, p2: boolean, p3: java.nio.DoubleBuffer): void; - glProgramUniformMatrix4dv(p0: number, p1: number, p2: boolean, p3: kotlin.DoubleArray): void; - nglProgramUniformMatrix2x3fv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix2x3fv(p0: number, p1: number, p2: boolean, p3: java.nio.FloatBuffer): void; - glProgramUniformMatrix2x3fv(p0: number, p1: number, p2: boolean, p3: kotlin.FloatArray): void; - nglProgramUniformMatrix3x2fv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix3x2fv(p0: number, p1: number, p2: boolean, p3: java.nio.FloatBuffer): void; - glProgramUniformMatrix3x2fv(p0: number, p1: number, p2: boolean, p3: kotlin.FloatArray): void; - nglProgramUniformMatrix2x4fv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix2x4fv(p0: number, p1: number, p2: boolean, p3: java.nio.FloatBuffer): void; - glProgramUniformMatrix2x4fv(p0: number, p1: number, p2: boolean, p3: kotlin.FloatArray): void; - nglProgramUniformMatrix4x2fv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix4x2fv(p0: number, p1: number, p2: boolean, p3: java.nio.FloatBuffer): void; - glProgramUniformMatrix4x2fv(p0: number, p1: number, p2: boolean, p3: kotlin.FloatArray): void; - nglProgramUniformMatrix3x4fv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix3x4fv(p0: number, p1: number, p2: boolean, p3: java.nio.FloatBuffer): void; - glProgramUniformMatrix3x4fv(p0: number, p1: number, p2: boolean, p3: kotlin.FloatArray): void; - nglProgramUniformMatrix4x3fv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix4x3fv(p0: number, p1: number, p2: boolean, p3: java.nio.FloatBuffer): void; - glProgramUniformMatrix4x3fv(p0: number, p1: number, p2: boolean, p3: kotlin.FloatArray): void; - nglProgramUniformMatrix2x3dv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix2x3dv(p0: number, p1: number, p2: boolean, p3: java.nio.DoubleBuffer): void; - glProgramUniformMatrix2x3dv(p0: number, p1: number, p2: boolean, p3: kotlin.DoubleArray): void; - nglProgramUniformMatrix3x2dv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix3x2dv(p0: number, p1: number, p2: boolean, p3: java.nio.DoubleBuffer): void; - glProgramUniformMatrix3x2dv(p0: number, p1: number, p2: boolean, p3: kotlin.DoubleArray): void; - nglProgramUniformMatrix2x4dv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix2x4dv(p0: number, p1: number, p2: boolean, p3: java.nio.DoubleBuffer): void; - glProgramUniformMatrix2x4dv(p0: number, p1: number, p2: boolean, p3: kotlin.DoubleArray): void; - nglProgramUniformMatrix4x2dv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix4x2dv(p0: number, p1: number, p2: boolean, p3: java.nio.DoubleBuffer): void; - glProgramUniformMatrix4x2dv(p0: number, p1: number, p2: boolean, p3: kotlin.DoubleArray): void; - nglProgramUniformMatrix3x4dv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix3x4dv(p0: number, p1: number, p2: boolean, p3: java.nio.DoubleBuffer): void; - glProgramUniformMatrix3x4dv(p0: number, p1: number, p2: boolean, p3: kotlin.DoubleArray): void; - nglProgramUniformMatrix4x3dv(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glProgramUniformMatrix4x3dv(p0: number, p1: number, p2: boolean, p3: java.nio.DoubleBuffer): void; - glProgramUniformMatrix4x3dv(p0: number, p1: number, p2: boolean, p3: kotlin.DoubleArray): void; - glValidateProgramPipeline(p0: number): void; - nglGetProgramPipelineInfoLog(p0: number, p1: number, p2: number, p3: number): void; - glGetProgramPipelineInfoLog(p0: number, p1: java.nio.IntBuffer | null | undefined, p2: java.nio.ByteBuffer): void; - glGetProgramPipelineInfoLog(p0: number, p1: number): string; - glGetProgramPipelineInfoLog(p0: number): string; - glGetProgramPipelineInfoLog(p0: number, p1: Array, p2: java.nio.ByteBuffer): void; - glVertexAttribL1d(p0: number, p1: number): void; - glVertexAttribL2d(p0: number, p1: number, p2: number): void; - glVertexAttribL3d(p0: number, p1: number, p2: number, p3: number): void; - glVertexAttribL4d(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglVertexAttribL1dv(p0: number, p1: number): void; - glVertexAttribL1dv(p0: number, p1: java.nio.DoubleBuffer): void; - glVertexAttribL1dv(p0: number, p1: kotlin.DoubleArray): void; - nglVertexAttribL2dv(p0: number, p1: number): void; - glVertexAttribL2dv(p0: number, p1: java.nio.DoubleBuffer): void; - glVertexAttribL2dv(p0: number, p1: kotlin.DoubleArray): void; - nglVertexAttribL3dv(p0: number, p1: number): void; - glVertexAttribL3dv(p0: number, p1: java.nio.DoubleBuffer): void; - glVertexAttribL3dv(p0: number, p1: kotlin.DoubleArray): void; - nglVertexAttribL4dv(p0: number, p1: number): void; - glVertexAttribL4dv(p0: number, p1: java.nio.DoubleBuffer): void; - glVertexAttribL4dv(p0: number, p1: kotlin.DoubleArray): void; - nglVertexAttribLPointer(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glVertexAttribLPointer(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer): void; - glVertexAttribLPointer(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glVertexAttribLPointer(p0: number, p1: number, p2: number, p3: java.nio.DoubleBuffer): void; - nglGetVertexAttribLdv(p0: number, p1: number, p2: number): void; - glGetVertexAttribLdv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glGetVertexAttribLdv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - nglViewportArrayv(p0: number, p1: number, p2: number): void; - glViewportArrayv(p0: number, p1: java.nio.FloatBuffer): void; - glViewportArrayv(p0: number, p1: kotlin.FloatArray): void; - glViewportIndexedf(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglViewportIndexedfv(p0: number, p1: number): void; - glViewportIndexedfv(p0: number, p1: java.nio.FloatBuffer): void; - glViewportIndexedfv(p0: number, p1: kotlin.FloatArray): void; - nglScissorArrayv(p0: number, p1: number, p2: number): void; - glScissorArrayv(p0: number, p1: java.nio.IntBuffer): void; - glScissorArrayv(p0: number, p1: Array): void; - glScissorIndexed(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglScissorIndexedv(p0: number, p1: number): void; - glScissorIndexedv(p0: number, p1: java.nio.IntBuffer): void; - glScissorIndexedv(p0: number, p1: Array): void; - nglDepthRangeArrayv(p0: number, p1: number, p2: number): void; - glDepthRangeArrayv(p0: number, p1: java.nio.DoubleBuffer): void; - glDepthRangeArrayv(p0: number, p1: kotlin.DoubleArray): void; - glDepthRangeIndexed(p0: number, p1: number, p2: number): void; - nglGetFloati_v(p0: number, p1: number, p2: number): void; - glGetFloati_v(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetFloati_v(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetFloati(p0: number, p1: number): number; - nglGetDoublei_v(p0: number, p1: number, p2: number): void; - glGetDoublei_v(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glGetDoublei_v(p0: number, p1: number, p2: kotlin.DoubleArray): void; - glGetDoublei(p0: number, p1: number): number; - } - interface GL41 extends org.lwjgl.opengl.GL40 { - } - const GL42: { - GL_COPY_READ_BUFFER_BINDING: number; - GL_COPY_WRITE_BUFFER_BINDING: number; - GL_TRANSFORM_FEEDBACK_ACTIVE: number; - GL_TRANSFORM_FEEDBACK_PAUSED: number; - GL_COMPRESSED_RGBA_BPTC_UNORM: number; - GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: number; - GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: number; - GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: number; - GL_UNPACK_COMPRESSED_BLOCK_WIDTH: number; - GL_UNPACK_COMPRESSED_BLOCK_HEIGHT: number; - GL_UNPACK_COMPRESSED_BLOCK_DEPTH: number; - GL_UNPACK_COMPRESSED_BLOCK_SIZE: number; - GL_PACK_COMPRESSED_BLOCK_WIDTH: number; - GL_PACK_COMPRESSED_BLOCK_HEIGHT: number; - GL_PACK_COMPRESSED_BLOCK_DEPTH: number; - GL_PACK_COMPRESSED_BLOCK_SIZE: number; - GL_ATOMIC_COUNTER_BUFFER: number; - GL_ATOMIC_COUNTER_BUFFER_BINDING: number; - GL_ATOMIC_COUNTER_BUFFER_START: number; - GL_ATOMIC_COUNTER_BUFFER_SIZE: number; - GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE: number; - GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS: number; - GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES: number; - GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER: number; - GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER: number; - GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER: number; - GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER: number; - GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER: number; - GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: number; - GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: number; - GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: number; - GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: number; - GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: number; - GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: number; - GL_MAX_VERTEX_ATOMIC_COUNTERS: number; - GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: number; - GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: number; - GL_MAX_GEOMETRY_ATOMIC_COUNTERS: number; - GL_MAX_FRAGMENT_ATOMIC_COUNTERS: number; - GL_MAX_COMBINED_ATOMIC_COUNTERS: number; - GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: number; - GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: number; - GL_ACTIVE_ATOMIC_COUNTER_BUFFERS: number; - GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX: number; - GL_UNSIGNED_INT_ATOMIC_COUNTER: number; - GL_TEXTURE_IMMUTABLE_FORMAT: number; - GL_MAX_IMAGE_UNITS: number; - GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS: number; - GL_MAX_IMAGE_SAMPLES: number; - GL_MAX_VERTEX_IMAGE_UNIFORMS: number; - GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: number; - GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: number; - GL_MAX_GEOMETRY_IMAGE_UNIFORMS: number; - GL_MAX_FRAGMENT_IMAGE_UNIFORMS: number; - GL_MAX_COMBINED_IMAGE_UNIFORMS: number; - GL_IMAGE_BINDING_NAME: number; - GL_IMAGE_BINDING_LEVEL: number; - GL_IMAGE_BINDING_LAYERED: number; - GL_IMAGE_BINDING_LAYER: number; - GL_IMAGE_BINDING_ACCESS: number; - GL_IMAGE_BINDING_FORMAT: number; - GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT: number; - GL_ELEMENT_ARRAY_BARRIER_BIT: number; - GL_UNIFORM_BARRIER_BIT: number; - GL_TEXTURE_FETCH_BARRIER_BIT: number; - GL_SHADER_IMAGE_ACCESS_BARRIER_BIT: number; - GL_COMMAND_BARRIER_BIT: number; - GL_PIXEL_BUFFER_BARRIER_BIT: number; - GL_TEXTURE_UPDATE_BARRIER_BIT: number; - GL_BUFFER_UPDATE_BARRIER_BIT: number; - GL_FRAMEBUFFER_BARRIER_BIT: number; - GL_TRANSFORM_FEEDBACK_BARRIER_BIT: number; - GL_ATOMIC_COUNTER_BARRIER_BIT: number; - GL_ALL_BARRIER_BITS: number; - GL_IMAGE_1D: number; - GL_IMAGE_2D: number; - GL_IMAGE_3D: number; - GL_IMAGE_2D_RECT: number; - GL_IMAGE_CUBE: number; - GL_IMAGE_BUFFER: number; - GL_IMAGE_1D_ARRAY: number; - GL_IMAGE_2D_ARRAY: number; - GL_IMAGE_CUBE_MAP_ARRAY: number; - GL_IMAGE_2D_MULTISAMPLE: number; - GL_IMAGE_2D_MULTISAMPLE_ARRAY: number; - GL_INT_IMAGE_1D: number; - GL_INT_IMAGE_2D: number; - GL_INT_IMAGE_3D: number; - GL_INT_IMAGE_2D_RECT: number; - GL_INT_IMAGE_CUBE: number; - GL_INT_IMAGE_BUFFER: number; - GL_INT_IMAGE_1D_ARRAY: number; - GL_INT_IMAGE_2D_ARRAY: number; - GL_INT_IMAGE_CUBE_MAP_ARRAY: number; - GL_INT_IMAGE_2D_MULTISAMPLE: number; - GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY: number; - GL_UNSIGNED_INT_IMAGE_1D: number; - GL_UNSIGNED_INT_IMAGE_2D: number; - GL_UNSIGNED_INT_IMAGE_3D: number; - GL_UNSIGNED_INT_IMAGE_2D_RECT: number; - GL_UNSIGNED_INT_IMAGE_CUBE: number; - GL_UNSIGNED_INT_IMAGE_BUFFER: number; - GL_UNSIGNED_INT_IMAGE_1D_ARRAY: number; - GL_UNSIGNED_INT_IMAGE_2D_ARRAY: number; - GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY: number; - GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE: number; - GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY: number; - GL_IMAGE_FORMAT_COMPATIBILITY_TYPE: number; - GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE: number; - GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS: number; - GL_NUM_SAMPLE_COUNTS: number; - GL_MIN_MAP_BUFFER_ALIGNMENT: number; - nglGetActiveAtomicCounterBufferiv(p0: number, p1: number, p2: number, p3: number): void; - glGetActiveAtomicCounterBufferiv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetActiveAtomicCounterBufferiv(p0: number, p1: number, p2: number, p3: Array): void; - glGetActiveAtomicCounterBufferi(p0: number, p1: number, p2: number): number; - glTexStorage1D(p0: number, p1: number, p2: number, p3: number): void; - glTexStorage2D(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glTexStorage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glDrawTransformFeedbackInstanced(p0: number, p1: number, p2: number): void; - glDrawTransformFeedbackStreamInstanced(p0: number, p1: number, p2: number, p3: number): void; - glDrawArraysInstancedBaseInstance(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglDrawElementsInstancedBaseInstance(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glDrawElementsInstancedBaseInstance(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glDrawElementsInstancedBaseInstance(p0: number, p1: number, p2: java.nio.ByteBuffer, p3: number, p4: number): void; - glDrawElementsInstancedBaseInstance(p0: number, p1: java.nio.ByteBuffer, p2: number, p3: number): void; - glDrawElementsInstancedBaseInstance(p0: number, p1: java.nio.ShortBuffer, p2: number, p3: number): void; - glDrawElementsInstancedBaseInstance(p0: number, p1: java.nio.IntBuffer, p2: number, p3: number): void; - nglDrawElementsInstancedBaseVertexBaseInstance(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glDrawElementsInstancedBaseVertexBaseInstance(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glDrawElementsInstancedBaseVertexBaseInstance(p0: number, p1: number, p2: java.nio.ByteBuffer, p3: number, p4: number, p5: number): void; - glDrawElementsInstancedBaseVertexBaseInstance(p0: number, p1: java.nio.ByteBuffer, p2: number, p3: number, p4: number): void; - glDrawElementsInstancedBaseVertexBaseInstance(p0: number, p1: java.nio.ShortBuffer, p2: number, p3: number, p4: number): void; - glDrawElementsInstancedBaseVertexBaseInstance(p0: number, p1: java.nio.IntBuffer, p2: number, p3: number, p4: number): void; - glBindImageTexture(p0: number, p1: number, p2: number, p3: boolean, p4: number, p5: number, p6: number): void; - glMemoryBarrier(p0: number): void; - nglGetInternalformativ(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetInternalformativ(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetInternalformativ(p0: number, p1: number, p2: number, p3: Array): void; - glGetInternalformati(p0: number, p1: number, p2: number): number; - } - interface GL42 extends org.lwjgl.opengl.GL41 { - } - const GL43: { - GL_NUM_SHADING_LANGUAGE_VERSIONS: number; - GL_VERTEX_ATTRIB_ARRAY_LONG: number; - GL_COMPRESSED_RGB8_ETC2: number; - GL_COMPRESSED_SRGB8_ETC2: number; - GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: number; - GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: number; - GL_COMPRESSED_RGBA8_ETC2_EAC: number; - GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: number; - GL_COMPRESSED_R11_EAC: number; - GL_COMPRESSED_SIGNED_R11_EAC: number; - GL_COMPRESSED_RG11_EAC: number; - GL_COMPRESSED_SIGNED_RG11_EAC: number; - GL_PRIMITIVE_RESTART_FIXED_INDEX: number; - GL_ANY_SAMPLES_PASSED_CONSERVATIVE: number; - GL_MAX_ELEMENT_INDEX: number; - GL_TEXTURE_IMMUTABLE_LEVELS: number; - GL_COMPUTE_SHADER: number; - GL_MAX_COMPUTE_UNIFORM_BLOCKS: number; - GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: number; - GL_MAX_COMPUTE_IMAGE_UNIFORMS: number; - GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: number; - GL_MAX_COMPUTE_UNIFORM_COMPONENTS: number; - GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: number; - GL_MAX_COMPUTE_ATOMIC_COUNTERS: number; - GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: number; - GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: number; - GL_MAX_COMPUTE_WORK_GROUP_COUNT: number; - GL_MAX_COMPUTE_WORK_GROUP_SIZE: number; - GL_COMPUTE_WORK_GROUP_SIZE: number; - GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER: number; - GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER: number; - GL_DISPATCH_INDIRECT_BUFFER: number; - GL_DISPATCH_INDIRECT_BUFFER_BINDING: number; - GL_COMPUTE_SHADER_BIT: number; - GL_DEBUG_OUTPUT: number; - GL_DEBUG_OUTPUT_SYNCHRONOUS: number; - GL_CONTEXT_FLAG_DEBUG_BIT: number; - GL_MAX_DEBUG_MESSAGE_LENGTH: number; - GL_MAX_DEBUG_LOGGED_MESSAGES: number; - GL_DEBUG_LOGGED_MESSAGES: number; - GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: number; - GL_MAX_DEBUG_GROUP_STACK_DEPTH: number; - GL_DEBUG_GROUP_STACK_DEPTH: number; - GL_MAX_LABEL_LENGTH: number; - GL_DEBUG_CALLBACK_FUNCTION: number; - GL_DEBUG_CALLBACK_USER_PARAM: number; - GL_DEBUG_SOURCE_API: number; - GL_DEBUG_SOURCE_WINDOW_SYSTEM: number; - GL_DEBUG_SOURCE_SHADER_COMPILER: number; - GL_DEBUG_SOURCE_THIRD_PARTY: number; - GL_DEBUG_SOURCE_APPLICATION: number; - GL_DEBUG_SOURCE_OTHER: number; - GL_DEBUG_TYPE_ERROR: number; - GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: number; - GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: number; - GL_DEBUG_TYPE_PORTABILITY: number; - GL_DEBUG_TYPE_PERFORMANCE: number; - GL_DEBUG_TYPE_OTHER: number; - GL_DEBUG_TYPE_MARKER: number; - GL_DEBUG_TYPE_PUSH_GROUP: number; - GL_DEBUG_TYPE_POP_GROUP: number; - GL_DEBUG_SEVERITY_HIGH: number; - GL_DEBUG_SEVERITY_MEDIUM: number; - GL_DEBUG_SEVERITY_LOW: number; - GL_DEBUG_SEVERITY_NOTIFICATION: number; - GL_BUFFER: number; - GL_SHADER: number; - GL_PROGRAM: number; - GL_QUERY: number; - GL_PROGRAM_PIPELINE: number; - GL_SAMPLER: number; - GL_DISPLAY_LIST: number; - GL_MAX_UNIFORM_LOCATIONS: number; - GL_FRAMEBUFFER_DEFAULT_WIDTH: number; - GL_FRAMEBUFFER_DEFAULT_HEIGHT: number; - GL_FRAMEBUFFER_DEFAULT_LAYERS: number; - GL_FRAMEBUFFER_DEFAULT_SAMPLES: number; - GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS: number; - GL_MAX_FRAMEBUFFER_WIDTH: number; - GL_MAX_FRAMEBUFFER_HEIGHT: number; - GL_MAX_FRAMEBUFFER_LAYERS: number; - GL_MAX_FRAMEBUFFER_SAMPLES: number; - GL_INTERNALFORMAT_SUPPORTED: number; - GL_INTERNALFORMAT_PREFERRED: number; - GL_INTERNALFORMAT_RED_SIZE: number; - GL_INTERNALFORMAT_GREEN_SIZE: number; - GL_INTERNALFORMAT_BLUE_SIZE: number; - GL_INTERNALFORMAT_ALPHA_SIZE: number; - GL_INTERNALFORMAT_DEPTH_SIZE: number; - GL_INTERNALFORMAT_STENCIL_SIZE: number; - GL_INTERNALFORMAT_SHARED_SIZE: number; - GL_INTERNALFORMAT_RED_TYPE: number; - GL_INTERNALFORMAT_GREEN_TYPE: number; - GL_INTERNALFORMAT_BLUE_TYPE: number; - GL_INTERNALFORMAT_ALPHA_TYPE: number; - GL_INTERNALFORMAT_DEPTH_TYPE: number; - GL_INTERNALFORMAT_STENCIL_TYPE: number; - GL_MAX_WIDTH: number; - GL_MAX_HEIGHT: number; - GL_MAX_DEPTH: number; - GL_MAX_LAYERS: number; - GL_MAX_COMBINED_DIMENSIONS: number; - GL_COLOR_COMPONENTS: number; - GL_DEPTH_COMPONENTS: number; - GL_STENCIL_COMPONENTS: number; - GL_COLOR_RENDERABLE: number; - GL_DEPTH_RENDERABLE: number; - GL_STENCIL_RENDERABLE: number; - GL_FRAMEBUFFER_RENDERABLE: number; - GL_FRAMEBUFFER_RENDERABLE_LAYERED: number; - GL_FRAMEBUFFER_BLEND: number; - GL_READ_PIXELS: number; - GL_READ_PIXELS_FORMAT: number; - GL_READ_PIXELS_TYPE: number; - GL_TEXTURE_IMAGE_FORMAT: number; - GL_TEXTURE_IMAGE_TYPE: number; - GL_GET_TEXTURE_IMAGE_FORMAT: number; - GL_GET_TEXTURE_IMAGE_TYPE: number; - GL_MIPMAP: number; - GL_MANUAL_GENERATE_MIPMAP: number; - GL_AUTO_GENERATE_MIPMAP: number; - GL_COLOR_ENCODING: number; - GL_SRGB_READ: number; - GL_SRGB_WRITE: number; - GL_FILTER: number; - GL_VERTEX_TEXTURE: number; - GL_TESS_CONTROL_TEXTURE: number; - GL_TESS_EVALUATION_TEXTURE: number; - GL_GEOMETRY_TEXTURE: number; - GL_FRAGMENT_TEXTURE: number; - GL_COMPUTE_TEXTURE: number; - GL_TEXTURE_SHADOW: number; - GL_TEXTURE_GATHER: number; - GL_TEXTURE_GATHER_SHADOW: number; - GL_SHADER_IMAGE_LOAD: number; - GL_SHADER_IMAGE_STORE: number; - GL_SHADER_IMAGE_ATOMIC: number; - GL_IMAGE_TEXEL_SIZE: number; - GL_IMAGE_COMPATIBILITY_CLASS: number; - GL_IMAGE_PIXEL_FORMAT: number; - GL_IMAGE_PIXEL_TYPE: number; - GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST: number; - GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST: number; - GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE: number; - GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE: number; - GL_TEXTURE_COMPRESSED_BLOCK_WIDTH: number; - GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT: number; - GL_TEXTURE_COMPRESSED_BLOCK_SIZE: number; - GL_CLEAR_BUFFER: number; - GL_TEXTURE_VIEW: number; - GL_VIEW_COMPATIBILITY_CLASS: number; - GL_FULL_SUPPORT: number; - GL_CAVEAT_SUPPORT: number; - GL_IMAGE_CLASS_4_X_32: number; - GL_IMAGE_CLASS_2_X_32: number; - GL_IMAGE_CLASS_1_X_32: number; - GL_IMAGE_CLASS_4_X_16: number; - GL_IMAGE_CLASS_2_X_16: number; - GL_IMAGE_CLASS_1_X_16: number; - GL_IMAGE_CLASS_4_X_8: number; - GL_IMAGE_CLASS_2_X_8: number; - GL_IMAGE_CLASS_1_X_8: number; - GL_IMAGE_CLASS_11_11_10: number; - GL_IMAGE_CLASS_10_10_10_2: number; - GL_VIEW_CLASS_128_BITS: number; - GL_VIEW_CLASS_96_BITS: number; - GL_VIEW_CLASS_64_BITS: number; - GL_VIEW_CLASS_48_BITS: number; - GL_VIEW_CLASS_32_BITS: number; - GL_VIEW_CLASS_24_BITS: number; - GL_VIEW_CLASS_16_BITS: number; - GL_VIEW_CLASS_8_BITS: number; - GL_VIEW_CLASS_S3TC_DXT1_RGB: number; - GL_VIEW_CLASS_S3TC_DXT1_RGBA: number; - GL_VIEW_CLASS_S3TC_DXT3_RGBA: number; - GL_VIEW_CLASS_S3TC_DXT5_RGBA: number; - GL_VIEW_CLASS_RGTC1_RED: number; - GL_VIEW_CLASS_RGTC2_RG: number; - GL_VIEW_CLASS_BPTC_UNORM: number; - GL_VIEW_CLASS_BPTC_FLOAT: number; - GL_UNIFORM: number; - GL_UNIFORM_BLOCK: number; - GL_PROGRAM_INPUT: number; - GL_PROGRAM_OUTPUT: number; - GL_BUFFER_VARIABLE: number; - GL_SHADER_STORAGE_BLOCK: number; - GL_VERTEX_SUBROUTINE: number; - GL_TESS_CONTROL_SUBROUTINE: number; - GL_TESS_EVALUATION_SUBROUTINE: number; - GL_GEOMETRY_SUBROUTINE: number; - GL_FRAGMENT_SUBROUTINE: number; - GL_COMPUTE_SUBROUTINE: number; - GL_VERTEX_SUBROUTINE_UNIFORM: number; - GL_TESS_CONTROL_SUBROUTINE_UNIFORM: number; - GL_TESS_EVALUATION_SUBROUTINE_UNIFORM: number; - GL_GEOMETRY_SUBROUTINE_UNIFORM: number; - GL_FRAGMENT_SUBROUTINE_UNIFORM: number; - GL_COMPUTE_SUBROUTINE_UNIFORM: number; - GL_TRANSFORM_FEEDBACK_VARYING: number; - GL_ACTIVE_RESOURCES: number; - GL_MAX_NAME_LENGTH: number; - GL_MAX_NUM_ACTIVE_VARIABLES: number; - GL_MAX_NUM_COMPATIBLE_SUBROUTINES: number; - GL_NAME_LENGTH: number; - GL_TYPE: number; - GL_ARRAY_SIZE: number; - GL_OFFSET: number; - GL_BLOCK_INDEX: number; - GL_ARRAY_STRIDE: number; - GL_MATRIX_STRIDE: number; - GL_IS_ROW_MAJOR: number; - GL_ATOMIC_COUNTER_BUFFER_INDEX: number; - GL_BUFFER_BINDING: number; - GL_BUFFER_DATA_SIZE: number; - GL_NUM_ACTIVE_VARIABLES: number; - GL_ACTIVE_VARIABLES: number; - GL_REFERENCED_BY_VERTEX_SHADER: number; - GL_REFERENCED_BY_TESS_CONTROL_SHADER: number; - GL_REFERENCED_BY_TESS_EVALUATION_SHADER: number; - GL_REFERENCED_BY_GEOMETRY_SHADER: number; - GL_REFERENCED_BY_FRAGMENT_SHADER: number; - GL_REFERENCED_BY_COMPUTE_SHADER: number; - GL_TOP_LEVEL_ARRAY_SIZE: number; - GL_TOP_LEVEL_ARRAY_STRIDE: number; - GL_LOCATION: number; - GL_LOCATION_INDEX: number; - GL_IS_PER_PATCH: number; - GL_SHADER_STORAGE_BUFFER: number; - GL_SHADER_STORAGE_BUFFER_BINDING: number; - GL_SHADER_STORAGE_BUFFER_START: number; - GL_SHADER_STORAGE_BUFFER_SIZE: number; - GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: number; - GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: number; - GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: number; - GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: number; - GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: number; - GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: number; - GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: number; - GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: number; - GL_MAX_SHADER_STORAGE_BLOCK_SIZE: number; - GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: number; - GL_SHADER_STORAGE_BARRIER_BIT: number; - GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: number; - GL_DEPTH_STENCIL_TEXTURE_MODE: number; - GL_TEXTURE_BUFFER_OFFSET: number; - GL_TEXTURE_BUFFER_SIZE: number; - GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: number; - GL_TEXTURE_VIEW_MIN_LEVEL: number; - GL_TEXTURE_VIEW_NUM_LEVELS: number; - GL_TEXTURE_VIEW_MIN_LAYER: number; - GL_TEXTURE_VIEW_NUM_LAYERS: number; - GL_VERTEX_ATTRIB_BINDING: number; - GL_VERTEX_ATTRIB_RELATIVE_OFFSET: number; - GL_VERTEX_BINDING_DIVISOR: number; - GL_VERTEX_BINDING_OFFSET: number; - GL_VERTEX_BINDING_STRIDE: number; - GL_VERTEX_BINDING_BUFFER: number; - GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: number; - GL_MAX_VERTEX_ATTRIB_BINDINGS: number; - nglClearBufferData(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glClearBufferData(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer | null | undefined): void; - glClearBufferData(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ShortBuffer | null | undefined): void; - glClearBufferData(p0: number, p1: number, p2: number, p3: number, p4: java.nio.IntBuffer | null | undefined): void; - glClearBufferData(p0: number, p1: number, p2: number, p3: number, p4: java.nio.FloatBuffer | null | undefined): void; - glClearBufferData(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glClearBufferData(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glClearBufferData(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray | null | undefined): void; - nglClearBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glClearBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ByteBuffer | null | undefined): void; - glClearBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ShortBuffer | null | undefined): void; - glClearBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.IntBuffer | null | undefined): void; - glClearBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.FloatBuffer | null | undefined): void; - glClearBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glClearBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glClearBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: kotlin.FloatArray | null | undefined): void; - glDispatchCompute(p0: number, p1: number, p2: number): void; - glDispatchComputeIndirect(p0: number): void; - glCopyImageSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number, p12: number, p13: number, p14: number): void; - nglDebugMessageControl(p0: number, p1: number, p2: number, p3: number, p4: number, p5: boolean): void; - glDebugMessageControl(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer | null | undefined, p4: boolean): void; - glDebugMessageControl(p0: number, p1: number, p2: number, p3: number, p4: boolean): void; - glDebugMessageControl(p0: number, p1: number, p2: number, p3: Array, p4: boolean): void; - nglDebugMessageInsert(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glDebugMessageInsert(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer): void; - glDebugMessageInsert(p0: number, p1: number, p2: number, p3: number, p4: kotlin.CharSequence): void; - nglDebugMessageCallback(p0: number, p1: number): void; - glDebugMessageCallback(p0: org.lwjgl.opengl.GLDebugMessageCallbackI | null | undefined, p1: number): void; - nglGetDebugMessageLog(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): number; - glGetDebugMessageLog(p0: number, p1: java.nio.IntBuffer | null | undefined, p2: java.nio.IntBuffer | null | undefined, p3: java.nio.IntBuffer | null | undefined, p4: java.nio.IntBuffer | null | undefined, p5: java.nio.IntBuffer | null | undefined, p6: java.nio.ByteBuffer | null | undefined): number; - glGetDebugMessageLog(p0: number, p1: Array, p2: Array, p3: Array, p4: Array, p5: Array, p6: java.nio.ByteBuffer | null | undefined): number; - nglPushDebugGroup(p0: number, p1: number, p2: number, p3: number): void; - glPushDebugGroup(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glPushDebugGroup(p0: number, p1: number, p2: kotlin.CharSequence): void; - glPopDebugGroup(): void; - nglObjectLabel(p0: number, p1: number, p2: number, p3: number): void; - glObjectLabel(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glObjectLabel(p0: number, p1: number, p2: kotlin.CharSequence): void; - nglGetObjectLabel(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetObjectLabel(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined, p3: java.nio.ByteBuffer): void; - glGetObjectLabel(p0: number, p1: number, p2: number): string; - glGetObjectLabel(p0: number, p1: number): string; - glGetObjectLabel(p0: number, p1: number, p2: Array, p3: java.nio.ByteBuffer): void; - nglObjectPtrLabel(p0: number, p1: number, p2: number): void; - glObjectPtrLabel(p0: number, p1: java.nio.ByteBuffer): void; - glObjectPtrLabel(p0: number, p1: kotlin.CharSequence): void; - nglGetObjectPtrLabel(p0: number, p1: number, p2: number, p3: number): void; - glGetObjectPtrLabel(p0: number, p1: java.nio.IntBuffer | null | undefined, p2: java.nio.ByteBuffer): void; - glGetObjectPtrLabel(p0: number, p1: number): string; - glGetObjectPtrLabel(p0: number): string; - glGetObjectPtrLabel(p0: number, p1: Array, p2: java.nio.ByteBuffer): void; - glFramebufferParameteri(p0: number, p1: number, p2: number): void; - nglGetFramebufferParameteriv(p0: number, p1: number, p2: number): void; - glGetFramebufferParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetFramebufferParameteriv(p0: number, p1: number, p2: Array): void; - glGetFramebufferParameteri(p0: number, p1: number): number; - nglGetInternalformati64v(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetInternalformati64v(p0: number, p1: number, p2: number, p3: java.nio.LongBuffer): void; - glGetInternalformati64v(p0: number, p1: number, p2: number, p3: Array): void; - glGetInternalformati64(p0: number, p1: number, p2: number): number; - glInvalidateTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glInvalidateTexImage(p0: number, p1: number): void; - glInvalidateBufferSubData(p0: number, p1: number, p2: number): void; - glInvalidateBufferData(p0: number): void; - nglInvalidateFramebuffer(p0: number, p1: number, p2: number): void; - glInvalidateFramebuffer(p0: number, p1: java.nio.IntBuffer): void; - glInvalidateFramebuffer(p0: number, p1: number): void; - glInvalidateFramebuffer(p0: number, p1: Array): void; - nglInvalidateSubFramebuffer(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glInvalidateSubFramebuffer(p0: number, p1: java.nio.IntBuffer, p2: number, p3: number, p4: number, p5: number): void; - glInvalidateSubFramebuffer(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glInvalidateSubFramebuffer(p0: number, p1: Array, p2: number, p3: number, p4: number, p5: number): void; - nglMultiDrawArraysIndirect(p0: number, p1: number, p2: number, p3: number): void; - glMultiDrawArraysIndirect(p0: number, p1: java.nio.ByteBuffer, p2: number, p3: number): void; - glMultiDrawArraysIndirect(p0: number, p1: number, p2: number, p3: number): void; - glMultiDrawArraysIndirect(p0: number, p1: java.nio.IntBuffer, p2: number, p3: number): void; - glMultiDrawArraysIndirect(p0: number, p1: Array, p2: number, p3: number): void; - nglMultiDrawElementsIndirect(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glMultiDrawElementsIndirect(p0: number, p1: number, p2: java.nio.ByteBuffer, p3: number, p4: number): void; - glMultiDrawElementsIndirect(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glMultiDrawElementsIndirect(p0: number, p1: number, p2: java.nio.IntBuffer, p3: number, p4: number): void; - glMultiDrawElementsIndirect(p0: number, p1: number, p2: Array, p3: number, p4: number): void; - nglGetProgramInterfaceiv(p0: number, p1: number, p2: number, p3: number): void; - glGetProgramInterfaceiv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetProgramInterfaceiv(p0: number, p1: number, p2: number, p3: Array): void; - glGetProgramInterfacei(p0: number, p1: number, p2: number): number; - nglGetProgramResourceIndex(p0: number, p1: number, p2: number): number; - glGetProgramResourceIndex(p0: number, p1: number, p2: java.nio.ByteBuffer): number; - glGetProgramResourceIndex(p0: number, p1: number, p2: kotlin.CharSequence): number; - nglGetProgramResourceName(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glGetProgramResourceName(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer | null | undefined, p4: java.nio.ByteBuffer): void; - glGetProgramResourceName(p0: number, p1: number, p2: number, p3: number): string; - glGetProgramResourceName(p0: number, p1: number, p2: number): string; - glGetProgramResourceName(p0: number, p1: number, p2: number, p3: Array, p4: java.nio.ByteBuffer): void; - nglGetProgramResourceiv(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glGetProgramResourceiv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer, p4: java.nio.IntBuffer | null | undefined, p5: java.nio.IntBuffer): void; - glGetProgramResourceiv(p0: number, p1: number, p2: number, p3: Array, p4: Array, p5: Array): void; - nglGetProgramResourceLocation(p0: number, p1: number, p2: number): number; - glGetProgramResourceLocation(p0: number, p1: number, p2: java.nio.ByteBuffer): number; - glGetProgramResourceLocation(p0: number, p1: number, p2: kotlin.CharSequence): number; - nglGetProgramResourceLocationIndex(p0: number, p1: number, p2: number): number; - glGetProgramResourceLocationIndex(p0: number, p1: number, p2: java.nio.ByteBuffer): number; - glGetProgramResourceLocationIndex(p0: number, p1: number, p2: kotlin.CharSequence): number; - glShaderStorageBlockBinding(p0: number, p1: number, p2: number): void; - glTexBufferRange(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glTexStorage2DMultisample(p0: number, p1: number, p2: number, p3: number, p4: number, p5: boolean): void; - glTexStorage3DMultisample(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean): void; - glTextureView(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glBindVertexBuffer(p0: number, p1: number, p2: number, p3: number): void; - glVertexAttribFormat(p0: number, p1: number, p2: number, p3: boolean, p4: number): void; - glVertexAttribIFormat(p0: number, p1: number, p2: number, p3: number): void; - glVertexAttribLFormat(p0: number, p1: number, p2: number, p3: number): void; - glVertexAttribBinding(p0: number, p1: number): void; - glVertexBindingDivisor(p0: number, p1: number): void; - } - interface GL43 extends org.lwjgl.opengl.GL42 { - } - const GLDebugMessageCallbackI: { - DESCRIPTOR: org.lwjgl.system.Callback$Descriptor; - } - interface GLDebugMessageCallbackI extends org.lwjgl.system.CallbackI { - invoke(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - (p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - } - const GL44: { - GL_MAX_VERTEX_ATTRIB_STRIDE: number; - GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED: number; - GL_TEXTURE_BUFFER_BINDING: number; - GL_MAP_PERSISTENT_BIT: number; - GL_MAP_COHERENT_BIT: number; - GL_DYNAMIC_STORAGE_BIT: number; - GL_CLIENT_STORAGE_BIT: number; - GL_BUFFER_IMMUTABLE_STORAGE: number; - GL_BUFFER_STORAGE_FLAGS: number; - GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT: number; - GL_CLEAR_TEXTURE: number; - GL_LOCATION_COMPONENT: number; - GL_TRANSFORM_FEEDBACK_BUFFER_INDEX: number; - GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE: number; - GL_QUERY_RESULT_NO_WAIT: number; - GL_QUERY_BUFFER: number; - GL_QUERY_BUFFER_BINDING: number; - GL_QUERY_BUFFER_BARRIER_BIT: number; - GL_MIRROR_CLAMP_TO_EDGE: number; - nglBufferStorage(p0: number, p1: number, p2: number, p3: number): void; - glBufferStorage(p0: number, p1: number, p2: number): void; - glBufferStorage(p0: number, p1: java.nio.ByteBuffer, p2: number): void; - glBufferStorage(p0: number, p1: java.nio.ShortBuffer, p2: number): void; - glBufferStorage(p0: number, p1: java.nio.IntBuffer, p2: number): void; - glBufferStorage(p0: number, p1: java.nio.FloatBuffer, p2: number): void; - glBufferStorage(p0: number, p1: java.nio.DoubleBuffer, p2: number): void; - glBufferStorage(p0: number, p1: Array, p2: number): void; - glBufferStorage(p0: number, p1: Array, p2: number): void; - glBufferStorage(p0: number, p1: kotlin.FloatArray, p2: number): void; - glBufferStorage(p0: number, p1: kotlin.DoubleArray, p2: number): void; - nglClearTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number): void; - glClearTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.ByteBuffer | null | undefined): void; - glClearTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.ShortBuffer | null | undefined): void; - glClearTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.IntBuffer | null | undefined): void; - glClearTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.FloatBuffer | null | undefined): void; - glClearTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.DoubleBuffer | null | undefined): void; - glClearTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: Array): void; - glClearTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: Array): void; - glClearTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: kotlin.FloatArray | null | undefined): void; - glClearTexSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: kotlin.DoubleArray | null | undefined): void; - nglClearTexImage(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glClearTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer | null | undefined): void; - glClearTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ShortBuffer | null | undefined): void; - glClearTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.IntBuffer | null | undefined): void; - glClearTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.FloatBuffer | null | undefined): void; - glClearTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.DoubleBuffer | null | undefined): void; - glClearTexImage(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glClearTexImage(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glClearTexImage(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray | null | undefined): void; - glClearTexImage(p0: number, p1: number, p2: number, p3: number, p4: kotlin.DoubleArray | null | undefined): void; - nglBindBuffersBase(p0: number, p1: number, p2: number, p3: number): void; - glBindBuffersBase(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined): void; - glBindBuffersBase(p0: number, p1: number, p2: Array): void; - nglBindBuffersRange(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glBindBuffersRange(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined, p3: org.lwjgl.PointerBuffer | null | undefined, p4: org.lwjgl.PointerBuffer | null | undefined): void; - glBindBuffersRange(p0: number, p1: number, p2: Array, p3: org.lwjgl.PointerBuffer | null | undefined, p4: org.lwjgl.PointerBuffer | null | undefined): void; - nglBindTextures(p0: number, p1: number, p2: number): void; - glBindTextures(p0: number, p1: java.nio.IntBuffer | null | undefined): void; - glBindTextures(p0: number, p1: Array): void; - nglBindSamplers(p0: number, p1: number, p2: number): void; - glBindSamplers(p0: number, p1: java.nio.IntBuffer | null | undefined): void; - glBindSamplers(p0: number, p1: Array): void; - nglBindImageTextures(p0: number, p1: number, p2: number): void; - glBindImageTextures(p0: number, p1: java.nio.IntBuffer | null | undefined): void; - glBindImageTextures(p0: number, p1: Array): void; - nglBindVertexBuffers(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glBindVertexBuffers(p0: number, p1: java.nio.IntBuffer | null | undefined, p2: org.lwjgl.PointerBuffer | null | undefined, p3: java.nio.IntBuffer | null | undefined): void; - glBindVertexBuffers(p0: number, p1: Array, p2: org.lwjgl.PointerBuffer | null | undefined, p3: Array): void; - } - interface GL44 extends org.lwjgl.opengl.GL43 { - } - const GL45: { - GL_NEGATIVE_ONE_TO_ONE: number; - GL_ZERO_TO_ONE: number; - GL_CLIP_ORIGIN: number; - GL_CLIP_DEPTH_MODE: number; - GL_QUERY_WAIT_INVERTED: number; - GL_QUERY_NO_WAIT_INVERTED: number; - GL_QUERY_BY_REGION_WAIT_INVERTED: number; - GL_QUERY_BY_REGION_NO_WAIT_INVERTED: number; - GL_MAX_CULL_DISTANCES: number; - GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES: number; - GL_TEXTURE_TARGET: number; - GL_QUERY_TARGET: number; - GL_CONTEXT_RELEASE_BEHAVIOR: number; - GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH: number; - GL_GUILTY_CONTEXT_RESET: number; - GL_INNOCENT_CONTEXT_RESET: number; - GL_UNKNOWN_CONTEXT_RESET: number; - GL_RESET_NOTIFICATION_STRATEGY: number; - GL_LOSE_CONTEXT_ON_RESET: number; - GL_NO_RESET_NOTIFICATION: number; - GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT: number; - GL_CONTEXT_LOST: number; - glClipControl(p0: number, p1: number): void; - nglCreateTransformFeedbacks(p0: number, p1: number): void; - glCreateTransformFeedbacks(p0: java.nio.IntBuffer): void; - glCreateTransformFeedbacks(): number; - glCreateTransformFeedbacks(p0: Array): void; - glTransformFeedbackBufferBase(p0: number, p1: number, p2: number): void; - glTransformFeedbackBufferRange(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglGetTransformFeedbackiv(p0: number, p1: number, p2: number): void; - glGetTransformFeedbackiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetTransformFeedbackiv(p0: number, p1: number, p2: Array): void; - glGetTransformFeedbacki(p0: number, p1: number): number; - glGetTransformFeedbacki(p0: number, p1: number, p2: number): number; - nglGetTransformFeedbacki_v(p0: number, p1: number, p2: number, p3: number): void; - glGetTransformFeedbacki_v(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetTransformFeedbacki_v(p0: number, p1: number, p2: number, p3: Array): void; - nglGetTransformFeedbacki64_v(p0: number, p1: number, p2: number, p3: number): void; - glGetTransformFeedbacki64_v(p0: number, p1: number, p2: number, p3: java.nio.LongBuffer): void; - glGetTransformFeedbacki64_v(p0: number, p1: number, p2: number, p3: Array): void; - glGetTransformFeedbacki64(p0: number, p1: number, p2: number): number; - nglCreateBuffers(p0: number, p1: number): void; - glCreateBuffers(p0: java.nio.IntBuffer): void; - glCreateBuffers(): number; - glCreateBuffers(p0: Array): void; - nglNamedBufferStorage(p0: number, p1: number, p2: number, p3: number): void; - glNamedBufferStorage(p0: number, p1: number, p2: number): void; - glNamedBufferStorage(p0: number, p1: java.nio.ByteBuffer, p2: number): void; - glNamedBufferStorage(p0: number, p1: java.nio.ShortBuffer, p2: number): void; - glNamedBufferStorage(p0: number, p1: java.nio.IntBuffer, p2: number): void; - glNamedBufferStorage(p0: number, p1: java.nio.FloatBuffer, p2: number): void; - glNamedBufferStorage(p0: number, p1: java.nio.DoubleBuffer, p2: number): void; - glNamedBufferStorage(p0: number, p1: Array, p2: number): void; - glNamedBufferStorage(p0: number, p1: Array, p2: number): void; - glNamedBufferStorage(p0: number, p1: kotlin.FloatArray, p2: number): void; - glNamedBufferStorage(p0: number, p1: kotlin.DoubleArray, p2: number): void; - nglNamedBufferData(p0: number, p1: number, p2: number, p3: number): void; - glNamedBufferData(p0: number, p1: number, p2: number): void; - glNamedBufferData(p0: number, p1: java.nio.ByteBuffer, p2: number): void; - glNamedBufferData(p0: number, p1: java.nio.ShortBuffer, p2: number): void; - glNamedBufferData(p0: number, p1: java.nio.IntBuffer, p2: number): void; - glNamedBufferData(p0: number, p1: java.nio.LongBuffer, p2: number): void; - glNamedBufferData(p0: number, p1: java.nio.FloatBuffer, p2: number): void; - glNamedBufferData(p0: number, p1: java.nio.DoubleBuffer, p2: number): void; - glNamedBufferData(p0: number, p1: Array, p2: number): void; - glNamedBufferData(p0: number, p1: Array, p2: number): void; - glNamedBufferData(p0: number, p1: Array, p2: number): void; - glNamedBufferData(p0: number, p1: kotlin.FloatArray, p2: number): void; - glNamedBufferData(p0: number, p1: kotlin.DoubleArray, p2: number): void; - nglNamedBufferSubData(p0: number, p1: number, p2: number, p3: number): void; - glNamedBufferSubData(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glNamedBufferSubData(p0: number, p1: number, p2: java.nio.ShortBuffer): void; - glNamedBufferSubData(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glNamedBufferSubData(p0: number, p1: number, p2: java.nio.LongBuffer): void; - glNamedBufferSubData(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glNamedBufferSubData(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glNamedBufferSubData(p0: number, p1: number, p2: Array): void; - glNamedBufferSubData(p0: number, p1: number, p2: Array): void; - glNamedBufferSubData(p0: number, p1: number, p2: Array): void; - glNamedBufferSubData(p0: number, p1: number, p2: kotlin.FloatArray): void; - glNamedBufferSubData(p0: number, p1: number, p2: kotlin.DoubleArray): void; - glCopyNamedBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglClearNamedBufferData(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glClearNamedBufferData(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer | null | undefined): void; - glClearNamedBufferData(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ShortBuffer | null | undefined): void; - glClearNamedBufferData(p0: number, p1: number, p2: number, p3: number, p4: java.nio.IntBuffer | null | undefined): void; - glClearNamedBufferData(p0: number, p1: number, p2: number, p3: number, p4: java.nio.FloatBuffer | null | undefined): void; - glClearNamedBufferData(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glClearNamedBufferData(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glClearNamedBufferData(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray | null | undefined): void; - nglClearNamedBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glClearNamedBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ByteBuffer | null | undefined): void; - glClearNamedBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ShortBuffer | null | undefined): void; - glClearNamedBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.IntBuffer | null | undefined): void; - glClearNamedBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.FloatBuffer | null | undefined): void; - glClearNamedBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glClearNamedBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glClearNamedBufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: kotlin.FloatArray | null | undefined): void; - nglMapNamedBuffer(p0: number, p1: number): number; - glMapNamedBuffer(p0: number, p1: number): java.nio.ByteBuffer | null | undefined; - glMapNamedBuffer(p0: number, p1: number, p2: java.nio.ByteBuffer | null | undefined): java.nio.ByteBuffer | null | undefined; - glMapNamedBuffer(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer | null | undefined): java.nio.ByteBuffer | null | undefined; - nglMapNamedBufferRange(p0: number, p1: number, p2: number, p3: number): number; - glMapNamedBufferRange(p0: number, p1: number, p2: number, p3: number): java.nio.ByteBuffer | null | undefined; - glMapNamedBufferRange(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer | null | undefined): java.nio.ByteBuffer | null | undefined; - glUnmapNamedBuffer(p0: number): boolean; - glFlushMappedNamedBufferRange(p0: number, p1: number, p2: number): void; - nglGetNamedBufferParameteriv(p0: number, p1: number, p2: number): void; - glGetNamedBufferParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetNamedBufferParameteriv(p0: number, p1: number, p2: Array): void; - glGetNamedBufferParameteri(p0: number, p1: number): number; - nglGetNamedBufferParameteri64v(p0: number, p1: number, p2: number): void; - glGetNamedBufferParameteri64v(p0: number, p1: number, p2: java.nio.LongBuffer): void; - glGetNamedBufferParameteri64v(p0: number, p1: number, p2: Array): void; - glGetNamedBufferParameteri64(p0: number, p1: number): number; - nglGetNamedBufferPointerv(p0: number, p1: number, p2: number): void; - glGetNamedBufferPointerv(p0: number, p1: number, p2: org.lwjgl.PointerBuffer): void; - glGetNamedBufferPointer(p0: number, p1: number): number; - nglGetNamedBufferSubData(p0: number, p1: number, p2: number, p3: number): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: java.nio.ShortBuffer): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: java.nio.LongBuffer): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: Array): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: Array): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: Array): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetNamedBufferSubData(p0: number, p1: number, p2: kotlin.DoubleArray): void; - nglCreateFramebuffers(p0: number, p1: number): void; - glCreateFramebuffers(p0: java.nio.IntBuffer): void; - glCreateFramebuffers(): number; - glCreateFramebuffers(p0: Array): void; - glNamedFramebufferRenderbuffer(p0: number, p1: number, p2: number, p3: number): void; - glNamedFramebufferParameteri(p0: number, p1: number, p2: number): void; - glNamedFramebufferTexture(p0: number, p1: number, p2: number, p3: number): void; - glNamedFramebufferTextureLayer(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glNamedFramebufferDrawBuffer(p0: number, p1: number): void; - nglNamedFramebufferDrawBuffers(p0: number, p1: number, p2: number): void; - glNamedFramebufferDrawBuffers(p0: number, p1: java.nio.IntBuffer): void; - glNamedFramebufferDrawBuffers(p0: number, p1: number): void; - glNamedFramebufferDrawBuffers(p0: number, p1: Array): void; - glNamedFramebufferReadBuffer(p0: number, p1: number): void; - nglInvalidateNamedFramebufferData(p0: number, p1: number, p2: number): void; - glInvalidateNamedFramebufferData(p0: number, p1: java.nio.IntBuffer): void; - glInvalidateNamedFramebufferData(p0: number, p1: number): void; - glInvalidateNamedFramebufferData(p0: number, p1: Array): void; - nglInvalidateNamedFramebufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glInvalidateNamedFramebufferSubData(p0: number, p1: java.nio.IntBuffer, p2: number, p3: number, p4: number, p5: number): void; - glInvalidateNamedFramebufferSubData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glInvalidateNamedFramebufferSubData(p0: number, p1: Array, p2: number, p3: number, p4: number, p5: number): void; - nglClearNamedFramebufferiv(p0: number, p1: number, p2: number, p3: number): void; - glClearNamedFramebufferiv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glClearNamedFramebufferiv(p0: number, p1: number, p2: number, p3: Array): void; - nglClearNamedFramebufferuiv(p0: number, p1: number, p2: number, p3: number): void; - glClearNamedFramebufferuiv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glClearNamedFramebufferuiv(p0: number, p1: number, p2: number, p3: Array): void; - nglClearNamedFramebufferfv(p0: number, p1: number, p2: number, p3: number): void; - glClearNamedFramebufferfv(p0: number, p1: number, p2: number, p3: java.nio.FloatBuffer): void; - glClearNamedFramebufferfv(p0: number, p1: number, p2: number, p3: kotlin.FloatArray): void; - glClearNamedFramebufferfi(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glBlitNamedFramebuffer(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number): void; - glCheckNamedFramebufferStatus(p0: number, p1: number): number; - nglGetNamedFramebufferParameteriv(p0: number, p1: number, p2: number): void; - glGetNamedFramebufferParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetNamedFramebufferParameteriv(p0: number, p1: number, p2: Array): void; - glGetNamedFramebufferParameteri(p0: number, p1: number): number; - nglGetNamedFramebufferAttachmentParameteriv(p0: number, p1: number, p2: number, p3: number): void; - glGetNamedFramebufferAttachmentParameteriv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetNamedFramebufferAttachmentParameteriv(p0: number, p1: number, p2: number, p3: Array): void; - glGetNamedFramebufferAttachmentParameteri(p0: number, p1: number, p2: number): number; - nglCreateRenderbuffers(p0: number, p1: number): void; - glCreateRenderbuffers(p0: java.nio.IntBuffer): void; - glCreateRenderbuffers(): number; - glCreateRenderbuffers(p0: Array): void; - glNamedRenderbufferStorage(p0: number, p1: number, p2: number, p3: number): void; - glNamedRenderbufferStorageMultisample(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglGetNamedRenderbufferParameteriv(p0: number, p1: number, p2: number): void; - glGetNamedRenderbufferParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetNamedRenderbufferParameteriv(p0: number, p1: number, p2: Array): void; - glGetNamedRenderbufferParameteri(p0: number, p1: number): number; - nglCreateTextures(p0: number, p1: number, p2: number): void; - glCreateTextures(p0: number, p1: java.nio.IntBuffer): void; - glCreateTextures(p0: number): number; - glCreateTextures(p0: number, p1: Array): void; - glTextureBuffer(p0: number, p1: number, p2: number): void; - glTextureBufferRange(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glTextureStorage1D(p0: number, p1: number, p2: number, p3: number): void; - glTextureStorage2D(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glTextureStorage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glTextureStorage2DMultisample(p0: number, p1: number, p2: number, p3: number, p4: number, p5: boolean): void; - glTextureStorage3DMultisample(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean): void; - nglTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ByteBuffer): void; - glTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ShortBuffer): void; - glTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.IntBuffer): void; - glTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.FloatBuffer): void; - glTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.DoubleBuffer): void; - glTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: kotlin.FloatArray): void; - glTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: kotlin.DoubleArray): void; - nglTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.ByteBuffer): void; - glTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.ShortBuffer): void; - glTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.IntBuffer): void; - glTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.FloatBuffer): void; - glTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.DoubleBuffer): void; - glTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: Array): void; - glTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: Array): void; - glTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: kotlin.FloatArray): void; - glTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: kotlin.DoubleArray): void; - nglTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number): void; - glTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.ByteBuffer): void; - glTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number): void; - glTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.ShortBuffer): void; - glTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.IntBuffer): void; - glTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.FloatBuffer): void; - glTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.DoubleBuffer): void; - glTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: Array): void; - glTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: Array): void; - glTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: kotlin.FloatArray): void; - glTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: kotlin.DoubleArray): void; - nglCompressedTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glCompressedTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; - glCompressedTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: java.nio.ByteBuffer): void; - nglCompressedTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glCompressedTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glCompressedTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: java.nio.ByteBuffer): void; - nglCompressedTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number): void; - glCompressedTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number): void; - glCompressedTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: java.nio.ByteBuffer): void; - glCopyTextureSubImage1D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glCopyTextureSubImage2D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glCopyTextureSubImage3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; - glTextureParameterf(p0: number, p1: number, p2: number): void; - nglTextureParameterfv(p0: number, p1: number, p2: number): void; - glTextureParameterfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glTextureParameterfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glTextureParameteri(p0: number, p1: number, p2: number): void; - nglTextureParameterIiv(p0: number, p1: number, p2: number): void; - glTextureParameterIiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glTextureParameterIiv(p0: number, p1: number, p2: Array): void; - glTextureParameterIi(p0: number, p1: number, p2: number): void; - nglTextureParameterIuiv(p0: number, p1: number, p2: number): void; - glTextureParameterIuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glTextureParameterIuiv(p0: number, p1: number, p2: Array): void; - glTextureParameterIui(p0: number, p1: number, p2: number): void; - nglTextureParameteriv(p0: number, p1: number, p2: number): void; - glTextureParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glTextureParameteriv(p0: number, p1: number, p2: Array): void; - glGenerateTextureMipmap(p0: number): void; - glBindTextureUnit(p0: number, p1: number): void; - nglGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer): void; - glGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ShortBuffer): void; - glGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.IntBuffer): void; - glGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.FloatBuffer): void; - glGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.DoubleBuffer): void; - glGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray): void; - glGetTextureImage(p0: number, p1: number, p2: number, p3: number, p4: kotlin.DoubleArray): void; - nglGetCompressedTextureImage(p0: number, p1: number, p2: number, p3: number): void; - glGetCompressedTextureImage(p0: number, p1: number, p2: number, p3: number): void; - glGetCompressedTextureImage(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - nglGetTextureLevelParameterfv(p0: number, p1: number, p2: number, p3: number): void; - glGetTextureLevelParameterfv(p0: number, p1: number, p2: number, p3: java.nio.FloatBuffer): void; - glGetTextureLevelParameterfv(p0: number, p1: number, p2: number, p3: kotlin.FloatArray): void; - glGetTextureLevelParameterf(p0: number, p1: number, p2: number): number; - nglGetTextureLevelParameteriv(p0: number, p1: number, p2: number, p3: number): void; - glGetTextureLevelParameteriv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetTextureLevelParameteriv(p0: number, p1: number, p2: number, p3: Array): void; - glGetTextureLevelParameteri(p0: number, p1: number, p2: number): number; - nglGetTextureParameterfv(p0: number, p1: number, p2: number): void; - glGetTextureParameterfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetTextureParameterfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetTextureParameterf(p0: number, p1: number): number; - nglGetTextureParameterIiv(p0: number, p1: number, p2: number): void; - glGetTextureParameterIiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetTextureParameterIiv(p0: number, p1: number, p2: Array): void; - glGetTextureParameterIi(p0: number, p1: number): number; - nglGetTextureParameterIuiv(p0: number, p1: number, p2: number): void; - glGetTextureParameterIuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetTextureParameterIuiv(p0: number, p1: number, p2: Array): void; - glGetTextureParameterIui(p0: number, p1: number): number; - nglGetTextureParameteriv(p0: number, p1: number, p2: number): void; - glGetTextureParameteriv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetTextureParameteriv(p0: number, p1: number, p2: Array): void; - glGetTextureParameteri(p0: number, p1: number): number; - nglCreateVertexArrays(p0: number, p1: number): void; - glCreateVertexArrays(p0: java.nio.IntBuffer): void; - glCreateVertexArrays(): number; - glCreateVertexArrays(p0: Array): void; - glDisableVertexArrayAttrib(p0: number, p1: number): void; - glEnableVertexArrayAttrib(p0: number, p1: number): void; - glVertexArrayElementBuffer(p0: number, p1: number): void; - glVertexArrayVertexBuffer(p0: number, p1: number, p2: number, p3: number, p4: number): void; - nglVertexArrayVertexBuffers(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glVertexArrayVertexBuffers(p0: number, p1: number, p2: java.nio.IntBuffer | null | undefined, p3: org.lwjgl.PointerBuffer | null | undefined, p4: java.nio.IntBuffer | null | undefined): void; - glVertexArrayVertexBuffers(p0: number, p1: number, p2: Array, p3: org.lwjgl.PointerBuffer | null | undefined, p4: Array): void; - glVertexArrayAttribFormat(p0: number, p1: number, p2: number, p3: number, p4: boolean, p5: number): void; - glVertexArrayAttribIFormat(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glVertexArrayAttribLFormat(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glVertexArrayAttribBinding(p0: number, p1: number, p2: number): void; - glVertexArrayBindingDivisor(p0: number, p1: number, p2: number): void; - nglGetVertexArrayiv(p0: number, p1: number, p2: number): void; - glGetVertexArrayiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetVertexArrayiv(p0: number, p1: number, p2: Array): void; - glGetVertexArrayi(p0: number, p1: number): number; - nglGetVertexArrayIndexediv(p0: number, p1: number, p2: number, p3: number): void; - glGetVertexArrayIndexediv(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetVertexArrayIndexediv(p0: number, p1: number, p2: number, p3: Array): void; - glGetVertexArrayIndexedi(p0: number, p1: number, p2: number): number; - nglGetVertexArrayIndexed64iv(p0: number, p1: number, p2: number, p3: number): void; - glGetVertexArrayIndexed64iv(p0: number, p1: number, p2: number, p3: java.nio.LongBuffer): void; - glGetVertexArrayIndexed64iv(p0: number, p1: number, p2: number, p3: Array): void; - glGetVertexArrayIndexed64i(p0: number, p1: number, p2: number): number; - nglCreateSamplers(p0: number, p1: number): void; - glCreateSamplers(p0: java.nio.IntBuffer): void; - glCreateSamplers(): number; - glCreateSamplers(p0: Array): void; - nglCreateProgramPipelines(p0: number, p1: number): void; - glCreateProgramPipelines(p0: java.nio.IntBuffer): void; - glCreateProgramPipelines(): number; - glCreateProgramPipelines(p0: Array): void; - nglCreateQueries(p0: number, p1: number, p2: number): void; - glCreateQueries(p0: number, p1: java.nio.IntBuffer): void; - glCreateQueries(p0: number): number; - glCreateQueries(p0: number, p1: Array): void; - glGetQueryBufferObjectiv(p0: number, p1: number, p2: number, p3: number): void; - glGetQueryBufferObjectuiv(p0: number, p1: number, p2: number, p3: number): void; - glGetQueryBufferObjecti64v(p0: number, p1: number, p2: number, p3: number): void; - glGetQueryBufferObjectui64v(p0: number, p1: number, p2: number, p3: number): void; - glMemoryBarrierByRegion(p0: number): void; - nglGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number): void; - glGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number): void; - glGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.ByteBuffer): void; - glGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.ShortBuffer): void; - glGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.IntBuffer): void; - glGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.FloatBuffer): void; - glGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: java.nio.DoubleBuffer): void; - glGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: Array): void; - glGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: Array): void; - glGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: kotlin.FloatArray): void; - glGetTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: kotlin.DoubleArray): void; - nglGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): void; - glGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): void; - glGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.ByteBuffer): void; - glGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.ShortBuffer): void; - glGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.IntBuffer): void; - glGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.FloatBuffer): void; - glGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: java.nio.DoubleBuffer): void; - glGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: Array): void; - glGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: Array): void; - glGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: kotlin.FloatArray): void; - glGetCompressedTextureSubImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: kotlin.DoubleArray): void; - glTextureBarrier(): void; - glGetGraphicsResetStatus(): number; - nglGetnMapdv(p0: number, p1: number, p2: number, p3: number): void; - glGetnMapdv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glGetnMapdv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - glGetnMapd(p0: number, p1: number): number; - nglGetnMapfv(p0: number, p1: number, p2: number, p3: number): void; - glGetnMapfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetnMapfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetnMapf(p0: number, p1: number): number; - nglGetnMapiv(p0: number, p1: number, p2: number, p3: number): void; - glGetnMapiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetnMapiv(p0: number, p1: number, p2: Array): void; - glGetnMapi(p0: number, p1: number): number; - nglGetnPixelMapfv(p0: number, p1: number, p2: number): void; - glGetnPixelMapfv(p0: number, p1: java.nio.FloatBuffer): void; - glGetnPixelMapfv(p0: number, p1: kotlin.FloatArray): void; - nglGetnPixelMapuiv(p0: number, p1: number, p2: number): void; - glGetnPixelMapuiv(p0: number, p1: java.nio.IntBuffer): void; - glGetnPixelMapuiv(p0: number, p1: Array): void; - nglGetnPixelMapusv(p0: number, p1: number, p2: number): void; - glGetnPixelMapusv(p0: number, p1: java.nio.ShortBuffer): void; - glGetnPixelMapusv(p0: number, p1: Array): void; - nglGetnPolygonStipple(p0: number, p1: number): void; - glGetnPolygonStipple(p0: number, p1: number): void; - glGetnPolygonStipple(p0: java.nio.ByteBuffer): void; - nglGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - glGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ByteBuffer): void; - glGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.ShortBuffer): void; - glGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.IntBuffer): void; - glGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.FloatBuffer): void; - glGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: java.nio.DoubleBuffer): void; - glGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: Array): void; - glGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray): void; - glGetnTexImage(p0: number, p1: number, p2: number, p3: number, p4: kotlin.DoubleArray): void; - nglReadnPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glReadnPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glReadnPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ByteBuffer): void; - glReadnPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.ShortBuffer): void; - glReadnPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.IntBuffer): void; - glReadnPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: java.nio.FloatBuffer): void; - glReadnPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glReadnPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): void; - glReadnPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: kotlin.FloatArray): void; - nglGetnColorTable(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetnColorTable(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetnColorTable(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer): void; - glGetnColorTable(p0: number, p1: number, p2: number, p3: java.nio.ShortBuffer): void; - glGetnColorTable(p0: number, p1: number, p2: number, p3: java.nio.IntBuffer): void; - glGetnColorTable(p0: number, p1: number, p2: number, p3: java.nio.FloatBuffer): void; - glGetnColorTable(p0: number, p1: number, p2: number, p3: Array): void; - glGetnColorTable(p0: number, p1: number, p2: number, p3: Array): void; - glGetnColorTable(p0: number, p1: number, p2: number, p3: kotlin.FloatArray): void; - nglGetnConvolutionFilter(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetnConvolutionFilter(p0: number, p1: number, p2: number, p3: number, p4: number): void; - glGetnConvolutionFilter(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer): void; - nglGetnSeparableFilter(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; - glGetnSeparableFilter(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: java.nio.ByteBuffer | null | undefined): void; - glGetnSeparableFilter(p0: number, p1: number, p2: number, p3: java.nio.ByteBuffer, p4: java.nio.ByteBuffer, p5: java.nio.ByteBuffer | null | undefined): void; - nglGetnHistogram(p0: number, p1: boolean, p2: number, p3: number, p4: number, p5: number): void; - glGetnHistogram(p0: number, p1: boolean, p2: number, p3: number, p4: number, p5: number): void; - glGetnHistogram(p0: number, p1: boolean, p2: number, p3: number, p4: java.nio.ByteBuffer): void; - nglGetnMinmax(p0: number, p1: boolean, p2: number, p3: number, p4: number, p5: number): void; - glGetnMinmax(p0: number, p1: boolean, p2: number, p3: number, p4: number, p5: number): void; - glGetnMinmax(p0: number, p1: boolean, p2: number, p3: number, p4: java.nio.ByteBuffer): void; - nglGetnCompressedTexImage(p0: number, p1: number, p2: number, p3: number): void; - glGetnCompressedTexImage(p0: number, p1: number, p2: number, p3: number): void; - glGetnCompressedTexImage(p0: number, p1: number, p2: java.nio.ByteBuffer): void; - nglGetnUniformfv(p0: number, p1: number, p2: number, p3: number): void; - glGetnUniformfv(p0: number, p1: number, p2: java.nio.FloatBuffer): void; - glGetnUniformfv(p0: number, p1: number, p2: kotlin.FloatArray): void; - glGetnUniformf(p0: number, p1: number): number; - nglGetnUniformdv(p0: number, p1: number, p2: number, p3: number): void; - glGetnUniformdv(p0: number, p1: number, p2: java.nio.DoubleBuffer): void; - glGetnUniformdv(p0: number, p1: number, p2: kotlin.DoubleArray): void; - glGetnUniformd(p0: number, p1: number): number; - nglGetnUniformiv(p0: number, p1: number, p2: number, p3: number): void; - glGetnUniformiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetnUniformiv(p0: number, p1: number, p2: Array): void; - glGetnUniformi(p0: number, p1: number): number; - nglGetnUniformuiv(p0: number, p1: number, p2: number, p3: number): void; - glGetnUniformuiv(p0: number, p1: number, p2: java.nio.IntBuffer): void; - glGetnUniformuiv(p0: number, p1: number, p2: Array): void; - glGetnUniformui(p0: number, p1: number): number; - } - interface GL45 extends org.lwjgl.opengl.GL44 { - } - } - namespace system { - namespace libffi { - const FFICIF: { - Buffer: typeof org.lwjgl.system.libffi.FFICIF$Buffer; - SIZEOF: number; - ALIGNOF: number; - ABI: number; - NARGS: number; - ARG_TYPES: number; - RTYPE: number; - BYTES: number; - FLAGS: number; - new(p0: java.nio.ByteBuffer): org.lwjgl.system.libffi.FFICIF; - create(): org.lwjgl.system.libffi.FFICIF; - create(p0: number): org.lwjgl.system.libffi.FFICIF; - create(p0: number): org.lwjgl.system.libffi.FFICIF$Buffer; - create(p0: number, p1: number): org.lwjgl.system.libffi.FFICIF$Buffer; - malloc(): org.lwjgl.system.libffi.FFICIF; - malloc(p0: number): org.lwjgl.system.libffi.FFICIF$Buffer; - malloc(p0: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFICIF; - malloc(p0: number, p1: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFICIF$Buffer; - calloc(): org.lwjgl.system.libffi.FFICIF; - calloc(p0: number): org.lwjgl.system.libffi.FFICIF$Buffer; - calloc(p0: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFICIF; - calloc(p0: number, p1: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFICIF$Buffer; - createSafe(p0: number): org.lwjgl.system.libffi.FFICIF | null | undefined; - createSafe(p0: number, p1: number): org.lwjgl.system.libffi.FFICIF$Buffer | null | undefined; - nabi(p0: number): number; - nnargs(p0: number): number; - narg_types(p0: number): org.lwjgl.PointerBuffer; - nrtype(p0: number): org.lwjgl.system.libffi.FFIType; - nbytes(p0: number): number; - nflags(p0: number): number; - } - interface FFICIF extends org.lwjgl.system.Struct, org.lwjgl.system.NativeResource { - abi(): number; - nargs(): number; - arg_types(): org.lwjgl.PointerBuffer; - rtype(): org.lwjgl.system.libffi.FFIType; - bytes(): number; - flags(): number; - } - const FFIType: { - Buffer: typeof org.lwjgl.system.libffi.FFIType$Buffer; - SIZEOF: number; - ALIGNOF: number; - SIZE: number; - ALIGNMENT: number; - TYPE: number; - ELEMENTS: number; - new(p0: java.nio.ByteBuffer): org.lwjgl.system.libffi.FFIType; - create(): org.lwjgl.system.libffi.FFIType; - create(p0: number): org.lwjgl.system.libffi.FFIType; - create(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; - create(p0: number, p1: number): org.lwjgl.system.libffi.FFIType$Buffer; - malloc(): org.lwjgl.system.libffi.FFIType; - malloc(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; - malloc(p0: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFIType; - malloc(p0: number, p1: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFIType$Buffer; - calloc(): org.lwjgl.system.libffi.FFIType; - calloc(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; - calloc(p0: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFIType; - calloc(p0: number, p1: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFIType$Buffer; - createSafe(p0: number): org.lwjgl.system.libffi.FFIType | null | undefined; - createSafe(p0: number, p1: number): org.lwjgl.system.libffi.FFIType$Buffer | null | undefined; - nsize(p0: number): number; - nsize(p0: number, p1: number): void; - nalignment(p0: number): number; - nalignment(p0: number, p1: number): void; - ntype(p0: number): number; - ntype(p0: number, p1: number): void; - nelements(p0: number, p1: number): org.lwjgl.PointerBuffer | null | undefined; - nelements(p0: number, p1: org.lwjgl.PointerBuffer | null | undefined): void; - } - interface FFIType extends org.lwjgl.system.Struct, org.lwjgl.system.NativeResource { - size(): number; - size(p0: number): org.lwjgl.system.libffi.FFIType; - alignment(): number; - alignment(p0: number): org.lwjgl.system.libffi.FFIType; - type(): number; - type(p0: number): org.lwjgl.system.libffi.FFIType; - elements(p0: number): org.lwjgl.PointerBuffer | null | undefined; - elements(p0: org.lwjgl.PointerBuffer | null | undefined): org.lwjgl.system.libffi.FFIType; - set(p0: number, p1: number, p2: number, p3: org.lwjgl.PointerBuffer | null | undefined): org.lwjgl.system.libffi.FFIType; - set(p0: org.lwjgl.system.libffi.FFIType): org.lwjgl.system.libffi.FFIType; - } - const FFIType$Buffer: { - new(p0: java.nio.ByteBuffer): org.lwjgl.system.libffi.FFIType$Buffer; - new(p0: number, p1: number): org.lwjgl.system.libffi.FFIType$Buffer; - } - interface FFIType$Buffer extends org.lwjgl.system.StructBuffer, org.lwjgl.system.NativeResource { - size(): number; - size(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; - alignment(): number; - alignment(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; - type(): number; - type(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; - elements(p0: number): org.lwjgl.PointerBuffer | null | undefined; - elements(p0: org.lwjgl.PointerBuffer | null | undefined): org.lwjgl.system.libffi.FFIType$Buffer; - } - const FFICIF$Buffer: { - new(p0: java.nio.ByteBuffer): org.lwjgl.system.libffi.FFICIF$Buffer; - new(p0: number, p1: number): org.lwjgl.system.libffi.FFICIF$Buffer; - } - interface FFICIF$Buffer extends org.lwjgl.system.StructBuffer, org.lwjgl.system.NativeResource { - abi(): number; - nargs(): number; - arg_types(): org.lwjgl.PointerBuffer; - rtype(): org.lwjgl.system.libffi.FFIType; - bytes(): number; - flags(): number; - } - } - interface CustomBuffer extends org.lwjgl.system.Pointer$Default { - mark(): SELF; - position(): number; - position(p0: number): SELF; - limit(): number; - limit(p0: number): SELF; - capacity(): number; - sizeof(): number; - address0(): number; - address(p0: number): number; - free(): void; - reset(): SELF; - clear(): SELF; - flip(): SELF; - rewind(): SELF; - remaining(): number; - hasRemaining(): boolean; - slice(): SELF; - slice(p0: number, p1: number): SELF; - duplicate(): SELF; - put(p0: SELF): SELF; - compact(): SELF; - } - interface Pointer$Default extends org.lwjgl.system.Pointer { - } - const Pointer: { - Default: typeof org.lwjgl.system.Pointer$Default; - POINTER_SIZE: number; - POINTER_SHIFT: number; - CLONG_SIZE: number; - CLONG_SHIFT: number; - BITS32: boolean; - BITS64: boolean; - } - interface Pointer { - address(): number; - } - interface CallbackI extends org.lwjgl.system.Pointer { - getDescriptor(): org.lwjgl.system.Callback$Descriptor; - callback(p0: number, p1: number): void; - } - const Callback$Descriptor: { - new(p0: java.lang.invoke.MethodHandles$Lookup, p1: org.lwjgl.system.libffi.FFICIF): org.lwjgl.system.Callback$Descriptor; - } - interface Callback$Descriptor { + const Matrix3x2fStack: { + new(p0: number): org.joml.Matrix3x2fStack; + new(): org.joml.Matrix3x2fStack; + } + interface Matrix3x2fStack extends org.joml.Matrix3x2f { + clear(): org.joml.Matrix3x2fStack; + pushMatrix(): org.joml.Matrix3x2fStack; + popMatrix(): org.joml.Matrix3x2fStack; + } + } + namespace slf4j { + namespace event { + const Level: { + ERROR: org.slf4j.event.Level; + WARN: org.slf4j.event.Level; + INFO: org.slf4j.event.Level; + DEBUG: org.slf4j.event.Level; + TRACE: org.slf4j.event.Level; + entries: kotlin.enums.EnumEntries; + intToLevel(p0: number): org.slf4j.event.Level; + values(): Array; + valueOf(value: string): org.slf4j.event.Level; } - const Struct: { - validate(p0: number, p1: number, p2: number, p3: org.lwjgl.system.Struct$StructValidation): void; - validate(p0: number, p1: number, p2: number, p3: org.lwjgl.system.Struct$StructValidation): void; + interface Level extends kotlin.Enum { + toInt(): number; } - interface Struct extends org.lwjgl.system.Pointer$Default { - sizeof(): number; - clear(): void; - free(): void; - isNull(p0: number): boolean; + } + namespace spi { + interface LoggingEventBuilder { + setCause(p0: kotlin.Throwable): org.slf4j.spi.LoggingEventBuilder; + addMarker(p0: org.slf4j.Marker): org.slf4j.spi.LoggingEventBuilder; + addArgument(p0: any): org.slf4j.spi.LoggingEventBuilder; + addArgument(p0: unknown): org.slf4j.spi.LoggingEventBuilder; + addKeyValue(p0: string, p1: any): org.slf4j.spi.LoggingEventBuilder; + addKeyValue(p0: string, p1: unknown): org.slf4j.spi.LoggingEventBuilder; + setMessage(p0: string): org.slf4j.spi.LoggingEventBuilder; + setMessage(p0: unknown): org.slf4j.spi.LoggingEventBuilder; + log(): void; + log(p0: string): void; + log(p0: string, p1: any): void; + log(p0: string, p1: any, p2: any): void; + log(p0: string, p1: any): void; + log(p0: unknown): void; } - interface StructBuffer extends org.lwjgl.system.CustomBuffer, kotlin.collections.MutableIterable { - get(): T; - get(p0: T): SELF; - get(p0: number): T; - get(p0: number, p1: T): SELF; - put(p0: T): SELF; - put(p0: number, p1: T): SELF; - apply(p0: unknown): SELF; - apply(p0: number, p1: unknown): SELF; - stream(): java.util.stream.Stream; - parallelStream(): java.util.stream.Stream; + } + const Logger: { + ROOT_LOGGER_NAME: string; + } + interface Logger { + getName(): string; + makeLoggingEventBuilder(p0: org.slf4j.event.Level): org.slf4j.spi.LoggingEventBuilder; + atLevel(p0: org.slf4j.event.Level): org.slf4j.spi.LoggingEventBuilder; + isEnabledForLevel(p0: org.slf4j.event.Level): boolean; + isTraceEnabled(): boolean; + isTraceEnabled(p0: org.slf4j.Marker): boolean; + trace(p0: string): void; + trace(p0: string, p1: any): void; + trace(p0: string, p1: any, p2: any): void; + trace(p0: string, p1: any): void; + trace(p0: string, p1: kotlin.Throwable): void; + trace(p0: org.slf4j.Marker, p1: string): void; + trace(p0: org.slf4j.Marker, p1: string, p2: any): void; + trace(p0: org.slf4j.Marker, p1: string, p2: any, p3: any): void; + trace(p0: org.slf4j.Marker, p1: string, p2: any): void; + trace(p0: org.slf4j.Marker, p1: string, p2: kotlin.Throwable): void; + atTrace(): org.slf4j.spi.LoggingEventBuilder; + isDebugEnabled(): boolean; + isDebugEnabled(p0: org.slf4j.Marker): boolean; + debug(p0: string): void; + debug(p0: string, p1: any): void; + debug(p0: string, p1: any, p2: any): void; + debug(p0: string, p1: any): void; + debug(p0: string, p1: kotlin.Throwable): void; + debug(p0: org.slf4j.Marker, p1: string): void; + debug(p0: org.slf4j.Marker, p1: string, p2: any): void; + debug(p0: org.slf4j.Marker, p1: string, p2: any, p3: any): void; + debug(p0: org.slf4j.Marker, p1: string, p2: any): void; + debug(p0: org.slf4j.Marker, p1: string, p2: kotlin.Throwable): void; + atDebug(): org.slf4j.spi.LoggingEventBuilder; + isInfoEnabled(): boolean; + isInfoEnabled(p0: org.slf4j.Marker): boolean; + info(p0: string): void; + info(p0: string, p1: any): void; + info(p0: string, p1: any, p2: any): void; + info(p0: string, p1: any): void; + info(p0: string, p1: kotlin.Throwable): void; + info(p0: org.slf4j.Marker, p1: string): void; + info(p0: org.slf4j.Marker, p1: string, p2: any): void; + info(p0: org.slf4j.Marker, p1: string, p2: any, p3: any): void; + info(p0: org.slf4j.Marker, p1: string, p2: any): void; + info(p0: org.slf4j.Marker, p1: string, p2: kotlin.Throwable): void; + atInfo(): org.slf4j.spi.LoggingEventBuilder; + isWarnEnabled(): boolean; + isWarnEnabled(p0: org.slf4j.Marker): boolean; + warn(p0: string): void; + warn(p0: string, p1: any): void; + warn(p0: string, p1: any): void; + warn(p0: string, p1: any, p2: any): void; + warn(p0: string, p1: kotlin.Throwable): void; + warn(p0: org.slf4j.Marker, p1: string): void; + warn(p0: org.slf4j.Marker, p1: string, p2: any): void; + warn(p0: org.slf4j.Marker, p1: string, p2: any, p3: any): void; + warn(p0: org.slf4j.Marker, p1: string, p2: any): void; + warn(p0: org.slf4j.Marker, p1: string, p2: kotlin.Throwable): void; + atWarn(): org.slf4j.spi.LoggingEventBuilder; + isErrorEnabled(): boolean; + isErrorEnabled(p0: org.slf4j.Marker): boolean; + error(p0: string): void; + error(p0: string, p1: any): void; + error(p0: string, p1: any, p2: any): void; + error(p0: string, p1: any): void; + error(p0: string, p1: kotlin.Throwable): void; + error(p0: org.slf4j.Marker, p1: string): void; + error(p0: org.slf4j.Marker, p1: string, p2: any): void; + error(p0: org.slf4j.Marker, p1: string, p2: any, p3: any): void; + error(p0: org.slf4j.Marker, p1: string, p2: any): void; + error(p0: org.slf4j.Marker, p1: string, p2: kotlin.Throwable): void; + atError(): org.slf4j.spi.LoggingEventBuilder; + } + const Marker: { + ANY_MARKER: string; + ANY_NON_NULL_MARKER: string; + } + interface Marker extends java.io.Serializable { + getName(): string; + add(p0: org.slf4j.Marker): void; + remove(p0: org.slf4j.Marker): boolean; + hasChildren(): boolean; + hasReferences(): boolean; + iterator(): kotlin.collections.MutableIterator; + contains(p0: org.slf4j.Marker): boolean; + contains(p0: string): boolean; + } + } + namespace apache { + namespace commons { + namespace io { } - interface Struct$StructValidation { - validate(p0: number): void; - (p0: number): void; + namespace lang3 { } - interface NativeResource extends java.lang.AutoCloseable { - free(): void; + } + } + namespace spongepowered { + namespace asm { + namespace mixin { + namespace injection { + namespace callback { + const CallbackInfo: { + new(p0: string, p1: boolean): org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + getCallInfoClassName(p0: org.objectweb.asm.Type): string; + } + interface CallbackInfo extends org.spongepowered.asm.mixin.injection.callback.Cancellable { + getId(): string; + } + interface Cancellable { + isCancellable(): boolean; + isCancelled(): boolean; + cancel(): void; + } + } + } } - const MemoryStack: { - create(): org.lwjgl.system.MemoryStack; - create(p0: number): org.lwjgl.system.MemoryStack; - create(p0: java.nio.ByteBuffer): org.lwjgl.system.MemoryStack; - ncreate(p0: number, p1: number): org.lwjgl.system.MemoryStack; - stackGet(): org.lwjgl.system.MemoryStack; - stackPush(): org.lwjgl.system.MemoryStack; - stackPop(): org.lwjgl.system.MemoryStack; - nstackMalloc(p0: number): number; - nstackMalloc(p0: number, p1: number): number; - nstackCalloc(p0: number, p1: number, p2: number): number; - stackMalloc(p0: number): java.nio.ByteBuffer; - stackCalloc(p0: number): java.nio.ByteBuffer; - stackBytes(p0: number): java.nio.ByteBuffer; - stackBytes(p0: number, p1: number): java.nio.ByteBuffer; - stackBytes(p0: number, p1: number, p2: number): java.nio.ByteBuffer; - stackBytes(p0: number, p1: number, p2: number, p3: number): java.nio.ByteBuffer; - stackBytes(p0: number): java.nio.ByteBuffer; - stackMallocShort(p0: number): java.nio.ShortBuffer; - stackCallocShort(p0: number): java.nio.ShortBuffer; - stackShorts(p0: number): java.nio.ShortBuffer; - stackShorts(p0: number, p1: number): java.nio.ShortBuffer; - stackShorts(p0: number, p1: number, p2: number): java.nio.ShortBuffer; - stackShorts(p0: number, p1: number, p2: number, p3: number): java.nio.ShortBuffer; - stackShorts(p0: number): java.nio.ShortBuffer; - stackMallocInt(p0: number): java.nio.IntBuffer; - stackCallocInt(p0: number): java.nio.IntBuffer; - stackInts(p0: number): java.nio.IntBuffer; - stackInts(p0: number, p1: number): java.nio.IntBuffer; - stackInts(p0: number, p1: number, p2: number): java.nio.IntBuffer; - stackInts(p0: number, p1: number, p2: number, p3: number): java.nio.IntBuffer; - stackInts(p0: number): java.nio.IntBuffer; - stackMallocLong(p0: number): java.nio.LongBuffer; - stackCallocLong(p0: number): java.nio.LongBuffer; - stackLongs(p0: number): java.nio.LongBuffer; - stackLongs(p0: number, p1: number): java.nio.LongBuffer; - stackLongs(p0: number, p1: number, p2: number): java.nio.LongBuffer; - stackLongs(p0: number, p1: number, p2: number, p3: number): java.nio.LongBuffer; - stackLongs(p0: number): java.nio.LongBuffer; - stackMallocCLong(p0: number): org.lwjgl.CLongBuffer; - stackCallocCLong(p0: number): org.lwjgl.CLongBuffer; - stackCLongs(p0: number): org.lwjgl.CLongBuffer; - stackCLongs(p0: number, p1: number): org.lwjgl.CLongBuffer; - stackCLongs(p0: number, p1: number, p2: number): org.lwjgl.CLongBuffer; - stackCLongs(p0: number, p1: number, p2: number, p3: number): org.lwjgl.CLongBuffer; - stackCLongs(p0: number): org.lwjgl.CLongBuffer; - stackMallocFloat(p0: number): java.nio.FloatBuffer; - stackCallocFloat(p0: number): java.nio.FloatBuffer; - stackFloats(p0: number): java.nio.FloatBuffer; - stackFloats(p0: number, p1: number): java.nio.FloatBuffer; - stackFloats(p0: number, p1: number, p2: number): java.nio.FloatBuffer; - stackFloats(p0: number, p1: number, p2: number, p3: number): java.nio.FloatBuffer; - stackFloats(p0: number): java.nio.FloatBuffer; - stackMallocDouble(p0: number): java.nio.DoubleBuffer; - stackCallocDouble(p0: number): java.nio.DoubleBuffer; - stackDoubles(p0: number): java.nio.DoubleBuffer; - stackDoubles(p0: number, p1: number): java.nio.DoubleBuffer; - stackDoubles(p0: number, p1: number, p2: number): java.nio.DoubleBuffer; - stackDoubles(p0: number, p1: number, p2: number, p3: number): java.nio.DoubleBuffer; - stackDoubles(p0: number): java.nio.DoubleBuffer; - stackMallocPointer(p0: number): org.lwjgl.PointerBuffer; - stackCallocPointer(p0: number): org.lwjgl.PointerBuffer; - stackPointers(p0: number): org.lwjgl.PointerBuffer; - stackPointers(p0: number, p1: number): org.lwjgl.PointerBuffer; - stackPointers(p0: number, p1: number, p2: number): org.lwjgl.PointerBuffer; - stackPointers(p0: number, p1: number, p2: number, p3: number): org.lwjgl.PointerBuffer; - stackPointers(p0: number): org.lwjgl.PointerBuffer; - stackPointers(p0: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; - stackPointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; - stackPointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer, p2: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; - stackPointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer, p2: org.lwjgl.system.Pointer, p3: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; - stackPointers(p0: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; - stackASCII(p0: kotlin.CharSequence): java.nio.ByteBuffer; - stackASCII(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; - stackUTF8(p0: kotlin.CharSequence): java.nio.ByteBuffer; - stackUTF8(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; - stackUTF16(p0: kotlin.CharSequence): java.nio.ByteBuffer; - stackUTF16(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; - stackASCIISafe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; - stackASCIISafe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; - stackUTF8Safe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; - stackUTF8Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; - stackUTF16Safe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; - stackUTF16Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; + } + } + namespace objectweb { + namespace asm { + const Type: { + VOID: number; + BOOLEAN: number; + CHAR: number; + BYTE: number; + SHORT: number; + INT: number; + FLOAT: number; + LONG: number; + DOUBLE: number; + ARRAY: number; + OBJECT: number; + METHOD: number; + VOID_TYPE: org.objectweb.asm.Type; + BOOLEAN_TYPE: org.objectweb.asm.Type; + CHAR_TYPE: org.objectweb.asm.Type; + BYTE_TYPE: org.objectweb.asm.Type; + SHORT_TYPE: org.objectweb.asm.Type; + INT_TYPE: org.objectweb.asm.Type; + FLOAT_TYPE: org.objectweb.asm.Type; + LONG_TYPE: org.objectweb.asm.Type; + DOUBLE_TYPE: org.objectweb.asm.Type; + getType(p0: string): org.objectweb.asm.Type; + getType(p0: java.lang.Class): org.objectweb.asm.Type; + getType(p0: java.lang.reflect.Constructor): org.objectweb.asm.Type; + getType(p0: java.lang.reflect.Method): org.objectweb.asm.Type; + getObjectType(p0: string): org.objectweb.asm.Type; + getMethodType(p0: string): org.objectweb.asm.Type; + getMethodType(p0: org.objectweb.asm.Type, p1: org.objectweb.asm.Type): org.objectweb.asm.Type; + getArgumentTypes(p0: string): Array; + getArgumentTypes(p0: java.lang.reflect.Method): Array; + getReturnType(p0: string): org.objectweb.asm.Type; + getReturnType(p0: java.lang.reflect.Method): org.objectweb.asm.Type; + getInternalName(p0: java.lang.Class): string; + getDescriptor(p0: java.lang.Class): string; + getConstructorDescriptor(p0: java.lang.reflect.Constructor): string; + getMethodDescriptor(p0: org.objectweb.asm.Type, p1: org.objectweb.asm.Type): string; + getMethodDescriptor(p0: java.lang.reflect.Method): string; + getArgumentCount(p0: string): number; + getArgumentsAndReturnSizes(p0: string): number; } - interface MemoryStack extends org.lwjgl.system.Pointer$Default, java.lang.AutoCloseable { - push(): org.lwjgl.system.MemoryStack; - pop(): org.lwjgl.system.MemoryStack; - getAddress(): number; + interface Type { + getElementType(): org.objectweb.asm.Type; + getArgumentTypes(): Array; + getReturnType(): org.objectweb.asm.Type; + getClassName(): string; + getInternalName(): string; + getDescriptor(): string; + getSort(): number; + getDimensions(): number; getSize(): number; - getFrameIndex(): number; - getPointerAddress(): number; - getPointer(): number; - setPointer(p0: number): void; - nmalloc(p0: number): number; - nmalloc(p0: number, p1: number): number; - ncalloc(p0: number, p1: number, p2: number): number; - malloc(p0: number, p1: number): java.nio.ByteBuffer; - malloc(p0: number): java.nio.ByteBuffer; - calloc(p0: number, p1: number): java.nio.ByteBuffer; - calloc(p0: number): java.nio.ByteBuffer; - nbyte(p0: number): number; - bytes(p0: number): java.nio.ByteBuffer; - bytes(p0: number, p1: number): java.nio.ByteBuffer; - bytes(p0: number, p1: number, p2: number): java.nio.ByteBuffer; - bytes(p0: number, p1: number, p2: number, p3: number): java.nio.ByteBuffer; - bytes(p0: number): java.nio.ByteBuffer; - mallocShort(p0: number): java.nio.ShortBuffer; - callocShort(p0: number): java.nio.ShortBuffer; - nshort(p0: number): number; - shorts(p0: number): java.nio.ShortBuffer; - shorts(p0: number, p1: number): java.nio.ShortBuffer; - shorts(p0: number, p1: number, p2: number): java.nio.ShortBuffer; - shorts(p0: number, p1: number, p2: number, p3: number): java.nio.ShortBuffer; - shorts(p0: number): java.nio.ShortBuffer; - mallocInt(p0: number): java.nio.IntBuffer; - callocInt(p0: number): java.nio.IntBuffer; - nint(p0: number): number; - ints(p0: number): java.nio.IntBuffer; - ints(p0: number, p1: number): java.nio.IntBuffer; - ints(p0: number, p1: number, p2: number): java.nio.IntBuffer; - ints(p0: number, p1: number, p2: number, p3: number): java.nio.IntBuffer; - ints(p0: number): java.nio.IntBuffer; - mallocLong(p0: number): java.nio.LongBuffer; - callocLong(p0: number): java.nio.LongBuffer; - nlong(p0: number): number; - longs(p0: number): java.nio.LongBuffer; - longs(p0: number, p1: number): java.nio.LongBuffer; - longs(p0: number, p1: number, p2: number): java.nio.LongBuffer; - longs(p0: number, p1: number, p2: number, p3: number): java.nio.LongBuffer; - longs(p0: number): java.nio.LongBuffer; - mallocCLong(p0: number): org.lwjgl.CLongBuffer; - callocCLong(p0: number): org.lwjgl.CLongBuffer; - nclong(p0: number): number; - clongs(p0: number): org.lwjgl.CLongBuffer; - clongs(p0: number, p1: number): org.lwjgl.CLongBuffer; - clongs(p0: number, p1: number, p2: number): org.lwjgl.CLongBuffer; - clongs(p0: number, p1: number, p2: number, p3: number): org.lwjgl.CLongBuffer; - clongs(p0: number): org.lwjgl.CLongBuffer; - mallocFloat(p0: number): java.nio.FloatBuffer; - callocFloat(p0: number): java.nio.FloatBuffer; - nfloat(p0: number): number; - floats(p0: number): java.nio.FloatBuffer; - floats(p0: number, p1: number): java.nio.FloatBuffer; - floats(p0: number, p1: number, p2: number): java.nio.FloatBuffer; - floats(p0: number, p1: number, p2: number, p3: number): java.nio.FloatBuffer; - floats(p0: number): java.nio.FloatBuffer; - mallocDouble(p0: number): java.nio.DoubleBuffer; - callocDouble(p0: number): java.nio.DoubleBuffer; - ndouble(p0: number): number; - doubles(p0: number): java.nio.DoubleBuffer; - doubles(p0: number, p1: number): java.nio.DoubleBuffer; - doubles(p0: number, p1: number, p2: number): java.nio.DoubleBuffer; - doubles(p0: number, p1: number, p2: number, p3: number): java.nio.DoubleBuffer; - doubles(p0: number): java.nio.DoubleBuffer; - mallocPointer(p0: number): org.lwjgl.PointerBuffer; - callocPointer(p0: number): org.lwjgl.PointerBuffer; - npointer(p0: number): number; - npointer(p0: org.lwjgl.system.Pointer): number; - npointer(p0: java.nio.Buffer): number; - pointers(p0: number): org.lwjgl.PointerBuffer; - pointers(p0: number, p1: number): org.lwjgl.PointerBuffer; - pointers(p0: number, p1: number, p2: number): org.lwjgl.PointerBuffer; - pointers(p0: number, p1: number, p2: number, p3: number): org.lwjgl.PointerBuffer; - pointers(p0: number): org.lwjgl.PointerBuffer; - pointers(p0: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; - pointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; - pointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer, p2: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; - pointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer, p2: org.lwjgl.system.Pointer, p3: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; - pointers(p0: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; - pointers(p0: java.nio.Buffer): org.lwjgl.PointerBuffer; - pointers(p0: java.nio.Buffer, p1: java.nio.Buffer): org.lwjgl.PointerBuffer; - pointers(p0: java.nio.Buffer, p1: java.nio.Buffer, p2: java.nio.Buffer): org.lwjgl.PointerBuffer; - pointers(p0: java.nio.Buffer, p1: java.nio.Buffer, p2: java.nio.Buffer, p3: java.nio.Buffer): org.lwjgl.PointerBuffer; - pointers(p0: java.nio.Buffer): org.lwjgl.PointerBuffer; - pointersOfElements(p0: org.lwjgl.system.CustomBuffer): org.lwjgl.PointerBuffer; - ASCII(p0: kotlin.CharSequence): java.nio.ByteBuffer; - ASCII(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; - nASCII(p0: kotlin.CharSequence, p1: boolean): number; - ASCIISafe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; - ASCIISafe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; - nASCIISafe(p0: kotlin.CharSequence | null | undefined, p1: boolean): number; - UTF8(p0: kotlin.CharSequence): java.nio.ByteBuffer; - UTF8(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; - nUTF8(p0: kotlin.CharSequence, p1: boolean): number; - UTF8Safe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; - UTF8Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; - nUTF8Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): number; - UTF16(p0: kotlin.CharSequence): java.nio.ByteBuffer; - UTF16(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; - nUTF16(p0: kotlin.CharSequence, p1: boolean): number; - UTF16Safe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; - UTF16Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; - nUTF16Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): number; - } - const Callback: { - Descriptor: typeof org.lwjgl.system.Callback$Descriptor; - free(p0: number): void; - get(p0: number): T; - getSafe(p0: number): T; - } - interface Callback extends org.lwjgl.system.Pointer, org.lwjgl.system.NativeResource { + getArgumentCount(): number; + getArgumentsAndReturnSizes(): number; + getOpcode(p0: number): number; } } + } + namespace lwjgl { namespace util { namespace freetype { const FT_Face: { @@ -65187,29 +60452,421 @@ declare global { nnext(p0: number): org.lwjgl.util.freetype.FT_ListNode | null | undefined; ndata(p0: number, p1: number): java.nio.ByteBuffer; } - interface FT_ListNode extends org.lwjgl.system.Struct { - prev(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; - next(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; - data(p0: number): java.nio.ByteBuffer; + interface FT_ListNode extends org.lwjgl.system.Struct { + prev(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; + next(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; + data(p0: number): java.nio.ByteBuffer; + } + const FT_ListNode$Buffer: { + new(p0: java.nio.ByteBuffer): org.lwjgl.util.freetype.FT_ListNode$Buffer; + new(p0: number, p1: number): org.lwjgl.util.freetype.FT_ListNode$Buffer; + } + interface FT_ListNode$Buffer extends org.lwjgl.system.StructBuffer { + prev(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; + next(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; + data(p0: number): java.nio.ByteBuffer; + } + const FT_List$Buffer: { + new(p0: java.nio.ByteBuffer): org.lwjgl.util.freetype.FT_List$Buffer; + new(p0: number, p1: number): org.lwjgl.util.freetype.FT_List$Buffer; + } + interface FT_List$Buffer extends org.lwjgl.system.StructBuffer { + head(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; + tail(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; + } + } + } + namespace system { + namespace libffi { + const FFICIF: { + Buffer: typeof org.lwjgl.system.libffi.FFICIF$Buffer; + SIZEOF: number; + ALIGNOF: number; + ABI: number; + NARGS: number; + ARG_TYPES: number; + RTYPE: number; + BYTES: number; + FLAGS: number; + new(p0: java.nio.ByteBuffer): org.lwjgl.system.libffi.FFICIF; + create(): org.lwjgl.system.libffi.FFICIF; + create(p0: number): org.lwjgl.system.libffi.FFICIF; + create(p0: number): org.lwjgl.system.libffi.FFICIF$Buffer; + create(p0: number, p1: number): org.lwjgl.system.libffi.FFICIF$Buffer; + malloc(): org.lwjgl.system.libffi.FFICIF; + malloc(p0: number): org.lwjgl.system.libffi.FFICIF$Buffer; + malloc(p0: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFICIF; + malloc(p0: number, p1: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFICIF$Buffer; + calloc(): org.lwjgl.system.libffi.FFICIF; + calloc(p0: number): org.lwjgl.system.libffi.FFICIF$Buffer; + calloc(p0: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFICIF; + calloc(p0: number, p1: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFICIF$Buffer; + createSafe(p0: number): org.lwjgl.system.libffi.FFICIF | null | undefined; + createSafe(p0: number, p1: number): org.lwjgl.system.libffi.FFICIF$Buffer | null | undefined; + nabi(p0: number): number; + nnargs(p0: number): number; + narg_types(p0: number): org.lwjgl.PointerBuffer; + nrtype(p0: number): org.lwjgl.system.libffi.FFIType; + nbytes(p0: number): number; + nflags(p0: number): number; + } + interface FFICIF extends org.lwjgl.system.Struct, org.lwjgl.system.NativeResource { + abi(): number; + nargs(): number; + arg_types(): org.lwjgl.PointerBuffer; + rtype(): org.lwjgl.system.libffi.FFIType; + bytes(): number; + flags(): number; + } + const FFIType: { + Buffer: typeof org.lwjgl.system.libffi.FFIType$Buffer; + SIZEOF: number; + ALIGNOF: number; + SIZE: number; + ALIGNMENT: number; + TYPE: number; + ELEMENTS: number; + new(p0: java.nio.ByteBuffer): org.lwjgl.system.libffi.FFIType; + create(): org.lwjgl.system.libffi.FFIType; + create(p0: number): org.lwjgl.system.libffi.FFIType; + create(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; + create(p0: number, p1: number): org.lwjgl.system.libffi.FFIType$Buffer; + malloc(): org.lwjgl.system.libffi.FFIType; + malloc(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; + malloc(p0: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFIType; + malloc(p0: number, p1: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFIType$Buffer; + calloc(): org.lwjgl.system.libffi.FFIType; + calloc(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; + calloc(p0: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFIType; + calloc(p0: number, p1: org.lwjgl.system.MemoryStack): org.lwjgl.system.libffi.FFIType$Buffer; + createSafe(p0: number): org.lwjgl.system.libffi.FFIType | null | undefined; + createSafe(p0: number, p1: number): org.lwjgl.system.libffi.FFIType$Buffer | null | undefined; + nsize(p0: number): number; + nsize(p0: number, p1: number): void; + nalignment(p0: number): number; + nalignment(p0: number, p1: number): void; + ntype(p0: number): number; + ntype(p0: number, p1: number): void; + nelements(p0: number, p1: number): org.lwjgl.PointerBuffer | null | undefined; + nelements(p0: number, p1: org.lwjgl.PointerBuffer | null | undefined): void; + } + interface FFIType extends org.lwjgl.system.Struct, org.lwjgl.system.NativeResource { + size(): number; + size(p0: number): org.lwjgl.system.libffi.FFIType; + alignment(): number; + alignment(p0: number): org.lwjgl.system.libffi.FFIType; + type(): number; + type(p0: number): org.lwjgl.system.libffi.FFIType; + elements(p0: number): org.lwjgl.PointerBuffer | null | undefined; + elements(p0: org.lwjgl.PointerBuffer | null | undefined): org.lwjgl.system.libffi.FFIType; + set(p0: number, p1: number, p2: number, p3: org.lwjgl.PointerBuffer | null | undefined): org.lwjgl.system.libffi.FFIType; + set(p0: org.lwjgl.system.libffi.FFIType): org.lwjgl.system.libffi.FFIType; } - const FT_ListNode$Buffer: { - new(p0: java.nio.ByteBuffer): org.lwjgl.util.freetype.FT_ListNode$Buffer; - new(p0: number, p1: number): org.lwjgl.util.freetype.FT_ListNode$Buffer; + const FFIType$Buffer: { + new(p0: java.nio.ByteBuffer): org.lwjgl.system.libffi.FFIType$Buffer; + new(p0: number, p1: number): org.lwjgl.system.libffi.FFIType$Buffer; } - interface FT_ListNode$Buffer extends org.lwjgl.system.StructBuffer { - prev(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; - next(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; - data(p0: number): java.nio.ByteBuffer; + interface FFIType$Buffer extends org.lwjgl.system.StructBuffer, org.lwjgl.system.NativeResource { + size(): number; + size(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; + alignment(): number; + alignment(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; + type(): number; + type(p0: number): org.lwjgl.system.libffi.FFIType$Buffer; + elements(p0: number): org.lwjgl.PointerBuffer | null | undefined; + elements(p0: org.lwjgl.PointerBuffer | null | undefined): org.lwjgl.system.libffi.FFIType$Buffer; } - const FT_List$Buffer: { - new(p0: java.nio.ByteBuffer): org.lwjgl.util.freetype.FT_List$Buffer; - new(p0: number, p1: number): org.lwjgl.util.freetype.FT_List$Buffer; + const FFICIF$Buffer: { + new(p0: java.nio.ByteBuffer): org.lwjgl.system.libffi.FFICIF$Buffer; + new(p0: number, p1: number): org.lwjgl.system.libffi.FFICIF$Buffer; } - interface FT_List$Buffer extends org.lwjgl.system.StructBuffer { - head(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; - tail(): org.lwjgl.util.freetype.FT_ListNode | null | undefined; + interface FFICIF$Buffer extends org.lwjgl.system.StructBuffer, org.lwjgl.system.NativeResource { + abi(): number; + nargs(): number; + arg_types(): org.lwjgl.PointerBuffer; + rtype(): org.lwjgl.system.libffi.FFIType; + bytes(): number; + flags(): number; } } + const Struct: { + validate(p0: number, p1: number, p2: number, p3: org.lwjgl.system.Struct$StructValidation): void; + validate(p0: number, p1: number, p2: number, p3: org.lwjgl.system.Struct$StructValidation): void; + } + interface Struct extends org.lwjgl.system.Pointer$Default { + sizeof(): number; + clear(): void; + free(): void; + isNull(p0: number): boolean; + } + interface Pointer$Default extends org.lwjgl.system.Pointer { + } + const Pointer: { + Default: typeof org.lwjgl.system.Pointer$Default; + POINTER_SIZE: number; + POINTER_SHIFT: number; + CLONG_SIZE: number; + CLONG_SHIFT: number; + BITS32: boolean; + BITS64: boolean; + } + interface Pointer { + address(): number; + } + interface StructBuffer extends org.lwjgl.system.CustomBuffer, kotlin.collections.MutableIterable { + get(): T; + get(p0: T): SELF; + get(p0: number): T; + get(p0: number, p1: T): SELF; + put(p0: T): SELF; + put(p0: number, p1: T): SELF; + apply(p0: unknown): SELF; + apply(p0: number, p1: unknown): SELF; + stream(): java.util.stream.Stream; + parallelStream(): java.util.stream.Stream; + } + interface CustomBuffer extends org.lwjgl.system.Pointer$Default { + mark(): SELF; + position(): number; + position(p0: number): SELF; + limit(): number; + limit(p0: number): SELF; + capacity(): number; + sizeof(): number; + address0(): number; + address(p0: number): number; + free(): void; + reset(): SELF; + clear(): SELF; + flip(): SELF; + rewind(): SELF; + remaining(): number; + hasRemaining(): boolean; + slice(): SELF; + slice(p0: number, p1: number): SELF; + duplicate(): SELF; + put(p0: SELF): SELF; + compact(): SELF; + } + interface Struct$StructValidation { + validate(p0: number): void; + (p0: number): void; + } + interface NativeResource extends java.lang.AutoCloseable { + free(): void; + } + const Callback: { + Descriptor: typeof org.lwjgl.system.Callback$Descriptor; + free(p0: number): void; + get(p0: number): T; + getSafe(p0: number): T; + } + interface Callback extends org.lwjgl.system.Pointer, org.lwjgl.system.NativeResource { + } + const Callback$Descriptor: { + new(p0: java.lang.invoke.MethodHandles$Lookup, p1: org.lwjgl.system.libffi.FFICIF): org.lwjgl.system.Callback$Descriptor; + } + interface Callback$Descriptor { + } + const MemoryStack: { + create(): org.lwjgl.system.MemoryStack; + create(p0: number): org.lwjgl.system.MemoryStack; + create(p0: java.nio.ByteBuffer): org.lwjgl.system.MemoryStack; + ncreate(p0: number, p1: number): org.lwjgl.system.MemoryStack; + stackGet(): org.lwjgl.system.MemoryStack; + stackPush(): org.lwjgl.system.MemoryStack; + stackPop(): org.lwjgl.system.MemoryStack; + nstackMalloc(p0: number): number; + nstackMalloc(p0: number, p1: number): number; + nstackCalloc(p0: number, p1: number, p2: number): number; + stackMalloc(p0: number): java.nio.ByteBuffer; + stackCalloc(p0: number): java.nio.ByteBuffer; + stackBytes(p0: number): java.nio.ByteBuffer; + stackBytes(p0: number, p1: number): java.nio.ByteBuffer; + stackBytes(p0: number, p1: number, p2: number): java.nio.ByteBuffer; + stackBytes(p0: number, p1: number, p2: number, p3: number): java.nio.ByteBuffer; + stackBytes(p0: number): java.nio.ByteBuffer; + stackMallocShort(p0: number): java.nio.ShortBuffer; + stackCallocShort(p0: number): java.nio.ShortBuffer; + stackShorts(p0: number): java.nio.ShortBuffer; + stackShorts(p0: number, p1: number): java.nio.ShortBuffer; + stackShorts(p0: number, p1: number, p2: number): java.nio.ShortBuffer; + stackShorts(p0: number, p1: number, p2: number, p3: number): java.nio.ShortBuffer; + stackShorts(p0: number): java.nio.ShortBuffer; + stackMallocInt(p0: number): java.nio.IntBuffer; + stackCallocInt(p0: number): java.nio.IntBuffer; + stackInts(p0: number): java.nio.IntBuffer; + stackInts(p0: number, p1: number): java.nio.IntBuffer; + stackInts(p0: number, p1: number, p2: number): java.nio.IntBuffer; + stackInts(p0: number, p1: number, p2: number, p3: number): java.nio.IntBuffer; + stackInts(p0: number): java.nio.IntBuffer; + stackMallocLong(p0: number): java.nio.LongBuffer; + stackCallocLong(p0: number): java.nio.LongBuffer; + stackLongs(p0: number): java.nio.LongBuffer; + stackLongs(p0: number, p1: number): java.nio.LongBuffer; + stackLongs(p0: number, p1: number, p2: number): java.nio.LongBuffer; + stackLongs(p0: number, p1: number, p2: number, p3: number): java.nio.LongBuffer; + stackLongs(p0: number): java.nio.LongBuffer; + stackMallocCLong(p0: number): org.lwjgl.CLongBuffer; + stackCallocCLong(p0: number): org.lwjgl.CLongBuffer; + stackCLongs(p0: number): org.lwjgl.CLongBuffer; + stackCLongs(p0: number, p1: number): org.lwjgl.CLongBuffer; + stackCLongs(p0: number, p1: number, p2: number): org.lwjgl.CLongBuffer; + stackCLongs(p0: number, p1: number, p2: number, p3: number): org.lwjgl.CLongBuffer; + stackCLongs(p0: number): org.lwjgl.CLongBuffer; + stackMallocFloat(p0: number): java.nio.FloatBuffer; + stackCallocFloat(p0: number): java.nio.FloatBuffer; + stackFloats(p0: number): java.nio.FloatBuffer; + stackFloats(p0: number, p1: number): java.nio.FloatBuffer; + stackFloats(p0: number, p1: number, p2: number): java.nio.FloatBuffer; + stackFloats(p0: number, p1: number, p2: number, p3: number): java.nio.FloatBuffer; + stackFloats(p0: number): java.nio.FloatBuffer; + stackMallocDouble(p0: number): java.nio.DoubleBuffer; + stackCallocDouble(p0: number): java.nio.DoubleBuffer; + stackDoubles(p0: number): java.nio.DoubleBuffer; + stackDoubles(p0: number, p1: number): java.nio.DoubleBuffer; + stackDoubles(p0: number, p1: number, p2: number): java.nio.DoubleBuffer; + stackDoubles(p0: number, p1: number, p2: number, p3: number): java.nio.DoubleBuffer; + stackDoubles(p0: number): java.nio.DoubleBuffer; + stackMallocPointer(p0: number): org.lwjgl.PointerBuffer; + stackCallocPointer(p0: number): org.lwjgl.PointerBuffer; + stackPointers(p0: number): org.lwjgl.PointerBuffer; + stackPointers(p0: number, p1: number): org.lwjgl.PointerBuffer; + stackPointers(p0: number, p1: number, p2: number): org.lwjgl.PointerBuffer; + stackPointers(p0: number, p1: number, p2: number, p3: number): org.lwjgl.PointerBuffer; + stackPointers(p0: number): org.lwjgl.PointerBuffer; + stackPointers(p0: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; + stackPointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; + stackPointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer, p2: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; + stackPointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer, p2: org.lwjgl.system.Pointer, p3: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; + stackPointers(p0: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; + stackASCII(p0: kotlin.CharSequence): java.nio.ByteBuffer; + stackASCII(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; + stackUTF8(p0: kotlin.CharSequence): java.nio.ByteBuffer; + stackUTF8(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; + stackUTF16(p0: kotlin.CharSequence): java.nio.ByteBuffer; + stackUTF16(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; + stackASCIISafe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; + stackASCIISafe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; + stackUTF8Safe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; + stackUTF8Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; + stackUTF16Safe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; + stackUTF16Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; + } + interface MemoryStack extends org.lwjgl.system.Pointer$Default, java.lang.AutoCloseable { + push(): org.lwjgl.system.MemoryStack; + pop(): org.lwjgl.system.MemoryStack; + getAddress(): number; + getSize(): number; + getFrameIndex(): number; + getPointerAddress(): number; + getPointer(): number; + setPointer(p0: number): void; + nmalloc(p0: number): number; + nmalloc(p0: number, p1: number): number; + ncalloc(p0: number, p1: number, p2: number): number; + malloc(p0: number, p1: number): java.nio.ByteBuffer; + malloc(p0: number): java.nio.ByteBuffer; + calloc(p0: number, p1: number): java.nio.ByteBuffer; + calloc(p0: number): java.nio.ByteBuffer; + nbyte(p0: number): number; + bytes(p0: number): java.nio.ByteBuffer; + bytes(p0: number, p1: number): java.nio.ByteBuffer; + bytes(p0: number, p1: number, p2: number): java.nio.ByteBuffer; + bytes(p0: number, p1: number, p2: number, p3: number): java.nio.ByteBuffer; + bytes(p0: number): java.nio.ByteBuffer; + mallocShort(p0: number): java.nio.ShortBuffer; + callocShort(p0: number): java.nio.ShortBuffer; + nshort(p0: number): number; + shorts(p0: number): java.nio.ShortBuffer; + shorts(p0: number, p1: number): java.nio.ShortBuffer; + shorts(p0: number, p1: number, p2: number): java.nio.ShortBuffer; + shorts(p0: number, p1: number, p2: number, p3: number): java.nio.ShortBuffer; + shorts(p0: number): java.nio.ShortBuffer; + mallocInt(p0: number): java.nio.IntBuffer; + callocInt(p0: number): java.nio.IntBuffer; + nint(p0: number): number; + ints(p0: number): java.nio.IntBuffer; + ints(p0: number, p1: number): java.nio.IntBuffer; + ints(p0: number, p1: number, p2: number): java.nio.IntBuffer; + ints(p0: number, p1: number, p2: number, p3: number): java.nio.IntBuffer; + ints(p0: number): java.nio.IntBuffer; + mallocLong(p0: number): java.nio.LongBuffer; + callocLong(p0: number): java.nio.LongBuffer; + nlong(p0: number): number; + longs(p0: number): java.nio.LongBuffer; + longs(p0: number, p1: number): java.nio.LongBuffer; + longs(p0: number, p1: number, p2: number): java.nio.LongBuffer; + longs(p0: number, p1: number, p2: number, p3: number): java.nio.LongBuffer; + longs(p0: number): java.nio.LongBuffer; + mallocCLong(p0: number): org.lwjgl.CLongBuffer; + callocCLong(p0: number): org.lwjgl.CLongBuffer; + nclong(p0: number): number; + clongs(p0: number): org.lwjgl.CLongBuffer; + clongs(p0: number, p1: number): org.lwjgl.CLongBuffer; + clongs(p0: number, p1: number, p2: number): org.lwjgl.CLongBuffer; + clongs(p0: number, p1: number, p2: number, p3: number): org.lwjgl.CLongBuffer; + clongs(p0: number): org.lwjgl.CLongBuffer; + mallocFloat(p0: number): java.nio.FloatBuffer; + callocFloat(p0: number): java.nio.FloatBuffer; + nfloat(p0: number): number; + floats(p0: number): java.nio.FloatBuffer; + floats(p0: number, p1: number): java.nio.FloatBuffer; + floats(p0: number, p1: number, p2: number): java.nio.FloatBuffer; + floats(p0: number, p1: number, p2: number, p3: number): java.nio.FloatBuffer; + floats(p0: number): java.nio.FloatBuffer; + mallocDouble(p0: number): java.nio.DoubleBuffer; + callocDouble(p0: number): java.nio.DoubleBuffer; + ndouble(p0: number): number; + doubles(p0: number): java.nio.DoubleBuffer; + doubles(p0: number, p1: number): java.nio.DoubleBuffer; + doubles(p0: number, p1: number, p2: number): java.nio.DoubleBuffer; + doubles(p0: number, p1: number, p2: number, p3: number): java.nio.DoubleBuffer; + doubles(p0: number): java.nio.DoubleBuffer; + mallocPointer(p0: number): org.lwjgl.PointerBuffer; + callocPointer(p0: number): org.lwjgl.PointerBuffer; + npointer(p0: number): number; + npointer(p0: org.lwjgl.system.Pointer): number; + npointer(p0: java.nio.Buffer): number; + pointers(p0: number): org.lwjgl.PointerBuffer; + pointers(p0: number, p1: number): org.lwjgl.PointerBuffer; + pointers(p0: number, p1: number, p2: number): org.lwjgl.PointerBuffer; + pointers(p0: number, p1: number, p2: number, p3: number): org.lwjgl.PointerBuffer; + pointers(p0: number): org.lwjgl.PointerBuffer; + pointers(p0: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; + pointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; + pointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer, p2: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; + pointers(p0: org.lwjgl.system.Pointer, p1: org.lwjgl.system.Pointer, p2: org.lwjgl.system.Pointer, p3: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; + pointers(p0: org.lwjgl.system.Pointer): org.lwjgl.PointerBuffer; + pointers(p0: java.nio.Buffer): org.lwjgl.PointerBuffer; + pointers(p0: java.nio.Buffer, p1: java.nio.Buffer): org.lwjgl.PointerBuffer; + pointers(p0: java.nio.Buffer, p1: java.nio.Buffer, p2: java.nio.Buffer): org.lwjgl.PointerBuffer; + pointers(p0: java.nio.Buffer, p1: java.nio.Buffer, p2: java.nio.Buffer, p3: java.nio.Buffer): org.lwjgl.PointerBuffer; + pointers(p0: java.nio.Buffer): org.lwjgl.PointerBuffer; + pointersOfElements(p0: org.lwjgl.system.CustomBuffer): org.lwjgl.PointerBuffer; + ASCII(p0: kotlin.CharSequence): java.nio.ByteBuffer; + ASCII(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; + nASCII(p0: kotlin.CharSequence, p1: boolean): number; + ASCIISafe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; + ASCIISafe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; + nASCIISafe(p0: kotlin.CharSequence | null | undefined, p1: boolean): number; + UTF8(p0: kotlin.CharSequence): java.nio.ByteBuffer; + UTF8(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; + nUTF8(p0: kotlin.CharSequence, p1: boolean): number; + UTF8Safe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; + UTF8Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; + nUTF8Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): number; + UTF16(p0: kotlin.CharSequence): java.nio.ByteBuffer; + UTF16(p0: kotlin.CharSequence, p1: boolean): java.nio.ByteBuffer; + nUTF16(p0: kotlin.CharSequence, p1: boolean): number; + UTF16Safe(p0: kotlin.CharSequence | null | undefined): java.nio.ByteBuffer | null | undefined; + UTF16Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): java.nio.ByteBuffer | null | undefined; + nUTF16Safe(p0: kotlin.CharSequence | null | undefined, p1: boolean): number; + } + interface CallbackI extends org.lwjgl.system.Pointer { + getDescriptor(): org.lwjgl.system.Callback$Descriptor; + callback(p0: number, p1: number): void; + } } namespace glfw { const GLFWVidMode$Buffer: { @@ -65330,87 +60987,6 @@ declare global { put(p0: Array, p1: number, p2: number): org.lwjgl.CLongBuffer; } } - namespace spongepowered { - namespace asm { - namespace mixin { - namespace injection { - namespace callback { - const CallbackInfo: { - new(p0: string, p1: boolean): org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - getCallInfoClassName(p0: org.objectweb.asm.Type): string; - } - interface CallbackInfo extends org.spongepowered.asm.mixin.injection.callback.Cancellable { - getId(): string; - } - interface Cancellable { - isCancellable(): boolean; - isCancelled(): boolean; - cancel(): void; - } - } - } - } - } - } - namespace objectweb { - namespace asm { - const Type: { - VOID: number; - BOOLEAN: number; - CHAR: number; - BYTE: number; - SHORT: number; - INT: number; - FLOAT: number; - LONG: number; - DOUBLE: number; - ARRAY: number; - OBJECT: number; - METHOD: number; - VOID_TYPE: org.objectweb.asm.Type; - BOOLEAN_TYPE: org.objectweb.asm.Type; - CHAR_TYPE: org.objectweb.asm.Type; - BYTE_TYPE: org.objectweb.asm.Type; - SHORT_TYPE: org.objectweb.asm.Type; - INT_TYPE: org.objectweb.asm.Type; - FLOAT_TYPE: org.objectweb.asm.Type; - LONG_TYPE: org.objectweb.asm.Type; - DOUBLE_TYPE: org.objectweb.asm.Type; - getType(p0: string): org.objectweb.asm.Type; - getType(p0: java.lang.Class): org.objectweb.asm.Type; - getType(p0: java.lang.reflect.Constructor): org.objectweb.asm.Type; - getType(p0: java.lang.reflect.Method): org.objectweb.asm.Type; - getObjectType(p0: string): org.objectweb.asm.Type; - getMethodType(p0: string): org.objectweb.asm.Type; - getMethodType(p0: org.objectweb.asm.Type, p1: org.objectweb.asm.Type): org.objectweb.asm.Type; - getArgumentTypes(p0: string): Array; - getArgumentTypes(p0: java.lang.reflect.Method): Array; - getReturnType(p0: string): org.objectweb.asm.Type; - getReturnType(p0: java.lang.reflect.Method): org.objectweb.asm.Type; - getInternalName(p0: java.lang.Class): string; - getDescriptor(p0: java.lang.Class): string; - getConstructorDescriptor(p0: java.lang.reflect.Constructor): string; - getMethodDescriptor(p0: org.objectweb.asm.Type, p1: org.objectweb.asm.Type): string; - getMethodDescriptor(p0: java.lang.reflect.Method): string; - getArgumentCount(p0: string): number; - getArgumentsAndReturnSizes(p0: string): number; - } - interface Type { - getElementType(): org.objectweb.asm.Type; - getArgumentTypes(): Array; - getReturnType(): org.objectweb.asm.Type; - getClassName(): string; - getInternalName(): string; - getDescriptor(): string; - getSort(): number; - getDimensions(): number; - getSize(): number; - getArgumentCount(): number; - getArgumentsAndReturnSizes(): number; - getOpcode(p0: number): number; - } - } - } namespace mozilla { namespace javascript { namespace debug { @@ -66816,6 +62392,3192 @@ declare global { } interface IoEvent { } + interface ChannelOutboundHandler extends io.netty.channel.ChannelHandler { + bind(p0: io.netty.channel.ChannelHandlerContext, p1: java.net.SocketAddress, p2: io.netty.channel.ChannelPromise): void; + connect(p0: io.netty.channel.ChannelHandlerContext, p1: java.net.SocketAddress, p2: java.net.SocketAddress, p3: io.netty.channel.ChannelPromise): void; + disconnect(p0: io.netty.channel.ChannelHandlerContext, p1: io.netty.channel.ChannelPromise): void; + close(p0: io.netty.channel.ChannelHandlerContext, p1: io.netty.channel.ChannelPromise): void; + deregister(p0: io.netty.channel.ChannelHandlerContext, p1: io.netty.channel.ChannelPromise): void; + read(p0: io.netty.channel.ChannelHandlerContext): void; + write(p0: io.netty.channel.ChannelHandlerContext, p1: any, p2: io.netty.channel.ChannelPromise): void; + flush(p0: io.netty.channel.ChannelHandlerContext): void; + } + const ChannelDuplexHandler: { + new(): io.netty.channel.ChannelDuplexHandler; + } + interface ChannelDuplexHandler extends io.netty.channel.ChannelInboundHandlerAdapter, io.netty.channel.ChannelOutboundHandler { + } + } + namespace handler { + namespace ssl { + const SslContext: { + defaultServerProvider(): io.netty.handler.ssl.SslProvider; + defaultClientProvider(): io.netty.handler.ssl.SslProvider; + newServerContext(p0: java.io.File, p1: java.io.File): io.netty.handler.ssl.SslContext; + newServerContext(p0: java.io.File, p1: java.io.File, p2: string): io.netty.handler.ssl.SslContext; + newServerContext(p0: java.io.File, p1: java.io.File, p2: string, p3: kotlin.collections.MutableIterable, p4: kotlin.collections.MutableIterable, p5: number, p6: number): io.netty.handler.ssl.SslContext; + newServerContext(p0: java.io.File, p1: java.io.File, p2: string, p3: kotlin.collections.MutableIterable, p4: io.netty.handler.ssl.CipherSuiteFilter, p5: io.netty.handler.ssl.ApplicationProtocolConfig, p6: number, p7: number): io.netty.handler.ssl.SslContext; + newServerContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File, p2: java.io.File): io.netty.handler.ssl.SslContext; + newServerContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File, p2: java.io.File, p3: string): io.netty.handler.ssl.SslContext; + newServerContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File, p2: java.io.File, p3: string, p4: kotlin.collections.MutableIterable, p5: kotlin.collections.MutableIterable, p6: number, p7: number): io.netty.handler.ssl.SslContext; + newServerContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File, p2: java.io.File, p3: string, p4: javax.net.ssl.TrustManagerFactory, p5: kotlin.collections.MutableIterable, p6: kotlin.collections.MutableIterable, p7: number, p8: number): io.netty.handler.ssl.SslContext; + newServerContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File, p2: java.io.File, p3: string, p4: kotlin.collections.MutableIterable, p5: io.netty.handler.ssl.CipherSuiteFilter, p6: io.netty.handler.ssl.ApplicationProtocolConfig, p7: number, p8: number): io.netty.handler.ssl.SslContext; + newServerContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File, p2: javax.net.ssl.TrustManagerFactory, p3: java.io.File, p4: java.io.File, p5: string, p6: javax.net.ssl.KeyManagerFactory, p7: kotlin.collections.MutableIterable, p8: io.netty.handler.ssl.CipherSuiteFilter, p9: io.netty.handler.ssl.ApplicationProtocolConfig, p10: number, p11: number): io.netty.handler.ssl.SslContext; + newClientContext(): io.netty.handler.ssl.SslContext; + newClientContext(p0: java.io.File): io.netty.handler.ssl.SslContext; + newClientContext(p0: javax.net.ssl.TrustManagerFactory): io.netty.handler.ssl.SslContext; + newClientContext(p0: java.io.File, p1: javax.net.ssl.TrustManagerFactory): io.netty.handler.ssl.SslContext; + newClientContext(p0: java.io.File, p1: javax.net.ssl.TrustManagerFactory, p2: kotlin.collections.MutableIterable, p3: kotlin.collections.MutableIterable, p4: number, p5: number): io.netty.handler.ssl.SslContext; + newClientContext(p0: java.io.File, p1: javax.net.ssl.TrustManagerFactory, p2: kotlin.collections.MutableIterable, p3: io.netty.handler.ssl.CipherSuiteFilter, p4: io.netty.handler.ssl.ApplicationProtocolConfig, p5: number, p6: number): io.netty.handler.ssl.SslContext; + newClientContext(p0: io.netty.handler.ssl.SslProvider): io.netty.handler.ssl.SslContext; + newClientContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File): io.netty.handler.ssl.SslContext; + newClientContext(p0: io.netty.handler.ssl.SslProvider, p1: javax.net.ssl.TrustManagerFactory): io.netty.handler.ssl.SslContext; + newClientContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File, p2: javax.net.ssl.TrustManagerFactory): io.netty.handler.ssl.SslContext; + newClientContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File, p2: javax.net.ssl.TrustManagerFactory, p3: kotlin.collections.MutableIterable, p4: kotlin.collections.MutableIterable, p5: number, p6: number): io.netty.handler.ssl.SslContext; + newClientContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File, p2: javax.net.ssl.TrustManagerFactory, p3: kotlin.collections.MutableIterable, p4: io.netty.handler.ssl.CipherSuiteFilter, p5: io.netty.handler.ssl.ApplicationProtocolConfig, p6: number, p7: number): io.netty.handler.ssl.SslContext; + newClientContext(p0: io.netty.handler.ssl.SslProvider, p1: java.io.File, p2: javax.net.ssl.TrustManagerFactory, p3: java.io.File, p4: java.io.File, p5: string, p6: javax.net.ssl.KeyManagerFactory, p7: kotlin.collections.MutableIterable, p8: io.netty.handler.ssl.CipherSuiteFilter, p9: io.netty.handler.ssl.ApplicationProtocolConfig, p10: number, p11: number): io.netty.handler.ssl.SslContext; + } + interface SslContext { + attributes(): io.netty.util.AttributeMap; + isServer(): boolean; + isClient(): boolean; + cipherSuites(): Array; + sessionCacheSize(): number; + sessionTimeout(): number; + nextProtocols(): Array; + applicationProtocolNegotiator(): io.netty.handler.ssl.ApplicationProtocolNegotiator; + newEngine(p0: io.netty.buffer.ByteBufAllocator): javax.net.ssl.SSLEngine; + newEngine(p0: io.netty.buffer.ByteBufAllocator, p1: string, p2: number): javax.net.ssl.SSLEngine; + sessionContext(): javax.net.ssl.SSLSessionContext; + newHandler(p0: io.netty.buffer.ByteBufAllocator): io.netty.handler.ssl.SslHandler; + newHandler(p0: io.netty.buffer.ByteBufAllocator, p1: java.util.concurrent.Executor): io.netty.handler.ssl.SslHandler; + newHandler(p0: io.netty.buffer.ByteBufAllocator, p1: string, p2: number): io.netty.handler.ssl.SslHandler; + newHandler(p0: io.netty.buffer.ByteBufAllocator, p1: string, p2: number, p3: java.util.concurrent.Executor): io.netty.handler.ssl.SslHandler; + } + interface ApplicationProtocolNegotiator { + protocols(): Array; + } + const SslHandler: { + new(p0: javax.net.ssl.SSLEngine): io.netty.handler.ssl.SslHandler; + new(p0: javax.net.ssl.SSLEngine, p1: boolean): io.netty.handler.ssl.SslHandler; + new(p0: javax.net.ssl.SSLEngine, p1: java.util.concurrent.Executor): io.netty.handler.ssl.SslHandler; + new(p0: javax.net.ssl.SSLEngine, p1: boolean, p2: java.util.concurrent.Executor): io.netty.handler.ssl.SslHandler; + isEncrypted(p0: io.netty.buffer.ByteBuf): boolean; + isEncrypted(p0: io.netty.buffer.ByteBuf, p1: boolean): boolean; + } + interface SslHandler extends io.netty.handler.codec.ByteToMessageDecoder, io.netty.channel.ChannelOutboundHandler { + engine(): javax.net.ssl.SSLEngine; + getHandshakeTimeoutMillis(): number; + setHandshakeTimeout(p0: number, p1: java.util.concurrent.TimeUnit): void; + setHandshakeTimeoutMillis(p0: number): void; + setWrapDataSize(p0: number): void; + getCloseNotifyTimeoutMillis(): number; + setCloseNotifyTimeout(p0: number, p1: java.util.concurrent.TimeUnit): void; + setCloseNotifyTimeoutMillis(p0: number): void; + getCloseNotifyFlushTimeoutMillis(): number; + setCloseNotifyFlushTimeout(p0: number, p1: java.util.concurrent.TimeUnit): void; + setCloseNotifyFlushTimeoutMillis(p0: number): void; + getCloseNotifyReadTimeoutMillis(): number; + setCloseNotifyReadTimeout(p0: number, p1: java.util.concurrent.TimeUnit): void; + setCloseNotifyReadTimeoutMillis(p0: number): void; + applicationProtocol(): string; + handshakeFuture(): io.netty.util.concurrent.Future; + close(): io.netty.channel.ChannelFuture; + close(p0: io.netty.channel.ChannelPromise): io.netty.channel.ChannelFuture; + closeOutbound(): io.netty.channel.ChannelFuture; + closeOutbound(p0: io.netty.channel.ChannelPromise): io.netty.channel.ChannelFuture; + sslCloseFuture(): io.netty.util.concurrent.Future; + renegotiate(): io.netty.util.concurrent.Future; + renegotiate(p0: io.netty.util.concurrent.Promise): io.netty.util.concurrent.Future; + } + const SslProvider: { + JDK: io.netty.handler.ssl.SslProvider; + OPENSSL: io.netty.handler.ssl.SslProvider; + OPENSSL_REFCNT: io.netty.handler.ssl.SslProvider; + entries: kotlin.enums.EnumEntries; + isAlpnSupported(p0: io.netty.handler.ssl.SslProvider): boolean; + isTlsv13Supported(p0: io.netty.handler.ssl.SslProvider): boolean; + isTlsv13Supported(p0: io.netty.handler.ssl.SslProvider, p1: java.security.Provider): boolean; + isOptionSupported(p0: io.netty.handler.ssl.SslProvider, p1: io.netty.handler.ssl.SslContextOption): boolean; + values(): Array; + valueOf(value: string): io.netty.handler.ssl.SslProvider; + } + interface SslProvider extends kotlin.Enum { + } + const SslContextOption: { + valueOf(p0: string): io.netty.handler.ssl.SslContextOption; + valueOf(p0: java.lang.Class, p1: string): io.netty.handler.ssl.SslContextOption; + exists(p0: string): boolean; + } + interface SslContextOption extends io.netty.util.AbstractConstant> { + validate(p0: T): void; + } + interface CipherSuiteFilter { + filterCipherSuites(p0: kotlin.collections.MutableIterable, p1: Array, p2: Set): Array; + } + const ApplicationProtocolConfig: { + SelectedListenerFailureBehavior: typeof io.netty.handler.ssl.ApplicationProtocolConfig$SelectedListenerFailureBehavior; + SelectorFailureBehavior: typeof io.netty.handler.ssl.ApplicationProtocolConfig$SelectorFailureBehavior; + Protocol: typeof io.netty.handler.ssl.ApplicationProtocolConfig$Protocol; + DISABLED: io.netty.handler.ssl.ApplicationProtocolConfig; + new(p0: io.netty.handler.ssl.ApplicationProtocolConfig$Protocol, p1: io.netty.handler.ssl.ApplicationProtocolConfig$SelectorFailureBehavior, p2: io.netty.handler.ssl.ApplicationProtocolConfig$SelectedListenerFailureBehavior, p3: kotlin.collections.MutableIterable): io.netty.handler.ssl.ApplicationProtocolConfig; + new(p0: io.netty.handler.ssl.ApplicationProtocolConfig$Protocol, p1: io.netty.handler.ssl.ApplicationProtocolConfig$SelectorFailureBehavior, p2: io.netty.handler.ssl.ApplicationProtocolConfig$SelectedListenerFailureBehavior, p3: string): io.netty.handler.ssl.ApplicationProtocolConfig; + } + interface ApplicationProtocolConfig { + supportedProtocols(): Array; + protocol(): io.netty.handler.ssl.ApplicationProtocolConfig$Protocol; + selectorFailureBehavior(): io.netty.handler.ssl.ApplicationProtocolConfig$SelectorFailureBehavior; + selectedListenerFailureBehavior(): io.netty.handler.ssl.ApplicationProtocolConfig$SelectedListenerFailureBehavior; + } + const ApplicationProtocolConfig$Protocol: { + NONE: io.netty.handler.ssl.ApplicationProtocolConfig$Protocol; + NPN: io.netty.handler.ssl.ApplicationProtocolConfig$Protocol; + ALPN: io.netty.handler.ssl.ApplicationProtocolConfig$Protocol; + NPN_AND_ALPN: io.netty.handler.ssl.ApplicationProtocolConfig$Protocol; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.netty.handler.ssl.ApplicationProtocolConfig$Protocol; + } + interface ApplicationProtocolConfig$Protocol extends kotlin.Enum { + } + const ApplicationProtocolConfig$SelectorFailureBehavior: { + FATAL_ALERT: io.netty.handler.ssl.ApplicationProtocolConfig$SelectorFailureBehavior; + NO_ADVERTISE: io.netty.handler.ssl.ApplicationProtocolConfig$SelectorFailureBehavior; + CHOOSE_MY_LAST_PROTOCOL: io.netty.handler.ssl.ApplicationProtocolConfig$SelectorFailureBehavior; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.netty.handler.ssl.ApplicationProtocolConfig$SelectorFailureBehavior; + } + interface ApplicationProtocolConfig$SelectorFailureBehavior extends kotlin.Enum { + } + const ApplicationProtocolConfig$SelectedListenerFailureBehavior: { + ACCEPT: io.netty.handler.ssl.ApplicationProtocolConfig$SelectedListenerFailureBehavior; + FATAL_ALERT: io.netty.handler.ssl.ApplicationProtocolConfig$SelectedListenerFailureBehavior; + CHOOSE_MY_LAST_PROTOCOL: io.netty.handler.ssl.ApplicationProtocolConfig$SelectedListenerFailureBehavior; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.netty.handler.ssl.ApplicationProtocolConfig$SelectedListenerFailureBehavior; + } + interface ApplicationProtocolConfig$SelectedListenerFailureBehavior extends kotlin.Enum { + } + } + namespace codec { + const ByteToMessageDecoder: { + MERGE_CUMULATOR: io.netty.handler.codec.ByteToMessageDecoder$Cumulator; + COMPOSITE_CUMULATOR: io.netty.handler.codec.ByteToMessageDecoder$Cumulator; + } + interface ByteToMessageDecoder extends io.netty.channel.ChannelInboundHandlerAdapter { + setSingleDecode(p0: boolean): void; + isSingleDecode(): boolean; + setCumulator(p0: io.netty.handler.codec.ByteToMessageDecoder$Cumulator): void; + setDiscardAfterReads(p0: number): void; + } + interface ByteToMessageDecoder$Cumulator { + cumulate(p0: io.netty.buffer.ByteBufAllocator, p1: io.netty.buffer.ByteBuf, p2: io.netty.buffer.ByteBuf): io.netty.buffer.ByteBuf; + } + } + } + } + namespace github { + namespace humbleui { + namespace skija { + namespace impl { + const Managed: { + CleanerThunk: typeof io.github.humbleui.skija.impl.Managed$CleanerThunk; + new(p0: number, p1: number): io.github.humbleui.skija.impl.Managed; + new(p0: number, p1: number, p2: boolean): io.github.humbleui.skija.impl.Managed; + _nInvokeFinalizer(p0: number, p1: number): void; + } + interface Managed extends io.github.humbleui.skija.impl.Native, java.lang.AutoCloseable { + _cleanable: io.github.humbleui.skija.impl.Cleanable; + isClosed(): boolean; + } + const Native: { + new(p0: number): io.github.humbleui.skija.impl.Native; + getPtr(p0: io.github.humbleui.skija.impl.Native): number; + } + interface Native { + _ptr: number; + _nativeEquals(p0: io.github.humbleui.skija.impl.Native): boolean; + } + const Cleanable: { + register(p0: any, p1: java.lang.Runnable): io.github.humbleui.skija.impl.Cleanable; + } + interface Cleanable { + clean(): void; + } + const Managed$CleanerThunk: { + new(p0: string, p1: number, p2: number): io.github.humbleui.skija.impl.Managed$CleanerThunk; + } + interface Managed$CleanerThunk extends java.lang.Runnable { + _className: string; + _ptr: number; + _finalizerPtr: number; + } + const RefCnt: { + _FinalizerHolder: typeof io.github.humbleui.skija.impl.RefCnt$_FinalizerHolder; + _nGetFinalizer(): number; + _nGetRefCount(p0: number): number; + } + interface RefCnt extends io.github.humbleui.skija.impl.Managed { + getRefCount(): number; + } + const RefCnt$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.impl.RefCnt$_FinalizerHolder; + } + interface RefCnt$_FinalizerHolder { + } + } + namespace shaper { + const ShapingOptions: { + DEFAULT: io.github.humbleui.skija.shaper.ShapingOptions; + new(p0: io.github.humbleui.skija.FontMgr | null | undefined, p1: Array, p2: boolean, p3: boolean, p4: boolean): io.github.humbleui.skija.shaper.ShapingOptions; + } + interface ShapingOptions { + _fontMgr: io.github.humbleui.skija.FontMgr | null | undefined; + _features: Array; + _leftToRight: boolean; + _approximateSpaces: boolean; + _approximatePunctuation: boolean; + withFeatures(p0: Array): io.github.humbleui.skija.shaper.ShapingOptions; + withFeatures(p0: string | null | undefined): io.github.humbleui.skija.shaper.ShapingOptions; + getFontMgr(): io.github.humbleui.skija.FontMgr | null | undefined; + getFeatures(): Array; + isLeftToRight(): boolean; + isApproximateSpaces(): boolean; + isApproximatePunctuation(): boolean; + withFontMgr(p0: io.github.humbleui.skija.FontMgr | null | undefined): io.github.humbleui.skija.shaper.ShapingOptions; + withLeftToRight(p0: boolean): io.github.humbleui.skija.shaper.ShapingOptions; + withApproximateSpaces(p0: boolean): io.github.humbleui.skija.shaper.ShapingOptions; + withApproximatePunctuation(p0: boolean): io.github.humbleui.skija.shaper.ShapingOptions; + } + } + const Canvas: { + _FinalizerHolder: typeof io.github.humbleui.skija.Canvas$_FinalizerHolder; + new(p0: number, p1: boolean, p2: any): io.github.humbleui.skija.Canvas; + new(p0: io.github.humbleui.skija.Bitmap): io.github.humbleui.skija.Canvas; + new(p0: io.github.humbleui.skija.Bitmap, p1: io.github.humbleui.skija.SurfaceProps): io.github.humbleui.skija.Canvas; + _nGetFinalizer(): number; + _nMakeFromBitmap(p0: number, p1: number, p2: number): number; + _nGetBaseProps(p0: number): io.github.humbleui.skija.SurfaceProps; + _nGetTopProps(p0: number): io.github.humbleui.skija.SurfaceProps; + _nGetSurface(p0: number): number; + _nDrawPoint(p0: number, p1: number, p2: number, p3: number): void; + _nDrawPoints(p0: number, p1: number, p2: kotlin.FloatArray, p3: number): void; + _nDrawLine(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; + _nDrawArc(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: boolean, p8: number): void; + _nDrawRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; + _nDrawOval(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; + _nDrawRRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: kotlin.FloatArray, p6: number): void; + _nQuickReject(p0: number, p1: number, p2: number, p3: number, p4: number): boolean; + _nQuickRejectPath(p0: number, p1: number): boolean; + _nDrawDRRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: kotlin.FloatArray, p6: number, p7: number, p8: number, p9: number, p10: kotlin.FloatArray, p11: number): void; + _nDrawPath(p0: number, p1: number, p2: number): void; + _nDrawImageRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number, p12: boolean): void; + _nDrawImageNine(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number): void; + _nDrawRegion(p0: number, p1: number, p2: number): void; + _nDrawString(p0: number, p1: string, p2: number, p3: number, p4: number, p5: number): void; + _nDrawTextBlob(p0: number, p1: number, p2: number, p3: number, p4: number): void; + _nDrawPicture(p0: number, p1: number, p2: kotlin.FloatArray, p3: number): void; + _nDrawVertices(p0: number, p1: number, p2: kotlin.FloatArray, p3: Array, p4: kotlin.FloatArray, p5: Array, p6: number, p7: number): void; + _nDrawPatch(p0: number, p1: kotlin.FloatArray, p2: Array, p3: kotlin.FloatArray, p4: number, p5: number): void; + _nDrawDrawable(p0: number, p1: number, p2: kotlin.FloatArray): void; + _nDrawColor(p0: number, p1: number, p2: number): void; + _nDrawColor4f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; + _nClear(p0: number, p1: number): void; + _nDrawPaint(p0: number, p1: number): void; + _nSetMatrix(p0: number, p1: kotlin.FloatArray): void; + _nSetMatrix44(p0: number, p1: kotlin.FloatArray): void; + _nGetLocalToDevice(p0: number): kotlin.FloatArray; + _nResetMatrix(p0: number): void; + _nClipRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean): void; + _nClipRRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: kotlin.FloatArray, p6: number, p7: boolean): void; + _nClipPath(p0: number, p1: number, p2: number, p3: boolean): void; + _nClipRegion(p0: number, p1: number, p2: number): void; + _nConcat(p0: number, p1: kotlin.FloatArray): void; + _nConcat44(p0: number, p1: kotlin.FloatArray): void; + _nReadPixels(p0: number, p1: number, p2: number, p3: number): boolean; + _nWritePixels(p0: number, p1: number, p2: number, p3: number): boolean; + _nSave(p0: number): number; + _nSaveLayer(p0: number, p1: number): number; + _nSaveLayerRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nSaveLayerAlpha(p0: number, p1: number): number; + _nSaveLayerAlphaRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nSaveLayerRec(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nSaveLayerRecRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): number; + _nGetSaveCount(p0: number): number; + _nRestore(p0: number): void; + _nRestoreToCount(p0: number, p1: number): void; + } + interface Canvas extends io.github.humbleui.skija.impl.Managed { + _owner: any; + getBaseProps(): io.github.humbleui.skija.SurfaceProps; + getTopProps(): io.github.humbleui.skija.SurfaceProps; + getSurface(): io.github.humbleui.skija.Surface | null | undefined; + drawPoint(p0: number, p1: number, p2: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawPoints(p0: Array, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawPoints(p0: kotlin.FloatArray, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawLines(p0: Array, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawLines(p0: kotlin.FloatArray, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawPolygon(p0: Array, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawPolygon(p0: kotlin.FloatArray, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawLine(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawArc(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean, p7: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawRect(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawOval(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawCircle(p0: number, p1: number, p2: number, p3: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawRRect(p0: io.github.humbleui.types.RRect, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + quickReject(p0: io.github.humbleui.types.Rect): boolean; + quickReject(p0: io.github.humbleui.skija.Path): boolean; + drawDRRect(p0: io.github.humbleui.types.RRect, p1: io.github.humbleui.types.RRect, p2: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawRectShadow(p0: io.github.humbleui.types.Rect, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.skija.Canvas; + drawRectShadow(p0: io.github.humbleui.types.Rect, p1: number, p2: number, p3: number, p4: number, p5: number): io.github.humbleui.skija.Canvas; + drawRectShadowNoclip(p0: io.github.humbleui.types.Rect, p1: number, p2: number, p3: number, p4: number, p5: number): io.github.humbleui.skija.Canvas; + drawPath(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawPathOnce(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawImage(p0: io.github.humbleui.skija.Image, p1: number, p2: number): io.github.humbleui.skija.Canvas; + drawImage(p0: io.github.humbleui.skija.Image, p1: number, p2: number, p3: io.github.humbleui.skija.Paint | null | undefined): io.github.humbleui.skija.Canvas; + drawImageRect(p0: io.github.humbleui.skija.Image, p1: io.github.humbleui.types.Rect): io.github.humbleui.skija.Canvas; + drawImageRect(p0: io.github.humbleui.skija.Image, p1: io.github.humbleui.types.Rect, p2: io.github.humbleui.skija.Paint | null | undefined): io.github.humbleui.skija.Canvas; + drawImageRect(p0: io.github.humbleui.skija.Image, p1: io.github.humbleui.types.Rect, p2: io.github.humbleui.types.Rect): io.github.humbleui.skija.Canvas; + drawImageRect(p0: io.github.humbleui.skija.Image, p1: io.github.humbleui.types.Rect, p2: io.github.humbleui.types.Rect, p3: io.github.humbleui.skija.Paint | null | undefined): io.github.humbleui.skija.Canvas; + drawImageRect(p0: io.github.humbleui.skija.Image, p1: io.github.humbleui.types.Rect, p2: io.github.humbleui.types.Rect, p3: io.github.humbleui.skija.Paint | null | undefined, p4: boolean): io.github.humbleui.skija.Canvas; + drawImageRect(p0: io.github.humbleui.skija.Image, p1: io.github.humbleui.types.Rect, p2: io.github.humbleui.types.Rect, p3: io.github.humbleui.skija.SamplingMode, p4: io.github.humbleui.skija.Paint | null | undefined, p5: boolean): io.github.humbleui.skija.Canvas; + drawImageNine(p0: io.github.humbleui.skija.Image, p1: io.github.humbleui.types.IRect, p2: io.github.humbleui.types.Rect, p3: io.github.humbleui.skija.FilterMode, p4: io.github.humbleui.skija.Paint | null | undefined): io.github.humbleui.skija.Canvas; + drawRegion(p0: io.github.humbleui.skija.Region, p1: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawString(p0: string, p1: number, p2: number, p3: io.github.humbleui.skija.Font, p4: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawTextBlob(p0: io.github.humbleui.skija.TextBlob, p1: number, p2: number, p3: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawTextLine(p0: io.github.humbleui.skija.TextLine, p1: number, p2: number, p3: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawPicture(p0: io.github.humbleui.skija.Picture): io.github.humbleui.skija.Canvas; + drawPicture(p0: io.github.humbleui.skija.Picture, p1: io.github.humbleui.skija.Matrix33 | null | undefined, p2: io.github.humbleui.skija.Paint | null | undefined): io.github.humbleui.skija.Canvas; + drawTriangles(p0: Array, p1: Array, p2: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawTriangles(p0: Array, p1: Array, p2: Array, p3: Array, p4: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawTriangles(p0: Array, p1: Array, p2: Array, p3: Array, p4: io.github.humbleui.skija.BlendMode, p5: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawTriangleStrip(p0: Array, p1: Array, p2: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawTriangleStrip(p0: Array, p1: Array, p2: Array, p3: Array, p4: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawTriangleStrip(p0: Array, p1: Array, p2: Array, p3: Array, p4: io.github.humbleui.skija.BlendMode, p5: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawTriangleFan(p0: Array, p1: Array, p2: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawTriangleFan(p0: Array, p1: Array, p2: Array, p3: Array, p4: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawTriangleFan(p0: Array, p1: Array, p2: Array, p3: Array, p4: io.github.humbleui.skija.BlendMode, p5: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawPatch(p0: Array, p1: Array, p2: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawPatch(p0: Array, p1: Array, p2: Array, p3: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawPatch(p0: Array, p1: Array, p2: Array, p3: io.github.humbleui.skija.BlendMode, p4: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + drawDrawable(p0: io.github.humbleui.skija.Drawable): io.github.humbleui.skija.Canvas; + drawDrawable(p0: io.github.humbleui.skija.Drawable, p1: number, p2: number): io.github.humbleui.skija.Canvas; + drawDrawable(p0: io.github.humbleui.skija.Drawable, p1: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Canvas; + drawColor(p0: number): io.github.humbleui.skija.Canvas; + drawColor(p0: number, p1: io.github.humbleui.skija.BlendMode): io.github.humbleui.skija.Canvas; + drawColor(p0: io.github.humbleui.skija.Color4f): io.github.humbleui.skija.Canvas; + drawColor(p0: io.github.humbleui.skija.Color4f, p1: io.github.humbleui.skija.BlendMode): io.github.humbleui.skija.Canvas; + clear(p0: number): io.github.humbleui.skija.Canvas; + drawPaint(p0: io.github.humbleui.skija.Paint): io.github.humbleui.skija.Canvas; + setMatrix(p0: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.Canvas; + setMatrix(p0: io.github.humbleui.skija.Matrix44): io.github.humbleui.skija.Canvas; + resetMatrix(): io.github.humbleui.skija.Canvas; + getLocalToDevice(): io.github.humbleui.skija.Matrix44; + getLocalToDeviceAsMatrix33(): io.github.humbleui.skija.Matrix33; + clipRect(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.ClipMode, p2: boolean): io.github.humbleui.skija.Canvas; + clipRect(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.ClipMode): io.github.humbleui.skija.Canvas; + clipRect(p0: io.github.humbleui.types.Rect, p1: boolean): io.github.humbleui.skija.Canvas; + clipRect(p0: io.github.humbleui.types.Rect): io.github.humbleui.skija.Canvas; + clipRRect(p0: io.github.humbleui.types.RRect, p1: io.github.humbleui.skija.ClipMode, p2: boolean): io.github.humbleui.skija.Canvas; + clipRRect(p0: io.github.humbleui.types.RRect, p1: io.github.humbleui.skija.ClipMode): io.github.humbleui.skija.Canvas; + clipRRect(p0: io.github.humbleui.types.RRect, p1: boolean): io.github.humbleui.skija.Canvas; + clipRRect(p0: io.github.humbleui.types.RRect): io.github.humbleui.skija.Canvas; + clipPath(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.skija.ClipMode, p2: boolean): io.github.humbleui.skija.Canvas; + clipPath(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.skija.ClipMode): io.github.humbleui.skija.Canvas; + clipPath(p0: io.github.humbleui.skija.Path, p1: boolean): io.github.humbleui.skija.Canvas; + clipPath(p0: io.github.humbleui.skija.Path): io.github.humbleui.skija.Canvas; + clipRegion(p0: io.github.humbleui.skija.Region, p1: io.github.humbleui.skija.ClipMode): io.github.humbleui.skija.Canvas; + clipRegion(p0: io.github.humbleui.skija.Region): io.github.humbleui.skija.Canvas; + translate(p0: number, p1: number): io.github.humbleui.skija.Canvas; + scale(p0: number, p1: number): io.github.humbleui.skija.Canvas; + rotate(p0: number): io.github.humbleui.skija.Canvas; + skew(p0: number, p1: number): io.github.humbleui.skija.Canvas; + concat(p0: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.Canvas; + concat(p0: io.github.humbleui.skija.Matrix44): io.github.humbleui.skija.Canvas; + readPixels(p0: io.github.humbleui.skija.Bitmap, p1: number, p2: number): boolean; + writePixels(p0: io.github.humbleui.skija.Bitmap, p1: number, p2: number): boolean; + save(): number; + saveLayer(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.skija.Paint | null | undefined): number; + saveLayer(p0: io.github.humbleui.types.Rect | null | undefined, p1: io.github.humbleui.skija.Paint | null | undefined): number; + saveLayer(p0: io.github.humbleui.skija.SaveLayerRec): number; + saveLayerAlpha(p0: io.github.humbleui.types.Rect | null | undefined, p1: number): number; + getSaveCount(): number; + restore(): io.github.humbleui.skija.Canvas; + restoreToCount(p0: number): io.github.humbleui.skija.Canvas; + invalidate(): void; + } + const SurfaceProps: { + new(p0: boolean, p1: number): io.github.humbleui.skija.SurfaceProps; + new(): io.github.humbleui.skija.SurfaceProps; + new(p0: io.github.humbleui.skija.PixelGeometry): io.github.humbleui.skija.SurfaceProps; + new(p0: boolean, p1: io.github.humbleui.skija.PixelGeometry): io.github.humbleui.skija.SurfaceProps; + } + interface SurfaceProps { + _deviceIndependentFonts: boolean; + _pixelGeometry: io.github.humbleui.skija.PixelGeometry; + _getFlags(): number; + _getPixelGeometryOrdinal(): number; + isDeviceIndependentFonts(): boolean; + getPixelGeometry(): io.github.humbleui.skija.PixelGeometry; + withDeviceIndependentFonts(p0: boolean): io.github.humbleui.skija.SurfaceProps; + withPixelGeometry(p0: io.github.humbleui.skija.PixelGeometry): io.github.humbleui.skija.SurfaceProps; + } + const PixelGeometry: { + UNKNOWN: io.github.humbleui.skija.PixelGeometry; + RGB_H: io.github.humbleui.skija.PixelGeometry; + BGR_H: io.github.humbleui.skija.PixelGeometry; + RGB_V: io.github.humbleui.skija.PixelGeometry; + BGR_V: io.github.humbleui.skija.PixelGeometry; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.PixelGeometry; + } + interface PixelGeometry extends kotlin.Enum { + } + const Surface: { + new(p0: number): io.github.humbleui.skija.Surface; + new(p0: number, p1: io.github.humbleui.skija.DirectContext): io.github.humbleui.skija.Surface; + new(p0: number, p1: io.github.humbleui.skija.DirectContext, p2: io.github.humbleui.skija.BackendRenderTarget): io.github.humbleui.skija.Surface; + makeRasterDirect(p0: io.github.humbleui.skija.ImageInfo, p1: number, p2: number): io.github.humbleui.skija.Surface; + makeRasterDirect(p0: io.github.humbleui.skija.ImageInfo, p1: number, p2: number, p3: io.github.humbleui.skija.SurfaceProps | null | undefined): io.github.humbleui.skija.Surface; + makeRasterDirect(p0: io.github.humbleui.skija.Pixmap): io.github.humbleui.skija.Surface; + makeRasterDirect(p0: io.github.humbleui.skija.Pixmap, p1: io.github.humbleui.skija.SurfaceProps | null | undefined): io.github.humbleui.skija.Surface; + wrapPixels(p0: io.github.humbleui.skija.ImageInfo, p1: number, p2: number): io.github.humbleui.skija.Surface; + wrapPixels(p0: io.github.humbleui.skija.ImageInfo, p1: number, p2: number, p3: io.github.humbleui.skija.SurfaceProps | null | undefined): io.github.humbleui.skija.Surface; + wrapPixels(p0: io.github.humbleui.skija.Pixmap): io.github.humbleui.skija.Surface; + wrapPixels(p0: io.github.humbleui.skija.Pixmap, p1: io.github.humbleui.skija.SurfaceProps | null | undefined): io.github.humbleui.skija.Surface; + makeRaster(p0: io.github.humbleui.skija.ImageInfo): io.github.humbleui.skija.Surface; + makeRaster(p0: io.github.humbleui.skija.ImageInfo, p1: number): io.github.humbleui.skija.Surface; + makeRaster(p0: io.github.humbleui.skija.ImageInfo, p1: number, p2: io.github.humbleui.skija.SurfaceProps | null | undefined): io.github.humbleui.skija.Surface; + makeFromBackendRenderTarget(p0: io.github.humbleui.skija.DirectContext, p1: io.github.humbleui.skija.BackendRenderTarget, p2: io.github.humbleui.skija.SurfaceOrigin, p3: io.github.humbleui.skija.ColorType, p4: io.github.humbleui.skija.ColorSpace): io.github.humbleui.skija.Surface; + makeFromBackendRenderTarget(p0: io.github.humbleui.skija.DirectContext, p1: io.github.humbleui.skija.BackendRenderTarget, p2: io.github.humbleui.skija.SurfaceOrigin, p3: io.github.humbleui.skija.ColorType, p4: io.github.humbleui.skija.ColorSpace, p5: io.github.humbleui.skija.SurfaceProps): io.github.humbleui.skija.Surface; + wrapBackendRenderTarget(p0: io.github.humbleui.skija.DirectContext, p1: io.github.humbleui.skija.BackendRenderTarget, p2: io.github.humbleui.skija.SurfaceOrigin, p3: io.github.humbleui.skija.ColorType, p4: io.github.humbleui.skija.ColorSpace | null | undefined): io.github.humbleui.skija.Surface; + wrapBackendRenderTarget(p0: io.github.humbleui.skija.DirectContext, p1: io.github.humbleui.skija.BackendRenderTarget, p2: io.github.humbleui.skija.SurfaceOrigin, p3: io.github.humbleui.skija.ColorType, p4: io.github.humbleui.skija.ColorSpace | null | undefined, p5: io.github.humbleui.skija.SurfaceProps | null | undefined): io.github.humbleui.skija.Surface; + makeFromMTKView(p0: io.github.humbleui.skija.DirectContext, p1: number, p2: io.github.humbleui.skija.SurfaceOrigin, p3: number, p4: io.github.humbleui.skija.ColorType, p5: io.github.humbleui.skija.ColorSpace | null | undefined, p6: io.github.humbleui.skija.SurfaceProps | null | undefined): io.github.humbleui.skija.Surface; + wrapMTKView(p0: io.github.humbleui.skija.DirectContext, p1: number, p2: io.github.humbleui.skija.SurfaceOrigin, p3: number, p4: io.github.humbleui.skija.ColorType, p5: io.github.humbleui.skija.ColorSpace | null | undefined, p6: io.github.humbleui.skija.SurfaceProps | null | undefined): io.github.humbleui.skija.Surface; + makeRasterN32Premul(p0: number, p1: number): io.github.humbleui.skija.Surface; + makeRenderTarget(p0: io.github.humbleui.skija.DirectContext, p1: boolean, p2: io.github.humbleui.skija.ImageInfo): io.github.humbleui.skija.Surface; + makeRenderTarget(p0: io.github.humbleui.skija.DirectContext, p1: boolean, p2: io.github.humbleui.skija.ImageInfo, p3: number, p4: io.github.humbleui.skija.SurfaceProps | null | undefined): io.github.humbleui.skija.Surface; + makeRenderTarget(p0: io.github.humbleui.skija.DirectContext, p1: boolean, p2: io.github.humbleui.skija.ImageInfo, p3: number, p4: io.github.humbleui.skija.SurfaceOrigin, p5: io.github.humbleui.skija.SurfaceProps | null | undefined): io.github.humbleui.skija.Surface; + makeRenderTarget(p0: io.github.humbleui.skija.DirectContext, p1: boolean, p2: io.github.humbleui.skija.ImageInfo, p3: number, p4: io.github.humbleui.skija.SurfaceOrigin, p5: io.github.humbleui.skija.SurfaceProps | null | undefined, p6: boolean): io.github.humbleui.skija.Surface; + makeNull(p0: number, p1: number): io.github.humbleui.skija.Surface; + _nWrapPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.skija.SurfaceProps): number; + _nWrapPixelsPixmap(p0: number, p1: io.github.humbleui.skija.SurfaceProps): number; + _nMakeRaster(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.skija.SurfaceProps): number; + _nWrapBackendRenderTarget(p0: number, p1: number, p2: number, p3: number, p4: number, p5: io.github.humbleui.skija.SurfaceProps): number; + _nWrapMTKView(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.skija.SurfaceProps): number; + _nMakeRenderTarget(p0: number, p1: boolean, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: io.github.humbleui.skija.SurfaceProps, p10: boolean): number; + _nMakeNull(p0: number, p1: number): number; + _nGetWidth(p0: number): number; + _nGetHeight(p0: number): number; + _nGetImageInfo(p0: number): io.github.humbleui.skija.ImageInfo; + _nGenerationId(p0: number): number; + _nNotifyContentWillChange(p0: number, p1: number): void; + _nGetRecordingContext(p0: number): number; + _nGetCanvas(p0: number): number; + _nMakeSurfaceI(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nMakeSurface(p0: number, p1: number, p2: number): number; + _nMakeImageSnapshot(p0: number): number; + _nMakeImageSnapshotR(p0: number, p1: number, p2: number, p3: number, p4: number): number; + _nDraw(p0: number, p1: number, p2: number, p3: number, p4: number): void; + _nPeekPixels(p0: number, p1: number): boolean; + _nReadPixelsToPixmap(p0: number, p1: number, p2: number, p3: number): boolean; + _nReadPixels(p0: number, p1: number, p2: number, p3: number): boolean; + _nWritePixelsFromPixmap(p0: number, p1: number, p2: number, p3: number): void; + _nWritePixels(p0: number, p1: number, p2: number, p3: number): void; + _nUnique(p0: number): boolean; + } + interface Surface extends io.github.humbleui.skija.impl.RefCnt { + _canvas: io.github.humbleui.skija.Canvas; + _context: io.github.humbleui.skija.DirectContext; + _renderTarget: io.github.humbleui.skija.BackendRenderTarget; + getWidth(): number; + getHeight(): number; + getImageInfo(): io.github.humbleui.skija.ImageInfo; + getGenerationId(): number; + notifyContentWillChange(p0: io.github.humbleui.skija.ContentChangeMode): void; + getRecordingContext(): io.github.humbleui.skija.DirectContext | null | undefined; + getCanvas(): io.github.humbleui.skija.Canvas; + makeSurface(p0: io.github.humbleui.skija.ImageInfo): io.github.humbleui.skija.Surface | null | undefined; + makeSurface(p0: number, p1: number): io.github.humbleui.skija.Surface | null | undefined; + makeImageSnapshot(): io.github.humbleui.skija.Image; + makeImageSnapshot(p0: io.github.humbleui.types.IRect): io.github.humbleui.skija.Image | null | undefined; + draw(p0: io.github.humbleui.skija.Canvas, p1: number, p2: number, p3: io.github.humbleui.skija.Paint): void; + peekPixels(p0: io.github.humbleui.skija.Pixmap): boolean; + readPixels(p0: io.github.humbleui.skija.Pixmap, p1: number, p2: number): boolean; + readPixels(p0: io.github.humbleui.skija.Bitmap, p1: number, p2: number): boolean; + writePixels(p0: io.github.humbleui.skija.Pixmap, p1: number, p2: number): void; + writePixels(p0: io.github.humbleui.skija.Bitmap, p1: number, p2: number): void; + isUnique(): boolean; + } + const DirectContext: { + new(p0: number): io.github.humbleui.skija.DirectContext; + makeGL(): io.github.humbleui.skija.DirectContext; + makeMetal(p0: number, p1: number): io.github.humbleui.skija.DirectContext; + makeDirect3D(p0: number, p1: number, p2: number): io.github.humbleui.skija.DirectContext; + makeVulkan(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): io.github.humbleui.skija.DirectContext; + _nMakeGL(): number; + _nMakeMetal(p0: number, p1: number): number; + _nMakeDirect3D(p0: number, p1: number, p2: number): number; + _nMakeVulkan(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): number; + _nFlush(p0: number): void; + _nSubmit(p0: number, p1: boolean): boolean; + _nFlushAndSubmit(p0: number, p1: boolean): void; + _nFlushSurface(p0: number, p1: number): void; + _nFlushAndSubmitSurface(p0: number, p1: number, p2: boolean): void; + _nReset(p0: number, p1: number): void; + _nAbandon(p0: number): void; + } + interface DirectContext extends io.github.humbleui.skija.impl.RefCnt { + flush(): io.github.humbleui.skija.DirectContext; + flush(p0: io.github.humbleui.skija.Surface): io.github.humbleui.skija.DirectContext; + submit(): boolean; + submit(p0: boolean): boolean; + flushAndSubmit(p0: boolean): io.github.humbleui.skija.DirectContext; + flushAndSubmit(p0: io.github.humbleui.skija.Surface): io.github.humbleui.skija.DirectContext; + flushAndSubmit(p0: io.github.humbleui.skija.Surface, p1: boolean): io.github.humbleui.skija.DirectContext; + resetAll(): io.github.humbleui.skija.DirectContext; + resetGLAll(): io.github.humbleui.skija.DirectContext; + reset(p0: io.github.humbleui.skija.BackendState): io.github.humbleui.skija.DirectContext; + abandon(): void; + } + const BackendState: { + GL_RENDER_TARGET: io.github.humbleui.skija.BackendState; + GL_TEXTURE_BINDING: io.github.humbleui.skija.BackendState; + GL_VIEW: io.github.humbleui.skija.BackendState; + GL_BLEND: io.github.humbleui.skija.BackendState; + GL_MSAA_ENABLE: io.github.humbleui.skija.BackendState; + GL_VERTEX: io.github.humbleui.skija.BackendState; + GL_STENCIL: io.github.humbleui.skija.BackendState; + GL_PIXEL_STORE: io.github.humbleui.skija.BackendState; + GL_PROGRAM: io.github.humbleui.skija.BackendState; + GL_FIXED_FUNCTION: io.github.humbleui.skija.BackendState; + GL_MISC: io.github.humbleui.skija.BackendState; + GL_ALL: io.github.humbleui.skija.BackendState; + ALL: io.github.humbleui.skija.BackendState; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.BackendState; + } + interface BackendState extends kotlin.Enum { + _value: number; + getValue(): number; + } + const BackendRenderTarget: { + _FinalizerHolder: typeof io.github.humbleui.skija.BackendRenderTarget$_FinalizerHolder; + new(p0: number): io.github.humbleui.skija.BackendRenderTarget; + makeGL(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): io.github.humbleui.skija.BackendRenderTarget; + makeMetal(p0: number, p1: number, p2: number): io.github.humbleui.skija.BackendRenderTarget; + makeDirect3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): io.github.humbleui.skija.BackendRenderTarget; + makeVulkan(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): io.github.humbleui.skija.BackendRenderTarget; + _nGetFinalizer(): number; + _nMakeGL(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nMakeMetal(p0: number, p1: number, p2: number): number; + _nMakeDirect3D(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nMakeVulkan(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): number; + } + interface BackendRenderTarget extends io.github.humbleui.skija.impl.Managed { + } + const BackendRenderTarget$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.BackendRenderTarget$_FinalizerHolder; + } + interface BackendRenderTarget$_FinalizerHolder { + } + const ImageInfo: { + DEFAULT: io.github.humbleui.skija.ImageInfo; + new(p0: number, p1: number, p2: io.github.humbleui.skija.ColorType, p3: io.github.humbleui.skija.ColorAlphaType): io.github.humbleui.skija.ImageInfo; + new(p0: number, p1: number, p2: io.github.humbleui.skija.ColorType, p3: io.github.humbleui.skija.ColorAlphaType, p4: io.github.humbleui.skija.ColorSpace | null | undefined): io.github.humbleui.skija.ImageInfo; + new(p0: number, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.skija.ImageInfo; + new(p0: io.github.humbleui.skija.ColorInfo, p1: number, p2: number): io.github.humbleui.skija.ImageInfo; + makeN32(p0: number, p1: number, p2: io.github.humbleui.skija.ColorAlphaType): io.github.humbleui.skija.ImageInfo; + makeN32(p0: number, p1: number, p2: io.github.humbleui.skija.ColorAlphaType, p3: io.github.humbleui.skija.ColorSpace | null | undefined): io.github.humbleui.skija.ImageInfo; + makeS32(p0: number, p1: number, p2: io.github.humbleui.skija.ColorAlphaType): io.github.humbleui.skija.ImageInfo; + makeN32Premul(p0: number, p1: number): io.github.humbleui.skija.ImageInfo; + makeN32Premul(p0: number, p1: number, p2: io.github.humbleui.skija.ColorSpace | null | undefined): io.github.humbleui.skija.ImageInfo; + makeA8(p0: number, p1: number): io.github.humbleui.skija.ImageInfo; + makeUnknown(p0: number, p1: number): io.github.humbleui.skija.ImageInfo; + } + interface ImageInfo { + _colorInfo: io.github.humbleui.skija.ColorInfo; + _width: number; + _height: number; + getColorType(): io.github.humbleui.skija.ColorType; + withColorType(p0: io.github.humbleui.skija.ColorType): io.github.humbleui.skija.ImageInfo; + getColorAlphaType(): io.github.humbleui.skija.ColorAlphaType; + withColorAlphaType(p0: io.github.humbleui.skija.ColorAlphaType): io.github.humbleui.skija.ImageInfo; + getColorSpace(): io.github.humbleui.skija.ColorSpace | null | undefined; + withColorSpace(p0: io.github.humbleui.skija.ColorSpace): io.github.humbleui.skija.ImageInfo; + isEmpty(): boolean; + isOpaque(): boolean; + getBounds(): io.github.humbleui.types.IRect; + isGammaCloseToSRGB(): boolean; + withWidthHeight(p0: number, p1: number): io.github.humbleui.skija.ImageInfo; + getBytesPerPixel(): number; + getShiftPerPixel(): number; + getMinRowBytes(): number; + computeOffset(p0: number, p1: number, p2: number): number; + computeByteSize(p0: number): number; + computeMinByteSize(): number; + isRowBytesValid(p0: number): boolean; + getColorInfo(): io.github.humbleui.skija.ColorInfo; + getWidth(): number; + getHeight(): number; + withColorInfo(p0: io.github.humbleui.skija.ColorInfo): io.github.humbleui.skija.ImageInfo; + withWidth(p0: number): io.github.humbleui.skija.ImageInfo; + withHeight(p0: number): io.github.humbleui.skija.ImageInfo; + } + const ColorInfo: { + DEFAULT: io.github.humbleui.skija.ColorInfo; + new(p0: io.github.humbleui.skija.ColorType, p1: io.github.humbleui.skija.ColorAlphaType, p2: io.github.humbleui.skija.ColorSpace | null | undefined): io.github.humbleui.skija.ColorInfo; + } + interface ColorInfo { + _colorType: io.github.humbleui.skija.ColorType; + _alphaType: io.github.humbleui.skija.ColorAlphaType; + _colorSpace: io.github.humbleui.skija.ColorSpace | null | undefined; + isOpaque(): boolean; + getBytesPerPixel(): number; + getShiftPerPixel(): number; + isGammaCloseToSRGB(): boolean; + getColorType(): io.github.humbleui.skija.ColorType; + getAlphaType(): io.github.humbleui.skija.ColorAlphaType; + getColorSpace(): io.github.humbleui.skija.ColorSpace | null | undefined; + withColorType(p0: io.github.humbleui.skija.ColorType): io.github.humbleui.skija.ColorInfo; + withAlphaType(p0: io.github.humbleui.skija.ColorAlphaType): io.github.humbleui.skija.ColorInfo; + withColorSpace(p0: io.github.humbleui.skija.ColorSpace | null | undefined): io.github.humbleui.skija.ColorInfo; + } + const ColorType: { + UNKNOWN: io.github.humbleui.skija.ColorType; + ALPHA_8: io.github.humbleui.skija.ColorType; + RGB_565: io.github.humbleui.skija.ColorType; + ARGB_4444: io.github.humbleui.skija.ColorType; + RGBA_8888: io.github.humbleui.skija.ColorType; + RGB_888X: io.github.humbleui.skija.ColorType; + BGRA_8888: io.github.humbleui.skija.ColorType; + RGBA_1010102: io.github.humbleui.skija.ColorType; + BGRA_1010102: io.github.humbleui.skija.ColorType; + RGB_101010X: io.github.humbleui.skija.ColorType; + BGR_101010X: io.github.humbleui.skija.ColorType; + BGR_101010X_XR: io.github.humbleui.skija.ColorType; + BGRA_10101010_XR: io.github.humbleui.skija.ColorType; + RGBA_10X6: io.github.humbleui.skija.ColorType; + GRAY_8: io.github.humbleui.skija.ColorType; + RGBA_F16NORM: io.github.humbleui.skija.ColorType; + RGBA_F16: io.github.humbleui.skija.ColorType; + RGB_F16F16F16X: io.github.humbleui.skija.ColorType; + RGBA_F32: io.github.humbleui.skija.ColorType; + R8G8_UNORM: io.github.humbleui.skija.ColorType; + A16_FLOAT: io.github.humbleui.skija.ColorType; + R16G16_FLOAT: io.github.humbleui.skija.ColorType; + A16_UNORM: io.github.humbleui.skija.ColorType; + R16G16_UNORM: io.github.humbleui.skija.ColorType; + R16G16B16A16_UNORM: io.github.humbleui.skija.ColorType; + SRGBA_8888: io.github.humbleui.skija.ColorType; + R8_UNORM: io.github.humbleui.skija.ColorType; + N32: io.github.humbleui.skija.ColorType; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.ColorType; + } + interface ColorType extends kotlin.Enum { + getBytesPerPixel(): number; + getShiftPerPixel(): number; + isAlwaysOpaque(): boolean; + isAlphaOnly(): boolean; + validateAlphaType(p0: io.github.humbleui.skija.ColorAlphaType): io.github.humbleui.skija.ColorAlphaType | null | undefined; + getChannelFlags(): number; + getNumChannels(): number; + computeOffset(p0: number, p1: number, p2: number): number; + getR(p0: number): number; + getR(p0: number): number; + getR(p0: number): number; + getG(p0: number): number; + getG(p0: number): number; + getG(p0: number): number; + getB(p0: number): number; + getB(p0: number): number; + getB(p0: number): number; + getA(p0: number): number; + getA(p0: number): number; + getA(p0: number): number; + } + const ColorAlphaType: { + UNKNOWN: io.github.humbleui.skija.ColorAlphaType; + OPAQUE: io.github.humbleui.skija.ColorAlphaType; + PREMUL: io.github.humbleui.skija.ColorAlphaType; + UNPREMUL: io.github.humbleui.skija.ColorAlphaType; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.ColorAlphaType; + } + interface ColorAlphaType extends kotlin.Enum { + } + const ColorSpace: { + _FinalizerHolder: typeof io.github.humbleui.skija.ColorSpace$_FinalizerHolder; + _DisplayP3Holder: typeof io.github.humbleui.skija.ColorSpace$_DisplayP3Holder; + _SRGBLinearHolder: typeof io.github.humbleui.skija.ColorSpace$_SRGBLinearHolder; + _SRGBHolder: typeof io.github.humbleui.skija.ColorSpace$_SRGBHolder; + new(p0: number): io.github.humbleui.skija.ColorSpace; + new(p0: number, p1: boolean): io.github.humbleui.skija.ColorSpace; + getSRGB(): io.github.humbleui.skija.ColorSpace; + getSRGBLinear(): io.github.humbleui.skija.ColorSpace; + getDisplayP3(): io.github.humbleui.skija.ColorSpace; + makeRGB(p0: io.github.humbleui.skija.TransferFunction, p1: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.ColorSpace | null | undefined; + makeCICP(p0: io.github.humbleui.skija.ColorSpaceNamedPrimaries, p1: io.github.humbleui.skija.ColorSpaceNamedTransferFn): io.github.humbleui.skija.ColorSpace | null | undefined; + makeFromData(p0: io.github.humbleui.skija.Data): io.github.humbleui.skija.ColorSpace | null | undefined; + makeFromICCProfile(p0: Array): io.github.humbleui.skija.ColorSpace | null | undefined; + _nGetFinalizer(): number; + _nMakeSRGB(): number; + _nMakeDisplayP3(): number; + _nMakeSRGBLinear(): number; + _nMakeRGB(p0: io.github.humbleui.skija.TransferFunction, p1: kotlin.FloatArray): number; + _nMakeCICP(p0: number, p1: number): number; + _nConvert(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): kotlin.FloatArray; + _nIsGammaCloseToSRGB(p0: number): boolean; + _nIsGammaLinear(p0: number): boolean; + _nIsSRGB(p0: number): boolean; + _nGetNumericalTransferFn(p0: number): io.github.humbleui.skija.TransferFunction; + _nGetToXYZD50(p0: number): kotlin.FloatArray; + _nGetToXYZD50Hash(p0: number): number; + _nGetTransferFnHash(p0: number): number; + _nGetHash(p0: number): number; + _nMakeLinearGamma(p0: number): number; + _nMakeSRGBGamma(p0: number): number; + _nMakeColorSpin(p0: number): number; + _nSerializeToData(p0: number): number; + _nMakeFromData(p0: number): number; + _nTransferFn(p0: number): io.github.humbleui.skija.TransferFunction; + _nInvTransferFn(p0: number): io.github.humbleui.skija.TransferFunction; + _nGamutTransformTo(p0: number, p1: number): kotlin.FloatArray; + _nEquals(p0: number, p1: number): boolean; + _nMakeFromICCProfile(p0: Array): number; + } + interface ColorSpace extends io.github.humbleui.skija.impl.Managed { + convert(p0: io.github.humbleui.skija.ColorSpace, p1: io.github.humbleui.skija.Color4f): io.github.humbleui.skija.Color4f; + isGammaCloseToSRGB(): boolean; + isGammaLinear(): boolean; + isSRGB(): boolean; + getNumericalTransferFn(): io.github.humbleui.skija.TransferFunction | null | undefined; + getToXYZD50(): io.github.humbleui.skija.Matrix33 | null | undefined; + getToXYZD50Hash(): number; + getTransferFnHash(): number; + getHash(): number; + makeLinearGamma(): io.github.humbleui.skija.ColorSpace; + makeSRGBGamma(): io.github.humbleui.skija.ColorSpace; + makeColorSpin(): io.github.humbleui.skija.ColorSpace; + serializeToData(): io.github.humbleui.skija.Data; + getTransferFn(): io.github.humbleui.skija.TransferFunction; + getInvTransferFn(): io.github.humbleui.skija.TransferFunction; + getGamutTransformTo(p0: io.github.humbleui.skija.ColorSpace): io.github.humbleui.skija.Matrix33; + } + const Color4f: { + new(p0: number, p1: number, p2: number): io.github.humbleui.skija.Color4f; + new(p0: kotlin.FloatArray): io.github.humbleui.skija.Color4f; + new(p0: number): io.github.humbleui.skija.Color4f; + new(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.skija.Color4f; + flattenArray(p0: Array): kotlin.FloatArray; + } + interface Color4f { + _r: number; + _g: number; + _b: number; + _a: number; + toColor(): number; + flatten(): kotlin.FloatArray; + premultiply(): io.github.humbleui.skija.Color4f; + unpremultiply(): io.github.humbleui.skija.Color4f; + makeLerp(p0: io.github.humbleui.skija.Color4f, p1: number): io.github.humbleui.skija.Color4f; + makeLerpPM(p0: io.github.humbleui.skija.Color4f, p1: number): io.github.humbleui.skija.Color4f; + getR(): number; + getG(): number; + getB(): number; + getA(): number; + withR(p0: number): io.github.humbleui.skija.Color4f; + withG(p0: number): io.github.humbleui.skija.Color4f; + withB(p0: number): io.github.humbleui.skija.Color4f; + withA(p0: number): io.github.humbleui.skija.Color4f; + } + const TransferFunction: { + new(p0: kotlin.FloatArray): io.github.humbleui.skija.TransferFunction; + new(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): io.github.humbleui.skija.TransferFunction; + } + interface TransferFunction { + _g: number; + _a: number; + _b: number; + _c: number; + _d: number; + _e: number; + _f: number; + getG(): number; + getA(): number; + getB(): number; + getC(): number; + getD(): number; + getE(): number; + getF(): number; + withG(p0: number): io.github.humbleui.skija.TransferFunction; + withA(p0: number): io.github.humbleui.skija.TransferFunction; + withB(p0: number): io.github.humbleui.skija.TransferFunction; + withC(p0: number): io.github.humbleui.skija.TransferFunction; + withD(p0: number): io.github.humbleui.skija.TransferFunction; + withE(p0: number): io.github.humbleui.skija.TransferFunction; + withF(p0: number): io.github.humbleui.skija.TransferFunction; + } + const Matrix33: { + IDENTITY: io.github.humbleui.skija.Matrix33; + new(p0: number): io.github.humbleui.skija.Matrix33; + makeTranslate(p0: number, p1: number): io.github.humbleui.skija.Matrix33; + makeScale(p0: number): io.github.humbleui.skija.Matrix33; + makeScale(p0: number, p1: number): io.github.humbleui.skija.Matrix33; + makeRotate(p0: number): io.github.humbleui.skija.Matrix33; + makeRotate(p0: number, p1: io.github.humbleui.types.Point): io.github.humbleui.skija.Matrix33; + makeRotate(p0: number, p1: number, p2: number): io.github.humbleui.skija.Matrix33; + makeSkew(p0: number, p1: number): io.github.humbleui.skija.Matrix33; + } + interface Matrix33 { + _mat: kotlin.FloatArray; + makePreScale(p0: number, p1: number): io.github.humbleui.skija.Matrix33; + makeConcat(p0: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.Matrix33; + asMatrix44(): io.github.humbleui.skija.Matrix44; + getMat(): kotlin.FloatArray; + } + const Matrix44: { + IDENTITY: io.github.humbleui.skija.Matrix44; + new(p0: number): io.github.humbleui.skija.Matrix44; + } + interface Matrix44 { + _mat: kotlin.FloatArray; + asMatrix33(): io.github.humbleui.skija.Matrix33; + getMat(): kotlin.FloatArray; + } + const Data: { + _FinalizerHolder: typeof io.github.humbleui.skija.Data$_FinalizerHolder; + new(p0: number): io.github.humbleui.skija.Data; + makeFromBytes(p0: Array): io.github.humbleui.skija.Data; + makeFromBytes(p0: Array, p1: number, p2: number): io.github.humbleui.skija.Data; + makeFromFileName(p0: string): io.github.humbleui.skija.Data | null | undefined; + makeEmpty(): io.github.humbleui.skija.Data; + _nGetFinalizer(): number; + _nSize(p0: number): number; + _nBytes(p0: number, p1: number, p2: number): Array; + _nEquals(p0: number, p1: number): boolean; + _nToByteBuffer(p0: number): java.nio.ByteBuffer; + _nMakeFromBytes(p0: Array, p1: number, p2: number): number; + _nMakeFromFileName(p0: string): number; + _nMakeSubset(p0: number, p1: number, p2: number): number; + _nMakeEmpty(): number; + } + interface Data extends io.github.humbleui.skija.impl.Managed { + getSize(): number; + getBytes(): Array; + getBytes(p0: number, p1: number): Array; + makeSubset(p0: number, p1: number): io.github.humbleui.skija.Data; + makeCopy(): io.github.humbleui.skija.Data; + toByteBuffer(): java.nio.ByteBuffer; + } + const Data$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.Data$_FinalizerHolder; + } + interface Data$_FinalizerHolder { + } + const ColorSpaceNamedPrimaries: { + REC709: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + REC470_SYSTEM_M: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + REC470_SYSTEM_BG: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + REC601: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + SMPTE_ST_240: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + GENERIC_FILM: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + REC2020: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + SMPTE_ST_428_1: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + SMPTE_RP_431_2: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + SMPTE_EG_432_1: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + ITU_T_H273_VALUE22: io.github.humbleui.skija.ColorSpaceNamedPrimaries; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.ColorSpaceNamedPrimaries; + } + interface ColorSpaceNamedPrimaries extends kotlin.Enum { + _value: number; + } + const ColorSpaceNamedTransferFn: { + REC709: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + REC470_SYSTEM_M: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + REC470_SYSTEM_BG: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + REC601: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + SMPTE_ST_240: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + LINEAR: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + IEC61966_2_4: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + SRGB: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + REC2020_10BIT: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + REC2020_12BIT: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + PQ: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + SMPTE_ST_428_1: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + HLG: io.github.humbleui.skija.ColorSpaceNamedTransferFn; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.ColorSpaceNamedTransferFn; + } + interface ColorSpaceNamedTransferFn extends kotlin.Enum { + _value: number; + } + const ColorSpace$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.ColorSpace$_FinalizerHolder; + } + interface ColorSpace$_FinalizerHolder { + } + const ColorSpace$_DisplayP3Holder: { + INSTANCE: io.github.humbleui.skija.ColorSpace; + new(): io.github.humbleui.skija.ColorSpace$_DisplayP3Holder; + } + interface ColorSpace$_DisplayP3Holder { + } + const ColorSpace$_SRGBLinearHolder: { + INSTANCE: io.github.humbleui.skija.ColorSpace; + new(): io.github.humbleui.skija.ColorSpace$_SRGBLinearHolder; + } + interface ColorSpace$_SRGBLinearHolder { + } + const ColorSpace$_SRGBHolder: { + INSTANCE: io.github.humbleui.skija.ColorSpace; + new(): io.github.humbleui.skija.ColorSpace$_SRGBHolder; + } + interface ColorSpace$_SRGBHolder { + } + const ContentChangeMode: { + DISCARD: io.github.humbleui.skija.ContentChangeMode; + RETAIN: io.github.humbleui.skija.ContentChangeMode; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.ContentChangeMode; + } + interface ContentChangeMode extends kotlin.Enum { + } + const Image: { + new(p0: number): io.github.humbleui.skija.Image; + makeRaster(p0: io.github.humbleui.skija.ImageInfo, p1: Array, p2: number): io.github.humbleui.skija.Image; + makeRaster(p0: io.github.humbleui.skija.ImageInfo, p1: io.github.humbleui.skija.Data, p2: number): io.github.humbleui.skija.Image; + adoptGLTextureFrom(p0: io.github.humbleui.skija.DirectContext, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.skija.SurfaceOrigin, p7: io.github.humbleui.skija.ColorType): io.github.humbleui.skija.Image; + makeRasterFromBytes(p0: io.github.humbleui.skija.ImageInfo, p1: Array, p2: number): io.github.humbleui.skija.Image; + makeRasterFromData(p0: io.github.humbleui.skija.ImageInfo, p1: io.github.humbleui.skija.Data, p2: number): io.github.humbleui.skija.Image; + makeFromBitmap(p0: io.github.humbleui.skija.Bitmap): io.github.humbleui.skija.Image; + makeRasterFromBitmap(p0: io.github.humbleui.skija.Bitmap): io.github.humbleui.skija.Image; + makeFromPixmap(p0: io.github.humbleui.skija.Pixmap): io.github.humbleui.skija.Image; + makeRasterFromPixmap(p0: io.github.humbleui.skija.Pixmap): io.github.humbleui.skija.Image; + makeFromEncoded(p0: Array): io.github.humbleui.skija.Image; + makeDeferredFromEncodedBytes(p0: Array): io.github.humbleui.skija.Image; + makeWithFilter(p0: io.github.humbleui.skija.ImageFilter, p1: io.github.humbleui.skija.Image, p2: io.github.humbleui.types.IRect, p3: io.github.humbleui.types.IRect): io.github.humbleui.skija.ImageWithFilterResult | null | undefined; + makeWithFilter(p0: io.github.humbleui.skija.DirectContext, p1: io.github.humbleui.skija.ImageFilter, p2: io.github.humbleui.skija.Image, p3: io.github.humbleui.types.IRect, p4: io.github.humbleui.types.IRect): io.github.humbleui.skija.ImageWithFilterResult | null | undefined; + _nAdoptGLTextureFrom(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): number; + _nMakeRasterFromBytes(p0: number, p1: number, p2: number, p3: number, p4: number, p5: Array, p6: number): number; + _nMakeRasterFromData(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): number; + _nMakeRasterFromBitmap(p0: number): number; + _nMakeRasterFromPixmap(p0: number): number; + _nMakeDeferredFromEncodedBytes(p0: Array): number; + _nGetImageInfo(p0: number): io.github.humbleui.skija.ImageInfo; + _nMakeShader(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray): number; + _nPeekPixels(p0: number): java.nio.ByteBuffer; + _nPeekPixelsToPixmap(p0: number, p1: number): boolean; + _nScalePixels(p0: number, p1: number, p2: number, p3: boolean): boolean; + _nMakeScaled(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): number; + _nMakeSubset(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nReadPixelsBitmap(p0: number, p1: number, p2: number, p3: number, p4: number, p5: boolean): boolean; + _nReadPixelsPixmap(p0: number, p1: number, p2: number, p3: number, p4: boolean): boolean; + _nMakeWithFilter(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): io.github.humbleui.skija.ImageWithFilterResult; + _nMakeWithFilterContext(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number): io.github.humbleui.skija.ImageWithFilterResult; + } + interface Image extends io.github.humbleui.skija.impl.RefCnt, io.github.humbleui.skija.IHasImageInfo { + _imageInfo: io.github.humbleui.skija.ImageInfo; + encodeToData(): io.github.humbleui.skija.Data; + encodeToData(p0: io.github.humbleui.skija.EncodedImageFormat): io.github.humbleui.skija.Data; + encodeToData(p0: io.github.humbleui.skija.EncodedImageFormat, p1: number): io.github.humbleui.skija.Data; + makeShader(): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.FilterTileMode): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.FilterTileMode, p1: io.github.humbleui.skija.FilterTileMode): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.FilterTileMode, p1: io.github.humbleui.skija.FilterTileMode, p2: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.FilterTileMode, p1: io.github.humbleui.skija.FilterTileMode, p2: io.github.humbleui.skija.SamplingMode, p3: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Shader; + peekPixels(): java.nio.ByteBuffer | null | undefined; + peekPixels(p0: io.github.humbleui.skija.Pixmap): boolean; + readPixels(p0: io.github.humbleui.skija.Bitmap): boolean; + readPixels(p0: io.github.humbleui.skija.Bitmap, p1: number, p2: number): boolean; + readPixels(p0: io.github.humbleui.skija.DirectContext | null | undefined, p1: io.github.humbleui.skija.Bitmap, p2: number, p3: number, p4: boolean): boolean; + readPixels(p0: io.github.humbleui.skija.Pixmap, p1: number, p2: number, p3: boolean): boolean; + scalePixels(p0: io.github.humbleui.skija.Pixmap, p1: io.github.humbleui.skija.SamplingMode, p2: boolean): boolean; + makeScaled(p0: io.github.humbleui.skija.ImageInfo, p1: io.github.humbleui.skija.SamplingMode): io.github.humbleui.skija.Image | null | undefined; + makeSubset(p0: io.github.humbleui.types.IRect): io.github.humbleui.skija.Image | null | undefined; + makeSubset(p0: io.github.humbleui.skija.DirectContext | null | undefined, p1: io.github.humbleui.types.IRect): io.github.humbleui.skija.Image | null | undefined; + } + interface IHasImageInfo { + getImageInfo(): io.github.humbleui.skija.ImageInfo; + getWidth(): number; + getHeight(): number; + getColorInfo(): io.github.humbleui.skija.ColorInfo; + getColorType(): io.github.humbleui.skija.ColorType; + getAlphaType(): io.github.humbleui.skija.ColorAlphaType; + getColorSpace(): io.github.humbleui.skija.ColorSpace | null | undefined; + getBytesPerPixel(): number; + getShiftPerPixel(): number; + isEmpty(): boolean; + isOpaque(): boolean; + } + const EncodedImageFormat: { + BMP: io.github.humbleui.skija.EncodedImageFormat; + GIF: io.github.humbleui.skija.EncodedImageFormat; + ICO: io.github.humbleui.skija.EncodedImageFormat; + JPEG: io.github.humbleui.skija.EncodedImageFormat; + PNG: io.github.humbleui.skija.EncodedImageFormat; + WBMP: io.github.humbleui.skija.EncodedImageFormat; + WEBP: io.github.humbleui.skija.EncodedImageFormat; + PKM: io.github.humbleui.skija.EncodedImageFormat; + KTX: io.github.humbleui.skija.EncodedImageFormat; + ASTC: io.github.humbleui.skija.EncodedImageFormat; + DNG: io.github.humbleui.skija.EncodedImageFormat; + HEIF: io.github.humbleui.skija.EncodedImageFormat; + AVIF: io.github.humbleui.skija.EncodedImageFormat; + JPEGXL: io.github.humbleui.skija.EncodedImageFormat; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.EncodedImageFormat; + } + interface EncodedImageFormat extends kotlin.Enum { + } + const Shader: { + new(p0: number): io.github.humbleui.skija.Shader; + makeLinearGradient(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: Array): io.github.humbleui.skija.Shader; + makeLinearGradient(p0: number, p1: number, p2: number, p3: number, p4: Array): io.github.humbleui.skija.Shader; + makeLinearGradient(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: Array, p3: kotlin.FloatArray): io.github.humbleui.skija.Shader; + makeLinearGradient(p0: number, p1: number, p2: number, p3: number, p4: Array, p5: kotlin.FloatArray): io.github.humbleui.skija.Shader; + makeLinearGradient(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: Array, p3: kotlin.FloatArray, p4: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeLinearGradient(p0: number, p1: number, p2: number, p3: number, p4: Array, p5: kotlin.FloatArray, p6: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeLinearGradient(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: Array, p3: io.github.humbleui.skija.ColorSpace, p4: kotlin.FloatArray, p5: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeLinearGradient(p0: number, p1: number, p2: number, p3: number, p4: Array, p5: io.github.humbleui.skija.ColorSpace, p6: kotlin.FloatArray, p7: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeRadialGradient(p0: io.github.humbleui.types.Point, p1: number, p2: Array): io.github.humbleui.skija.Shader; + makeRadialGradient(p0: number, p1: number, p2: number, p3: Array): io.github.humbleui.skija.Shader; + makeRadialGradient(p0: io.github.humbleui.types.Point, p1: number, p2: Array, p3: kotlin.FloatArray): io.github.humbleui.skija.Shader; + makeRadialGradient(p0: number, p1: number, p2: number, p3: Array, p4: kotlin.FloatArray): io.github.humbleui.skija.Shader; + makeRadialGradient(p0: io.github.humbleui.types.Point, p1: number, p2: Array, p3: kotlin.FloatArray, p4: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeRadialGradient(p0: number, p1: number, p2: number, p3: Array, p4: kotlin.FloatArray, p5: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeRadialGradient(p0: io.github.humbleui.types.Point, p1: number, p2: Array, p3: io.github.humbleui.skija.ColorSpace, p4: kotlin.FloatArray, p5: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeRadialGradient(p0: number, p1: number, p2: number, p3: Array, p4: io.github.humbleui.skija.ColorSpace, p5: kotlin.FloatArray, p6: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeTwoPointConicalGradient(p0: io.github.humbleui.types.Point, p1: number, p2: io.github.humbleui.types.Point, p3: number, p4: Array): io.github.humbleui.skija.Shader; + makeTwoPointConicalGradient(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array): io.github.humbleui.skija.Shader; + makeTwoPointConicalGradient(p0: io.github.humbleui.types.Point, p1: number, p2: io.github.humbleui.types.Point, p3: number, p4: Array, p5: kotlin.FloatArray): io.github.humbleui.skija.Shader; + makeTwoPointConicalGradient(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array, p7: kotlin.FloatArray): io.github.humbleui.skija.Shader; + makeTwoPointConicalGradient(p0: io.github.humbleui.types.Point, p1: number, p2: io.github.humbleui.types.Point, p3: number, p4: Array, p5: kotlin.FloatArray, p6: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeTwoPointConicalGradient(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array, p7: kotlin.FloatArray, p8: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeTwoPointConicalGradient(p0: io.github.humbleui.types.Point, p1: number, p2: io.github.humbleui.types.Point, p3: number, p4: Array, p5: io.github.humbleui.skija.ColorSpace, p6: kotlin.FloatArray, p7: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeTwoPointConicalGradient(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array, p7: io.github.humbleui.skija.ColorSpace, p8: kotlin.FloatArray, p9: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeSweepGradient(p0: io.github.humbleui.types.Point, p1: Array): io.github.humbleui.skija.Shader; + makeSweepGradient(p0: number, p1: number, p2: Array): io.github.humbleui.skija.Shader; + makeSweepGradient(p0: io.github.humbleui.types.Point, p1: Array, p2: kotlin.FloatArray): io.github.humbleui.skija.Shader; + makeSweepGradient(p0: number, p1: number, p2: Array, p3: kotlin.FloatArray): io.github.humbleui.skija.Shader; + makeSweepGradient(p0: io.github.humbleui.types.Point, p1: Array, p2: kotlin.FloatArray, p3: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeSweepGradient(p0: number, p1: number, p2: Array, p3: kotlin.FloatArray, p4: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeSweepGradient(p0: io.github.humbleui.types.Point, p1: number, p2: number, p3: Array, p4: kotlin.FloatArray, p5: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeSweepGradient(p0: number, p1: number, p2: number, p3: number, p4: Array, p5: kotlin.FloatArray, p6: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeSweepGradient(p0: io.github.humbleui.types.Point, p1: number, p2: number, p3: Array, p4: io.github.humbleui.skija.ColorSpace, p5: kotlin.FloatArray, p6: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeSweepGradient(p0: number, p1: number, p2: number, p3: number, p4: Array, p5: io.github.humbleui.skija.ColorSpace, p6: kotlin.FloatArray, p7: io.github.humbleui.skija.GradientStyle): io.github.humbleui.skija.Shader; + makeFractalNoise(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.types.IPoint | null | undefined): io.github.humbleui.skija.Shader; + makeFractalNoise(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.skija.Shader; + makeTurbulence(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.types.IPoint | null | undefined): io.github.humbleui.skija.Shader; + makeTurbulence(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.skija.Shader; + makeEmpty(): io.github.humbleui.skija.Shader; + makeColor(p0: number): io.github.humbleui.skija.Shader; + makeColor(p0: io.github.humbleui.skija.Color4f, p1: io.github.humbleui.skija.ColorSpace): io.github.humbleui.skija.Shader; + makeBlend(p0: io.github.humbleui.skija.BlendMode, p1: io.github.humbleui.skija.Shader, p2: io.github.humbleui.skija.Shader): io.github.humbleui.skija.Shader; + _nIsOpaque(p0: number): boolean; + _nGetImage(p0: number): number; + _nMakeWithLocalMatrix(p0: number, p1: kotlin.FloatArray): number; + _nMakeWithWorkingColorSpace(p0: number, p1: number, p2: number): number; + _nMakeWithColorFilter(p0: number, p1: number): number; + _nMakeLinearGradient(p0: number, p1: number, p2: number, p3: number, p4: Array, p5: kotlin.FloatArray, p6: number, p7: number, p8: kotlin.FloatArray): number; + _nMakeLinearGradientCS(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray, p5: number, p6: kotlin.FloatArray, p7: number, p8: number, p9: kotlin.FloatArray): number; + _nMakeRadialGradient(p0: number, p1: number, p2: number, p3: Array, p4: kotlin.FloatArray, p5: number, p6: number, p7: kotlin.FloatArray): number; + _nMakeRadialGradientCS(p0: number, p1: number, p2: number, p3: kotlin.FloatArray, p4: number, p5: kotlin.FloatArray, p6: number, p7: number, p8: kotlin.FloatArray): number; + _nMakeTwoPointConicalGradient(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array, p7: kotlin.FloatArray, p8: number, p9: number, p10: kotlin.FloatArray): number; + _nMakeTwoPointConicalGradientCS(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: kotlin.FloatArray, p7: number, p8: kotlin.FloatArray, p9: number, p10: number, p11: kotlin.FloatArray): number; + _nMakeSweepGradient(p0: number, p1: number, p2: number, p3: number, p4: Array, p5: kotlin.FloatArray, p6: number, p7: number, p8: kotlin.FloatArray): number; + _nMakeSweepGradientCS(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray, p5: number, p6: kotlin.FloatArray, p7: number, p8: number, p9: kotlin.FloatArray): number; + _nMakeFractalNoise(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nMakeTurbulence(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nMakeEmpty(): number; + _nMakeColor(p0: number): number; + _nMakeColorCS(p0: number, p1: number, p2: number, p3: number, p4: number): number; + _nMakeBlend(p0: number, p1: number, p2: number): number; + } + interface Shader extends io.github.humbleui.skija.RuntimeEffectChild { + isOpaque(): boolean; + getImage(): io.github.humbleui.skija.Image | null | undefined; + makeWithLocalMatrix(p0: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.Shader; + makeWithWorkingColorSpace(p0: io.github.humbleui.skija.ColorSpace | null | undefined): io.github.humbleui.skija.Shader; + makeWithWorkingColorSpace(p0: io.github.humbleui.skija.ColorSpace | null | undefined, p1: io.github.humbleui.skija.ColorSpace | null | undefined): io.github.humbleui.skija.Shader; + makeWithColorFilter(p0: io.github.humbleui.skija.ColorFilter): io.github.humbleui.skija.Shader; + } + interface RuntimeEffectChild extends io.github.humbleui.skija.impl.RefCnt, io.github.humbleui.skija.Flattenable { + } + interface Flattenable { + } + const ColorFilter: { + _LumaHolder: typeof io.github.humbleui.skija.ColorFilter$_LumaHolder; + _SRGBToLinearGammaHolder: typeof io.github.humbleui.skija.ColorFilter$_SRGBToLinearGammaHolder; + _LinearToSRGBGammaHolder: typeof io.github.humbleui.skija.ColorFilter$_LinearToSRGBGammaHolder; + new(p0: number): io.github.humbleui.skija.ColorFilter; + new(p0: number, p1: boolean): io.github.humbleui.skija.ColorFilter; + makeComposed(p0: io.github.humbleui.skija.ColorFilter, p1: io.github.humbleui.skija.ColorFilter): io.github.humbleui.skija.ColorFilter; + makeBlend(p0: number, p1: io.github.humbleui.skija.BlendMode): io.github.humbleui.skija.ColorFilter; + makeMatrix(p0: io.github.humbleui.skija.ColorMatrix): io.github.humbleui.skija.ColorFilter; + makeHSLAMatrix(p0: io.github.humbleui.skija.ColorMatrix): io.github.humbleui.skija.ColorFilter; + getLinearToSRGBGamma(): io.github.humbleui.skija.ColorFilter; + getSRGBToLinearGamma(): io.github.humbleui.skija.ColorFilter; + makeLerp(p0: io.github.humbleui.skija.ColorFilter, p1: io.github.humbleui.skija.ColorFilter, p2: number): io.github.humbleui.skija.ColorFilter; + makeLighting(p0: number, p1: number): io.github.humbleui.skija.ColorFilter; + makeHighContrast(p0: boolean, p1: io.github.humbleui.skija.InversionMode, p2: number): io.github.humbleui.skija.ColorFilter; + makeTable(p0: Array): io.github.humbleui.skija.ColorFilter; + makeTableARGB(p0: Array, p1: Array, p2: Array, p3: Array): io.github.humbleui.skija.ColorFilter; + makeOverdraw(p0: Array): io.github.humbleui.skija.ColorFilter; + getLuma(): io.github.humbleui.skija.ColorFilter; + _nMakeComposed(p0: number, p1: number): number; + _nMakeBlend(p0: number, p1: number): number; + _nMakeMatrix(p0: kotlin.FloatArray): number; + _nMakeHSLAMatrix(p0: kotlin.FloatArray): number; + _nGetLinearToSRGBGamma(): number; + _nGetSRGBToLinearGamma(): number; + _nMakeLerp(p0: number, p1: number, p2: number): number; + _nMakeLighting(p0: number, p1: number): number; + _nMakeHighContrast(p0: boolean, p1: number, p2: number): number; + _nMakeTable(p0: Array): number; + _nMakeTableARGB(p0: Array, p1: Array, p2: Array, p3: Array): number; + _nMakeOverdraw(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nGetLuma(): number; + } + interface ColorFilter extends io.github.humbleui.skija.RuntimeEffectChild { + } + const BlendMode: { + CLEAR: io.github.humbleui.skija.BlendMode; + SRC: io.github.humbleui.skija.BlendMode; + DST: io.github.humbleui.skija.BlendMode; + SRC_OVER: io.github.humbleui.skija.BlendMode; + DST_OVER: io.github.humbleui.skija.BlendMode; + SRC_IN: io.github.humbleui.skija.BlendMode; + DST_IN: io.github.humbleui.skija.BlendMode; + SRC_OUT: io.github.humbleui.skija.BlendMode; + DST_OUT: io.github.humbleui.skija.BlendMode; + SRC_ATOP: io.github.humbleui.skija.BlendMode; + DST_ATOP: io.github.humbleui.skija.BlendMode; + XOR: io.github.humbleui.skija.BlendMode; + PLUS: io.github.humbleui.skija.BlendMode; + MODULATE: io.github.humbleui.skija.BlendMode; + SCREEN: io.github.humbleui.skija.BlendMode; + OVERLAY: io.github.humbleui.skija.BlendMode; + DARKEN: io.github.humbleui.skija.BlendMode; + LIGHTEN: io.github.humbleui.skija.BlendMode; + COLOR_DODGE: io.github.humbleui.skija.BlendMode; + COLOR_BURN: io.github.humbleui.skija.BlendMode; + HARD_LIGHT: io.github.humbleui.skija.BlendMode; + SOFT_LIGHT: io.github.humbleui.skija.BlendMode; + DIFFERENCE: io.github.humbleui.skija.BlendMode; + EXCLUSION: io.github.humbleui.skija.BlendMode; + MULTIPLY: io.github.humbleui.skija.BlendMode; + HUE: io.github.humbleui.skija.BlendMode; + SATURATION: io.github.humbleui.skija.BlendMode; + COLOR: io.github.humbleui.skija.BlendMode; + LUMINOSITY: io.github.humbleui.skija.BlendMode; + LAST_COEFF_MODE: io.github.humbleui.skija.BlendMode; + LAST_SEPARABLE_MODE: io.github.humbleui.skija.BlendMode; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.BlendMode; + } + interface BlendMode extends kotlin.Enum { + } + const ColorMatrix: { + new(p0: number): io.github.humbleui.skija.ColorMatrix; + } + interface ColorMatrix { + _mat: kotlin.FloatArray; + getMat(): kotlin.FloatArray; + } + const InversionMode: { + NO: io.github.humbleui.skija.InversionMode; + BRIGHTNESS: io.github.humbleui.skija.InversionMode; + LIGHTNESS: io.github.humbleui.skija.InversionMode; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.InversionMode; + } + interface InversionMode extends kotlin.Enum { + } + const ColorFilter$_LumaHolder: { + INSTANCE: io.github.humbleui.skija.ColorFilter; + new(): io.github.humbleui.skija.ColorFilter$_LumaHolder; + } + interface ColorFilter$_LumaHolder { + } + const ColorFilter$_SRGBToLinearGammaHolder: { + INSTANCE: io.github.humbleui.skija.ColorFilter; + new(): io.github.humbleui.skija.ColorFilter$_SRGBToLinearGammaHolder; + } + interface ColorFilter$_SRGBToLinearGammaHolder { + } + const ColorFilter$_LinearToSRGBGammaHolder: { + INSTANCE: io.github.humbleui.skija.ColorFilter; + new(): io.github.humbleui.skija.ColorFilter$_LinearToSRGBGammaHolder; + } + interface ColorFilter$_LinearToSRGBGammaHolder { + } + const GradientStyle: { + _INTERPOLATE_PREMUL: number; + DEFAULT: io.github.humbleui.skija.GradientStyle; + new(p0: io.github.humbleui.skija.FilterTileMode, p1: boolean, p2: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.GradientStyle; + } + interface GradientStyle { + _tileMode: io.github.humbleui.skija.FilterTileMode; + _premul: boolean; + _localMatrix: io.github.humbleui.skija.Matrix33; + _getFlags(): number; + _getMatrixArray(): kotlin.FloatArray; + getTileMode(): io.github.humbleui.skija.FilterTileMode; + isPremul(): boolean; + getLocalMatrix(): io.github.humbleui.skija.Matrix33; + withTileMode(p0: io.github.humbleui.skija.FilterTileMode): io.github.humbleui.skija.GradientStyle; + withPremul(p0: boolean): io.github.humbleui.skija.GradientStyle; + withLocalMatrix(p0: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.GradientStyle; + } + const FilterTileMode: { + CLAMP: io.github.humbleui.skija.FilterTileMode; + REPEAT: io.github.humbleui.skija.FilterTileMode; + MIRROR: io.github.humbleui.skija.FilterTileMode; + DECAL: io.github.humbleui.skija.FilterTileMode; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.FilterTileMode; + } + interface FilterTileMode extends kotlin.Enum { + } + const SamplingMode: { + DEFAULT: io.github.humbleui.skija.SamplingMode; + LINEAR: io.github.humbleui.skija.SamplingMode; + MITCHELL: io.github.humbleui.skija.SamplingMode; + CATMULL_ROM: io.github.humbleui.skija.SamplingMode; + } + interface SamplingMode { + _pack(): number; + } + const Pixmap: { + _FinalizerHolder: typeof io.github.humbleui.skija.Pixmap$_FinalizerHolder; + new(p0: number, p1: boolean): io.github.humbleui.skija.Pixmap; + new(): io.github.humbleui.skija.Pixmap; + make(p0: io.github.humbleui.skija.ImageInfo, p1: java.nio.ByteBuffer, p2: number): io.github.humbleui.skija.Pixmap; + make(p0: io.github.humbleui.skija.ImageInfo, p1: number, p2: number): io.github.humbleui.skija.Pixmap; + _nGetFinalizer(): number; + _nMakeNull(): number; + _nMake(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): number; + _nReset(p0: number): void; + _nResetWithInfo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; + _nSetColorSpace(p0: number, p1: number): void; + _nExtractSubset(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): boolean; + _nGetImageInfo(p0: number): io.github.humbleui.skija.ImageInfo; + _nGetRowBytes(p0: number): number; + _nGetAddr(p0: number): number; + _nGetRowBytesAsPixels(p0: number): number; + _nComputeByteSize(p0: number): number; + _nComputeIsOpaque(p0: number): boolean; + _nGetColor(p0: number, p1: number, p2: number): number; + _nGetColor4f(p0: number, p1: number, p2: number): io.github.humbleui.skija.Color4f; + _nGetAlphaF(p0: number, p1: number, p2: number): number; + _nGetAddrAt(p0: number, p1: number, p2: number): number; + _nReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): boolean; + _nReadPixelsFromPoint(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): boolean; + _nReadPixelsToPixmap(p0: number, p1: number): boolean; + _nReadPixelsToPixmapFromPoint(p0: number, p1: number, p2: number, p3: number): boolean; + _nScalePixels(p0: number, p1: number, p2: number): boolean; + _nErase(p0: number, p1: number): boolean; + _nEraseSubset(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): boolean; + _nErase4f(p0: number, p1: number, p2: number, p3: number, p4: number): boolean; + _nEraseSubset4f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): boolean; + } + interface Pixmap extends io.github.humbleui.skija.impl.Managed, io.github.humbleui.skija.IHasImageInfo { + _imageInfo: io.github.humbleui.skija.ImageInfo; + reset(): void; + reset(p0: io.github.humbleui.skija.ImageInfo, p1: number, p2: number): void; + reset(p0: io.github.humbleui.skija.ImageInfo, p1: java.nio.ByteBuffer, p2: number): void; + setColorSpace(p0: io.github.humbleui.skija.ColorSpace): void; + extractSubset(p0: number, p1: io.github.humbleui.types.IRect): boolean; + extractSubset(p0: java.nio.ByteBuffer, p1: io.github.humbleui.types.IRect): boolean; + getRowBytes(): number; + getRowBytesAsPixels(): number; + computeByteSize(): number; + computeIsOpaque(): boolean; + getColor(p0: number, p1: number): number; + getColor4f(p0: number, p1: number): io.github.humbleui.skija.Color4f; + getAlphaF(p0: number, p1: number): number; + getAddr(): number; + getAddrAt(p0: number, p1: number): number; + readPixels(p0: io.github.humbleui.skija.ImageInfo, p1: number, p2: number): boolean; + readPixels(p0: io.github.humbleui.skija.ImageInfo, p1: number, p2: number, p3: number, p4: number): boolean; + readPixels(p0: io.github.humbleui.skija.Pixmap): boolean; + readPixels(p0: io.github.humbleui.skija.Pixmap, p1: number, p2: number): boolean; + scalePixels(p0: io.github.humbleui.skija.Pixmap, p1: io.github.humbleui.skija.SamplingMode): boolean; + erase(p0: number): boolean; + erase(p0: number, p1: io.github.humbleui.types.IRect): boolean; + erase(p0: io.github.humbleui.skija.Color4f): boolean; + erase(p0: io.github.humbleui.skija.Color4f, p1: io.github.humbleui.types.IRect): boolean; + getBuffer(): java.nio.ByteBuffer; + } + const Pixmap$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.Pixmap$_FinalizerHolder; + } + interface Pixmap$_FinalizerHolder { + } + const Bitmap: { + _FinalizerHolder: typeof io.github.humbleui.skija.Bitmap$_FinalizerHolder; + new(p0: number): io.github.humbleui.skija.Bitmap; + new(): io.github.humbleui.skija.Bitmap; + makeFromImage(p0: io.github.humbleui.skija.Image): io.github.humbleui.skija.Bitmap; + _nGetFinalizer(): number; + _nMake(): number; + _nMakeClone(p0: number): number; + _nSwap(p0: number, p1: number): void; + _nGetImageInfo(p0: number): io.github.humbleui.skija.ImageInfo; + _nGetRowBytesAsPixels(p0: number): number; + _nIsNull(p0: number): boolean; + _nGetRowBytes(p0: number): number; + _nSetAlphaType(p0: number, p1: number): boolean; + _nSetColorSpace(p0: number, p1: number): void; + _nComputeByteSize(p0: number): number; + _nIsImmutable(p0: number): boolean; + _nSetImmutable(p0: number): void; + _nIsVolatile(p0: number): boolean; + _nSetVolatile(p0: number, p1: boolean): void; + _nReset(p0: number): void; + _nComputeIsOpaque(p0: number): boolean; + _nSetImageInfo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): boolean; + _nAllocPixelsFlags(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): boolean; + _nAllocPixelsRowBytes(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): boolean; + _nInstallPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: Array, p7: number): boolean; + _nAllocPixels(p0: number): boolean; + _nGetPixelRef(p0: number): number; + _nGetPixelRefOrigin(p0: number): number; + _nSetPixelRef(p0: number, p1: number, p2: number, p3: number): void; + _nIsReadyToDraw(p0: number): boolean; + _nGetGenerationId(p0: number): number; + _nNotifyPixelsChanged(p0: number): void; + _nErase4f(p0: number, p1: number, p2: number, p3: number, p4: number): void; + _nEraseRect4f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): void; + _nErase(p0: number, p1: number): void; + _nEraseRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; + _nGetColor(p0: number, p1: number, p2: number): number; + _nGetColor4f(p0: number, p1: number, p2: number): io.github.humbleui.skija.Color4f; + _nGetAlphaf(p0: number, p1: number, p2: number): number; + _nExtractSubset(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): boolean; + _nReadPixels(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): Array; + _nExtractAlpha(p0: number, p1: number, p2: number): io.github.humbleui.types.IPoint; + _nPeekPixels(p0: number): number; + _nMakeShader(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray): number; + } + interface Bitmap extends io.github.humbleui.skija.impl.Managed, io.github.humbleui.skija.IHasImageInfo { + _imageInfo: io.github.humbleui.skija.ImageInfo; + makeClone(): io.github.humbleui.skija.Bitmap; + swap(p0: io.github.humbleui.skija.Bitmap): void; + getRowBytesAsPixels(): number; + isNull(): boolean; + drawsNothing(): boolean; + getRowBytes(): number; + setAlphaType(p0: io.github.humbleui.skija.ColorAlphaType): boolean; + setColorSpace(p0: io.github.humbleui.skija.ColorSpace | null | undefined): io.github.humbleui.skija.Bitmap; + computeByteSize(): number; + isImmutable(): boolean; + setImmutable(): io.github.humbleui.skija.Bitmap; + reset(): io.github.humbleui.skija.Bitmap; + computeIsOpaque(): boolean; + getBounds(): io.github.humbleui.types.IRect; + getSubset(): io.github.humbleui.types.IRect; + setImageInfo(p0: io.github.humbleui.skija.ImageInfo): boolean; + setImageInfo(p0: io.github.humbleui.skija.ImageInfo, p1: number): boolean; + allocPixelsFlags(p0: io.github.humbleui.skija.ImageInfo, p1: boolean): boolean; + allocPixels(p0: io.github.humbleui.skija.ImageInfo, p1: number): boolean; + allocPixels(p0: io.github.humbleui.skija.ImageInfo): boolean; + allocPixels(): boolean; + allocN32Pixels(p0: number, p1: number): boolean; + allocN32Pixels(p0: number, p1: number, p2: boolean): boolean; + installPixels(p0: Array): boolean; + installPixels(p0: io.github.humbleui.skija.ImageInfo, p1: Array, p2: number): boolean; + getPixelRef(): io.github.humbleui.skija.PixelRef | null | undefined; + getPixelRefOrigin(): io.github.humbleui.types.IPoint; + setPixelRef(p0: io.github.humbleui.skija.PixelRef | null | undefined, p1: number, p2: number): io.github.humbleui.skija.Bitmap; + isReadyToDraw(): boolean; + getGenerationId(): number; + notifyPixelsChanged(): io.github.humbleui.skija.Bitmap; + erase(p0: io.github.humbleui.skija.Color4f): io.github.humbleui.skija.Bitmap; + erase(p0: io.github.humbleui.skija.Color4f, p1: io.github.humbleui.types.IRect): io.github.humbleui.skija.Bitmap; + erase(p0: number): io.github.humbleui.skija.Bitmap; + erase(p0: number, p1: io.github.humbleui.types.IRect): io.github.humbleui.skija.Bitmap; + getColor(p0: number, p1: number): number; + getColor4f(p0: number, p1: number): io.github.humbleui.skija.Color4f; + getAlphaf(p0: number, p1: number): number; + extractSubset(p0: io.github.humbleui.skija.Bitmap, p1: io.github.humbleui.types.IRect): boolean; + readPixels(): Array; + readPixels(p0: io.github.humbleui.skija.ImageInfo, p1: number, p2: number, p3: number): Array; + extractAlpha(p0: io.github.humbleui.skija.Bitmap): boolean; + extractAlpha(p0: io.github.humbleui.skija.Bitmap, p1: io.github.humbleui.skija.Paint | null | undefined): io.github.humbleui.types.IPoint | null | undefined; + peekPixels(): io.github.humbleui.skija.Pixmap | null | undefined; + makeShader(): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.FilterTileMode): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.FilterTileMode, p1: io.github.humbleui.skija.FilterTileMode): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.FilterTileMode, p1: io.github.humbleui.skija.FilterTileMode, p2: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.FilterTileMode, p1: io.github.humbleui.skija.FilterTileMode, p2: io.github.humbleui.skija.SamplingMode, p3: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Shader; + } + const PixelRef: { + new(p0: number): io.github.humbleui.skija.PixelRef; + _nGetWidth(p0: number): number; + _nGetHeight(p0: number): number; + _nGetRowBytes(p0: number): number; + _nGetGenerationId(p0: number): number; + _nNotifyPixelsChanged(p0: number): void; + _nIsImmutable(p0: number): boolean; + _nSetImmutable(p0: number): void; + } + interface PixelRef extends io.github.humbleui.skija.impl.RefCnt { + getWidth(): number; + getHeight(): number; + getRowBytes(): number; + getGenerationId(): number; + notifyPixelsChanged(): io.github.humbleui.skija.PixelRef; + isImmutable(): boolean; + setImmutable(): io.github.humbleui.skija.PixelRef; + } + const Paint: { + _FinalizerHolder: typeof io.github.humbleui.skija.Paint$_FinalizerHolder; + new(p0: number, p1: boolean): io.github.humbleui.skija.Paint; + new(): io.github.humbleui.skija.Paint; + _nGetFinalizer(): number; + _nMake(): number; + _nMakeClone(p0: number): number; + _nEquals(p0: number, p1: number): boolean; + _nReset(p0: number): void; + _nIsAntiAlias(p0: number): boolean; + _nSetAntiAlias(p0: number, p1: boolean): void; + _nIsDither(p0: number): boolean; + _nSetDither(p0: number, p1: boolean): void; + _nGetMode(p0: number): number; + _nSetMode(p0: number, p1: number): void; + _nGetColor(p0: number): number; + _nGetColor4f(p0: number): io.github.humbleui.skija.Color4f; + _nSetColor(p0: number, p1: number): void; + _nSetColor4f(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; + _nGetStrokeWidth(p0: number): number; + _nSetStrokeWidth(p0: number, p1: number): void; + _nGetStrokeMiter(p0: number): number; + _nSetStrokeMiter(p0: number, p1: number): void; + _nGetStrokeCap(p0: number): number; + _nSetStrokeCap(p0: number, p1: number): void; + _nGetStrokeJoin(p0: number): number; + _nSetStrokeJoin(p0: number, p1: number): void; + _nGetFillPath(p0: number, p1: number, p2: number): number; + _nGetFillPathCull(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): number; + _nGetShader(p0: number): number; + _nSetShader(p0: number, p1: number): void; + _nGetColorFilter(p0: number): number; + _nSetColorFilter(p0: number, p1: number): void; + _nGetBlender(p0: number): number; + _nSetBlender(p0: number, p1: number): void; + _nGetBlendMode(p0: number): number; + _nSetBlendMode(p0: number, p1: number): void; + _nGetPathEffect(p0: number): number; + _nSetPathEffect(p0: number, p1: number): void; + _nGetMaskFilter(p0: number): number; + _nSetMaskFilter(p0: number, p1: number): void; + _nGetImageFilter(p0: number): number; + _nSetImageFilter(p0: number, p1: number): void; + _nHasNothingToDraw(p0: number): boolean; + } + interface Paint extends io.github.humbleui.skija.impl.Managed { + makeClone(): io.github.humbleui.skija.Paint; + reset(): io.github.humbleui.skija.Paint; + isAntiAlias(): boolean; + setAntiAlias(p0: boolean): io.github.humbleui.skija.Paint; + isDither(): boolean; + setDither(p0: boolean): io.github.humbleui.skija.Paint; + getMode(): io.github.humbleui.skija.PaintMode; + setMode(p0: io.github.humbleui.skija.PaintMode): io.github.humbleui.skija.Paint; + setStroke(p0: boolean): io.github.humbleui.skija.Paint; + getColor(): number; + getColor4f(): io.github.humbleui.skija.Color4f; + setColor(p0: number): io.github.humbleui.skija.Paint; + setColor4f(p0: io.github.humbleui.skija.Color4f): io.github.humbleui.skija.Paint; + setColor4f(p0: io.github.humbleui.skija.Color4f, p1: io.github.humbleui.skija.ColorSpace | null | undefined): io.github.humbleui.skija.Paint; + getAlphaf(): number; + getAlpha(): number; + setAlphaf(p0: number): io.github.humbleui.skija.Paint; + setAlpha(p0: number): io.github.humbleui.skija.Paint; + setARGB(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.skija.Paint; + getStrokeWidth(): number; + setStrokeWidth(p0: number): io.github.humbleui.skija.Paint; + getStrokeMiter(): number; + setStrokeMiter(p0: number): io.github.humbleui.skija.Paint; + getStrokeCap(): io.github.humbleui.skija.PaintStrokeCap; + setStrokeCap(p0: io.github.humbleui.skija.PaintStrokeCap): io.github.humbleui.skija.Paint; + getStrokeJoin(): io.github.humbleui.skija.PaintStrokeJoin; + setStrokeJoin(p0: io.github.humbleui.skija.PaintStrokeJoin): io.github.humbleui.skija.Paint; + getFillPath(p0: io.github.humbleui.skija.Path): io.github.humbleui.skija.Path; + getFillPath(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.types.Rect | null | undefined, p2: number): io.github.humbleui.skija.Path; + getShader(): io.github.humbleui.skija.Shader | null | undefined; + setShader(p0: io.github.humbleui.skija.Shader | null | undefined): io.github.humbleui.skija.Paint; + getColorFilter(): io.github.humbleui.skija.ColorFilter | null | undefined; + setColorFilter(p0: io.github.humbleui.skija.ColorFilter | null | undefined): io.github.humbleui.skija.Paint; + getBlender(): io.github.humbleui.skija.Blender | null | undefined; + setBlender(p0: io.github.humbleui.skija.Blender | null | undefined): io.github.humbleui.skija.Paint; + getBlendMode(): io.github.humbleui.skija.BlendMode | null | undefined; + isSrcOver(): boolean; + setBlendMode(p0: io.github.humbleui.skija.BlendMode): io.github.humbleui.skija.Paint; + getPathEffect(): io.github.humbleui.skija.PathEffect | null | undefined; + setPathEffect(p0: io.github.humbleui.skija.PathEffect | null | undefined): io.github.humbleui.skija.Paint; + getMaskFilter(): io.github.humbleui.skija.MaskFilter | null | undefined; + setMaskFilter(p0: io.github.humbleui.skija.MaskFilter | null | undefined): io.github.humbleui.skija.Paint; + getImageFilter(): io.github.humbleui.skija.ImageFilter | null | undefined; + setImageFilter(p0: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.Paint; + hasNothingToDraw(): boolean; + } + const PaintMode: { + FILL: io.github.humbleui.skija.PaintMode; + STROKE: io.github.humbleui.skija.PaintMode; + STROKE_AND_FILL: io.github.humbleui.skija.PaintMode; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.PaintMode; + } + interface PaintMode extends kotlin.Enum { + } + const PaintStrokeCap: { + BUTT: io.github.humbleui.skija.PaintStrokeCap; + ROUND: io.github.humbleui.skija.PaintStrokeCap; + SQUARE: io.github.humbleui.skija.PaintStrokeCap; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.PaintStrokeCap; + } + interface PaintStrokeCap extends kotlin.Enum { + } + const PaintStrokeJoin: { + MITER: io.github.humbleui.skija.PaintStrokeJoin; + ROUND: io.github.humbleui.skija.PaintStrokeJoin; + BEVEL: io.github.humbleui.skija.PaintStrokeJoin; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.PaintStrokeJoin; + } + interface PaintStrokeJoin extends kotlin.Enum { + } + const Path: { + _FinalizerHolder: typeof io.github.humbleui.skija.Path$_FinalizerHolder; + new(): io.github.humbleui.skija.Path; + new(p0: io.github.humbleui.skija.PathFillMode): io.github.humbleui.skija.Path; + new(p0: io.github.humbleui.skija.Path): io.github.humbleui.skija.Path; + new(p0: number): io.github.humbleui.skija.Path; + makeRaw(p0: Array, p1: Array, p2: kotlin.FloatArray, p3: io.github.humbleui.skija.PathFillMode): io.github.humbleui.skija.Path; + makeRaw(p0: Array, p1: Array, p2: kotlin.FloatArray, p3: io.github.humbleui.skija.PathFillMode, p4: boolean): io.github.humbleui.skija.Path; + makeRect(p0: io.github.humbleui.types.Rect): io.github.humbleui.skija.Path; + makeRect(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.PathDirection): io.github.humbleui.skija.Path; + makeRect(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.PathDirection, p2: number): io.github.humbleui.skija.Path; + makeOval(p0: io.github.humbleui.types.Rect): io.github.humbleui.skija.Path; + makeOval(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.PathDirection): io.github.humbleui.skija.Path; + makeCircle(p0: number, p1: number, p2: number): io.github.humbleui.skija.Path; + makeCircle(p0: number, p1: number, p2: number, p3: io.github.humbleui.skija.PathDirection): io.github.humbleui.skija.Path; + makeRRect(p0: io.github.humbleui.types.RRect): io.github.humbleui.skija.Path; + makeRRect(p0: io.github.humbleui.types.RRect, p1: io.github.humbleui.skija.PathDirection): io.github.humbleui.skija.Path; + makeRRect(p0: io.github.humbleui.types.RRect, p1: io.github.humbleui.skija.PathDirection, p2: number): io.github.humbleui.skija.Path; + makePolygon(p0: Array, p1: boolean): io.github.humbleui.skija.Path; + makePolygon(p0: Array, p1: boolean, p2: io.github.humbleui.skija.PathFillMode): io.github.humbleui.skija.Path; + makePolygon(p0: Array, p1: boolean, p2: io.github.humbleui.skija.PathFillMode, p3: boolean): io.github.humbleui.skija.Path; + makeLine(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point): io.github.humbleui.skija.Path; + makeLine(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.skija.Path; + makeFromSVGString(p0: string): io.github.humbleui.skija.Path; + makeCombining(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.skija.Path, p2: io.github.humbleui.skija.PathOp): io.github.humbleui.skija.Path | null | undefined; + isLineDegenerate(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: boolean): boolean; + isQuadDegenerate(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: io.github.humbleui.types.Point, p3: boolean): boolean; + isCubicDegenerate(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: io.github.humbleui.types.Point, p3: io.github.humbleui.types.Point, p4: boolean): boolean; + convertConicToQuads(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: io.github.humbleui.types.Point, p3: number, p4: number): Array; + makeFromBytes(p0: Array): io.github.humbleui.skija.Path | null | undefined; + _nGetFinalizer(): number; + _nMakeRaw(p0: kotlin.FloatArray, p1: Array, p2: kotlin.FloatArray, p3: number, p4: boolean): number; + _nMakeRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nMakeOval(p0: number, p1: number, p2: number, p3: number, p4: number): number; + _nMakeCircle(p0: number, p1: number, p2: number, p3: number): number; + _nMakeRRect(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray, p5: number, p6: number): number; + _nMakePolygon(p0: kotlin.FloatArray, p1: boolean, p2: number, p3: boolean): number; + _nMakeLine(p0: number, p1: number, p2: number, p3: number): number; + _nMakeFromSVGString(p0: string): number; + _nMake(p0: number): number; + _nMakeCopy(p0: number): number; + _nMakeCombining(p0: number, p1: number, p2: number): number; + _nEquals(p0: number, p1: number): boolean; + _nIsInterpolatable(p0: number, p1: number): boolean; + _nMakeInterpolate(p0: number, p1: number, p2: number): number; + _nGetFillMode(p0: number): number; + _nMakeWithFillMode(p0: number, p1: number): number; + _nIsInverseFillType(p0: number): boolean; + _nMakeToggleInverseFillType(p0: number): number; + _nIsConvex(p0: number): boolean; + _nIsOval(p0: number): io.github.humbleui.types.Rect; + _nIsRRect(p0: number): io.github.humbleui.types.RRect; + _nIsEmpty(p0: number): boolean; + _nIsLastContourClosed(p0: number): boolean; + _nIsFinite(p0: number): boolean; + _nIsVolatile(p0: number): boolean; + _nMakeWithVolatile(p0: number, p1: boolean): number; + _nIsLineDegenerate(p0: number, p1: number, p2: number, p3: number, p4: boolean): boolean; + _nIsQuadDegenerate(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean): boolean; + _nIsCubicDegenerate(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: boolean): boolean; + _nMaybeGetAsLine(p0: number): Array; + _nGetPoints(p0: number): Array; + _nGetVerbs(p0: number): Array; + _nGetConicWeights(p0: number): kotlin.FloatArray; + _nGetPointsCount(p0: number): number; + _nCountVerbs(p0: number): number; + _nGetLastPt(p0: number): io.github.humbleui.types.Point; + _nApproximateBytesUsed(p0: number): number; + _nGetBounds(p0: number): io.github.humbleui.types.Rect; + _nUpdateBoundsCache(p0: number): void; + _nComputeTightBounds(p0: number): io.github.humbleui.types.Rect; + _nConservativelyContainsRect(p0: number, p1: number, p2: number, p3: number, p4: number): boolean; + _nConvertConicToQuads(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): Array; + _nIsRect(p0: number): io.github.humbleui.types.Rect; + _nMakeTransform(p0: number, p1: kotlin.FloatArray): number; + _nMakeOffset(p0: number, p1: number, p2: number): number; + _nMakeScale(p0: number, p1: number, p2: number): number; + _nGetSegmentMasks(p0: number): number; + _nSetVolatile(p0: number, p1: boolean): void; + _nSwap(p0: number, p1: number): void; + _nSetFillMode(p0: number, p1: number): void; + _nReset(p0: number): void; + _nContains(p0: number, p1: number, p2: number): boolean; + _nDump(p0: number): void; + _nDumpHex(p0: number): void; + _nSerializeToBytes(p0: number): Array; + _nMakeFromBytes(p0: Array): number; + _nGetGenerationId(p0: number): number; + _nIsValid(p0: number): boolean; + _nFillWithPaint(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: kotlin.FloatArray): boolean; + } + interface Path extends io.github.humbleui.skija.impl.Managed, kotlin.collections.MutableIterable { + isInterpolatable(p0: io.github.humbleui.skija.Path): boolean; + makeInterpolate(p0: io.github.humbleui.skija.Path, p1: number): io.github.humbleui.skija.Path; + getFillMode(): io.github.humbleui.skija.PathFillMode; + makeWithFillMode(p0: io.github.humbleui.skija.PathFillMode): io.github.humbleui.skija.Path; + isInverseFillType(): boolean; + makeToggleInverseFillType(): io.github.humbleui.skija.Path; + isConvex(): boolean; + isOval(): io.github.humbleui.types.Rect | null | undefined; + isRRect(): io.github.humbleui.types.RRect | null | undefined; + isEmpty(): boolean; + isLastContourClosed(): boolean; + isFinite(): boolean; + isVolatile(): boolean; + makeWithVolatile(p0: boolean): io.github.humbleui.skija.Path; + getAsLine(): Array; + getPoints(): Array; + getVerbs(): Array; + getConicWeights(): kotlin.FloatArray; + getPointsCount(): number; + getVerbsCount(): number; + getLastPt(): io.github.humbleui.types.Point | null | undefined; + getApproximateBytesUsed(): number; + getBounds(): io.github.humbleui.types.Rect; + updateBoundsCache(): io.github.humbleui.skija.Path; + computeTightBounds(): io.github.humbleui.types.Rect; + conservativelyContainsRect(p0: io.github.humbleui.types.Rect): boolean; + isRect(): io.github.humbleui.types.Rect | null | undefined; + makeTransform(p0: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.Path | null | undefined; + makeOffset(p0: number, p1: number): io.github.humbleui.skija.Path | null | undefined; + makeScale(p0: number): io.github.humbleui.skija.Path | null | undefined; + makeScale(p0: number, p1: number): io.github.humbleui.skija.Path | null | undefined; + getSegmentTypes(): Array; + setVolatile(p0: boolean): io.github.humbleui.skija.Path; + swap(p0: io.github.humbleui.skija.Path): io.github.humbleui.skija.Path; + setFillMode(p0: io.github.humbleui.skija.PathFillMode): io.github.humbleui.skija.Path; + reset(): io.github.humbleui.skija.Path; + iterator(p0: boolean): io.github.humbleui.skija.PathSegmentIterator; + contains(p0: number, p1: number): boolean; + contains(p0: io.github.humbleui.types.Point): boolean; + dump(): io.github.humbleui.skija.Path; + dumpHex(): io.github.humbleui.skija.Path; + serializeToBytes(): Array; + getGenerationId(): number; + isValid(): boolean; + fillWithPaint(p0: io.github.humbleui.skija.Paint, p1: io.github.humbleui.skija.PathBuilder, p2: io.github.humbleui.types.Rect | null | undefined, p3: io.github.humbleui.skija.Matrix33): boolean; + fillWithPaint(p0: io.github.humbleui.skija.Paint, p1: io.github.humbleui.skija.PathBuilder, p2: io.github.humbleui.skija.Matrix33): boolean; + fillWithPaint(p0: io.github.humbleui.skija.Paint, p1: io.github.humbleui.skija.PathBuilder): boolean; + fillWithPaint(p0: io.github.humbleui.skija.Paint, p1: io.github.humbleui.skija.PathBuilder, p2: number): boolean; + } + const PathFillMode: { + WINDING: io.github.humbleui.skija.PathFillMode; + EVEN_ODD: io.github.humbleui.skija.PathFillMode; + INVERSE_WINDING: io.github.humbleui.skija.PathFillMode; + INVERSE_EVEN_ODD: io.github.humbleui.skija.PathFillMode; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.PathFillMode; + } + interface PathFillMode extends kotlin.Enum { + isInverse(): boolean; + inverse(): io.github.humbleui.skija.PathFillMode; + } + const PathSegmentIterator: { + _FinalizerHolder: typeof io.github.humbleui.skija.PathSegmentIterator$_FinalizerHolder; + new(p0: io.github.humbleui.skija.Path, p1: number): io.github.humbleui.skija.PathSegmentIterator; + make(p0: io.github.humbleui.skija.Path, p1: boolean): io.github.humbleui.skija.PathSegmentIterator; + _nMake(p0: number, p1: boolean): number; + _nGetFinalizer(): number; + _nNext(p0: number): io.github.humbleui.skija.PathSegment; + } + interface PathSegmentIterator extends io.github.humbleui.skija.impl.Managed, kotlin.collections.MutableIterator { + _path: io.github.humbleui.skija.Path; + _nextSegment: io.github.humbleui.skija.PathSegment; + } + const PathSegment: { + new(): io.github.humbleui.skija.PathSegment; + new(p0: number, p1: number, p2: number, p3: boolean): io.github.humbleui.skija.PathSegment; + new(p0: number, p1: number, p2: number, p3: number, p4: boolean, p5: boolean): io.github.humbleui.skija.PathSegment; + new(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean): io.github.humbleui.skija.PathSegment; + new(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: boolean): io.github.humbleui.skija.PathSegment; + new(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: boolean): io.github.humbleui.skija.PathSegment; + new(p0: io.github.humbleui.skija.PathVerb, p1: io.github.humbleui.types.Point, p2: io.github.humbleui.types.Point, p3: io.github.humbleui.types.Point, p4: io.github.humbleui.types.Point, p5: number, p6: boolean, p7: boolean): io.github.humbleui.skija.PathSegment; + } + interface PathSegment { + _verb: io.github.humbleui.skija.PathVerb; + _p0: io.github.humbleui.types.Point; + _p1: io.github.humbleui.types.Point; + _p2: io.github.humbleui.types.Point; + _p3: io.github.humbleui.types.Point; + _conicWeight: number; + _closeLine: boolean; + _closedContour: boolean; + getVerb(): io.github.humbleui.skija.PathVerb; + getP0(): io.github.humbleui.types.Point; + getP1(): io.github.humbleui.types.Point; + getP2(): io.github.humbleui.types.Point; + getP3(): io.github.humbleui.types.Point; + getConicWeight(): number; + isCloseLine(): boolean; + isClosedContour(): boolean; + } + const PathVerb: { + MOVE: io.github.humbleui.skija.PathVerb; + LINE: io.github.humbleui.skija.PathVerb; + QUAD: io.github.humbleui.skija.PathVerb; + CONIC: io.github.humbleui.skija.PathVerb; + CUBIC: io.github.humbleui.skija.PathVerb; + CLOSE: io.github.humbleui.skija.PathVerb; + DONE: io.github.humbleui.skija.PathVerb; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.PathVerb; + } + interface PathVerb extends kotlin.Enum { + } + const PathSegmentIterator$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.PathSegmentIterator$_FinalizerHolder; + } + interface PathSegmentIterator$_FinalizerHolder { + } + const PathBuilder: { + _FinalizerHolder: typeof io.github.humbleui.skija.PathBuilder$_FinalizerHolder; + new(): io.github.humbleui.skija.PathBuilder; + new(p0: io.github.humbleui.skija.PathFillMode): io.github.humbleui.skija.PathBuilder; + new(p0: io.github.humbleui.skija.PathBuilder): io.github.humbleui.skija.PathBuilder; + new(p0: io.github.humbleui.skija.Path): io.github.humbleui.skija.PathBuilder; + new(p0: number, p1: number): io.github.humbleui.skija.PathBuilder; + _nGetFinalizer(): number; + _nMake(): number; + _nMakeFromFillMode(p0: number): number; + _nMakeFromPathBuilder(p0: number): number; + _nMakeFromPath(p0: number): number; + _nEquals(p0: number, p1: number): boolean; + _nGetFillMode(p0: number): number; + _nComputeFiniteBounds(p0: number): io.github.humbleui.types.Rect; + _nComputeTightBounds(p0: number): io.github.humbleui.types.Rect; + _nSnapshot(p0: number, p1: kotlin.FloatArray): number; + _nDetach(p0: number, p1: kotlin.FloatArray): number; + _nSetFillMode(p0: number, p1: number): void; + _nSetVolatile(p0: number, p1: boolean): void; + _nReset(p0: number): void; + _nMoveTo(p0: number, p1: number, p2: number): void; + _nLineTo(p0: number, p1: number, p2: number): void; + _nQuadTo(p0: number, p1: number, p2: number, p3: number, p4: number): void; + _nConicTo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; + _nCubicTo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; + _nClosePath(p0: number): void; + _nPolylineTo(p0: number, p1: kotlin.FloatArray): void; + _nRMoveTo(p0: number, p1: number, p2: number): void; + _nRLineTo(p0: number, p1: number, p2: number): void; + _nRQuadTo(p0: number, p1: number, p2: number, p3: number, p4: number): void; + _nRConicTo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; + _nRCubicTo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; + _nREllipticalArcTo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; + _nArcTo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: boolean): void; + _nTangentArcTo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; + _nEllipticalArcTo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): void; + _nAddArc(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; + _nAddRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; + _nAddOval(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): void; + _nAddRRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: kotlin.FloatArray, p6: number, p7: number): void; + _nAddCircle(p0: number, p1: number, p2: number, p3: number, p4: number): void; + _nAddPolygon(p0: number, p1: kotlin.FloatArray, p2: boolean): void; + _nAddPath(p0: number, p1: number, p2: boolean): void; + _nAddPathOffset(p0: number, p1: number, p2: number, p3: number, p4: boolean): void; + _nAddPathTransform(p0: number, p1: number, p2: kotlin.FloatArray, p3: boolean): void; + _nIncReserve(p0: number, p1: number, p2: number, p3: number): void; + _nOffset(p0: number, p1: number, p2: number): void; + _nTransform(p0: number, p1: kotlin.FloatArray): void; + _nIsFinite(p0: number): boolean; + _nToggleInverseFillType(p0: number): void; + _nIsEmpty(p0: number): boolean; + _nGetLastPt(p0: number): io.github.humbleui.types.Point; + _nSetPoint(p0: number, p1: number, p2: number, p3: number): void; + _nSetLastPt(p0: number, p1: number, p2: number): void; + _nCountPoints(p0: number): number; + _nIsInverseFillType(p0: number): boolean; + _nGetPoints(p0: number): Array; + _nGetVerbs(p0: number): Array; + _nGetConicWeights(p0: number): kotlin.FloatArray; + } + interface PathBuilder extends io.github.humbleui.skija.impl.Managed { + getFillMode(): io.github.humbleui.skija.PathFillMode; + computeFiniteBounds(): io.github.humbleui.types.Rect | null | undefined; + computeTightBounds(): io.github.humbleui.types.Rect | null | undefined; + snapshot(): io.github.humbleui.skija.Path; + snapshot(p0: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.Path; + detach(): io.github.humbleui.skija.Path; + detach(p0: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.Path; + build(): io.github.humbleui.skija.Path; + setFillMode(p0: io.github.humbleui.skija.PathFillMode): io.github.humbleui.skija.PathBuilder; + setVolatile(p0: boolean): io.github.humbleui.skija.PathBuilder; + reset(): io.github.humbleui.skija.PathBuilder; + moveTo(p0: number, p1: number): io.github.humbleui.skija.PathBuilder; + moveTo(p0: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + lineTo(p0: number, p1: number): io.github.humbleui.skija.PathBuilder; + lineTo(p0: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + quadTo(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.skija.PathBuilder; + quadTo(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + conicTo(p0: number, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.skija.PathBuilder; + conicTo(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: number): io.github.humbleui.skija.PathBuilder; + cubicTo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): io.github.humbleui.skija.PathBuilder; + cubicTo(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + closePath(): io.github.humbleui.skija.PathBuilder; + polylineTo(p0: kotlin.FloatArray): io.github.humbleui.skija.PathBuilder; + polylineTo(p0: Array): io.github.humbleui.skija.PathBuilder; + rMoveTo(p0: number, p1: number): io.github.humbleui.skija.PathBuilder; + rMoveTo(p0: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + rLineTo(p0: number, p1: number): io.github.humbleui.skija.PathBuilder; + rLineTo(p0: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + rQuadTo(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.skija.PathBuilder; + rQuadTo(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + rConicTo(p0: number, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.skija.PathBuilder; + rConicTo(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: number): io.github.humbleui.skija.PathBuilder; + rCubicTo(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): io.github.humbleui.skija.PathBuilder; + rCubicTo(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + rEllipticalArcTo(p0: number, p1: number, p2: number, p3: io.github.humbleui.skija.PathEllipseArc, p4: io.github.humbleui.skija.PathDirection, p5: number, p6: number): io.github.humbleui.skija.PathBuilder; + arcTo(p0: io.github.humbleui.types.Rect, p1: number, p2: number, p3: boolean): io.github.humbleui.skija.PathBuilder; + tangentArcTo(p0: number, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.skija.PathBuilder; + tangentArcTo(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point, p2: number): io.github.humbleui.skija.PathBuilder; + ellipticalArcTo(p0: number, p1: number, p2: number, p3: io.github.humbleui.skija.PathEllipseArc, p4: io.github.humbleui.skija.PathDirection, p5: number, p6: number): io.github.humbleui.skija.PathBuilder; + ellipticalArcTo(p0: io.github.humbleui.types.Point, p1: number, p2: io.github.humbleui.skija.PathEllipseArc, p3: io.github.humbleui.skija.PathDirection, p4: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + addArc(p0: io.github.humbleui.types.Rect, p1: number, p2: number): io.github.humbleui.skija.PathBuilder; + addLine(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.skija.PathBuilder; + addLine(p0: io.github.humbleui.types.Point, p1: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + addRect(p0: io.github.humbleui.types.Rect): io.github.humbleui.skija.PathBuilder; + addRect(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.PathDirection): io.github.humbleui.skija.PathBuilder; + addRect(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.PathDirection, p2: number): io.github.humbleui.skija.PathBuilder; + addOval(p0: io.github.humbleui.types.Rect): io.github.humbleui.skija.PathBuilder; + addOval(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.PathDirection): io.github.humbleui.skija.PathBuilder; + addOval(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.PathDirection, p2: number): io.github.humbleui.skija.PathBuilder; + addRRect(p0: io.github.humbleui.types.RRect): io.github.humbleui.skija.PathBuilder; + addRRect(p0: io.github.humbleui.types.RRect, p1: io.github.humbleui.skija.PathDirection): io.github.humbleui.skija.PathBuilder; + addRRect(p0: io.github.humbleui.types.RRect, p1: io.github.humbleui.skija.PathDirection, p2: number): io.github.humbleui.skija.PathBuilder; + addCircle(p0: number, p1: number, p2: number): io.github.humbleui.skija.PathBuilder; + addCircle(p0: io.github.humbleui.types.Point, p1: number): io.github.humbleui.skija.PathBuilder; + addCircle(p0: number, p1: number, p2: number, p3: io.github.humbleui.skija.PathDirection): io.github.humbleui.skija.PathBuilder; + addCircle(p0: io.github.humbleui.types.Point, p1: number, p2: io.github.humbleui.skija.PathDirection): io.github.humbleui.skija.PathBuilder; + addPolygon(p0: Array, p1: boolean): io.github.humbleui.skija.PathBuilder; + addPolygon(p0: kotlin.FloatArray, p1: boolean): io.github.humbleui.skija.PathBuilder; + addPath(p0: io.github.humbleui.skija.Path): io.github.humbleui.skija.PathBuilder; + addPath(p0: io.github.humbleui.skija.Path, p1: boolean): io.github.humbleui.skija.PathBuilder; + addPath(p0: io.github.humbleui.skija.Path, p1: number, p2: number): io.github.humbleui.skija.PathBuilder; + addPath(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + addPath(p0: io.github.humbleui.skija.Path, p1: number, p2: number, p3: boolean): io.github.humbleui.skija.PathBuilder; + addPath(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.types.Point, p2: boolean): io.github.humbleui.skija.PathBuilder; + addPath(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.PathBuilder; + addPath(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.skija.Matrix33, p2: boolean): io.github.humbleui.skija.PathBuilder; + incReserve(p0: number, p1: number, p2: number): io.github.humbleui.skija.PathBuilder; + incReserve(p0: number): io.github.humbleui.skija.PathBuilder; + offset(p0: number, p1: number): io.github.humbleui.skija.PathBuilder; + offset(p0: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + transform(p0: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.PathBuilder; + isFinite(): boolean; + toggleInverseFillType(): io.github.humbleui.skija.PathBuilder; + isEmpty(): boolean; + getLastPt(): io.github.humbleui.types.Point | null | undefined; + setPoint(p0: number, p1: number, p2: number): io.github.humbleui.skija.PathBuilder; + setPoint(p0: number, p1: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + setLastPt(p0: number, p1: number): io.github.humbleui.skija.PathBuilder; + setLastPt(p0: io.github.humbleui.types.Point): io.github.humbleui.skija.PathBuilder; + countPoints(): number; + isInverseFillType(): boolean; + getPoints(): Array; + getVerbs(): Array; + getConicWeights(): kotlin.FloatArray; + } + const PathEllipseArc: { + SMALLER: io.github.humbleui.skija.PathEllipseArc; + LARGER: io.github.humbleui.skija.PathEllipseArc; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.PathEllipseArc; + } + interface PathEllipseArc extends kotlin.Enum { + } + const PathDirection: { + CLOCKWISE: io.github.humbleui.skija.PathDirection; + COUNTER_CLOCKWISE: io.github.humbleui.skija.PathDirection; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.PathDirection; + } + interface PathDirection extends kotlin.Enum { + } + const PathBuilder$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.PathBuilder$_FinalizerHolder; + } + interface PathBuilder$_FinalizerHolder { + } + const PathOp: { + DIFFERENCE: io.github.humbleui.skija.PathOp; + INTERSECT: io.github.humbleui.skija.PathOp; + UNION: io.github.humbleui.skija.PathOp; + XOR: io.github.humbleui.skija.PathOp; + REVERSE_DIFFERENCE: io.github.humbleui.skija.PathOp; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.PathOp; + } + interface PathOp extends kotlin.Enum { + } + const Path$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.Path$_FinalizerHolder; + } + interface Path$_FinalizerHolder { + } + const Blender: { + new(p0: number): io.github.humbleui.skija.Blender; + makeWithMode(p0: io.github.humbleui.skija.BlendMode): io.github.humbleui.skija.Blender; + makeArithmetic(p0: number, p1: number, p2: number, p3: number, p4: boolean): io.github.humbleui.skija.Blender; + makeRuntime(p0: io.github.humbleui.skija.RuntimeEffect, p1: io.github.humbleui.skija.Data | null | undefined, p2: Array): io.github.humbleui.skija.Blender; + _nMakeWithMode(p0: number): number; + _nMakeArithmetic(p0: number, p1: number, p2: number, p3: number, p4: boolean): number; + _nMakeRuntime(p0: number, p1: number, p2: Array): number; + } + interface Blender extends io.github.humbleui.skija.RuntimeEffectChild { + } + const RuntimeEffect: { + new(p0: number): io.github.humbleui.skija.RuntimeEffect; + makeForColorFilter(p0: string): io.github.humbleui.skija.RuntimeEffect; + makeForColorFilter(p0: string, p1: io.github.humbleui.skija.RuntimeEffectOptions): io.github.humbleui.skija.RuntimeEffect; + makeForShader(p0: string): io.github.humbleui.skija.RuntimeEffect; + makeForShader(p0: string, p1: io.github.humbleui.skija.RuntimeEffectOptions): io.github.humbleui.skija.RuntimeEffect; + makeForBlender(p0: string): io.github.humbleui.skija.RuntimeEffect; + makeForBlender(p0: string, p1: io.github.humbleui.skija.RuntimeEffectOptions): io.github.humbleui.skija.RuntimeEffect; + _nMakeForColorFilter(p0: string, p1: boolean, p2: string): number; + _nMakeForShader(p0: string, p1: boolean, p2: string): number; + _nMakeForBlender(p0: string, p1: boolean, p2: string): number; + _nMakeShader(p0: number, p1: number, p2: Array, p3: kotlin.FloatArray): number; + _nMakeColorFilter(p0: number, p1: number, p2: Array): number; + _nMakeBlender(p0: number, p1: number, p2: Array): number; + _nGetSource(p0: number): string; + _nGetUniformSize(p0: number): number; + _nIsShaderAllowed(p0: number): boolean; + _nIsColorFilterAllowed(p0: number): boolean; + _nIsBlenderAllowed(p0: number): boolean; + _nGetUniforms(p0: number): Array; + _nGetUniform(p0: number, p1: string): io.github.humbleui.skija.RuntimeEffectUniformInfo; + _nGetChildren(p0: number): Array; + _nGetChild(p0: number, p1: string): io.github.humbleui.skija.RuntimeEffectChildInfo; + } + interface RuntimeEffect extends io.github.humbleui.skija.impl.RefCnt { + makeColorFilter(p0: io.github.humbleui.skija.Data | null | undefined, p1: Array): io.github.humbleui.skija.ColorFilter; + makeColorFilter(p0: io.github.humbleui.skija.Data | null | undefined): io.github.humbleui.skija.ColorFilter; + makeShader(p0: io.github.humbleui.skija.Data | null | undefined, p1: Array, p2: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.Data | null | undefined, p1: Array): io.github.humbleui.skija.Shader; + makeBlender(p0: io.github.humbleui.skija.Data | null | undefined, p1: Array): io.github.humbleui.skija.Blender; + makeBlender(p0: io.github.humbleui.skija.Data | null | undefined): io.github.humbleui.skija.Blender; + getSource(): string; + getUniformSize(): number; + isShaderAllowed(): boolean; + isColorFilterAllowed(): boolean; + isBlenderAllowed(): boolean; + getUniforms(): Array; + getUniform(p0: string): io.github.humbleui.skija.RuntimeEffectUniformInfo | null | undefined; + getChildren(): Array; + getChild(p0: string): io.github.humbleui.skija.RuntimeEffectChildInfo | null | undefined; + } + const RuntimeEffectUniformInfo: { + new(p0: string, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.skija.RuntimeEffectUniformInfo; + new(p0: string, p1: number, p2: io.github.humbleui.skija.RuntimeEffectUniformType, p3: number, p4: number): io.github.humbleui.skija.RuntimeEffectUniformInfo; + } + interface RuntimeEffectUniformInfo { + _name: string; + _offset: number; + _type: io.github.humbleui.skija.RuntimeEffectUniformType; + _count: number; + _flags: number; + isArray(): boolean; + isColor(): boolean; + getSizeInBytes(): number; + getName(): string; + getOffset(): number; + getType(): io.github.humbleui.skija.RuntimeEffectUniformType; + getCount(): number; + getFlags(): number; + } + const RuntimeEffectUniformType: { + FLOAT: io.github.humbleui.skija.RuntimeEffectUniformType; + FLOAT2: io.github.humbleui.skija.RuntimeEffectUniformType; + FLOAT3: io.github.humbleui.skija.RuntimeEffectUniformType; + FLOAT4: io.github.humbleui.skija.RuntimeEffectUniformType; + FLOAT2X2: io.github.humbleui.skija.RuntimeEffectUniformType; + FLOAT3X3: io.github.humbleui.skija.RuntimeEffectUniformType; + FLOAT4X4: io.github.humbleui.skija.RuntimeEffectUniformType; + INT: io.github.humbleui.skija.RuntimeEffectUniformType; + INT2: io.github.humbleui.skija.RuntimeEffectUniformType; + INT3: io.github.humbleui.skija.RuntimeEffectUniformType; + INT4: io.github.humbleui.skija.RuntimeEffectUniformType; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.RuntimeEffectUniformType; + } + interface RuntimeEffectUniformType extends kotlin.Enum { + } + const RuntimeEffectChildInfo: { + new(p0: string, p1: number, p2: number): io.github.humbleui.skija.RuntimeEffectChildInfo; + new(p0: string, p1: io.github.humbleui.skija.RuntimeEffectChildType, p2: number): io.github.humbleui.skija.RuntimeEffectChildInfo; + } + interface RuntimeEffectChildInfo { + _name: string; + _type: io.github.humbleui.skija.RuntimeEffectChildType; + _index: number; + getName(): string; + getType(): io.github.humbleui.skija.RuntimeEffectChildType; + getIndex(): number; + } + const RuntimeEffectChildType: { + SHADER: io.github.humbleui.skija.RuntimeEffectChildType; + COLOR_FILTER: io.github.humbleui.skija.RuntimeEffectChildType; + BLENDER: io.github.humbleui.skija.RuntimeEffectChildType; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.RuntimeEffectChildType; + } + interface RuntimeEffectChildType extends kotlin.Enum { + } + const RuntimeEffectOptions: { + DEFAULT: io.github.humbleui.skija.RuntimeEffectOptions; + new(p0: boolean): io.github.humbleui.skija.RuntimeEffectOptions; + new(p0: string | null | undefined): io.github.humbleui.skija.RuntimeEffectOptions; + new(p0: boolean, p1: string | null | undefined): io.github.humbleui.skija.RuntimeEffectOptions; + } + interface RuntimeEffectOptions { + _forceUnoptimized: boolean; + _name: string | null | undefined; + isForceUnoptimized(): boolean; + getName(): string | null | undefined; + } + const PathEffect: { + new(p0: number): io.github.humbleui.skija.PathEffect; + makePath1D(p0: io.github.humbleui.skija.Path, p1: number, p2: number, p3: io.github.humbleui.skija.PathEffect1DStyle): io.github.humbleui.skija.PathEffect; + makePath2D(p0: io.github.humbleui.skija.Matrix33, p1: io.github.humbleui.skija.Path): io.github.humbleui.skija.PathEffect; + makeLine2D(p0: number, p1: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.PathEffect; + makeCorner(p0: number): io.github.humbleui.skija.PathEffect; + makeDash(p0: kotlin.FloatArray, p1: number): io.github.humbleui.skija.PathEffect; + makeDiscrete(p0: number, p1: number, p2: number): io.github.humbleui.skija.PathEffect; + _nMakeSum(p0: number, p1: number): number; + _nMakeCompose(p0: number, p1: number): number; + _nMakePath1D(p0: number, p1: number, p2: number, p3: number): number; + _nMakePath2D(p0: kotlin.FloatArray, p1: number): number; + _nMakeLine2D(p0: number, p1: kotlin.FloatArray): number; + _nMakeCorner(p0: number): number; + _nMakeDash(p0: kotlin.FloatArray, p1: number): number; + _nMakeDiscrete(p0: number, p1: number, p2: number): number; + } + interface PathEffect extends io.github.humbleui.skija.impl.RefCnt, io.github.humbleui.skija.Flattenable { + makeSum(p0: io.github.humbleui.skija.PathEffect): io.github.humbleui.skija.PathEffect; + makeCompose(p0: io.github.humbleui.skija.PathEffect): io.github.humbleui.skija.PathEffect; + } + const PathEffect1DStyle: { + TRANSLATE: io.github.humbleui.skija.PathEffect1DStyle; + ROTATE: io.github.humbleui.skija.PathEffect1DStyle; + MORPH: io.github.humbleui.skija.PathEffect1DStyle; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.PathEffect1DStyle; + } + interface PathEffect1DStyle extends kotlin.Enum { + } + const MaskFilter: { + new(p0: number): io.github.humbleui.skija.MaskFilter; + makeBlur(p0: io.github.humbleui.skija.FilterBlurMode, p1: number): io.github.humbleui.skija.MaskFilter; + makeBlur(p0: io.github.humbleui.skija.FilterBlurMode, p1: number, p2: boolean): io.github.humbleui.skija.MaskFilter; + makeShader(p0: io.github.humbleui.skija.Shader): io.github.humbleui.skija.MaskFilter; + makeTable(p0: Array): io.github.humbleui.skija.MaskFilter; + makeGamma(p0: number): io.github.humbleui.skija.MaskFilter; + makeClip(p0: number, p1: number): io.github.humbleui.skija.MaskFilter; + _nMakeBlur(p0: number, p1: number, p2: boolean): number; + _nMakeShader(p0: number): number; + _nMakeTable(p0: Array): number; + _nMakeGamma(p0: number): number; + _nMakeClip(p0: number, p1: number): number; + } + interface MaskFilter extends io.github.humbleui.skija.impl.RefCnt, io.github.humbleui.skija.Flattenable { + } + const FilterBlurMode: { + NORMAL: io.github.humbleui.skija.FilterBlurMode; + SOLID: io.github.humbleui.skija.FilterBlurMode; + OUTER: io.github.humbleui.skija.FilterBlurMode; + INNER: io.github.humbleui.skija.FilterBlurMode; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.FilterBlurMode; + } + interface FilterBlurMode extends kotlin.Enum { + } + const ImageFilter: { + new(p0: number): io.github.humbleui.skija.ImageFilter; + makeArithmetic(p0: number, p1: number, p2: number, p3: number, p4: boolean, p5: io.github.humbleui.skija.ImageFilter | null | undefined, p6: io.github.humbleui.skija.ImageFilter | null | undefined, p7: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeArithmetic(p0: number, p1: number, p2: number, p3: number, p4: boolean, p5: io.github.humbleui.skija.ImageFilter | null | undefined, p6: io.github.humbleui.skija.ImageFilter | null | undefined, p7: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeArithmetic(p0: number, p1: number, p2: number, p3: number, p4: boolean, p5: io.github.humbleui.skija.ImageFilter | null | undefined, p6: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeBlend(p0: io.github.humbleui.skija.BlendMode, p1: io.github.humbleui.skija.ImageFilter | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeBlend(p0: io.github.humbleui.skija.BlendMode, p1: io.github.humbleui.skija.ImageFilter | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeBlend(p0: io.github.humbleui.skija.BlendMode, p1: io.github.humbleui.skija.ImageFilter | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeBlend(p0: io.github.humbleui.skija.Blender, p1: io.github.humbleui.skija.ImageFilter | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeBlend(p0: io.github.humbleui.skija.Blender, p1: io.github.humbleui.skija.ImageFilter | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeBlend(p0: io.github.humbleui.skija.Blender, p1: io.github.humbleui.skija.ImageFilter | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeBlur(p0: number, p1: number, p2: io.github.humbleui.skija.FilterTileMode, p3: io.github.humbleui.skija.ImageFilter | null | undefined, p4: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeBlur(p0: number, p1: number, p2: io.github.humbleui.skija.FilterTileMode, p3: io.github.humbleui.skija.ImageFilter | null | undefined, p4: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeBlur(p0: number, p1: number, p2: io.github.humbleui.skija.FilterTileMode): io.github.humbleui.skija.ImageFilter; + makeColorFilter(p0: io.github.humbleui.skija.ColorFilter, p1: io.github.humbleui.skija.ImageFilter | null | undefined, p2: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeColorFilter(p0: io.github.humbleui.skija.ColorFilter, p1: io.github.humbleui.skija.ImageFilter | null | undefined, p2: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeColorFilter(p0: io.github.humbleui.skija.ColorFilter, p1: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeCompose(p0: io.github.humbleui.skija.ImageFilter, p1: io.github.humbleui.skija.ImageFilter): io.github.humbleui.skija.ImageFilter; + makeCrop(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.FilterTileMode, p2: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeCrop(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDisplacementMap(p0: io.github.humbleui.skija.ColorChannel, p1: io.github.humbleui.skija.ColorChannel, p2: number, p3: io.github.humbleui.skija.ImageFilter | null | undefined, p4: io.github.humbleui.skija.ImageFilter | null | undefined, p5: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDisplacementMap(p0: io.github.humbleui.skija.ColorChannel, p1: io.github.humbleui.skija.ColorChannel, p2: number, p3: io.github.humbleui.skija.ImageFilter | null | undefined, p4: io.github.humbleui.skija.ImageFilter | null | undefined, p5: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDisplacementMap(p0: io.github.humbleui.skija.ColorChannel, p1: io.github.humbleui.skija.ColorChannel, p2: number, p3: io.github.humbleui.skija.ImageFilter | null | undefined, p4: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadow(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.skija.Color4f, p5: io.github.humbleui.skija.ColorSpace | null | undefined, p6: io.github.humbleui.skija.ImageFilter | null | undefined, p7: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadow(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.skija.Color4f, p5: io.github.humbleui.skija.ColorSpace | null | undefined, p6: io.github.humbleui.skija.ImageFilter | null | undefined, p7: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadow(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.skija.Color4f, p5: io.github.humbleui.skija.ColorSpace | null | undefined, p6: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadow(p0: number, p1: number, p2: number, p3: number, p4: number, p5: io.github.humbleui.skija.ImageFilter | null | undefined, p6: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadow(p0: number, p1: number, p2: number, p3: number, p4: number, p5: io.github.humbleui.skija.ImageFilter | null | undefined, p6: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadow(p0: number, p1: number, p2: number, p3: number, p4: number, p5: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadow(p0: number, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.skija.ImageFilter; + makeDropShadowOnly(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.skija.Color4f, p5: io.github.humbleui.skija.ColorSpace | null | undefined, p6: io.github.humbleui.skija.ImageFilter | null | undefined, p7: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadowOnly(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.skija.Color4f, p5: io.github.humbleui.skija.ColorSpace | null | undefined, p6: io.github.humbleui.skija.ImageFilter | null | undefined, p7: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadowOnly(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.skija.Color4f, p5: io.github.humbleui.skija.ColorSpace | null | undefined, p6: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadowOnly(p0: number, p1: number, p2: number, p3: number, p4: number, p5: io.github.humbleui.skija.ImageFilter | null | undefined, p6: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadowOnly(p0: number, p1: number, p2: number, p3: number, p4: number, p5: io.github.humbleui.skija.ImageFilter | null | undefined, p6: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDropShadowOnly(p0: number, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.skija.ImageFilter; + makeEmpty(): io.github.humbleui.skija.ImageFilter; + makeImage(p0: io.github.humbleui.skija.Image | null | undefined, p1: io.github.humbleui.types.Rect, p2: io.github.humbleui.types.Rect, p3: io.github.humbleui.skija.SamplingMode): io.github.humbleui.skija.ImageFilter; + makeImage(p0: io.github.humbleui.skija.Image | null | undefined): io.github.humbleui.skija.ImageFilter; + makeMagnifier(p0: io.github.humbleui.types.Rect, p1: number, p2: number, p3: io.github.humbleui.skija.SamplingMode, p4: io.github.humbleui.skija.ImageFilter | null | undefined, p5: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeMagnifier(p0: io.github.humbleui.types.Rect, p1: number, p2: number, p3: io.github.humbleui.skija.SamplingMode, p4: io.github.humbleui.skija.ImageFilter | null | undefined, p5: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeMagnifier(p0: io.github.humbleui.types.Rect, p1: number, p2: number, p3: io.github.humbleui.skija.SamplingMode, p4: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeMatrixConvolution(p0: number, p1: number, p2: kotlin.FloatArray, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.skija.FilterTileMode, p8: boolean, p9: io.github.humbleui.skija.ImageFilter | null | undefined, p10: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeMatrixConvolution(p0: number, p1: number, p2: kotlin.FloatArray, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.skija.FilterTileMode, p8: boolean, p9: io.github.humbleui.skija.ImageFilter | null | undefined, p10: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeMatrixConvolution(p0: number, p1: number, p2: kotlin.FloatArray, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.skija.FilterTileMode, p8: boolean, p9: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeMatrixTransform(p0: io.github.humbleui.skija.Matrix33, p1: io.github.humbleui.skija.SamplingMode, p2: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeMerge(p0: Array, p1: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeMerge(p0: Array, p1: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeMerge(p0: Array): io.github.humbleui.skija.ImageFilter; + makeOffset(p0: number, p1: number, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeOffset(p0: number, p1: number, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeOffset(p0: number, p1: number, p2: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makePicture(p0: io.github.humbleui.skija.Picture | null | undefined, p1: io.github.humbleui.types.Rect): io.github.humbleui.skija.ImageFilter; + makePicture(p0: io.github.humbleui.skija.Picture | null | undefined): io.github.humbleui.skija.ImageFilter; + makeRuntimeShader(p0: io.github.humbleui.skija.RuntimeEffectBuilder, p1: string | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeRuntimeShader(p0: io.github.humbleui.skija.RuntimeEffectBuilder, p1: number, p2: string | null | undefined, p3: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeRuntimeShader(p0: io.github.humbleui.skija.RuntimeEffectBuilder, p1: Array, p2: Array): io.github.humbleui.skija.ImageFilter; + makeRuntimeShader(p0: io.github.humbleui.skija.RuntimeEffectBuilder, p1: number, p2: Array, p3: Array): io.github.humbleui.skija.ImageFilter; + makeShader(p0: io.github.humbleui.skija.Shader, p1: boolean, p2: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeShader(p0: io.github.humbleui.skija.Shader, p1: boolean, p2: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeShader(p0: io.github.humbleui.skija.Shader, p1: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeShader(p0: io.github.humbleui.skija.Shader, p1: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeShader(p0: io.github.humbleui.skija.Shader): io.github.humbleui.skija.ImageFilter; + makeTile(p0: io.github.humbleui.types.Rect, p1: io.github.humbleui.types.Rect, p2: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDilate(p0: number, p1: number, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDilate(p0: number, p1: number, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDilate(p0: number, p1: number, p2: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeErode(p0: number, p1: number, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeErode(p0: number, p1: number, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeErode(p0: number, p1: number, p2: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDistantLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.skija.ImageFilter | null | undefined, p7: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDistantLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.skija.ImageFilter | null | undefined, p7: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDistantLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makePointLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.skija.ImageFilter | null | undefined, p7: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makePointLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.skija.ImageFilter | null | undefined, p7: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makePointLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeSpotLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: io.github.humbleui.skija.ImageFilter | null | undefined, p12: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeSpotLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: io.github.humbleui.skija.ImageFilter | null | undefined, p12: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeSpotLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDistantLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.skija.ImageFilter | null | undefined, p8: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDistantLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.skija.ImageFilter | null | undefined, p8: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeDistantLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makePointLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.skija.ImageFilter | null | undefined, p8: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makePointLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.skija.ImageFilter | null | undefined, p8: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makePointLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + makeSpotLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number, p12: io.github.humbleui.skija.ImageFilter | null | undefined, p13: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeSpotLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number, p12: io.github.humbleui.skija.ImageFilter | null | undefined, p13: io.github.humbleui.types.IRect | null | undefined): io.github.humbleui.skija.ImageFilter; + makeSpotLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number, p12: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.ImageFilter; + _nMakeArithmetic(p0: number, p1: number, p2: number, p3: number, p4: boolean, p5: number, p6: number, p7: io.github.humbleui.types.Rect): number; + _nMakeBlend(p0: number, p1: number, p2: number, p3: io.github.humbleui.types.Rect): number; + _nMakeBlendBlender(p0: number, p1: number, p2: number, p3: io.github.humbleui.types.Rect): number; + _nMakeBlur(p0: number, p1: number, p2: number, p3: number, p4: io.github.humbleui.types.Rect): number; + _nMakeColorFilter(p0: number, p1: number, p2: io.github.humbleui.types.Rect): number; + _nMakeCompose(p0: number, p1: number): number; + _nMakeCrop(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): number; + _nMakeDisplacementMap(p0: number, p1: number, p2: number, p3: number, p4: number, p5: io.github.humbleui.types.Rect): number; + _nMakeDropShadowCS(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: io.github.humbleui.types.Rect): number; + _nMakeDropShadow(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.types.Rect): number; + _nMakeDropShadowOnlyCS(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: io.github.humbleui.types.Rect): number; + _nMakeDropShadowOnly(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: io.github.humbleui.types.Rect): number; + _nMakeEmpty(): number; + _nMakeImage(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number): number; + _nMakeMagnifier(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: io.github.humbleui.types.Rect): number; + _nMakeMatrixConvolution(p0: number, p1: number, p2: kotlin.FloatArray, p3: number, p4: number, p5: number, p6: number, p7: number, p8: boolean, p9: number, p10: io.github.humbleui.types.Rect): number; + _nMakeMatrixTransform(p0: kotlin.FloatArray, p1: number, p2: number): number; + _nMakeMerge(p0: Array, p1: io.github.humbleui.types.Rect): number; + _nMakeOffset(p0: number, p1: number, p2: number, p3: io.github.humbleui.types.Rect): number; + _nMakePicture(p0: number, p1: number, p2: number, p3: number, p4: number): number; + _nMakePicture(p0: number): number; + _nMakeShader(p0: number, p1: boolean, p2: io.github.humbleui.types.Rect): number; + _nMakeTile(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number): number; + _nMakeDilate(p0: number, p1: number, p2: number, p3: io.github.humbleui.types.Rect): number; + _nMakeErode(p0: number, p1: number, p2: number, p3: io.github.humbleui.types.Rect): number; + _nMakeDistantLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.types.Rect): number; + _nMakePointLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: io.github.humbleui.types.Rect): number; + _nMakeSpotLitDiffuse(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number, p12: io.github.humbleui.types.Rect): number; + _nMakeDistantLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: io.github.humbleui.types.Rect): number; + _nMakePointLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: io.github.humbleui.types.Rect): number; + _nMakeSpotLitSpecular(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number, p12: number, p13: io.github.humbleui.types.Rect): number; + _nMakeRuntimeShader(p0: number, p1: number, p2: Array, p3: Array): number; + } + interface ImageFilter extends io.github.humbleui.skija.impl.RefCnt, io.github.humbleui.skija.Flattenable { + } + const ColorChannel: { + R: io.github.humbleui.skija.ColorChannel; + G: io.github.humbleui.skija.ColorChannel; + B: io.github.humbleui.skija.ColorChannel; + A: io.github.humbleui.skija.ColorChannel; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.ColorChannel; + } + interface ColorChannel extends kotlin.Enum { + } + const Picture: { + new(p0: number): io.github.humbleui.skija.Picture; + makeFromData(p0: io.github.humbleui.skija.Data): io.github.humbleui.skija.Picture | null | undefined; + makePlaceholder(p0: io.github.humbleui.types.Rect): io.github.humbleui.skija.Picture; + _nMakeFromData(p0: number): number; + _nPlayback(p0: number, p1: number, p2: unknown): void; + _nGetCullRect(p0: number): io.github.humbleui.types.Rect; + _nGetUniqueId(p0: number): number; + _nSerializeToData(p0: number): number; + _nMakePlaceholder(p0: number, p1: number, p2: number, p3: number): number; + _nGetApproximateOpCount(p0: number): number; + _nGetApproximateBytesUsed(p0: number): number; + _nMakeShader(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray, p5: io.github.humbleui.types.Rect): number; + } + interface Picture extends io.github.humbleui.skija.impl.RefCnt { + playback(p0: io.github.humbleui.skija.Canvas): io.github.humbleui.skija.Picture; + playback(p0: io.github.humbleui.skija.Canvas, p1: unknown): io.github.humbleui.skija.Picture; + getCullRect(): io.github.humbleui.types.Rect; + getUniqueId(): number; + serializeToData(): io.github.humbleui.skija.Data; + getApproximateOpCount(): number; + getApproximateBytesUsed(): number; + makeShader(p0: io.github.humbleui.skija.FilterTileMode, p1: io.github.humbleui.skija.FilterTileMode, p2: io.github.humbleui.skija.FilterMode): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.FilterTileMode, p1: io.github.humbleui.skija.FilterTileMode, p2: io.github.humbleui.skija.FilterMode, p3: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.FilterTileMode, p1: io.github.humbleui.skija.FilterTileMode, p2: io.github.humbleui.skija.FilterMode, p3: io.github.humbleui.skija.Matrix33 | null | undefined, p4: io.github.humbleui.types.Rect | null | undefined): io.github.humbleui.skija.Shader; + } + const FilterMode: { + NEAREST: io.github.humbleui.skija.FilterMode; + LINEAR: io.github.humbleui.skija.FilterMode; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.FilterMode; + } + interface FilterMode extends kotlin.Enum { + } + const RuntimeEffectBuilder: { + _FinalizerHolder: typeof io.github.humbleui.skija.RuntimeEffectBuilder$_FinalizerHolder; + new(p0: io.github.humbleui.skija.RuntimeEffect): io.github.humbleui.skija.RuntimeEffectBuilder; + new(p0: io.github.humbleui.skija.RuntimeEffect, p1: io.github.humbleui.skija.Data): io.github.humbleui.skija.RuntimeEffectBuilder; + new(p0: io.github.humbleui.skija.RuntimeEffectBuilder): io.github.humbleui.skija.RuntimeEffectBuilder; + _nGetFinalizer(): number; + _nMake(p0: number): number; + _nMakeWithUniforms(p0: number, p1: number): number; + _nMakeCopy(p0: number): number; + _nMakeShader(p0: number, p1: kotlin.FloatArray): number; + _nMakeColorFilter(p0: number): number; + _nMakeBlender(p0: number): number; + _nGetUniforms(p0: number): number; + _nSetUniformFloats(p0: number, p1: string, p2: kotlin.FloatArray): void; + _nSetUniformInts(p0: number, p1: string, p2: Array): void; + _nSetChild(p0: number, p1: string, p2: number): void; + } + interface RuntimeEffectBuilder extends io.github.humbleui.skija.impl.Managed { + _effect: io.github.humbleui.skija.RuntimeEffect; + _uniforms: io.github.humbleui.skija.Data; + makeShader(): io.github.humbleui.skija.Shader; + makeShader(p0: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Shader; + makeColorFilter(): io.github.humbleui.skija.ColorFilter; + makeBlender(): io.github.humbleui.skija.Blender; + setUniform(p0: string, p1: number): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: number, p2: number): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: number, p2: number, p3: number): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: kotlin.FloatArray): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: io.github.humbleui.skija.Matrix33): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: io.github.humbleui.skija.Matrix44): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: number): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: number, p2: number): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: number, p2: number, p3: number): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.skija.RuntimeEffectBuilder; + setUniform(p0: string, p1: Array): io.github.humbleui.skija.RuntimeEffectBuilder; + setChild(p0: string, p1: io.github.humbleui.skija.RuntimeEffectChild | null | undefined): io.github.humbleui.skija.RuntimeEffectBuilder; + getEffect(): io.github.humbleui.skija.RuntimeEffect; + getUniforms(): io.github.humbleui.skija.Data; + } + const RuntimeEffectBuilder$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.RuntimeEffectBuilder$_FinalizerHolder; + } + interface RuntimeEffectBuilder$_FinalizerHolder { + } + const Paint$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.Paint$_FinalizerHolder; + } + interface Paint$_FinalizerHolder { + } + const Bitmap$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.Bitmap$_FinalizerHolder; + } + interface Bitmap$_FinalizerHolder { + } + const SurfaceOrigin: { + TOP_LEFT: io.github.humbleui.skija.SurfaceOrigin; + BOTTOM_LEFT: io.github.humbleui.skija.SurfaceOrigin; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.SurfaceOrigin; + } + interface SurfaceOrigin extends kotlin.Enum { + } + const ImageWithFilterResult: { + new(p0: io.github.humbleui.skija.Image, p1: io.github.humbleui.types.IRect, p2: io.github.humbleui.types.IPoint): io.github.humbleui.skija.ImageWithFilterResult; + } + interface ImageWithFilterResult extends java.lang.AutoCloseable { + _image: io.github.humbleui.skija.Image; + _subset: io.github.humbleui.types.IRect; + _offset: io.github.humbleui.types.IPoint; + getImage(): io.github.humbleui.skija.Image; + getSubset(): io.github.humbleui.types.IRect; + getOffset(): io.github.humbleui.types.IPoint; + } + const Region: { + _FinalizerHolder: typeof io.github.humbleui.skija.Region$_FinalizerHolder; + new(): io.github.humbleui.skija.Region; + _nMake(): number; + _nGetFinalizer(): number; + _nSet(p0: number, p1: number): boolean; + _nIsEmpty(p0: number): boolean; + _nIsRect(p0: number): boolean; + _nIsComplex(p0: number): boolean; + _nGetBounds(p0: number): io.github.humbleui.types.IRect; + _nComputeRegionComplexity(p0: number): number; + _nGetBoundaryPath(p0: number): number; + _nSetEmpty(p0: number): boolean; + _nSetRect(p0: number, p1: number, p2: number, p3: number, p4: number): boolean; + _nSetRects(p0: number, p1: Array): boolean; + _nSetRegion(p0: number, p1: number): boolean; + _nSetPath(p0: number, p1: number, p2: number): boolean; + _nIntersectsIRect(p0: number, p1: number, p2: number, p3: number, p4: number): boolean; + _nIntersectsRegion(p0: number, p1: number): boolean; + _nContainsIPoint(p0: number, p1: number, p2: number): boolean; + _nContainsIRect(p0: number, p1: number, p2: number, p3: number, p4: number): boolean; + _nContainsRegion(p0: number, p1: number): boolean; + _nQuickContains(p0: number, p1: number, p2: number, p3: number, p4: number): boolean; + _nQuickRejectIRect(p0: number, p1: number, p2: number, p3: number, p4: number): boolean; + _nQuickRejectRegion(p0: number, p1: number): boolean; + _nTranslate(p0: number, p1: number, p2: number): void; + _nOpIRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): boolean; + _nOpRegion(p0: number, p1: number, p2: number): boolean; + _nOpIRectRegion(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): boolean; + _nOpRegionIRect(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number): boolean; + _nOpRegionRegion(p0: number, p1: number, p2: number, p3: number): boolean; + } + interface Region extends io.github.humbleui.skija.impl.Managed { + set(p0: io.github.humbleui.skija.Region): boolean; + isEmpty(): boolean; + isRect(): boolean; + isComplex(): boolean; + getBounds(): io.github.humbleui.types.IRect; + computeRegionComplexity(): number; + getBoundaryPath(): io.github.humbleui.skija.Path; + setEmpty(): boolean; + setRect(p0: io.github.humbleui.types.IRect): boolean; + setRects(p0: Array): boolean; + setRegion(p0: io.github.humbleui.skija.Region): boolean; + setPath(p0: io.github.humbleui.skija.Path, p1: io.github.humbleui.skija.Region): boolean; + intersects(p0: io.github.humbleui.types.IRect): boolean; + intersects(p0: io.github.humbleui.skija.Region): boolean; + contains(p0: number, p1: number): boolean; + contains(p0: io.github.humbleui.types.IRect): boolean; + contains(p0: io.github.humbleui.skija.Region): boolean; + quickContains(p0: io.github.humbleui.types.IRect): boolean; + quickReject(p0: io.github.humbleui.types.IRect): boolean; + quickReject(p0: io.github.humbleui.skija.Region): boolean; + translate(p0: number, p1: number): void; + op(p0: io.github.humbleui.types.IRect, p1: io.github.humbleui.skija.RegionOp): boolean; + op(p0: io.github.humbleui.skija.Region, p1: io.github.humbleui.skija.RegionOp): boolean; + op(p0: io.github.humbleui.types.IRect, p1: io.github.humbleui.skija.Region, p2: io.github.humbleui.skija.RegionOp): boolean; + op(p0: io.github.humbleui.skija.Region, p1: io.github.humbleui.types.IRect, p2: io.github.humbleui.skija.RegionOp): boolean; + op(p0: io.github.humbleui.skija.Region, p1: io.github.humbleui.skija.Region, p2: io.github.humbleui.skija.RegionOp): boolean; + } + const RegionOp: { + DIFFERENCE: io.github.humbleui.skija.RegionOp; + INTERSECT: io.github.humbleui.skija.RegionOp; + UNION: io.github.humbleui.skija.RegionOp; + XOR: io.github.humbleui.skija.RegionOp; + REVERSE_DIFFERENCE: io.github.humbleui.skija.RegionOp; + REPLACE: io.github.humbleui.skija.RegionOp; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.RegionOp; + } + interface RegionOp extends kotlin.Enum { + } + const Region$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.Region$_FinalizerHolder; + } + interface Region$_FinalizerHolder { + } + const Font: { + _FinalizerHolder: typeof io.github.humbleui.skija.Font$_FinalizerHolder; + new(p0: number): io.github.humbleui.skija.Font; + new(p0: number, p1: boolean): io.github.humbleui.skija.Font; + new(): io.github.humbleui.skija.Font; + new(p0: io.github.humbleui.skija.Typeface | null | undefined): io.github.humbleui.skija.Font; + new(p0: io.github.humbleui.skija.Typeface | null | undefined, p1: number): io.github.humbleui.skija.Font; + new(p0: io.github.humbleui.skija.Typeface | null | undefined, p1: number, p2: number, p3: number): io.github.humbleui.skija.Font; + makeClone(p0: number): io.github.humbleui.skija.Font; + _nGetFinalizer(): number; + _nMakeDefault(): number; + _nMakeTypeface(p0: number): number; + _nMakeTypefaceSize(p0: number, p1: number): number; + _nMakeTypefaceSizeScaleSkew(p0: number, p1: number, p2: number, p3: number): number; + _nMakeClone(p0: number): number; + _nEquals(p0: number, p1: number): boolean; + _nIsAutoHintingForced(p0: number): boolean; + _nAreBitmapsEmbedded(p0: number): boolean; + _nIsSubpixel(p0: number): boolean; + _nAreMetricsLinear(p0: number): boolean; + _nIsEmboldened(p0: number): boolean; + _nIsBaselineSnapped(p0: number): boolean; + _nSetAutoHintingForced(p0: number, p1: boolean): void; + _nSetBitmapsEmbedded(p0: number, p1: boolean): void; + _nSetSubpixel(p0: number, p1: boolean): void; + _nSetMetricsLinear(p0: number, p1: boolean): void; + _nSetEmboldened(p0: number, p1: boolean): void; + _nSetBaselineSnapped(p0: number, p1: boolean): void; + _nGetEdging(p0: number): number; + _nSetEdging(p0: number, p1: number): void; + _nGetHinting(p0: number): number; + _nSetHinting(p0: number, p1: number): void; + _nGetTypeface(p0: number): number; + _nGetSize(p0: number): number; + _nGetScaleX(p0: number): number; + _nGetSkewX(p0: number): number; + _nSetTypeface(p0: number, p1: number): void; + _nSetSize(p0: number, p1: number): void; + _nSetScaleX(p0: number, p1: number): void; + _nSetSkewX(p0: number, p1: number): void; + _nGetStringGlyphs(p0: number, p1: string): Array; + _nGetUTF32Glyph(p0: number, p1: number): number; + _nGetUTF32Glyphs(p0: number, p1: Array): Array; + _nGetStringGlyphsCount(p0: number, p1: string): number; + _nMeasureText(p0: number, p1: string, p2: number): io.github.humbleui.types.Rect; + _nMeasureTextWidth(p0: number, p1: string, p2: number): number; + _nGetWidths(p0: number, p1: Array): kotlin.FloatArray; + _nGetBounds(p0: number, p1: Array, p2: number): Array; + _nGetPositions(p0: number, p1: Array, p2: number, p3: number): Array; + _nGetXPositions(p0: number, p1: Array, p2: number): kotlin.FloatArray; + _nGetPath(p0: number, p1: number): number; + _nGetPaths(p0: number, p1: Array): Array; + _nGetMetrics(p0: number): io.github.humbleui.skija.FontMetrics; + _nGetSpacing(p0: number): number; + } + interface Font extends io.github.humbleui.skija.impl.Managed { + _metrics: io.github.humbleui.skija.FontMetrics; + _spacing: number; + _resetMetrics(): void; + isAutoHintingForced(): boolean; + areBitmapsEmbedded(): boolean; + isSubpixel(): boolean; + areMetricsLinear(): boolean; + isEmboldened(): boolean; + isBaselineSnapped(): boolean; + setAutoHintingForced(p0: boolean): io.github.humbleui.skija.Font; + setBitmapsEmbedded(p0: boolean): io.github.humbleui.skija.Font; + setSubpixel(p0: boolean): io.github.humbleui.skija.Font; + setMetricsLinear(p0: boolean): io.github.humbleui.skija.Font; + setEmboldened(p0: boolean): io.github.humbleui.skija.Font; + setBaselineSnapped(p0: boolean): io.github.humbleui.skija.Font; + getEdging(): io.github.humbleui.skija.FontEdging; + setEdging(p0: io.github.humbleui.skija.FontEdging): io.github.humbleui.skija.Font; + getHinting(): io.github.humbleui.skija.FontHinting; + setHinting(p0: io.github.humbleui.skija.FontHinting): io.github.humbleui.skija.Font; + makeWithSize(p0: number): io.github.humbleui.skija.Font; + getTypeface(): io.github.humbleui.skija.Typeface | null | undefined; + getSize(): number; + getScaleX(): number; + getSkewX(): number; + setTypeface(p0: io.github.humbleui.skija.Typeface | null | undefined): io.github.humbleui.skija.Font; + setSize(p0: number): io.github.humbleui.skija.Font; + setScaleX(p0: number): io.github.humbleui.skija.Font; + setSkewX(p0: number): io.github.humbleui.skija.Font; + getStringGlyphs(p0: string): Array; + getUTF32Glyphs(p0: Array): Array; + getUTF32Glyph(p0: number): number; + getStringGlyphsCount(p0: string): number; + measureText(p0: string): io.github.humbleui.types.Rect; + measureText(p0: string, p1: io.github.humbleui.skija.Paint): io.github.humbleui.types.Rect; + measureTextWidth(p0: string): number; + measureTextWidth(p0: string, p1: io.github.humbleui.skija.Paint): number; + getWidths(p0: Array): kotlin.FloatArray; + getBounds(p0: Array): Array; + getBounds(p0: Array, p1: io.github.humbleui.skija.Paint): Array; + getPositions(p0: Array): Array; + getPositions(p0: Array, p1: io.github.humbleui.types.Point): Array; + getXPositions(p0: Array): kotlin.FloatArray; + getXPositions(p0: Array, p1: number): kotlin.FloatArray; + getPath(p0: number): io.github.humbleui.skija.Path | null | undefined; + getPaths(p0: Array): Array; + getMetrics(): io.github.humbleui.skija.FontMetrics; + getSpacing(): number; + } + const FontMetrics: { + new(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number | null | undefined, p12: number | null | undefined, p13: number | null | undefined, p14: number | null | undefined): io.github.humbleui.skija.FontMetrics; + } + interface FontMetrics { + _top: number; + _ascent: number; + _descent: number; + _bottom: number; + _leading: number; + _avgCharWidth: number; + _maxCharWidth: number; + _xMin: number; + _xMax: number; + _xHeight: number; + _capHeight: number; + _underlineThickness: number | null | undefined; + _underlinePosition: number | null | undefined; + _strikeoutThickness: number | null | undefined; + _strikeoutPosition: number | null | undefined; + getHeight(): number; + getTop(): number; + getAscent(): number; + getDescent(): number; + getBottom(): number; + getLeading(): number; + getAvgCharWidth(): number; + getMaxCharWidth(): number; + getXMin(): number; + getXMax(): number; + getXHeight(): number; + getCapHeight(): number; + getUnderlineThickness(): number | null | undefined; + getUnderlinePosition(): number | null | undefined; + getStrikeoutThickness(): number | null | undefined; + getStrikeoutPosition(): number | null | undefined; + } + const FontEdging: { + ALIAS: io.github.humbleui.skija.FontEdging; + ANTI_ALIAS: io.github.humbleui.skija.FontEdging; + SUBPIXEL_ANTI_ALIAS: io.github.humbleui.skija.FontEdging; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.FontEdging; + } + interface FontEdging extends kotlin.Enum { + } + const FontHinting: { + NONE: io.github.humbleui.skija.FontHinting; + SLIGHT: io.github.humbleui.skija.FontHinting; + NORMAL: io.github.humbleui.skija.FontHinting; + FULL: io.github.humbleui.skija.FontHinting; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.FontHinting; + } + interface FontHinting extends kotlin.Enum { + } + const Typeface: { + new(p0: number): io.github.humbleui.skija.Typeface; + _nGetFontStyle(p0: number): number; + _nIsFixedPitch(p0: number): boolean; + _nGetVariations(p0: number): Array; + _nGetVariationAxes(p0: number): Array; + _nGetUniqueId(p0: number): number; + _nEquals(p0: number, p1: number): boolean; + _nMakeFromName(p0: string, p1: number): number; + _nMakeFromFile(p0: string, p1: number): number; + _nMakeFromData(p0: number, p1: number): number; + _nMakeClone(p0: number, p1: io.github.humbleui.skija.FontArguments): number; + _nGetUTF32Glyphs(p0: number, p1: Array): Array; + _nGetUTF32Glyph(p0: number, p1: number): number; + _nGetGlyphsCount(p0: number): number; + _nGetTablesCount(p0: number): number; + _nGetTableTags(p0: number): Array; + _nGetTableSize(p0: number, p1: number): number; + _nGetTableData(p0: number, p1: number): number; + _nGetUnitsPerEm(p0: number): number; + _nGetKerningPairAdjustments(p0: number, p1: Array): Array; + _nGetFamilyNames(p0: number): Array; + _nGetFamilyName(p0: number): string; + _nGetBounds(p0: number): io.github.humbleui.types.Rect; + _nOpenStream(p0: number, p1: Array): number; + } + interface Typeface extends io.github.humbleui.skija.impl.RefCnt { + getFontStyle(): io.github.humbleui.skija.FontStyle; + isBold(): boolean; + isItalic(): boolean; + isFixedPitch(): boolean; + getVariations(): Array; + getVariationAxes(): Array; + getUniqueId(): number; + makeClone(p0: io.github.humbleui.skija.FontVariation): io.github.humbleui.skija.Typeface; + makeClone(p0: Array): io.github.humbleui.skija.Typeface; + makeClone(p0: io.github.humbleui.skija.FontArguments): io.github.humbleui.skija.Typeface; + getStringGlyphs(p0: string): Array; + getUTF32Glyphs(p0: Array): Array; + getUTF32Glyph(p0: number): number; + getGlyphsCount(): number; + getTablesCount(): number; + getTableTags(): Array; + getTableSize(p0: string): number; + getTableData(p0: string): io.github.humbleui.skija.Data | null | undefined; + getUnitsPerEm(): number; + getKerningPairAdjustments(p0: Array): Array; + getFamilyNames(): Array; + getFamilyName(): string; + getBounds(): io.github.humbleui.types.Rect; + openStream(): io.github.humbleui.skija.StreamAsset; + openStream(p0: Array): io.github.humbleui.skija.StreamAsset; + } + const FontStyle: { + NORMAL: io.github.humbleui.skija.FontStyle; + BOLD: io.github.humbleui.skija.FontStyle; + ITALIC: io.github.humbleui.skija.FontStyle; + BOLD_ITALIC: io.github.humbleui.skija.FontStyle; + new(p0: number, p1: number, p2: io.github.humbleui.skija.FontSlant): io.github.humbleui.skija.FontStyle; + new(p0: number): io.github.humbleui.skija.FontStyle; + } + interface FontStyle { + _value: number; + getWeight(): number; + withWeight(p0: number): io.github.humbleui.skija.FontStyle; + getWidth(): number; + withWidth(p0: number): io.github.humbleui.skija.FontStyle; + getSlant(): io.github.humbleui.skija.FontSlant; + withSlant(p0: io.github.humbleui.skija.FontSlant): io.github.humbleui.skija.FontStyle; + } + const FontSlant: { + UPRIGHT: io.github.humbleui.skija.FontSlant; + ITALIC: io.github.humbleui.skija.FontSlant; + OBLIQUE: io.github.humbleui.skija.FontSlant; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.FontSlant; + } + interface FontSlant extends kotlin.Enum { + } + const FontVariation: { + EMPTY: Array; + _splitPattern: java.util.regex.Pattern; + _variationPattern: java.util.regex.Pattern; + new(p0: string, p1: number): io.github.humbleui.skija.FontVariation; + new(p0: number, p1: number): io.github.humbleui.skija.FontVariation; + parseOne(p0: string): io.github.humbleui.skija.FontVariation; + parse(p0: string): Array; + } + interface FontVariation { + _tag: number; + _value: number; + getTag(): string; + getValue(): number; + } + const FontArguments: { + DEFAULT: io.github.humbleui.skija.FontArguments; + new(p0: number, p1: Array, p2: number, p3: Array): io.github.humbleui.skija.FontArguments; + } + interface FontArguments { + _collectionIndex: number; + _variations: Array; + _paletteIndex: number; + _paletteOverrides: Array; + getCollectionIndex(): number; + getVariations(): Array; + getPaletteIndex(): number; + getPaletteOverrides(): Array; + withCollectionIndex(p0: number): io.github.humbleui.skija.FontArguments; + withVariations(p0: Array): io.github.humbleui.skija.FontArguments; + withPaletteIndex(p0: number): io.github.humbleui.skija.FontArguments; + withPaletteOverrides(p0: Array): io.github.humbleui.skija.FontArguments; + } + const StreamAsset: { + new(p0: number): io.github.humbleui.skija.StreamAsset; + _nGetFinalizer(): number; + _nIsAtEnd(p0: number): boolean; + _nRead(p0: number, p1: Array, p2: number): number; + _nPeek(p0: number, p1: Array, p2: number): number; + _nSkip(p0: number, p1: number): number; + _nRewind(p0: number): boolean; + _nDuplicate(p0: number): number; + _nFork(p0: number): number; + _nHasPosition(p0: number): boolean; + _nGetPosition(p0: number): number; + _nSeek(p0: number, p1: number): boolean; + _nMove(p0: number, p1: number): boolean; + _nHasLength(p0: number): boolean; + _nGetLength(p0: number): number; + _nGetMemoryBase(p0: number): number; + } + interface StreamAsset extends io.github.humbleui.skija.impl.Managed { + isAtEnd(): boolean; + read(p0: Array, p1: number): number; + peek(p0: Array, p1: number): number; + skip(p0: number): number; + rewind(): boolean; + duplicate(): io.github.humbleui.skija.StreamAsset | null | undefined; + fork(): io.github.humbleui.skija.StreamAsset | null | undefined; + hasPosition(): boolean; + getPosition(): number; + seek(p0: number): boolean; + move(p0: number): boolean; + hasLength(): boolean; + getLength(): number; + getMemoryBase(): number; + } + const Font$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.Font$_FinalizerHolder; + } + interface Font$_FinalizerHolder { + } + const TextBlob: { + _FinalizerHolder: typeof io.github.humbleui.skija.TextBlob$_FinalizerHolder; + new(p0: number): io.github.humbleui.skija.TextBlob; + makeFromPosH(p0: Array, p1: kotlin.FloatArray, p2: number, p3: io.github.humbleui.skija.Font): io.github.humbleui.skija.TextBlob; + makeFromPos(p0: Array, p1: Array, p2: io.github.humbleui.skija.Font): io.github.humbleui.skija.TextBlob; + makeFromRSXform(p0: Array, p1: Array, p2: io.github.humbleui.skija.Font): io.github.humbleui.skija.TextBlob; + makeFromData(p0: io.github.humbleui.skija.Data): io.github.humbleui.skija.TextBlob | null | undefined; + _nGetFinalizer(): number; + _nBounds(p0: number): io.github.humbleui.types.Rect; + _nGetUniqueId(p0: number): number; + _nGetIntercepts(p0: number, p1: number, p2: number, p3: number): kotlin.FloatArray; + _nMakeFromPosH(p0: Array, p1: kotlin.FloatArray, p2: number, p3: number): number; + _nMakeFromPos(p0: Array, p1: kotlin.FloatArray, p2: number): number; + _nMakeFromRSXform(p0: Array, p1: kotlin.FloatArray, p2: number): number; + _nSerializeToData(p0: number): number; + _nMakeFromData(p0: number): number; + _nGetGlyphs(p0: number): Array; + _nGetPositions(p0: number): kotlin.FloatArray; + _nGetClusters(p0: number): Array; + _nGetTightBounds(p0: number): io.github.humbleui.types.Rect; + _nGetBlockBounds(p0: number): io.github.humbleui.types.Rect; + _nGetFirstBaseline(p0: number): number; + _nGetLastBaseline(p0: number): number; + } + interface TextBlob extends io.github.humbleui.skija.impl.Managed { + getBounds(): io.github.humbleui.types.Rect; + getUniqueId(): number; + getIntercepts(p0: number, p1: number): kotlin.FloatArray; + getIntercepts(p0: number, p1: number, p2: io.github.humbleui.skija.Paint | null | undefined): kotlin.FloatArray; + serializeToData(): io.github.humbleui.skija.Data; + getGlyphs(): Array; + getPositions(): kotlin.FloatArray; + getClusters(): Array; + getTightBounds(): io.github.humbleui.types.Rect; + getBlockBounds(): io.github.humbleui.types.Rect; + getFirstBaseline(): number; + getLastBaseline(): number; + } + const TextBlob$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.TextBlob$_FinalizerHolder; + } + interface TextBlob$_FinalizerHolder { + } + const TextLine: { + _FinalizerHolder: typeof io.github.humbleui.skija.TextLine$_FinalizerHolder; + new(p0: number): io.github.humbleui.skija.TextLine; + make(p0: string, p1: io.github.humbleui.skija.Font): io.github.humbleui.skija.TextLine; + make(p0: string, p1: io.github.humbleui.skija.Font, p2: io.github.humbleui.skija.shaper.ShapingOptions): io.github.humbleui.skija.TextLine; + _nGetFinalizer(): number; + _nGetAscent(p0: number): number; + _nGetCapHeight(p0: number): number; + _nGetXHeight(p0: number): number; + _nGetDescent(p0: number): number; + _nGetLeading(p0: number): number; + _nGetWidth(p0: number): number; + _nGetHeight(p0: number): number; + _nGetTextBlob(p0: number): number; + _nGetGlyphs(p0: number): Array; + _nGetPositions(p0: number): kotlin.FloatArray; + _nGetRunPositions(p0: number): kotlin.FloatArray; + _nGetBreakPositions(p0: number): kotlin.FloatArray; + _nGetBreakOffsets(p0: number): Array; + _nGetOffsetAtCoord(p0: number, p1: number): number; + _nGetLeftOffsetAtCoord(p0: number, p1: number): number; + _nGetCoordAtOffset(p0: number, p1: number): number; + } + interface TextLine extends io.github.humbleui.skija.impl.Managed { + getAscent(): number; + getCapHeight(): number; + getXHeight(): number; + getDescent(): number; + getLeading(): number; + getWidth(): number; + getHeight(): number; + getTextBlob(): io.github.humbleui.skija.TextBlob | null | undefined; + getGlyphs(): Array; + getPositions(): kotlin.FloatArray; + getOffsetAtCoord(p0: number): number; + getLeftOffsetAtCoord(p0: number): number; + getCoordAtOffset(p0: number): number; + getIntercepts(p0: number, p1: number): kotlin.FloatArray; + getIntercepts(p0: number, p1: number, p2: io.github.humbleui.skija.Paint | null | undefined): kotlin.FloatArray; + } + const FontMgr: { + _DefaultHolder: typeof io.github.humbleui.skija.FontMgr$_DefaultHolder; + new(p0: number): io.github.humbleui.skija.FontMgr; + new(p0: number, p1: boolean): io.github.humbleui.skija.FontMgr; + useSystemRenderingParams(p0: boolean): void; + getDefault(): io.github.humbleui.skija.FontMgr; + _nGetFamiliesCount(p0: number): number; + _nGetFamilyName(p0: number, p1: number): string; + _nMakeStyleSet(p0: number, p1: number): number; + _nMatchFamily(p0: number, p1: string): number; + _nMatchFamilyStyle(p0: number, p1: string, p2: number): number; + _nMatchFamilyStyleCharacter(p0: number, p1: string, p2: number, p3: Array, p4: number): number; + _nMakeFromFile(p0: number, p1: string, p2: number): number; + _nMakeFromData(p0: number, p1: number, p2: number): number; + _nUseSystemRenderingParams(p0: number): void; + _nDefault(): number; + } + interface FontMgr extends io.github.humbleui.skija.impl.RefCnt { + getFamiliesCount(): number; + getFamilyName(p0: number): string; + makeStyleSet(p0: number): io.github.humbleui.skija.FontStyleSet; + matchFamily(p0: string | null | undefined): io.github.humbleui.skija.FontStyleSet; + matchFamilyStyle(p0: string | null | undefined, p1: io.github.humbleui.skija.FontStyle): io.github.humbleui.skija.Typeface | null | undefined; + matchFamiliesStyle(p0: Array, p1: io.github.humbleui.skija.FontStyle): io.github.humbleui.skija.Typeface | null | undefined; + matchFamilyStyleCharacter(p0: string | null | undefined, p1: io.github.humbleui.skija.FontStyle, p2: Array, p3: number): io.github.humbleui.skija.Typeface; + matchFamiliesStyleCharacter(p0: Array, p1: io.github.humbleui.skija.FontStyle, p2: Array, p3: number): io.github.humbleui.skija.Typeface | null | undefined; + makeFromFile(p0: string): io.github.humbleui.skija.Typeface | null | undefined; + makeFromFile(p0: string, p1: number): io.github.humbleui.skija.Typeface | null | undefined; + makeFromData(p0: io.github.humbleui.skija.Data): io.github.humbleui.skija.Typeface | null | undefined; + makeFromData(p0: io.github.humbleui.skija.Data, p1: number): io.github.humbleui.skija.Typeface | null | undefined; + } + const FontStyleSet: { + new(p0: number): io.github.humbleui.skija.FontStyleSet; + makeEmpty(): io.github.humbleui.skija.FontStyleSet; + _nMakeEmpty(): number; + _nCount(p0: number): number; + _nGetStyle(p0: number, p1: number): number; + _nGetStyleName(p0: number, p1: number): string; + _nGetTypeface(p0: number, p1: number): number; + _nMatchStyle(p0: number, p1: number): number; + } + interface FontStyleSet extends io.github.humbleui.skija.impl.RefCnt { + count(): number; + getStyle(p0: number): io.github.humbleui.skija.FontStyle; + getStyleName(p0: number): string; + getTypeface(p0: number): io.github.humbleui.skija.Typeface; + matchStyle(p0: io.github.humbleui.skija.FontStyle): io.github.humbleui.skija.Typeface; + } + const FontMgr$_DefaultHolder: { + INSTANCE: io.github.humbleui.skija.FontMgr; + new(): io.github.humbleui.skija.FontMgr$_DefaultHolder; + } + interface FontMgr$_DefaultHolder { + } + const TextLine$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.TextLine$_FinalizerHolder; + } + interface TextLine$_FinalizerHolder { + } + const Drawable: { + new(): io.github.humbleui.skija.Drawable; + _nMake(): number; + _nDraw(p0: number, p1: number, p2: kotlin.FloatArray): void; + _nMakePictureSnapshot(p0: number): number; + _nGetGenerationId(p0: number): number; + _nNotifyDrawingChanged(p0: number): void; + } + interface Drawable extends io.github.humbleui.skija.impl.RefCnt, io.github.humbleui.skija.Flattenable { + _bounds: io.github.humbleui.types.Rect; + draw(p0: io.github.humbleui.skija.Canvas): io.github.humbleui.skija.Drawable; + draw(p0: io.github.humbleui.skija.Canvas, p1: number, p2: number): io.github.humbleui.skija.Drawable; + draw(p0: io.github.humbleui.skija.Canvas, p1: io.github.humbleui.skija.Matrix33 | null | undefined): io.github.humbleui.skija.Drawable; + makePictureSnapshot(): io.github.humbleui.skija.Picture; + getGenerationId(): number; + getBounds(): io.github.humbleui.types.Rect; + notifyDrawingChanged(): io.github.humbleui.skija.Drawable; + onDraw(p0: io.github.humbleui.skija.Canvas): void; + onGetBounds(): io.github.humbleui.types.Rect; + _onDraw(p0: number): void; + _nInit(p0: number): void; + } + const ClipMode: { + DIFFERENCE: io.github.humbleui.skija.ClipMode; + INTERSECT: io.github.humbleui.skija.ClipMode; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.ClipMode; + } + interface ClipMode extends kotlin.Enum { + } + const SaveLayerRec: { + new(): io.github.humbleui.skija.SaveLayerRec; + new(p0: io.github.humbleui.types.Rect | null | undefined, p1: io.github.humbleui.skija.Paint | null | undefined): io.github.humbleui.skija.SaveLayerRec; + new(p0: io.github.humbleui.types.Rect | null | undefined, p1: io.github.humbleui.skija.Paint | null | undefined, p2: io.github.humbleui.skija.SaveLayerRecFlag): io.github.humbleui.skija.SaveLayerRec; + new(p0: io.github.humbleui.types.Rect | null | undefined, p1: io.github.humbleui.skija.Paint | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined): io.github.humbleui.skija.SaveLayerRec; + new(p0: io.github.humbleui.types.Rect | null | undefined, p1: io.github.humbleui.skija.Paint | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.skija.SaveLayerRecFlag): io.github.humbleui.skija.SaveLayerRec; + new(p0: io.github.humbleui.types.Rect | null | undefined, p1: io.github.humbleui.skija.Paint | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.skija.ColorSpace | null | undefined, p4: io.github.humbleui.skija.SaveLayerRecFlag): io.github.humbleui.skija.SaveLayerRec; + new(p0: io.github.humbleui.types.Rect | null | undefined, p1: io.github.humbleui.skija.Paint | null | undefined, p2: io.github.humbleui.skija.ImageFilter | null | undefined, p3: io.github.humbleui.skija.FilterTileMode, p4: io.github.humbleui.skija.ColorSpace | null | undefined, p5: io.github.humbleui.skija.SaveLayerRecFlag): io.github.humbleui.skija.SaveLayerRec; + } + interface SaveLayerRec { + _bounds: io.github.humbleui.types.Rect | null | undefined; + _paint: io.github.humbleui.skija.Paint | null | undefined; + _backdrop: io.github.humbleui.skija.ImageFilter | null | undefined; + _tileMode: io.github.humbleui.skija.FilterTileMode; + _colorSpace: io.github.humbleui.skija.ColorSpace | null | undefined; + _flags: number; + getBounds(): io.github.humbleui.types.Rect | null | undefined; + getPaint(): io.github.humbleui.skija.Paint | null | undefined; + getBackdrop(): io.github.humbleui.skija.ImageFilter | null | undefined; + getTileMode(): io.github.humbleui.skija.FilterTileMode; + getColorSpace(): io.github.humbleui.skija.ColorSpace | null | undefined; + getFlags(): number; + } + const SaveLayerRecFlag: { + PRESERVE_LCD_TEXT: io.github.humbleui.skija.SaveLayerRecFlag; + INIT_WITH_PREVIOUS: io.github.humbleui.skija.SaveLayerRecFlag; + F16_COLOR_TYPE: io.github.humbleui.skija.SaveLayerRecFlag; + _values: Array; + entries: kotlin.enums.EnumEntries; + values(): Array; + valueOf(value: string): io.github.humbleui.skija.SaveLayerRecFlag; + } + interface SaveLayerRecFlag extends kotlin.Enum { + _flag: number; + } + const Canvas$_FinalizerHolder: { + PTR: number; + new(): io.github.humbleui.skija.Canvas$_FinalizerHolder; + } + interface Canvas$_FinalizerHolder { + } + } + namespace types { + const Point: { + ZERO: io.github.humbleui.types.Point; + new(p0: number, p1: number): io.github.humbleui.types.Point; + flattenArray(p0: Array): kotlin.FloatArray; + fromArray(p0: kotlin.FloatArray): Array; + } + interface Point { + _x: number; + _y: number; + offset(p0: number, p1: number): io.github.humbleui.types.Point; + offset(p0: io.github.humbleui.types.Point): io.github.humbleui.types.Point; + scale(p0: number): io.github.humbleui.types.Point; + scale(p0: number, p1: number): io.github.humbleui.types.Point; + inverse(): io.github.humbleui.types.Point; + isEmpty(): boolean; + toIPoint(): io.github.humbleui.types.IPoint; + getX(): number; + getY(): number; + withX(p0: number): io.github.humbleui.types.Point; + withY(p0: number): io.github.humbleui.types.Point; + } + const IPoint: { + ZERO: io.github.humbleui.types.IPoint; + new(p0: number, p1: number): io.github.humbleui.types.IPoint; + _makeFromLong(p0: number): io.github.humbleui.types.IPoint; + } + interface IPoint { + _x: number; + _y: number; + offset(p0: number, p1: number): io.github.humbleui.types.IPoint; + offset(p0: io.github.humbleui.types.IPoint): io.github.humbleui.types.IPoint; + scale(p0: number): io.github.humbleui.types.IPoint; + scale(p0: number, p1: number): io.github.humbleui.types.IPoint; + inverse(): io.github.humbleui.types.IPoint; + isEmpty(): boolean; + toPoint(): io.github.humbleui.types.Point; + getX(): number; + getY(): number; + withX(p0: number): io.github.humbleui.types.IPoint; + withY(p0: number): io.github.humbleui.types.IPoint; + } + const IRect: { + new(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.IRect; + makeLTRB(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.IRect; + makeXYWH(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.IRect; + makeWH(p0: number, p1: number): io.github.humbleui.types.IRect; + } + interface IRect { + _left: number; + _top: number; + _right: number; + _bottom: number; + getWidth(): number; + getHeight(): number; + withWidth(p0: number): io.github.humbleui.types.IRect; + withHeight(p0: number): io.github.humbleui.types.IRect; + intersect(p0: io.github.humbleui.types.IRect): io.github.humbleui.types.IRect | null | undefined; + scale(p0: number): io.github.humbleui.types.IRect; + scale(p0: number, p1: number): io.github.humbleui.types.IRect; + offset(p0: number, p1: number): io.github.humbleui.types.IRect; + offset(p0: io.github.humbleui.types.IPoint): io.github.humbleui.types.IRect; + toRect(): io.github.humbleui.types.Rect; + isEmpty(): boolean; + contains(p0: number, p1: number): boolean; + contains(p0: io.github.humbleui.types.IPoint): boolean; + getLeft(): number; + getTop(): number; + getRight(): number; + getBottom(): number; + withLeft(p0: number): io.github.humbleui.types.IRect; + withTop(p0: number): io.github.humbleui.types.IRect; + withRight(p0: number): io.github.humbleui.types.IRect; + withBottom(p0: number): io.github.humbleui.types.IRect; + } + const Rect: { + new(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.Rect; + makeLTRB(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.Rect; + makeWH(p0: number, p1: number): io.github.humbleui.types.Rect; + makeWH(p0: io.github.humbleui.types.Point): io.github.humbleui.types.Rect; + makeXYWH(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.Rect; + } + interface Rect { + _left: number; + _top: number; + _right: number; + _bottom: number; + getWidth(): number; + getHeight(): number; + withWidth(p0: number): io.github.humbleui.types.Rect; + withHeight(p0: number): io.github.humbleui.types.Rect; + intersect(p0: io.github.humbleui.types.Rect): io.github.humbleui.types.Rect | null | undefined; + scale(p0: number): io.github.humbleui.types.Rect; + scale(p0: number, p1: number): io.github.humbleui.types.Rect; + offset(p0: number, p1: number): io.github.humbleui.types.Rect; + offset(p0: io.github.humbleui.types.Point): io.github.humbleui.types.Rect; + toIRect(): io.github.humbleui.types.IRect; + withRadii(p0: number): io.github.humbleui.types.RRect; + withRadii(p0: number, p1: number): io.github.humbleui.types.RRect; + withRadii(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.RRect; + withRadii(p0: kotlin.FloatArray): io.github.humbleui.types.RRect; + inflate(p0: number): io.github.humbleui.types.Rect; + isEmpty(): boolean; + getLeft(): number; + getTop(): number; + getRight(): number; + getBottom(): number; + withLeft(p0: number): io.github.humbleui.types.Rect; + withTop(p0: number): io.github.humbleui.types.Rect; + withRight(p0: number): io.github.humbleui.types.Rect; + withBottom(p0: number): io.github.humbleui.types.Rect; + } + const RRect: { + new(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray): io.github.humbleui.types.RRect; + makeLTRB(p0: number, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.types.RRect; + makeLTRB(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): io.github.humbleui.types.RRect; + makeLTRB(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): io.github.humbleui.types.RRect; + makeNinePatchLTRB(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): io.github.humbleui.types.RRect; + makeComplexLTRB(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray): io.github.humbleui.types.RRect; + makeOvalLTRB(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.RRect; + makePillLTRB(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.RRect; + makeXYWH(p0: number, p1: number, p2: number, p3: number, p4: number): io.github.humbleui.types.RRect; + makeXYWH(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): io.github.humbleui.types.RRect; + makeXYWH(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): io.github.humbleui.types.RRect; + makeNinePatchXYWH(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number): io.github.humbleui.types.RRect; + makeComplexXYWH(p0: number, p1: number, p2: number, p3: number, p4: kotlin.FloatArray): io.github.humbleui.types.RRect; + makeOvalXYWH(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.RRect; + makePillXYWH(p0: number, p1: number, p2: number, p3: number): io.github.humbleui.types.RRect; + } + interface RRect extends io.github.humbleui.types.Rect { + _radii: kotlin.FloatArray; + } + } } } }