From 98c3d90045708dd24ce5a3be11055235eb0a07b8 Mon Sep 17 00:00:00 2001 From: Mike Barkmin Date: Wed, 7 Oct 2026 17:18:05 +0200 Subject: [PATCH 1/4] Add shared catalogs, portable teaching resources, and cat assets --- .changeset/cat-mascot.md | 5 + .changeset/release-catalogs.md | 6 + .changeset/safe-game-speed.md | 5 + .github/actions/check-browser/action.yml | 40 + .github/workflows/docs.yml | 6 +- .github/workflows/release.yml | 31 +- .github/workflows/test.yml | 4 + README.md | 24 + build.sh | 3 + catalogs/README.md | 31 + catalogs/api.json | 17575 +++++++++++++ catalogs/assets.json | 12138 +++++++++ catalogs/examples.json | 1907 ++ catalogs/translations.json | 2207 ++ compatibility/README.md | 59 + compatibility/behavioral-checks.md | 49 + compatibility/browser-api.json | 21050 ++++++++++++++++ compatibility/browser-policy.json | 45 + .../browser-reference-diagnostics.json | 1 + .../checks/PortableBehaviorChecks.java | 38 + compatibility/contract.json | 14564 +++++++++++ compatibility/portable-project.md | 58 + compatibility/probes/LifecycleProbe.java | 103 + compatibility/probes/lifecycle-expected.txt | 22 + course/assessment.md | 12 + course/pilot.md | 27 + course/teacher-notes.md | 27 + docs/book/catalogs.md | 52 + docs/book/changelog.md | 189 +- docs/book/classroom.md | 63 + docs/book/compatibility.md | 500 + docs/book/differences-scratch.md | 47 +- docs/book/download.md | 8 + docs/book/erste-schritte.md | 59 + docs/book/examples/cat-platformer.md | 650 + docs/book/index.md | 6 +- docs/book/migration.md | 71 + docs/book/setup.md | 42 +- docs/book/tutorials/getting-started.md | 18 +- docs/public/assets/cat-animations.gif | Bin 0 -> 751371 bytes docs/public/assets/cat-platformer.png | Bin 0 -> 49234 bytes docs/public/catalogs/api.json | 17575 +++++++++++++ docs/public/catalogs/assets.json | 12138 +++++++++ docs/public/catalogs/examples.json | 1907 ++ docs/public/compatibility.json | 14564 +++++++++++ docs/templates/class-constructor.md.hbs | 25 +- docs/templates/class-method.md.hbs | 25 +- scripts/browser-compatibility.py | 194 + scripts/build-course-pack.py | 136 + scripts/lifecycle-parity.sh | 21 + scripts/parity-fixture.py | 30 +- scripts/release-catalogs.py | 269 + .../java/demos/catPlatformer/Bean.java | 18 + .../java/demos/catPlatformer/Bug.java | 54 + .../java/demos/catPlatformer/Cat.java | 257 + .../demos/catPlatformer/CatPlatformer.java | 161 + .../java/demos/catPlatformer/Goal.java | 19 + .../java/demos/catPlatformer/Ground.java | 15 + .../java/demos/catPlatformer/Heart.java | 22 + .../java/demos/catPlatformer/Ladder.java | 14 + .../java/demos/catPlatformer/Platform.java | 30 + .../scratch/internal/BuiltinAssets.java | 8 +- .../openpatch/scratch/internal/GameClock.java | 4 +- src/main/resources/catalogs/api.json | 17575 +++++++++++++ src/main/resources/catalogs/assets.json | 12138 +++++++++ src/main/resources/catalogs/examples.json | 1907 ++ src/main/resources/images/License-cat.txt | 7 + src/main/resources/images/cat.png | Bin 0 -> 53468 bytes src/main/resources/images/cat.xml | 83 + .../scratch/internal/BuiltinAssetsTest.java | 30 +- .../scratch/internal/GameClockTest.java | 14 + .../java/portable/PortableBehaviorChecks.java | 40 + .../portable/PortableBehaviorChecksTest.java | 7 + src/tools/java/doclets/Scratch4JDoclet.java | 40 +- src/tools/java/docs/GenerateAssetPages.java | 7 +- 75 files changed, 151011 insertions(+), 65 deletions(-) create mode 100644 .changeset/cat-mascot.md create mode 100644 .changeset/release-catalogs.md create mode 100644 .changeset/safe-game-speed.md create mode 100644 .github/actions/check-browser/action.yml create mode 100644 catalogs/README.md create mode 100644 catalogs/api.json create mode 100644 catalogs/assets.json create mode 100644 catalogs/examples.json create mode 100644 catalogs/translations.json create mode 100644 compatibility/README.md create mode 100644 compatibility/behavioral-checks.md create mode 100644 compatibility/browser-api.json create mode 100644 compatibility/browser-policy.json create mode 100644 compatibility/browser-reference-diagnostics.json create mode 100644 compatibility/checks/PortableBehaviorChecks.java create mode 100644 compatibility/contract.json create mode 100644 compatibility/portable-project.md create mode 100644 compatibility/probes/LifecycleProbe.java create mode 100644 compatibility/probes/lifecycle-expected.txt create mode 100644 course/assessment.md create mode 100644 course/pilot.md create mode 100644 course/teacher-notes.md create mode 100644 docs/book/catalogs.md create mode 100644 docs/book/classroom.md create mode 100644 docs/book/compatibility.md create mode 100644 docs/book/erste-schritte.md create mode 100644 docs/book/examples/cat-platformer.md create mode 100644 docs/book/migration.md create mode 100644 docs/public/assets/cat-animations.gif create mode 100644 docs/public/assets/cat-platformer.png create mode 100644 docs/public/catalogs/api.json create mode 100644 docs/public/catalogs/assets.json create mode 100644 docs/public/catalogs/examples.json create mode 100644 docs/public/compatibility.json create mode 100644 scripts/browser-compatibility.py create mode 100644 scripts/build-course-pack.py create mode 100644 scripts/lifecycle-parity.sh create mode 100644 scripts/release-catalogs.py create mode 100644 src/examples/java/demos/catPlatformer/Bean.java create mode 100644 src/examples/java/demos/catPlatformer/Bug.java create mode 100644 src/examples/java/demos/catPlatformer/Cat.java create mode 100644 src/examples/java/demos/catPlatformer/CatPlatformer.java create mode 100644 src/examples/java/demos/catPlatformer/Goal.java create mode 100644 src/examples/java/demos/catPlatformer/Ground.java create mode 100644 src/examples/java/demos/catPlatformer/Heart.java create mode 100644 src/examples/java/demos/catPlatformer/Ladder.java create mode 100644 src/examples/java/demos/catPlatformer/Platform.java create mode 100644 src/main/resources/catalogs/api.json create mode 100644 src/main/resources/catalogs/assets.json create mode 100644 src/main/resources/catalogs/examples.json create mode 100644 src/main/resources/images/License-cat.txt create mode 100644 src/main/resources/images/cat.png create mode 100644 src/main/resources/images/cat.xml create mode 100644 src/test/java/portable/PortableBehaviorChecks.java create mode 100644 src/test/java/portable/PortableBehaviorChecksTest.java diff --git a/.changeset/cat-mascot.md b/.changeset/cat-mascot.md new file mode 100644 index 00000000..63fd8ed6 --- /dev/null +++ b/.changeset/cat-mascot.md @@ -0,0 +1,5 @@ +--- +type: minor +--- + +Add the Scratch for Java cat as built-in sprites. Its animations - idle, walk, crouch, jump, fall, land, punch, hurt, ko, cheer and climb - load by name, for example `addAnimation("walk", "cat_walk_%d", 6)`. Coffee beans, a bug, a goal mug and hearts for a platformer come with it. The new Cat Platformer example shows them all in a game. diff --git a/.changeset/release-catalogs.md b/.changeset/release-catalogs.md new file mode 100644 index 00000000..8fdb7757 --- /dev/null +++ b/.changeset/release-catalogs.md @@ -0,0 +1,6 @@ +--- +type: patch +--- + +Distribute versioned API, asset and example catalogs, with stable documentation +identifiers, translation overrides and offline example artifacts. diff --git a/.changeset/safe-game-speed.md b/.changeset/safe-game-speed.md new file mode 100644 index 00000000..db29cf66 --- /dev/null +++ b/.changeset/safe-game-speed.md @@ -0,0 +1,5 @@ +--- +type: patch +--- + +Treat non-finite game speeds as zero and ignore negative elapsed frame time, keeping timers usable after invalid speed input. diff --git a/.github/actions/check-browser/action.yml b/.github/actions/check-browser/action.yml new file mode 100644 index 00000000..c586034a --- /dev/null +++ b/.github/actions/check-browser/action.yml @@ -0,0 +1,40 @@ +name: Check browser compatibility +description: Require the browser checkout, current generated contract, parity fixture and reference compilation +runs: + using: composite + steps: + - uses: actions/checkout@v7 + with: + repository: openpatch/online-ide + path: .validation/online-ide + - uses: actions/setup-node@v4 + with: + node-version: '22' + cache: npm + cache-dependency-path: .validation/online-ide/package-lock.json + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Regenerate Javadoc metadata + shell: bash + run: mvn -q -DskipTests prepare-package + - name: Require current compatibility artifacts and parity fixture + shell: bash + run: | + python3 scripts/browser-compatibility.py --check --online-ide .validation/online-ide + python3 scripts/parity-fixture.py --check --strict --online-ide .validation/online-ide + python3 scripts/release-catalogs.py --check --online-ide .validation/online-ide + - name: Compile reference examples and check browser inventories + shell: bash + working-directory: .validation/online-ide + run: | + npm ci + npm run test:ci -- src/test/ScratchCompatibilityTest.test.ts + npm run browser:install -- --with-deps + npm run test:browser + - name: Match desktop lifecycle behavior + shell: bash + run: | + sudo apt-get update + sudo apt-get install -y xvfb libgl1-mesa-dri + bash scripts/lifecycle-parity.sh diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 006513f2..430c5d26 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -8,6 +8,7 @@ on: jobs: documentation: runs-on: ubuntu-latest + timeout-minutes: 20 permissions: pages: write # needed to publish to GitHub Pages @@ -21,12 +22,15 @@ jobs: uses: actions/setup-java@v5 with: distribution: temurin - java-version: 17 + java-version: 25 cache: maven - name: Build Java Project run: mvn clean package + - name: Check browser compatibility before publishing + uses: ./.github/actions/check-browser + - name: Build Docs run: bash ./build.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2fa37a14..40311a16 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,7 +7,21 @@ on: - main jobs: + validate: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: 25 + cache: maven + - run: mvn -B test + - uses: ./.github/actions/check-browser + release: + needs: validate if: github.event.pull_request.merged == true # only run if PR was merged runs-on: ubuntu-latest @@ -60,6 +74,21 @@ jobs: # to avoid paying for the full suite twice in the same job. run: mvn -B clean package -Pall -DskipTests + - name: Require current catalogs and assemble offline examples + run: | + python3 scripts/browser-compatibility.py --check + python3 scripts/release-catalogs.py --check + python3 scripts/release-catalogs.py --archive dist/scratch-catalogs.zip + + - name: Checkout curriculum for the release course pack + uses: actions/checkout@v7 + with: + repository: openpatch/hyperbook-informatik + path: .validation/curriculum + + - name: Assemble offline course pack + run: python3 scripts/build-course-pack.py --curriculum .validation/curriculum --output dist/scratch-to-java-course.zip + - name: Get project version id: get-version run: | @@ -91,9 +120,9 @@ jobs: files: | target/*.jar dist/*.jar + dist/*.zip - name: Delete changeset branch run: | echo "Deleting branch 'changeset'" git push origin --delete changeset || true - diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1da45772..883d5a4f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,6 +11,7 @@ on: jobs: test: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout repository @@ -29,3 +30,6 @@ jobs: - name: Run tests run: mvn -B test + + - name: Check browser compatibility and generated references + uses: ./.github/actions/check-browser diff --git a/README.md b/README.md index 6326d879..025d9083 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,10 @@ npx hyperbook dev ## Library +Browser versions, API availability and synchronization commands are documented in +[compatibility/README.md](compatibility/README.md). The generated contract is +[compatibility/contract.json](compatibility/contract.json). + If you want to work on the library. You need a Java environment and Maven. Then you can use the following command to build the library. @@ -132,3 +136,23 @@ Scratch for Java is maintained by [OpenPatch](https://openpatch.org), an organiz The Scratch for Java library is profiled using [Java Profiler](https://www.ej-technologies.com/products/jprofiler/overview.html) [![Java Profiler](https://www.ej-technologies.com/images/product_banners/jprofiler_large.png)](https://www.ej-technologies.com/products/jprofiler/overview.html) + + +## Shared release data and offline course + +Javadoc generates the API catalog; atlas and example sources generate the asset +and project catalogs. Run `scripts/release-catalogs.py` after documentation +metadata generation. `--check`, `--studio` and `--online-ide` verify consumer +snapshots without requiring a particular checkout layout. `--archive` creates +an offline artifact used by Studio's template synchronizer. + +Build the tutorial/Spielwerkstatt pack with: + +```sh +python3 scripts/build-course-pack.py --curriculum /path/to/hyperbook-informatik \ + --output target/scratch-to-java-course.zip +``` + +See `compatibility/portable-project.md`, `compatibility/behavioral-checks.md` +and `course/` for transfer/test formats, teacher notes and the pending pilot form. +The canonical behavioral check runs unchanged in desktop JUnit and Chromium. diff --git a/build.sh b/build.sh index 0b81310a..55bdc706 100755 --- a/build.sh +++ b/build.sh @@ -36,6 +36,9 @@ done # pages as they were after the last `mvn package`, which is how pages for # deleted methods used to survive. mvn -q -DskipTests prepare-package +python3 scripts/browser-compatibility.py +python3 scripts/release-catalogs.py +python3 scripts/build-course-pack.py --output docs/public/scratch-to-java-course.zip # Any jar linked in for local testing by scripts/link-jar.sh is taken out again # here. Zipping one in would put a 19 MB library inside every project download. diff --git a/catalogs/README.md b/catalogs/README.md new file mode 100644 index 00000000..81e8ca3c --- /dev/null +++ b/catalogs/README.md @@ -0,0 +1,31 @@ +# Release catalogs + +The doclet supplies public overloads, parameter names and documentation. +Availability comes from the reviewed compatibility contract. Translation +overrides use stable identifiers: documentation group plus erased parameters. +Do not overwrite translated descriptions when regenerating English Javadoc. + +Generate after the doclet and compatibility artifacts. Pass explicit consumer +paths to synchronize their committed snapshots: + + mvn -q -DskipTests prepare-package + python3 scripts/browser-compatibility.py --online-ide /path/to/online-ide + python3 scripts/release-catalogs.py --online-ide /path/to/online-ide --studio /path/to/studio + python3 scripts/release-catalogs.py --check --online-ide /path/to/online-ide --studio /path/to/studio + +The same JSON is distributed in the library JAR, documentation, Studio and +browser assets. Example entries include checksums for source and asset files. +The --archive option packages those ordinary files: + + python3 scripts/release-catalogs.py --archive target/scratch-catalogs.zip + +Studio can update templates from the release artifact without a sibling checkout: + + python3 scripts/sync-templates.py --artifact /path/to/scratch-catalogs.zip --check + +Older libraries can use local source JARs. Without source metadata, Studio filters +the current descriptions against the project's actual public binary signatures. +No network request or class initialization is needed to select help. + +CI checks consumer snapshots against the library's default branch. Coordinated +changes must merge their generated snapshots together before these gates pass. diff --git a/catalogs/api.json b/catalogs/api.json new file mode 100644 index 00000000..bb9e7bd9 --- /dev/null +++ b/catalogs/api.json @@ -0,0 +1,17575 @@ +{ + "schemaVersion": 1, + "libraryVersion": "5.7.0", + "browserVersion": "5.7.0-browser.2", + "methods": [ + { + "id": "AnimatedSprite/addAnimation(String,String,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int" + ], + "parameterNames": [ + "name", + "pattern", + "frames" + ], + "params": [ + "String name", + "String pattern", + "int frames" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "pattern: the pattern (@see String#format) of the file names. The frame\n starts from 1.", + "frames: the number of frames in the animation" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt eine Animation hinzu. %d im Muster wird durch 1..frames ersetzt, z.B. bunny1_walk%d" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,Function,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.util.function.Function", + "int" + ], + "parameterNames": [ + "name", + "builder", + "frame" + ], + "params": [ + "String name", + "Function builder", + "int frame" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nTo add an animation with file names \"walk_1.png\", \"walk_2.png\",\n\"walk_3.png\", you can use the following code:\n\n```java\nsprite.addAnimation(\"walk\", i -> \"walk_\" + i + \".png\", 3);\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "builder: a function that builds the file names for the animation frames", + "frame: the number of frames in the animation. The frame starts from\n 1." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt eine Animation an; builder liefert zu 1..frames jeweils den Bildpfad" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,String,int,int,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int" + ], + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height" + ], + "params": [ + "String name", + "String path", + "int frames", + "int width", + "int height" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nFor an animation sprite sheet, where each frame is of equal width and height,\nyou can use this method to add an animation by specifying the path to the\nsprite sheet, the number of frames, and the dimensions of each frame.\nFor example, for a four-frame animation arranged in a single row, each frame\nbeing 64x64 pixels, you can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64);\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "path: the path to the animation frames", + "frames: the number of frames in the animation", + "width: the width of each frame", + "height: the height of each frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zerlegt ein Bild in gleich große Einzelbilder und legt daraus eine Animation an" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,String,int,int,int,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int" + ], + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height", + "row" + ], + "params": [ + "String name", + "String path", + "int frames", + "int width", + "int height", + "int row" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nIf the animation frames are arranged in rows in a sprite sheet, you can use\nthis method to specify which row to use for the animation.\n\nFor example, for a four-frame animation arranged in a single row, you want the second, each frame\nbeing 64x64 pixels, you can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64, 2);\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "path: the path to the animation frames", + "frames: the number of frames in the animation", + "width: the width of each frame", + "height: the height of each frame", + "row: the row of the animation frames" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wie addAnimation(name, imagePath, frames, width, height), beginnt aber in der angegebenen Zeile" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,String,int,int,int,int,boolean)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int", + "boolean" + ], + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height", + "column", + "useColumns" + ], + "params": [ + "String name", + "String path", + "int frames", + "int width", + "int height", + "int column", + "boolean useColumns" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nIf the animation frames are arranged in either rows or columns in a sprite\nsheet, you can use this method to specify which column or row to use for the\nanimation. Take four frame animation arranged in a single column. Each frame is\n64x64 pixels. You can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64, 1, true); // use column 1\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "path: the path to the animation frames", + "frames: the number of frames in the animation", + "width: the width of each frame", + "height: the height of each frame", + "column: the column of the animation frames", + "useColumns: whether to use columns or rows" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt eine Animation aus einer Spalte des Bildes an" + } + } + }, + { + "id": "AnimatedSprite/clone()", + "memberId": "AnimatedSprite/clone", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "clone", + "static": false, + "returnType": "AnimatedSprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a clone of this sprite with the same animations, playing the same\none, and puts it on the stage right behind this sprite. See\n[Sprite.clone()](../Sprite/clone).", + "description": "Creates a clone of this sprite with the same animations, playing the same\none, and puts it on the stage right behind this sprite. See\n[Sprite.clone()](../Sprite/clone).", + "scratchblock": null, + "paramDocs": [], + "returns": "the clone, of the same class as this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/clone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie dieser Figur" + } + } + }, + { + "id": "AnimatedSprite/constructor()", + "memberId": "AnimatedSprite/constructor", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "constructor", + "static": false, + "returnType": "AnimatedSprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.", + "description": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.\n\nExample usage:\n\n```java\nAnimatedSprite sprite = new AnimatedSprite();\nsprite.addCostume(\"idle\", \"assets/idle.png\");\nsprite.addAnimation(\"walk\", \"assets/walk_%d.png\", 4);\nsprite.playAnimation(\"walk\");\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine neue animierte Figur" + } + } + }, + { + "id": "AnimatedSprite/constructor(AnimatedSprite)", + "memberId": "AnimatedSprite/constructor", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "constructor", + "static": false, + "returnType": "AnimatedSprite", + "parameterTypes": [ + "org.openpatch.scratch.AnimatedSprite" + ], + "parameterNames": [ + "animatedSprite" + ], + "params": [ + "AnimatedSprite animatedSprite" + ], + "summary": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.", + "description": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.\n\nExample usage:\n\n```java\nAnimatedSprite sprite = new AnimatedSprite();\nsprite.addCostume(\"idle\", \"assets/idle.png\");\nsprite.addAnimation(\"walk\", \"assets/walk_%d.png\", 4);\nsprite.playAnimation(\"walk\");\n```", + "scratchblock": null, + "paramDocs": [ + "animatedSprite: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der angegebenen animierten Figur" + } + } + }, + { + "id": "AnimatedSprite/getAnimationFrame()", + "memberId": "AnimatedSprite/getAnimationFrame", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "getAnimationFrame", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the current animation frame.", + "description": "Gets the current animation frame.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current animation frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/getAnimationFrame", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer des aktuellen Einzelbildes zurück" + } + } + }, + { + "id": "AnimatedSprite/getAnimationInterval()", + "memberId": "AnimatedSprite/getAnimationInterval", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "getAnimationInterval", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the interval between animation frames.", + "description": "Gets the interval between animation frames.", + "scratchblock": null, + "paramDocs": [], + "returns": "the interval between animation frames", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/getAnimationInterval", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt zurück, wie viele Millisekunden ein Einzelbild angezeigt wird" + } + } + }, + { + "id": "AnimatedSprite/isAnimationPlayed()", + "memberId": "AnimatedSprite/isAnimationPlayed", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "isAnimationPlayed", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the animation is played.", + "description": "Checks if the animation is played.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the animation is played, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/isAnimationPlayed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine mit once gestartete Animation durchgelaufen ist" + } + } + }, + { + "id": "AnimatedSprite/playAnimation(String)", + "memberId": "AnimatedSprite/playAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "playAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Plays the animation with the specified name.", + "description": "Plays the animation with the specified name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation to play" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/playAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt die Animation in einer Schleife ab" + } + } + }, + { + "id": "AnimatedSprite/playAnimation(String,boolean)", + "memberId": "AnimatedSprite/playAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "playAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "boolean" + ], + "parameterNames": [ + "name", + "once" + ], + "params": [ + "String name", + "boolean once" + ], + "summary": "Plays the animation with the specified name.", + "description": "Plays the animation with the specified name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation to play", + "once: whether to play the animation once" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/playAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt die Animation ab; bei once == true nur ein einziges Mal" + } + } + }, + { + "id": "AnimatedSprite/resetAnimation()", + "memberId": "AnimatedSprite/resetAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "resetAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Resets the animation. The animation will start from the first frame.", + "description": "Resets the animation. The animation will start from the first frame.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/resetAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Animation auf das erste Einzelbild zurück" + } + } + }, + { + "id": "AnimatedSprite/setAnimationFrame(int)", + "memberId": "AnimatedSprite/setAnimationFrame", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "setAnimationFrame", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "frame" + ], + "params": [ + "int frame" + ], + "summary": "Sets the current animation frame.", + "description": "Sets the current animation frame.", + "scratchblock": null, + "paramDocs": [ + "frame: the current animation frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/setAnimationFrame", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Springt zum Einzelbild mit der angegebenen Nummer" + } + } + }, + { + "id": "AnimatedSprite/setAnimationInterval(int)", + "memberId": "AnimatedSprite/setAnimationInterval", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "setAnimationInterval", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "interval" + ], + "params": [ + "int interval" + ], + "summary": "Sets the interval between animation frames.", + "description": "Sets the interval between animation frames.", + "scratchblock": null, + "paramDocs": [ + "interval: the interval between animation frames" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/setAnimationInterval", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie viele Millisekunden ein Einzelbild angezeigt wird" + } + } + }, + { + "id": "AnimatedSprite/toString()", + "memberId": "AnimatedSprite/toString", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns which animation is playing and how far into it.", + "description": "Returns which animation is playing and how far into it.", + "scratchblock": null, + "paramDocs": [], + "returns": "the sprite as a text", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/toString", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Figur als Zeichenkette zurück" + } + } + }, + { + "id": "Circle/constructor(double,double,double)", + "memberId": "Circle/constructor", + "owner": "org.openpatch.scratch.Circle", + "className": "Circle", + "methodName": "constructor", + "static": false, + "returnType": "Circle", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "radius" + ], + "params": [ + "double x", + "double y", + "double radius" + ], + "summary": "Creates a circle with no specified position or size.", + "description": "Creates a circle with no specified position or size.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate of the circle's center", + "y: the y-coordinate of the circle's center", + "radius: the radius of the circle" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Circle/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Kreis um (x, y) mit dem angegebenen Radius" + } + } + }, + { + "id": "Clock/getDay()", + "memberId": "Clock/getDay", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getDay", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current day of the month, from 1 to 31.", + "description": "Returns the current day of the month, from 1 to 31.", + "scratchblock": "(current [date v])", + "paramDocs": [], + "returns": "the day of the month", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getDay", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den aktuellen Tag im Monat zurück" + } + } + }, + { + "id": "Clock/getDayOfWeek()", + "memberId": "Clock/getDayOfWeek", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getDayOfWeek", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current day of the week, from 1 for Monday to 7 for Sunday.", + "description": "Returns the current day of the week, from 1 for Monday to 7 for Sunday.", + "scratchblock": "(current [day of week v])", + "paramDocs": [], + "returns": "the day of the week", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getDayOfWeek", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Wochentag zurück (1 = Montag, 7 = Sonntag)" + } + } + }, + { + "id": "Clock/getDaysSince2000()", + "memberId": "Clock/getDaysSince2000", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getDaysSince2000", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the number of days that have passed since the first of January\n2000.", + "description": "Returns the number of days that have passed since the first of January\n2000.", + "scratchblock": "(days since 2000)", + "paramDocs": [], + "returns": "the days since 2000", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getDaysSince2000", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Anzahl der Tage seit dem 1. Januar 2000 zurück" + } + } + }, + { + "id": "Clock/getHour()", + "memberId": "Clock/getHour", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getHour", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current hour, from 0 to 23.", + "description": "Returns the current hour, from 0 to 23.", + "scratchblock": "(current [hour v])", + "paramDocs": [], + "returns": "the hour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getHour", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Stunde zurück" + } + } + }, + { + "id": "Clock/getMillisecond()", + "memberId": "Clock/getMillisecond", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getMillisecond", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the milliseconds of the current second, from 0 to 999.", + "description": "Returns the milliseconds of the current second, from 0 to 999.", + "scratchblock": null, + "paramDocs": [], + "returns": "the millisecond", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getMillisecond", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Millisekunde zurück" + } + } + }, + { + "id": "Clock/getMinute()", + "memberId": "Clock/getMinute", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getMinute", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current minute, from 0 to 59.", + "description": "Returns the current minute, from 0 to 59.", + "scratchblock": "(current [minute v])", + "paramDocs": [], + "returns": "the minute", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getMinute", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Minute zurück" + } + } + }, + { + "id": "Clock/getMonth()", + "memberId": "Clock/getMonth", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getMonth", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current month, from 1 for January to 12 for December.", + "description": "Returns the current month, from 1 for January to 12 for December.", + "scratchblock": "(current [month v])", + "paramDocs": [], + "returns": "the month", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getMonth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den aktuellen Monat zurück (1 = Januar)" + } + } + }, + { + "id": "Clock/getSecond()", + "memberId": "Clock/getSecond", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getSecond", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current second, from 0 to 59.", + "description": "Returns the current second, from 0 to 59.", + "scratchblock": "(current [second v])", + "paramDocs": [], + "returns": "the second", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getSecond", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Sekunde zurück" + } + } + }, + { + "id": "Clock/getYear()", + "memberId": "Clock/getYear", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getYear", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current year, for example 2026.", + "description": "Returns the current year, for example 2026.", + "scratchblock": "(current [year v])", + "paramDocs": [], + "returns": "the year", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getYear", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das aktuelle Jahr zurück" + } + } + }, + { + "id": "Color/changeColor(double)", + "memberId": "Color/changeColor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "changeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Changes the color accordining to a hue value, which is added to the current hue value. When the\nresulting value is greater than 255 it will be reset. For example: 285 => 30.", + "description": "Changes the color accordining to a hue value, which is added to the current hue value. When the\nresulting value is greater than 255 it will be reset. For example: 285 => 30.", + "scratchblock": null, + "paramDocs": [ + "h: A hue value. Could be any positive or negative number." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/changeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton um den angegebenen Wert" + } + } + }, + { + "id": "Color/constructor()", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Color object with default values.", + "description": "Constructs a new Color object with default values.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt die Farbe Weiß" + } + } + }, + { + "id": "Color/constructor(String)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "hexCode" + ], + "params": [ + "String hexCode" + ], + "summary": "The Color class represents a color in the Scratch environment. It supports various\nfunctionalities such as setting color values in the RGB and HSB spectrum, changing the color\nbased on a hue value, and converting between RGB and HSB color codes.", + "description": "The Color class represents a color in the Scratch environment. It supports various\nfunctionalities such as setting color values in the RGB and HSB spectrum, changing the color\nbased on a hue value, and converting between RGB and HSB color codes.", + "scratchblock": null, + "paramDocs": [ + "hexCode: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Farbe aus einem Hex-Code, z.B. #ff0000" + } + } + }, + { + "id": "Color/constructor(double)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Constructs a new Color object with the specified hue value.", + "description": "Constructs a new Color object with the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Farbe mit dem angegebenen Farbton (0 bis 255)" + } + } + }, + { + "id": "Color/constructor(double,double,double)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Constructs a new Color object with the specified rgb values.", + "description": "Constructs a new Color object with the specified rgb values.", + "scratchblock": null, + "paramDocs": [ + "r: the red value", + "g: the green value", + "b: the blue value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Farbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Color/constructor(Color)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Copies the received ScratchColor object.", + "description": "Copies the received ScratchColor object.", + "scratchblock": null, + "paramDocs": [ + "c: ScratchColor object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der übergebenen Farbe" + } + } + }, + { + "id": "Color/equals(Object)", + "memberId": "Color/equals", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "equals", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.Object" + ], + "parameterNames": [ + "other" + ], + "params": [ + "Object other" + ], + "summary": "Two colours are the same when they are the same colour.", + "description": "Two colours are the same when they are the same colour.", + "scratchblock": null, + "paramDocs": [ + "other: the object to compare with" + ], + "returns": "whether both are colours with the same red, green and blue", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/equals", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob es dieselbe Farbe ist" + } + } + }, + { + "id": "Color/get()", + "memberId": "Color/get", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "get", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the color value as a hex code. This is useful for comparing pixels.", + "description": "Get the color value as a hex code. This is useful for comparing pixels.", + "scratchblock": null, + "paramDocs": [], + "returns": "hex code", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/get", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Farbe als ganze Zahl zurück" + } + } + }, + { + "id": "Color/getBlue()", + "memberId": "Color/getBlue", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getBlue", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the blue value.", + "description": "Get the blue value.", + "scratchblock": null, + "paramDocs": [], + "returns": "blue value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getBlue", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Blauanteil zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getGreen()", + "memberId": "Color/getGreen", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getGreen", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the green value.", + "description": "Get the green value.", + "scratchblock": null, + "paramDocs": [], + "returns": "green value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getGreen", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Grünanteil zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getH()", + "memberId": "Color/getH", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getH", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the hue value.", + "description": "Get the hue value.", + "scratchblock": null, + "paramDocs": [], + "returns": "hue value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getH", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Farbton zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getHSB()", + "memberId": "Color/getHSB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getHSB", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the color value on the HSB spectrum.", + "description": "Get the color value on the HSB spectrum.", + "scratchblock": null, + "paramDocs": [], + "returns": "hue value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getHSB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Farbton zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getL()", + "memberId": "Color/getL", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getL", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the luminosity value.", + "description": "Get the luminosity value.", + "scratchblock": null, + "paramDocs": [], + "returns": "luminosity value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getL", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Helligkeit zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getRed()", + "memberId": "Color/getRed", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getRed", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the red value.", + "description": "Get the red value.", + "scratchblock": null, + "paramDocs": [], + "returns": "red value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getRed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rotanteil zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getS()", + "memberId": "Color/getS", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getS", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the saturation value.", + "description": "Get the saturation value.", + "scratchblock": null, + "paramDocs": [], + "returns": "saturation value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getS", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Sättigung zurück (0 bis 255)" + } + } + }, + { + "id": "Color/hashCode()", + "memberId": "Color/hashCode", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "hashCode", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "", + "description": "", + "scratchblock": null, + "paramDocs": [], + "returns": "a hash consistent with [equals(Object)](equals)", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/hashCode", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Color/setHSB(double)", + "memberId": "Color/setHSB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "setHSB", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Setting the color value after the HSB spectrum. Saturation and Luminosity are fixed at 255.", + "description": "Setting the color value after the HSB spectrum. Saturation and Luminosity are fixed at 255.", + "scratchblock": null, + "paramDocs": [ + "h: A hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/setHSB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Farbton (0 bis 255)" + } + } + }, + { + "id": "Color/setHSB(double,double,double)", + "memberId": "Color/setHSB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "setHSB", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "h", + "s", + "l" + ], + "params": [ + "double h", + "double s", + "double l" + ], + "summary": "Setting the color value after the HSB spectrum.", + "description": "Setting the color value after the HSB spectrum.", + "scratchblock": null, + "paramDocs": [ + "h: A hue value [0...255]", + "s: A saturation value [0...255]", + "l: A luminosity value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/setHSB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt Farbton, Sättigung und Helligkeit (jeweils 0 bis 255)" + } + } + }, + { + "id": "Color/setRGB(double,double,double)", + "memberId": "Color/setRGB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "setRGB", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Setting the color value after the RGB spectrum", + "description": "Setting the color value after the RGB spectrum", + "scratchblock": null, + "paramDocs": [ + "r: A red value [0...255]", + "g: A green value [0...255]", + "b: A blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/setRGB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Color/toString()", + "memberId": "Color/toString", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The colour written out, so that printing one says something.", + "description": "The colour written out, so that printing one says something.\n\nWithout this a `System.out.println(mySprite.getTint())` printed\n`org.openpatch.scratch.Color@35432107`, which tells you nothing about\nthe colour and is the first thing anyone tries when a tint looks wrong.", + "scratchblock": null, + "paramDocs": [], + "returns": "the colour as `Color[r=255.0, g=128.0, b=0.0]`", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/toString", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Farbe als Text aus" + } + } + }, + { + "id": "Ellipse/constructor(double,double,double,double)", + "memberId": "Ellipse/constructor", + "owner": "org.openpatch.scratch.Ellipse", + "className": "Ellipse", + "methodName": "constructor", + "static": false, + "returnType": "Ellipse", + "parameterTypes": [ + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "width", + "height" + ], + "params": [ + "double x", + "double y", + "double width", + "double height" + ], + "summary": "Creates an ellipse with no specified position or size.", + "description": "Creates an ellipse with no specified position or size.", + "scratchblock": null, + "paramDocs": [ + "x: ", + "y: ", + "width: ", + "height: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Ellipse/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Ellipse im angegebenen Rechteck" + } + } + }, + { + "id": "Hitbox/constructor(Shape)", + "memberId": "Hitbox/constructor", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "constructor", + "static": false, + "returnType": "Hitbox", + "parameterTypes": [ + "org.openpatch.scratch.Shape" + ], + "parameterNames": [ + "shape" + ], + "params": [ + "Shape shape" + ], + "summary": "Constructs a hitbox with the specified shape.", + "description": "Constructs a hitbox with the specified shape.", + "scratchblock": null, + "paramDocs": [ + "shape: The shape of the hitbox." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Umriss aus einer Form" + } + } + }, + { + "id": "Hitbox/constructor(double[],double[])", + "memberId": "Hitbox/constructor", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "constructor", + "static": false, + "returnType": "Hitbox", + "parameterTypes": [ + "double[]", + "double[]" + ], + "parameterNames": [ + "xPoints", + "yPoints" + ], + "params": [ + "double[] xPoints", + "double[] yPoints" + ], + "summary": "Constructs a hitbox with the specified x and y points.", + "description": "Constructs a hitbox with the specified x and y points.", + "scratchblock": null, + "paramDocs": [ + "xPoints: The x-coordinates of the points.", + "yPoints: The y-coordinates of the points." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Umriss aus x- und y-Koordinaten" + } + } + }, + { + "id": "Hitbox/contains(double,double)", + "memberId": "Hitbox/contains", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "contains", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Checks if the hitbox contains a point.", + "description": "Checks if the hitbox contains a point.", + "scratchblock": null, + "paramDocs": [ + "x: The x-coordinate of the point.", + "y: The y-coordinate of the point." + ], + "returns": "`true` if the hitbox contains the point, `false`\n otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/contains", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Punkt im Umriss liegt" + } + } + }, + { + "id": "Hitbox/getBounds()", + "memberId": "Hitbox/getBounds", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "getBounds", + "static": false, + "returnType": "Bounds", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the smallest upright rectangle the hitbox fits into.", + "description": "Returns the smallest upright rectangle the hitbox fits into.", + "scratchblock": null, + "paramDocs": [], + "returns": "the bounding box of the hitbox", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/getBounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das umschließende Rechteck zurück" + } + } + }, + { + "id": "Hitbox/getShape()", + "memberId": "Hitbox/getShape", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "getShape", + "static": false, + "returnType": "Shape", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shape of the hitbox.", + "description": "Returns the shape of the hitbox.", + "scratchblock": null, + "paramDocs": [], + "returns": "The shape of the hitbox.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/getShape", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Umriss als Form zurück" + } + } + }, + { + "id": "Hitbox/intersects(Hitbox)", + "memberId": "Hitbox/intersects", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "intersects", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Hitbox" + ], + "parameterNames": [ + "hitbox" + ], + "params": [ + "Hitbox hitbox" + ], + "summary": "Checks if the hitbox intersects with another hitbox.", + "description": "Checks if the hitbox intersects with another hitbox.", + "scratchblock": null, + "paramDocs": [ + "hitbox: The hitbox to check for intersection." + ], + "returns": "`true` if the hitboxes intersect, `false` otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/intersects", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich beide Umrisse überlappen" + } + } + }, + { + "id": "Hitbox/translateAndRotateAndResize(double,double,double,double,double,double)", + "memberId": "Hitbox/translateAndRotateAndResize", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "translateAndRotateAndResize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "degrees", + "originX", + "originY", + "translateX", + "translateY", + "size" + ], + "params": [ + "double degrees", + "double originX", + "double originY", + "double translateX", + "double translateY", + "double size" + ], + "summary": "Transforms the shape by scaling, translating, and rotating it.", + "description": "Transforms the shape by scaling, translating, and rotating it.", + "scratchblock": null, + "paramDocs": [ + "degrees: The angle in degrees to rotate the shape.", + "originX: The x-coordinate of the rotation origin.", + "originY: The y-coordinate of the rotation origin.", + "translateX: The x-coordinate to translate the shape.", + "translateY: The y-coordinate to translate the shape.", + "size: The size to scale the shape, where 100.0 represents the\n original size." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/translateAndRotateAndResize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt, dreht und skaliert den Umriss" + } + } + }, + { + "id": "HtmlColor/constructor()", + "memberId": "HtmlColor/constructor", + "owner": "org.openpatch.scratch.HtmlColor", + "className": "HtmlColor", + "methodName": "constructor", + "static": false, + "returnType": "HtmlColor", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Provides predefined HTML colors as Color objects.", + "description": "Provides predefined HTML colors as Color objects.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/HtmlColor/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige der benannten Farben zurück" + } + } + }, + { + "id": "HtmlColor/getRandom()", + "memberId": "HtmlColor/getRandom", + "owner": "org.openpatch.scratch.HtmlColor", + "className": "HtmlColor", + "methodName": "getRandom", + "static": true, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random HTML color.", + "description": "Returns a random HTML color.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random Color from the predefined HTML colors", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/HtmlColor/getRandom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/absOf(int)", + "memberId": "Operators/absOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "absOf", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "x" + ], + "params": [ + "int x" + ], + "summary": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "description": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "scratchblock": null, + "paramDocs": [ + "x: a value" + ], + "returns": "the absolute value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/absOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Betrag zurück" + } + } + }, + { + "id": "Operators/absOf(double)", + "memberId": "Operators/absOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "absOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "description": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "scratchblock": "([abs v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the absolute value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/absOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Betrag zurück" + } + } + }, + { + "id": "Operators/acosOf(double)", + "memberId": "Operators/acosOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "acosOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"acos\" is the abbreviation for \"arccosine\" and is also sometimes written as cos\\u22121. When given\nthe ratio (in decimal form) of the length of the adjacent side and hypotenuse of a right\ntriangle, it finds the angle.", + "description": "\"acos\" is the abbreviation for \"arccosine\" and is also sometimes written as cos\\u22121. When given\nthe ratio (in decimal form) of the length of the adjacent side and hypotenuse of a right\ntriangle, it finds the angle.", + "scratchblock": "([acos v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the angle of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/acosOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Arkuskosinus von x, Ergebnis in Grad" + } + } + }, + { + "id": "Operators/asinOf(double)", + "memberId": "Operators/asinOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "asinOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"asin\" is the abbreviation for \"arcsine\" and is also sometimes written as sin\\u22121. When given the\nratio (in decimal form) of the length of the opposite side and hypotenuse of a right triangle,\nit finds the angle.", + "description": "\"asin\" is the abbreviation for \"arcsine\" and is also sometimes written as sin\\u22121. When given the\nratio (in decimal form) of the length of the opposite side and hypotenuse of a right triangle,\nit finds the angle.", + "scratchblock": "([asin v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the angle of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/asinOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Arkussinus von x, Ergebnis in Grad" + } + } + }, + { + "id": "Operators/atanOf(double)", + "memberId": "Operators/atanOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "atanOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"atan\" is the abbreviation for \"arctangent\" and is also sometimes written as tan\\u22121. When given\nthe ratio (in decimal form) of the length of the opposite side and adjacent side of a right\ntriangle, it finds the angle.", + "description": "\"atan\" is the abbreviation for \"arctangent\" and is also sometimes written as tan\\u22121. When given\nthe ratio (in decimal form) of the length of the opposite side and adjacent side of a right\ntriangle, it finds the angle.", + "scratchblock": "([atan v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the angle of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/atanOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Arkustangens von x, Ergebnis in Grad" + } + } + }, + { + "id": "Operators/ceilingOf(double)", + "memberId": "Operators/ceilingOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "ceilingOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "This always rounds the number up to the least whole number greater than or equal to the number.\nFor example, ceiling(3.14) = 4 and ceiling(7.68) = 8.", + "description": "This always rounds the number up to the least whole number greater than or equal to the number.\nFor example, ceiling(3.14) = 4 and ceiling(7.68) = 8.", + "scratchblock": "([ceiling v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the ceiling of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/ceilingOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet auf" + } + } + }, + { + "id": "Operators/constrain(double,double,double)", + "memberId": "Operators/constrain", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "constrain", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "amt", + "low", + "high" + ], + "params": [ + "double amt", + "double low", + "double high" + ], + "summary": "Constrains a value to not exceed a maximum and minimum value.", + "description": "Constrains a value to not exceed a maximum and minimum value.", + "scratchblock": null, + "paramDocs": [ + "amt: the value to constrain", + "low: minimum limit", + "high: maximum limit" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/constrain", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Begrenzt den Wert auf den Bereich zwischen low und high" + } + } + }, + { + "id": "Operators/constrain(int,int,int)", + "memberId": "Operators/constrain", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "constrain", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "amt", + "low", + "high" + ], + "params": [ + "int amt", + "int low", + "int high" + ], + "summary": "Constrains a value to not exceed a maximum and minimum value.", + "description": "Constrains a value to not exceed a maximum and minimum value.", + "scratchblock": null, + "paramDocs": [ + "amt: the value to constrain", + "low: minimum limit", + "high: maximum limit" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/constrain", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Begrenzt den Wert auf den Bereich zwischen low und high" + } + } + }, + { + "id": "Operators/cosOf(double)", + "memberId": "Operators/cosOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "cosOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"cos\" is the abbreviation for \"cosine.\" The cosine of an angle is the ratio between the length\nof the side adjacent (next to) it on the triangle and the length of the hypotenuse. In the\npicture above, the cosine of angle A is equal to side \"adjacent\" divided by side \"hypotenuse\".", + "description": "\"cos\" is the abbreviation for \"cosine.\" The cosine of an angle is the ratio between the length\nof the side adjacent (next to) it on the triangle and the length of the hypotenuse. In the\npicture above, the cosine of angle A is equal to side \"adjacent\" divided by side \"hypotenuse\".", + "scratchblock": "([cos v] of (x))", + "paramDocs": [ + "x: an angle between [0, ..., 360]" + ], + "returns": "the cos of the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/cosOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Kosinus des Winkels x, x in Grad" + } + } + }, + { + "id": "Operators/eToThePowerOf(double)", + "memberId": "Operators/eToThePowerOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "eToThePowerOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"e\" is an abbreviation for \"Euler's number\", which is about 2.718. With the e^ function, e is\nmultiplied by itself the value number of times. For example, if the value is 3, the answer\nwould be e3, or e×e×e, which is about 20.086.", + "description": "\"e\" is an abbreviation for \"Euler's number\", which is about 2.718. With the e^ function, e is\nmultiplied by itself the value number of times. For example, if the value is 3, the answer\nwould be e3, or e×e×e, which is about 20.086.", + "scratchblock": "([e ^ v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "e to the power of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/eToThePowerOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt e hoch x zurück" + } + } + }, + { + "id": "Operators/floorOf(double)", + "memberId": "Operators/floorOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "floorOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "This always rounds the number down to the greatest whole number less than or equal to the\nnumber. For example, floor(1.73) = 1 and floor(-2.74) = -3.", + "description": "This always rounds the number down to the greatest whole number less than or equal to the\nnumber. For example, floor(1.73) = 1 and floor(-2.74) = -3.", + "scratchblock": "([floor v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the floor of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/floorOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet ab" + } + } + }, + { + "id": "Operators/lerp(double,double,double)", + "memberId": "Operators/lerp", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "lerp", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "start", + "stop", + "amt" + ], + "params": [ + "double start", + "double stop", + "double amt" + ], + "summary": "Calculates a number between two numbers at a specific increment. The amt parameter is\nthe amount to interpolate between the two values where 0.0 equal to the first point, 0.1 is\nvery near the first point, 0.5 is half-way in between, etc. The lerp function is convenient for\ncreating motion along a straight path and for drawing dotted lines.", + "description": "Calculates a number between two numbers at a specific increment. The amt parameter is\nthe amount to interpolate between the two values where 0.0 equal to the first point, 0.1 is\nvery near the first point, 0.5 is half-way in between, etc. The lerp function is convenient for\ncreating motion along a straight path and for drawing dotted lines.", + "scratchblock": null, + "paramDocs": [ + "start: first value", + "stop: second value", + "amt: double between 0.0 and 1.0" + ], + "returns": "the interpolated value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/lerp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Interpoliert linear zwischen start und stop; amt liegt zwischen 0 und 1" + } + } + }, + { + "id": "Operators/lnOf(double)", + "memberId": "Operators/lnOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "lnOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "ln is \"natural log.\" It figures out how many times e would have to be multiplied by itself to\nget the value. For example, if the value was 148.4, the answer would be about 5 because e5\n(e×e×e×e×e) is around 148.4.", + "description": "ln is \"natural log.\" It figures out how many times e would have to be multiplied by itself to\nget the value. For example, if the value was 148.4, the answer would be about 5 because e5\n(e×e×e×e×e) is around 148.4.", + "scratchblock": "([ln v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the ln of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/lnOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Natürlicher Logarithmus von x" + } + } + }, + { + "id": "Operators/logOf(double)", + "memberId": "Operators/logOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "logOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"Log\" is short for \"logarithm.\" The log function figures out how many times 10 must be\nmultiplied by itself to get the value. For example, if the value is 100, the answer is 2\nbecause 10×10 is 100.", + "description": "\"Log\" is short for \"logarithm.\" The log function figures out how many times 10 must be\nmultiplied by itself to get the value. For example, if the value is 100, the answer is 2\nbecause 10×10 is 100.", + "scratchblock": "([log v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the log to base 10 of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/logOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zehnerlogarithmus von x" + } + } + }, + { + "id": "Operators/map(double,double,double,double,double)", + "memberId": "Operators/map", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "map", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "value", + "start1", + "stop1", + "start2", + "stop2" + ], + "params": [ + "double value", + "double start1", + "double stop1", + "double start2", + "double stop2" + ], + "summary": "Re-maps a number from one range to another.
\n
\nIn the first example above, the number 25 is converted from a value in the range of 0 to 100\ninto a value that ranges from the left edge of the window (0) to the right edge (width).
\n
\nAs shown in the second example, numbers outside the range are not clamped to the minimum and\nmaximum parameters values, because out-of-range values are often intentional and useful.", + "description": "Re-maps a number from one range to another.
\n
\nIn the first example above, the number 25 is converted from a value in the range of 0 to 100\ninto a value that ranges from the left edge of the window (0) to the right edge (width).
\n
\nAs shown in the second example, numbers outside the range are not clamped to the minimum and\nmaximum parameters values, because out-of-range values are often intentional and useful.", + "scratchblock": null, + "paramDocs": [ + "value: the incoming value to be converted", + "start1: lower bound of the value's current range", + "stop1: upper bound of the value's current range", + "start2: lower bound of the value's target range", + "stop2: upper bound of the value's target range" + ], + "returns": "the value mapped to the new range", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/map", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rechnet einen Wert aus dem Bereich start1..stop1 in den Bereich start2..stop2 um" + } + } + }, + { + "id": "Operators/max(double[])", + "memberId": "Operators/max", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "max", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "double[] v" + ], + "summary": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the maximum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/max", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/max(int[])", + "memberId": "Operators/max", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "max", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "int[] v" + ], + "summary": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the maximum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/max", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/min(double[])", + "memberId": "Operators/min", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "min", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "double[] v" + ], + "summary": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the minimum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/min", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/min(int[])", + "memberId": "Operators/min", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "min", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "int[] v" + ], + "summary": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the minimum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/min", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/mod(double,double)", + "memberId": "Operators/mod", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "mod", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second.", + "description": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second.\n\nThe answer takes the sign of the second input, as the Scratch block does, so\n`mod(-7, 3)` is 2 rather than the -1 Java's own `%` would give.\nThat is what makes it useful for wrapping a value into a range: a sprite\nwhose x has gone negative still lands somewhere sensible.", + "scratchblock": "((x) mod (y))", + "paramDocs": [ + "x: first value", + "y: second value" + ], + "returns": "what is left of the first value after dividing by the second", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/mod", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rest der Division x geteilt durch y zurück" + } + } + }, + { + "id": "Operators/mod(int,int)", + "memberId": "Operators/mod", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "mod", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "int x", + "int y" + ], + "summary": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second, with the sign of the second input,\nas the Scratch block does.", + "description": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second, with the sign of the second input,\nas the Scratch block does.", + "scratchblock": null, + "paramDocs": [ + "x: first value", + "y: second value" + ], + "returns": "what is left of the first value after dividing by the second", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/mod", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rest der Division x geteilt durch y zurück" + } + } + }, + { + "id": "Operators/round(double)", + "memberId": "Operators/round", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "round", + "static": true, + "returnType": "int", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "The standard rules of rounding are followed; decimals that are .5 or higher are rounded up,\nwhereas decimals less than .5 are rounded down.", + "description": "The standard rules of rounding are followed; decimals that are .5 or higher are rounded up,\nwhereas decimals less than .5 are rounded down.", + "scratchblock": "(round (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the rounded value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/round", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet auf eine ganze Zahl" + } + } + }, + { + "id": "Operators/round(double,int)", + "memberId": "Operators/round", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "round", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "int" + ], + "parameterNames": [ + "x", + "precision" + ], + "params": [ + "double x", + "int precision" + ], + "summary": "Rounds a number to a specified number of decimal places.", + "description": "Rounds a number to a specified number of decimal places.", + "scratchblock": null, + "paramDocs": [ + "x: a value", + "precision: the number of decimal places to round to" + ], + "returns": "the rounded value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/round", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet auf die angegebene Anzahl Nachkommastellen" + } + } + }, + { + "id": "Operators/sinOf(double)", + "memberId": "Operators/sinOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "sinOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"sin\" is an abbreviation for \"sine.\" The sine of an angle is the ratio between the length of\nthe side that is opposite (across) the triangle from it and the length of the hypotenuse (the\nside that is across from the right angle). In the picture above, the sine of angle A is equal\nto side \"opposite\" divided by side \"hypotenuse\".", + "description": "\"sin\" is an abbreviation for \"sine.\" The sine of an angle is the ratio between the length of\nthe side that is opposite (across) the triangle from it and the length of the hypotenuse (the\nside that is across from the right angle). In the picture above, the sine of angle A is equal\nto side \"opposite\" divided by side \"hypotenuse\".", + "scratchblock": "([sin v] of (x))", + "paramDocs": [ + "x: an angle between [0,...,360]" + ], + "returns": "the sin of the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/sinOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Sinus des Winkels x, x in Grad" + } + } + }, + { + "id": "Operators/sqrtOf(double)", + "memberId": "Operators/sqrtOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "sqrtOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"sqrt\" is an abbreviation for \"square root.\" A number that is squared is multiplied by itself.\nFor example, when 2 is squared, the answer is 2×2, which is 4. When a number is square rooted,\nthe answer is the number that was squared to get it. So, the square root of 4 is 2. Similarly,\nthe square root of 2 is about 1.414213562373095 because 1.4142135623730952\n(1.414213562373095\\u202f×\\u202f1.414213562373095) is close to 2.", + "description": "\"sqrt\" is an abbreviation for \"square root.\" A number that is squared is multiplied by itself.\nFor example, when 2 is squared, the answer is 2×2, which is 4. When a number is square rooted,\nthe answer is the number that was squared to get it. So, the square root of 4 is 2. Similarly,\nthe square root of 2 is about 1.414213562373095 because 1.4142135623730952\n(1.414213562373095\\u202f×\\u202f1.414213562373095) is close to 2.", + "scratchblock": "([sqrt v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the square root of the value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/sqrtOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Quadratwurzel zurück" + } + } + }, + { + "id": "Operators/tanOf(double)", + "memberId": "Operators/tanOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "tanOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"tan\" is the abbreviation for \"tangent.\" The tangent of an angle is the ratio between the\nlength of the side adjacent to it and the side opposite of it. In the picture above, the\ntangent of angle A is equal to side \"opposite\" divided by side \"adjacent\".", + "description": "\"tan\" is the abbreviation for \"tangent.\" The tangent of an angle is the ratio between the\nlength of the side adjacent to it and the side opposite of it. In the picture above, the\ntangent of angle A is equal to side \"opposite\" divided by side \"adjacent\".", + "scratchblock": "([tan v] of (x))", + "paramDocs": [ + "x: an angle between [0, ..., 360]" + ], + "returns": "the tan of the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/tanOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Tangens des Winkels x, x in Grad" + } + } + }, + { + "id": "Operators/tenToThePowerOf(double)", + "memberId": "Operators/tenToThePowerOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "tenToThePowerOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "The 10^ function multiplies 10 times itself the value number of times. For example, if the\nvalue was 6, the answer would be 106 (that is 10×10×10×10×10×10), which is 1,000,000.", + "description": "The 10^ function multiplies 10 times itself the value number of times. For example, if the\nvalue was 6, the answer would be 106 (that is 10×10×10×10×10×10), which is 1,000,000.", + "scratchblock": "([10 ^ v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "10 to the power of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/tenToThePowerOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt 10 hoch x zurück" + } + } + }, + { + "id": "Pen/changeColor(double)", + "memberId": "Pen/changeColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "changeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "c" + ], + "params": [ + "double c" + ], + "summary": "Change color via a hue value, which is added to the current hue value", + "description": "Change color via a hue value, which is added to the current hue value", + "scratchblock": "change pen [color v] by (c)", + "paramDocs": [ + "c: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/changeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton des Stifts um den angegebenen Wert" + } + } + }, + { + "id": "Pen/changeSize(double)", + "memberId": "Pen/changeSize", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "changeSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "size" + ], + "params": [ + "double size" + ], + "summary": "Change the size of the pen", + "description": "Change the size of the pen", + "scratchblock": "change pen size by (size)", + "paramDocs": [ + "size: size to change" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/changeSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Strichstärke um den angegebenen Wert" + } + } + }, + { + "id": "Pen/changeTransparency(double)", + "memberId": "Pen/changeTransparency", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "changeTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Change the transparency by a step", + "description": "Change the transparency by a step", + "scratchblock": null, + "paramDocs": [ + "step: the step to change the transparency by" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/changeTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Deckkraft um den angegebenen Wert" + } + } + }, + { + "id": "Pen/constructor()", + "memberId": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "constructor", + "static": false, + "returnType": "Pen", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Pen object.", + "description": "Constructs a new Pen object.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen neuen Stift" + } + } + }, + { + "id": "Pen/constructor(Sprite)", + "memberId": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "constructor", + "static": false, + "returnType": "Pen", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Constructs a new Pen object associated with the given Sprite.", + "description": "Constructs a new Pen object associated with the given Sprite.", + "scratchblock": null, + "paramDocs": [ + "s: the Sprite object to associate with this Pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Senkt den Stift ab, so dass er beim Bewegen zeichnet" + } + } + }, + { + "id": "Pen/constructor(Pen)", + "memberId": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "constructor", + "static": false, + "returnType": "Pen", + "parameterTypes": [ + "org.openpatch.scratch.Pen" + ], + "parameterNames": [ + "p" + ], + "params": [ + "Pen p" + ], + "summary": "Copies a Pen object.", + "description": "Copies a Pen object.", + "scratchblock": null, + "paramDocs": [ + "p: Pen object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Pen/down()", + "memberId": "Pen/down", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "down", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Set the pen down.", + "description": "Set the pen down.", + "scratchblock": "pen down", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/down", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Pen/eraseAll()", + "memberId": "Pen/eraseAll", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "eraseAll", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Erases all.", + "description": "Erases all.", + "scratchblock": "erase all", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/eraseAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Löscht alles Gezeichnete" + } + } + }, + { + "id": "Pen/getColor()", + "memberId": "Pen/getColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "getColor", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current color of the pen.", + "description": "Retrieves the current color of the pen.", + "scratchblock": null, + "paramDocs": [], + "returns": "the color of the pen", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/getColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Stiftfarbe zurück" + } + } + }, + { + "id": "Pen/getSize()", + "memberId": "Pen/getSize", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "getSize", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size of the pen", + "description": "Returns the size of the pen", + "scratchblock": null, + "paramDocs": [], + "returns": "the size of the pen", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/getSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Strichstärke zurück" + } + } + }, + { + "id": "Pen/goToBackground()", + "memberId": "Pen/goToBackground", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToBackground", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Sets the pen to the background. This method changes the state of the pen to\nindicate that it is\nno longer in the foreground.", + "description": "Sets the pen to the background. This method changes the state of the pen to\nindicate that it is\nno longer in the foreground.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToBackground", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeichnet hinter den Figuren" + } + } + }, + { + "id": "Pen/goToForeground()", + "memberId": "Pen/goToForeground", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToForeground", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the pen to the foreground. This method sets the pen's state to indicate\nthat it is in the\nforeground.", + "description": "Moves the pen to the foreground. This method sets the pen's state to indicate\nthat it is in the\nforeground.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToForeground", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeichnet vor den Figuren" + } + } + }, + { + "id": "Pen/goToMousePointer()", + "memberId": "Pen/goToMousePointer", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToMousePointer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the object to the current position of the mouse pointer.", + "description": "Moves the object to the current position of the mouse pointer.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift auf die Position des Mauszeigers" + } + } + }, + { + "id": "Pen/goToRandomPosition()", + "memberId": "Pen/goToRandomPosition", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToRandomPosition", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the object to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "description": "Moves the object to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToRandomPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift an eine zufällige Position der Bühne" + } + } + }, + { + "id": "Pen/isInBackground()", + "memberId": "Pen/isInBackground", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "isInBackground", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true if the pen is in the background.", + "description": "Returns true if the pen is in the background.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the pen is in the background", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/isInBackground", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Stift hinter den Figuren zeichnet" + } + } + }, + { + "id": "Pen/setColor(Color)", + "memberId": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Set the color of the pen", + "description": "Set the color of the pen", + "scratchblock": null, + "paramDocs": [ + "c: color of the pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Stiftfarbe" + } + } + }, + { + "id": "Pen/setColor(double)", + "memberId": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Set color via hue value", + "description": "Set color via hue value", + "scratchblock": "set pen [color v] to (h)", + "paramDocs": [ + "h: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Stiftfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Pen/setColor(double,double,double)", + "memberId": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Set color via rgb values", + "description": "Set color via rgb values", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Stiftfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Pen/setPosition(double,double)", + "memberId": "Pen/setPosition", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Set the position if the pen is down.", + "description": "Set the position if the pen is down.", + "scratchblock": null, + "paramDocs": [ + "x: x coordinate", + "y: y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift an die angegebene Position; bei abgesenktem Stift wird eine Linie gezeichnet" + } + } + }, + { + "id": "Pen/setPosition(Vector2)", + "memberId": "Pen/setPosition", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the pen using a Vector2 object.", + "description": "Sets the position of the pen using a Vector2 object.", + "scratchblock": null, + "paramDocs": [ + "v: the Vector2 object containing the new x and y coordinates" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift an die angegebene Position; bei abgesenktem Stift wird eine Linie gezeichnet" + } + } + }, + { + "id": "Pen/setSize(double)", + "memberId": "Pen/setSize", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "size" + ], + "params": [ + "double size" + ], + "summary": "Set the size of the pen", + "description": "Set the size of the pen", + "scratchblock": "set pen size to (size)", + "paramDocs": [ + "size: size of the pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Strichstärke" + } + } + }, + { + "id": "Pen/setTransparency(double)", + "memberId": "Pen/setTransparency", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "transparency" + ], + "params": [ + "double transparency" + ], + "summary": "Set the transparency", + "description": "Set the transparency", + "scratchblock": null, + "paramDocs": [ + "transparency: transparency of the pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Deckkraft von 0 (unsichtbar) bis 255 (deckend)" + } + } + }, + { + "id": "Pen/stamp()", + "memberId": "Pen/stamp", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "stamp", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stamps the current sprite onto the canvas. If the sprite is not null, it will\nstamp either to\nthe foreground or the background based on the value of the isForeground flag.", + "description": "Stamps the current sprite onto the canvas. If the sprite is not null, it will\nstamp either to\nthe foreground or the background based on the value of the isForeground flag.", + "scratchblock": "stamp", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/stamp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Druckt ein Abbild der zugehörigen Figur auf die Bühne" + } + } + }, + { + "id": "Pen/up()", + "memberId": "Pen/up", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "up", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Move the pen up.", + "description": "Move the pen up.", + "scratchblock": "pen up", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/up", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Hebt den Stift an, so dass er nicht mehr zeichnet" + } + } + }, + { + "id": "Polygon/addPoint(double,double)", + "memberId": "Polygon/addPoint", + "owner": "org.openpatch.scratch.Polygon", + "className": "Polygon", + "methodName": "addPoint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Adds a point to the polygon.", + "description": "Adds a point to the polygon.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate", + "y: the y-coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Polygon/addPoint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt dem Vieleck einen Punkt hinzu" + } + } + }, + { + "id": "Polygon/constructor()", + "memberId": "Polygon/constructor", + "owner": "org.openpatch.scratch.Polygon", + "className": "Polygon", + "methodName": "constructor", + "static": false, + "returnType": "Polygon", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates an empty polygon.", + "description": "Creates an empty polygon.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Polygon/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein leeres Vieleck; Punkte kommen mit addPoint() dazu" + } + } + }, + { + "id": "Polygon/constructor(double[],double[])", + "memberId": "Polygon/constructor", + "owner": "org.openpatch.scratch.Polygon", + "className": "Polygon", + "methodName": "constructor", + "static": false, + "returnType": "Polygon", + "parameterTypes": [ + "double[]", + "double[]" + ], + "parameterNames": [ + "xPoints", + "yPoints" + ], + "params": [ + "double[] xPoints", + "double[] yPoints" + ], + "summary": "Creates a polygon with the specified vertices.", + "description": "Creates a polygon with the specified vertices.", + "scratchblock": null, + "paramDocs": [ + "xPoints: an array of x-coordinates", + "yPoints: an array of y-coordinates" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Polygon/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Vieleck aus x- und y-Koordinaten" + } + } + }, + { + "id": "Random/noise(double)", + "memberId": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noise", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Returns the Open Simplex noise value at specified coordinates", + "description": "Returns the Open Simplex noise value at specified coordinates", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate" + ], + "returns": "the noise value between 0 and 1", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noise", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle x zurück" + } + } + }, + { + "id": "Random/noise(double,double)", + "memberId": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noise", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Returns the Open Simplex noise value at specified coordinates", + "description": "Returns the Open Simplex noise value at specified coordinates", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate", + "y: y-coordinate" + ], + "returns": "the noise value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noise", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle (x, y) zurück" + } + } + }, + { + "id": "Random/noise(double,double,double)", + "memberId": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noise", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "z" + ], + "params": [ + "double x", + "double y", + "double z" + ], + "summary": "Returns the Open Simplex noise value at specified coordinates", + "description": "Returns the Open Simplex noise value at specified coordinates", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate", + "y: y-coordinate", + "z: z-coordinate" + ], + "returns": "the noise value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noise", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle (x, y, z) zurück" + } + } + }, + { + "id": "Random/noiseSeed(long)", + "memberId": "Random/noiseSeed", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noiseSeed", + "static": true, + "returnType": "void", + "parameterTypes": [ + "long" + ], + "parameterNames": [ + "noiseSeed" + ], + "params": [ + "long noiseSeed" + ], + "summary": "Sets the seed for the noise method.", + "description": "Sets the seed for the noise method.", + "scratchblock": null, + "paramDocs": [ + "noiseSeed: the seed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noiseSeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Startwert für das Rauschen" + } + } + }, + { + "id": "Random/random()", + "memberId": "Random/random", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "random", + "static": true, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random double between 0 and 1.", + "description": "Returns a random double between 0 and 1.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/random", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen 0 und 1 zurück" + } + } + }, + { + "id": "Random/random(double)", + "memberId": "Random/random", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "random", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "max" + ], + "params": [ + "double max" + ], + "summary": "Returns a random double between 0 and max.", + "description": "Returns a random double between 0 and max.", + "scratchblock": null, + "paramDocs": [ + "max: the maximum double" + ], + "returns": "a random double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/random", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen 0 und max zurück" + } + } + }, + { + "id": "Random/random(double,double)", + "memberId": "Random/random", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "random", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "min", + "max" + ], + "params": [ + "double min", + "double max" + ], + "summary": "Returns a random double between min and max.", + "description": "Returns a random double between min and max.", + "scratchblock": "(pick random (min) to (max))", + "paramDocs": [ + "min: the minimum double", + "max: the maximum double" + ], + "returns": "a random double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/random", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen min und max zurück" + } + } + }, + { + "id": "Random/randomInt(int)", + "memberId": "Random/randomInt", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomInt", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "max" + ], + "params": [ + "int max" + ], + "summary": "Returns a random integer between 0 and max.", + "description": "Returns a random integer between 0 and max.", + "scratchblock": null, + "paramDocs": [ + "max: the maximum integer" + ], + "returns": "a random integer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomInt", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine ganze Zufallszahl zwischen 0 und max zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Random/randomInt(int,int)", + "memberId": "Random/randomInt", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomInt", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "min", + "max" + ], + "params": [ + "int min", + "int max" + ], + "summary": "Returns a random integer between min and max.", + "description": "Returns a random integer between min and max.", + "scratchblock": "(pick random (min) to (max))", + "paramDocs": [ + "min: the minimum integer", + "max: the maximum integer" + ], + "returns": "a random integer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomInt", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine ganze Zufallszahl zwischen min und max zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Random/randomPosition()", + "memberId": "Random/randomPosition", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomPosition", + "static": true, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random position with respect to the width of the window.", + "description": "Returns a random position with respect to the width of the window.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random position vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige Position auf der Bühne zurück" + } + } + }, + { + "id": "Random/randomSeed(long)", + "memberId": "Random/randomSeed", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomSeed", + "static": true, + "returnType": "void", + "parameterTypes": [ + "long" + ], + "parameterNames": [ + "seed" + ], + "params": [ + "long seed" + ], + "summary": "Sets the seed for the random method.", + "description": "Sets the seed for the random method.", + "scratchblock": null, + "paramDocs": [ + "seed: the seed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomSeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Startwert für die Zufallszahlen; danach wiederholt sich dieselbe Folge" + } + } + }, + { + "id": "Random/randomVector2()", + "memberId": "Random/randomVector2", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomVector2", + "static": true, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random unit vector", + "description": "Returns a random unit vector", + "scratchblock": null, + "paramDocs": [], + "returns": "a random unit vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomVector2", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen zufälligen Vektor der Länge 1 zurück" + } + } + }, + { + "id": "Random/randomX()", + "memberId": "Random/randomX", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomX", + "static": true, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return a random x coordinate with respect to the width of the window.", + "description": "Return a random x coordinate with respect to the width of the window.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige x-Koordinate innerhalb der Bühne zurück" + } + } + }, + { + "id": "Random/randomY()", + "memberId": "Random/randomY", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomY", + "static": true, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return a random y coordinate with respect to the width of the window.", + "description": "Return a random y coordinate with respect to the width of the window.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige y-Koordinate innerhalb der Bühne zurück" + } + } + }, + { + "id": "Rectangle/constructor(double,double,double,double)", + "memberId": "Rectangle/constructor", + "owner": "org.openpatch.scratch.Rectangle", + "className": "Rectangle", + "methodName": "constructor", + "static": false, + "returnType": "Rectangle", + "parameterTypes": [ + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "width", + "height" + ], + "params": [ + "double x", + "double y", + "double width", + "double height" + ], + "summary": "Creates a rectangle with the specified position and size.", + "description": "Creates a rectangle with the specified position and size.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate of the rectangle's top-left corner", + "y: the y-coordinate of the rectangle's top-left corner", + "width: the width of the rectangle", + "height: the height of the rectangle" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Rectangle/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Rechteck mit der linken oberen Ecke bei (x, y)" + } + } + }, + { + "id": "Shape/contains(double,double)", + "memberId": "Shape/contains", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "contains", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Check if the shape contains a point defined by its x and y coordinates.", + "description": "Check if the shape contains a point defined by its x and y coordinates.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate of the point", + "y: the y-coordinate of the point" + ], + "returns": "true if the shape contains the point, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/contains", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Punkt in der Form liegt" + } + } + }, + { + "id": "Shape/getBounds()", + "memberId": "Shape/getBounds", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "getBounds", + "static": false, + "returnType": "Bounds", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the bounds of the shape.", + "description": "Get the bounds of the shape.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Bounds object representing the bounding box of the shape", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/getBounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das umschließende Rechteck zurück" + } + } + }, + { + "id": "Shape/intersects(Shape)", + "memberId": "Shape/intersects", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "intersects", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Shape" + ], + "parameterNames": [ + "other" + ], + "params": [ + "Shape other" + ], + "summary": "Check if the shape intersects with another shape.", + "description": "Check if the shape intersects with another shape.", + "scratchblock": null, + "paramDocs": [ + "other: the other shape to check intersection with" + ], + "returns": "true if the shapes intersect, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/intersects", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich beide Formen überlappen" + } + } + }, + { + "id": "Shape/rotate(double,double,double)", + "memberId": "Shape/rotate", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "rotate", + "static": false, + "returnType": "Shape", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "theta", + "anchorX", + "anchorY" + ], + "params": [ + "double theta", + "double anchorX", + "double anchorY" + ], + "summary": "Rotate the shape by the specified angle around a given anchor point.", + "description": "Rotate the shape by the specified angle around a given anchor point.", + "scratchblock": null, + "paramDocs": [ + "theta: the angle in degrees to rotate", + "anchorX: the x-coordinate of the anchor point", + "anchorY: the y-coordinate of the anchor point" + ], + "returns": "a new Shape object that is rotated", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/rotate", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die um theta Grad gedrehte Form als neue Form zurück" + } + } + }, + { + "id": "Shape/scale(double,double)", + "memberId": "Shape/scale", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "scale", + "static": false, + "returnType": "Shape", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "scaleX", + "scaleY" + ], + "params": [ + "double scaleX", + "double scaleY" + ], + "summary": "Check if the shape is empty.", + "description": "Check if the shape is empty.", + "scratchblock": null, + "paramDocs": [ + "scaleX: ", + "scaleY: " + ], + "returns": "true if the shape is empty, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/scale", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die skalierte Form als neue Form zurück" + } + } + }, + { + "id": "Shape/translate(double,double)", + "memberId": "Shape/translate", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "translate", + "static": false, + "returnType": "Shape", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "dx", + "dy" + ], + "params": [ + "double dx", + "double dy" + ], + "summary": "Translate the shape by the specified distances in the x and y directions.", + "description": "Translate the shape by the specified distances in the x and y directions.", + "scratchblock": null, + "paramDocs": [ + "dx: the distance to translate in the x direction", + "dy: the distance to translate in the y direction" + ], + "returns": "a new Shape object that is translated", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/translate", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die verschobene Form als neue Form zurück" + } + } + }, + { + "id": "Sprite/addCostume(String)", + "memberId": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the costumes that ship with Scratch for Java to the sprite. The\ncostume gets the same name as the built-in sprite. If a costume with that\nname already exists do nothing.", + "description": "Add one of the costumes that ship with Scratch for Java to the sprite. The\ncostume gets the same name as the built-in sprite. If a costume with that\nname already exists do nothing.\n\nExample usage:\n\n```java\nthis.addCostume(\"bunny1_jump\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sprite, for example \"bunny1_jump\". Add\n the sheet in front of the name, for example\n \"platformer/grass\", if the same name exists on several sheets." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt eines der eingebauten Kostüme hinzu" + } + } + }, + { + "id": "Sprite/addCostume(String,String)", + "memberId": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "imagePath" + ], + "params": [ + "String name", + "String imagePath" + ], + "summary": "Add a costume to the sprite. If a costume with the received name already\nexists do nothing.", + "description": "Add a costume to the sprite. If a costume with the received name already\nexists do nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "imagePath: a image path, or the name of a built-in sprite such as\n \"bunny1_jump\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt ein Kostüm unter eigenem Namen hinzu" + } + } + }, + { + "id": "Sprite/addCostume(String,String,int,int,int,int)", + "memberId": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int" + ], + "parameterNames": [ + "name", + "spriteSheetPath", + "x", + "y", + "width", + "height" + ], + "params": [ + "String name", + "String spriteSheetPath", + "int x", + "int y", + "int width", + "int height" + ], + "summary": "Adds a new costume to the sprite if a costume with the same name does not\nalready exist.", + "description": "Adds a new costume to the sprite if a costume with the same name does not\nalready exist.", + "scratchblock": null, + "paramDocs": [ + "name: The name of the costume.", + "spriteSheetPath: The path to the sprite sheet image file.", + "x: The x-coordinate of the top-left corner of the costume\n in the sprite sheet.", + "y: The y-coordinate of the top-left corner of the costume\n in the sprite sheet.", + "width: The width of the costume in the sprite sheet.", + "height: The height of the costume in the sprite sheet." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schneidet ein Kostüm aus einem Bild aus" + } + } + }, + { + "id": "Sprite/addCostumes(String,String,int,int)", + "memberId": "Sprite/addCostumes", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostumes", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int" + ], + "parameterNames": [ + "prefix", + "spriteSheet", + "tileWidth", + "tileHeight" + ], + "params": [ + "String prefix", + "String spriteSheet", + "int tileWidth", + "int tileHeight" + ], + "summary": "Adds all tiles from a spritesheet as costumes. The costumes will be name by\nthe prefix and the\nindex in the spritesheet. For example if the prefix is \"tile\" and the\nspritesheet contains 4\ntiles, the costumes will be named \"tile0\", \"tile1\", \"tile2\", and \"tile3\".", + "description": "Adds all tiles from a spritesheet as costumes. The costumes will be name by\nthe prefix and the\nindex in the spritesheet. For example if the prefix is \"tile\" and the\nspritesheet contains 4\ntiles, the costumes will be named \"tile0\", \"tile1\", \"tile2\", and \"tile3\".", + "scratchblock": null, + "paramDocs": [ + "prefix: a prefix for all generated costumes", + "spriteSheet: a path to a sprite sheet, or the name of a built-in sprite", + "tileWidth: the width of a single tile", + "tileHeight: the height of a single tile" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostumes", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zerschneidet ein Bild in gleich große Kacheln und fügt sie als Kostüme hinzu" + } + } + }, + { + "id": "Sprite/addSound(String,String)", + "memberId": "Sprite/addSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "soundPath" + ], + "params": [ + "String name", + "String soundPath" + ], + "summary": "Add a sound to the sprite. If a sound with the received name already exists\ndo nothing.", + "description": "Add a sound to the sprite. If a sound with the received name already exists\ndo nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "soundPath: a sound path, or the name of a built-in sound such as\n \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Klang unter eigenem Namen hinzu" + } + } + }, + { + "id": "Sprite/addSound(String)", + "memberId": "Sprite/addSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the sounds that ship with Scratch for Java to the sprite. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.", + "description": "Add one of the sounds that ship with Scratch for Java to the sprite. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.\n\nExample usage:\n\n```java\nthis.addSound(\"footstep_carpet_000\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sound, for example \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen der eingebauten Klänge hinzu" + } + } + }, + { + "id": "Sprite/ask(String)", + "memberId": "Sprite/ask", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "ask", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "question" + ], + "params": [ + "String question" + ], + "summary": "Asks a question and waits for an answer to be typed in. The question appears\nat the top of the stage.", + "description": "Asks a question and waits for an answer to be typed in. The question appears\nat the top of the stage.\n\nUnlike Scratch, this does not pause the sprite. `run()` keeps being called\nwhile the question is on screen, so check [isAsking()](isAsking) or wait for\n[getAnswer()](getAnswer) to change.", + "scratchblock": "ask [question] and wait", + "paramDocs": [ + "question: the question to show" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/ask", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stellt eine Frage; die Antwort wird über getAnswer() abgeholt" + } + } + }, + { + "id": "Sprite/broadcast(String)", + "memberId": "Sprite/broadcast", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "broadcast", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "Broadcasts a message to every sprite on the stage, this one included, and\nto the stage itself, as in Scratch. If the sprite is not on a stage, nothing\nhappens.", + "description": "Broadcasts a message to every sprite on the stage, this one included, and\nto the stage itself, as in Scratch. If the sprite is not on a stage, nothing\nhappens.", + "scratchblock": "broadcast [message v]", + "paramDocs": [ + "message: The message to broadcast." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/broadcast", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Sendet eine Nachricht an alle Figuren und die Bühne" + } + } + }, + { + "id": "Sprite/changePosition(Vector2)", + "memberId": "Sprite/changePosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changePosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Changes the position of the sprite by a given vector.", + "description": "Changes the position of the sprite by a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector representing the change in position" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changePosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt die Figur um den angegebenen Vektor" + } + } + }, + { + "id": "Sprite/changePosition(double,double)", + "memberId": "Sprite/changePosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changePosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Changes the position of the sprite by the given amounts.", + "description": "Changes the position of the sprite by the given amounts.", + "scratchblock": null, + "paramDocs": [ + "x: how far to move along the x-axis", + "y: how far to move along the y-axis" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changePosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt die Figur um die angegebenen Werte" + } + } + }, + { + "id": "Sprite/changeSize(double)", + "memberId": "Sprite/changeSize", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "amount" + ], + "params": [ + "double amount" + ], + "summary": "Changes the size of the sprite by a given percentage.", + "description": "Changes the size of the sprite by a given percentage.", + "scratchblock": "change size by (amount)", + "paramDocs": [ + "amount: a percentage [0...100]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Größe um den angegebenen Wert in Prozent" + } + } + }, + { + "id": "Sprite/changeTint(double)", + "memberId": "Sprite/changeTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes the tint for the sprite by a step.", + "description": "Changes the tint for the sprite by a step.", + "scratchblock": "change [color v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton der Einfärbung um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeTransparency(double)", + "memberId": "Sprite/changeTransparency", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes how see-through the sprite is by a step. A positive step fades it\nout, a negative one brings it back.", + "description": "Changes how see-through the sprite is by a step. A positive step fades it\nout, a negative one brings it back.", + "scratchblock": "change [ghost v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Transparenz um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeVolume(double)", + "memberId": "Sprite/changeVolume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Makes every sound of this sprite louder or quieter.", + "description": "Makes every sound of this sprite louder or quieter.", + "scratchblock": "change volume by (step)", + "paramDocs": [ + "step: how much to add to the volume, in percent" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Lautstärke um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeX(double)", + "memberId": "Sprite/changeX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Changes x by a certain amount", + "description": "Changes x by a certain amount", + "scratchblock": "change x by (x)", + "paramDocs": [ + "x: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die x-Position um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeY(double)", + "memberId": "Sprite/changeY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Changes y by a certain amount", + "description": "Changes y by a certain amount", + "scratchblock": "change y by (y)", + "paramDocs": [ + "y: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die y-Position um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/clone()", + "memberId": "Sprite/clone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "clone", + "static": false, + "returnType": "Sprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a clone of this sprite, like Scratch's \"create clone of myself\": a\nnew sprite of the same class (a clone of a `Cat` is a `Cat`),\nwith the same costume, position, direction, size and pen, and a copy of\nthe variables of your class. It is put on the stage right behind this\nsprite, and its [whenStartsAsClone()](whenStartsAsClone) runs; the constructor does\nnot run again.", + "description": "Creates a clone of this sprite, like Scratch's \"create clone of myself\": a\nnew sprite of the same class (a clone of a `Cat` is a `Cat`),\nwith the same costume, position, direction, size and pen, and a copy of\nthe variables of your class. It is put on the stage right behind this\nsprite, and its [whenStartsAsClone()](whenStartsAsClone) runs; the constructor does\nnot run again.\n\nNumbers, text and booleans in your variables are the clone's own. A list\nor another object is shared with the original: give the clone its own in\n[whenStartsAsClone()](whenStartsAsClone) if it needs one.\n\n```java\nBullet bullet = (Bullet) this.clone();\n```", + "scratchblock": "create clone of [myself v]", + "paramDocs": [], + "returns": "the clone, of the same class as this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/clone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/constructor()", + "memberId": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "constructor", + "static": false, + "returnType": "Sprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Sprite object with default settings.", + "description": "Constructs a new Sprite object with default settings.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine neue Figur" + } + } + }, + { + "id": "Sprite/constructor(String,String)", + "memberId": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "constructor", + "static": false, + "returnType": "Sprite", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "imagePath" + ], + "params": [ + "String name", + "String imagePath" + ], + "summary": "Constructs a new Sprite object with a specified costume.", + "description": "Constructs a new Sprite object with a specified costume.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name for the costume", + "imagePath: a path to an image file, or the name of a built-in sprite\n such as \"slimeGreen\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Figur mit einem ersten Kostüm" + } + } + }, + { + "id": "Sprite/constructor(Sprite)", + "memberId": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "constructor", + "static": false, + "returnType": "Sprite", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Copies a Sprite object.", + "description": "Copies a Sprite object.", + "scratchblock": null, + "paramDocs": [ + "s: a Sprite object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der angegebenen Figur" + } + } + }, + { + "id": "Sprite/debug(Object[])", + "memberId": "Sprite/debug", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "debug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Object[]" + ], + "parameterNames": [ + "values" + ], + "params": [ + "Object[] values" + ], + "summary": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the sprite's class name so you can tell\nwhich sprite it came from.", + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the sprite's class name so you can tell\nwhich sprite it came from.\n\nExample:\n\n```java\nthis.debug(\"x =\", getX(), \"y =\", getY());\n// prints: [CatSprite] x = 100.0 y = 200.0\n```", + "scratchblock": null, + "paramDocs": [ + "values: one or more values to print" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/debug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/deleteThisClone()", + "memberId": "Sprite/deleteThisClone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "deleteThisClone", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes this sprite from the stage if it is a clone, like Scratch's\n\"delete this clone\". The original stays.", + "description": "Removes this sprite from the stage if it is a clone, like Scratch's\n\"delete this clone\". The original stays.", + "scratchblock": "delete this clone", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/deleteThisClone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/disableHitbox()", + "memberId": "Sprite/disableHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "disableHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Disables the hitbox for the sprite. Once the hitbox is disabled, the sprite\nwill no longer\ndetect collisions with other objects.", + "description": "Disables the hitbox for the sprite. Once the hitbox is disabled, the sprite\nwill no longer\ndetect collisions with other objects.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/disableHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Berührungserkennung aus" + } + } + }, + { + "id": "Sprite/distanceToMousePointer()", + "memberId": "Sprite/distanceToMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "distanceToMousePointer", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Calculates the distance from the current sprite to the mouse pointer.", + "description": "Calculates the distance from the current sprite to the mouse pointer.", + "scratchblock": "(distance to [mouse-pointer v])", + "paramDocs": [], + "returns": "the distance to the mouse pointer as a double.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/distanceToMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Abstand zum Mauszeiger zurück" + } + } + }, + { + "id": "Sprite/distanceToSprite(Sprite)", + "memberId": "Sprite/distanceToSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "distanceToSprite", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Calculates the Euclidean distance between this sprite and another sprite.", + "description": "Calculates the Euclidean distance between this sprite and another sprite.", + "scratchblock": "(distance to [sprite v])", + "paramDocs": [ + "sprite: the other sprite to which the distance is calculated" + ], + "returns": "the distance between this sprite and the specified sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/distanceToSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Abstand zu einer anderen Figur zurück" + } + } + }, + { + "id": "Sprite/enableHitbox()", + "memberId": "Sprite/enableHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "enableHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Enables the hitbox for the sprite. This method sets the hitboxDisabled flag\nto false, allowing\nthe sprite to interact with other objects.", + "description": "Enables the hitbox for the sprite. This method sets the hitboxDisabled flag\nto false, allowing\nthe sprite to interact with other objects.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/enableHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Berührungserkennung wieder ein" + } + } + }, + { + "id": "Sprite/getAnswer()", + "memberId": "Sprite/getAnswer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getAnswer", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the last answer that was typed in.", + "description": "Returns the last answer that was typed in.", + "scratchblock": "(answer)", + "paramDocs": [], + "returns": "the answer, or an empty string if nothing has been answered yet", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getAnswer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die zuletzt eingegebene Antwort zurück, sonst eine leere Zeichenkette" + } + } + }, + { + "id": "Sprite/getCurrentCostumeIndex()", + "memberId": "Sprite/getCurrentCostumeIndex", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getCurrentCostumeIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current costume index", + "description": "Returns the current costume index", + "scratchblock": "(costume [number v])", + "paramDocs": [], + "returns": "a costume index", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getCurrentCostumeIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer des aktuellen Kostüms zurück" + } + } + }, + { + "id": "Sprite/getCurrentCostumeName()", + "memberId": "Sprite/getCurrentCostumeName", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getCurrentCostumeName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current costume name", + "description": "Returns the current costume name", + "scratchblock": "(costume [name v])", + "paramDocs": [], + "returns": "a costume name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getCurrentCostumeName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen des aktuellen Kostüms zurück" + } + } + }, + { + "id": "Sprite/getDeltaTime()", + "memberId": "Sprite/getDeltaTime", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getDeltaTime", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the seconds passed since the last frame.", + "description": "Gets the seconds passed since the last frame.", + "scratchblock": null, + "paramDocs": [], + "returns": "seconds since last frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getDeltaTime", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + } + }, + { + "id": "Sprite/getDirection()", + "memberId": "Sprite/getDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getDirection", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the direction of the sprite.", + "description": "Returns the direction of the sprite.", + "scratchblock": "(direction)", + "paramDocs": [], + "returns": "the direction [0...360]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Blickrichtung in Grad zurück (90 = rechts, 0 = oben)" + } + } + }, + { + "id": "Sprite/getHeight()", + "memberId": "Sprite/getHeight", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getHeight", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the height of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Höhe der Figur in Pixeln zurück" + } + } + }, + { + "id": "Sprite/getHitbox()", + "memberId": "Sprite/getHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getHitbox", + "static": false, + "returnType": "Hitbox", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the hitbox of the sprite based on its current costume, position, and\nrotation. If the\nsprite has a hitbox already defined, it updates and returns it. Otherwise, it\ncalculates a new\nhitbox based on the sprite's dimensions and rotation.", + "description": "Returns the hitbox of the sprite based on its current costume, position, and\nrotation. If the\nsprite has a hitbox already defined, it updates and returns it. Otherwise, it\ncalculates a new\nhitbox based on the sprite's dimensions and rotation.", + "scratchblock": null, + "paramDocs": [], + "returns": "the hitbox of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Trefferfläche der Figur zurück" + } + } + }, + { + "id": "Sprite/getMouse()", + "memberId": "Sprite/getMouse", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getMouse", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current position of the mouse cursor.", + "description": "Retrieves the current position of the mouse cursor.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Vector2 object representing the current mouse cursor position, with\n the x-coordinate\n obtained from getMouseX() and the y-coordinate obtained from\n getMouseY().", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getMouse", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position des Mauszeigers zurück" + } + } + }, + { + "id": "Sprite/getMouseX()", + "memberId": "Sprite/getMouseX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getMouseX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current x-position of the mouse cursor", + "description": "Returns the current x-position of the mouse cursor", + "scratchblock": "(mouse x)", + "paramDocs": [], + "returns": "x-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getMouseX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Sprite/getMouseY()", + "memberId": "Sprite/getMouseY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getMouseY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current y-position of the mouse cursor", + "description": "Returns the current y-position of the mouse cursor", + "scratchblock": "(mouse y)", + "paramDocs": [], + "returns": "y-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getMouseY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Sprite/getPen()", + "memberId": "Sprite/getPen", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getPen", + "static": false, + "returnType": "Pen", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pen of the sprite.", + "description": "Returns the pen of the sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getPen", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Stift dieser Figur zurück; mit ihm kann sie eine Spur zeichnen" + } + } + }, + { + "id": "Sprite/getPosition()", + "memberId": "Sprite/getPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current position of the sprite.", + "description": "Retrieves the current position of the sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": "A [Vector2](../Vector2/index) object representing the x and y coordinates of the\n sprite.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position der Figur zurück" + } + } + }, + { + "id": "Sprite/getShaders()", + "memberId": "Sprite/getShaders", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getShaders", + "static": false, + "returnType": "Shaders", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shaders of this sprite. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.", + "description": "Returns the shaders of this sprite. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.\n\nExample usage:\n\n```java\nthis.getShaders().add(\"blur\", \"blur.frag\", null);\nthis.getShaders().switchTo(\"blur\");\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the shaders", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getShaders", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Shader dieser Figur zurück" + } + } + }, + { + "id": "Sprite/getSize()", + "memberId": "Sprite/getSize", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getSize", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size of the sprite.", + "description": "Returns the size of the sprite.", + "scratchblock": "(size)", + "paramDocs": [], + "returns": "size in percentage", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Größe in Prozent zurück" + } + } + }, + { + "id": "Sprite/getStage()", + "memberId": "Sprite/getStage", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getStage", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current stage associated with this sprite.", + "description": "Retrieves the current stage associated with this sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": "the stage associated with this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Bühne zurück, auf der die Figur steht" + } + } + }, + { + "id": "Sprite/getText()", + "memberId": "Sprite/getText", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getText", + "static": false, + "returnType": "Text", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the text associated with this sprite.", + "description": "Retrieves the text associated with this sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": "the text associated with this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getText", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Text zurück, der über der Figur angezeigt wird" + } + } + }, + { + "id": "Sprite/getTimer()", + "memberId": "Sprite/getTimer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the default timer", + "description": "Return the default timer", + "scratchblock": "(timer)", + "paramDocs": [], + "returns": "the default timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Standard-Timer dieser Figur zurück" + } + } + }, + { + "id": "Sprite/getTimer(String)", + "memberId": "Sprite/getTimer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Return a timer by name", + "description": "Return a timer by name", + "scratchblock": null, + "paramDocs": [ + "name: " + ], + "returns": "a timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Timer mit dem angegebenen Namen zurück und legt ihn bei Bedarf an" + } + } + }, + { + "id": "Sprite/getTint()", + "memberId": "Sprite/getTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTint", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the tint value of the current costume.", + "description": "Retrieves the tint value of the current costume.", + "scratchblock": null, + "paramDocs": [], + "returns": "the tint value of the current costume, or null if there are no\n costumes.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Farbe der Einfärbung zurück" + } + } + }, + { + "id": "Sprite/getTouchingSprite(Class)", + "memberId": "Sprite/getTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTouchingSprite", + "static": false, + "returnType": "T", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Returns the first sprite of the specified type that is currently touching\nthis sprite.", + "description": "Returns the first sprite of the specified type that is currently touching\nthis sprite.", + "scratchblock": null, + "paramDocs": [ + "c: the class object of the type of sprite to check for" + ], + "returns": "the first sprite of the specified type that is touching this sprite,\n or null if no such\n sprite is found", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTouchingSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die erste berührte Figur dieser Klasse zurück, sonst null" + } + } + }, + { + "id": "Sprite/getTouchingSprites(Class)", + "memberId": "Sprite/getTouchingSprites", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTouchingSprites", + "static": false, + "returnType": "List", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Returns a list of sprites of the specified type that are currently touching\nthis sprite.", + "description": "Returns a list of sprites of the specified type that are currently touching\nthis sprite.", + "scratchblock": null, + "paramDocs": [ + "c: the class of the type of sprites to return" + ], + "returns": "a list of sprites of the specified type that are touching this\n sprite, or null if the\n stage is not set", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTouchingSprites", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle berührten Figuren dieser Klasse zurück" + } + } + }, + { + "id": "Sprite/getTransparency()", + "memberId": "Sprite/getTransparency", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTransparency", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the transparency of the current costume.", + "description": "Gets the transparency of the current costume.", + "scratchblock": null, + "paramDocs": [], + "returns": "how see-through the sprite is, 0 solid and 100 invisible", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Transparenz in Prozent zurück" + } + } + }, + { + "id": "Sprite/getVolume()", + "memberId": "Sprite/getVolume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getVolume", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns how loud the sounds of this sprite play.", + "description": "Returns how loud the sounds of this sprite play.", + "scratchblock": "(volume)", + "paramDocs": [], + "returns": "the volume, from 0 to 100", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Lautstärke in Prozent zurück" + } + } + }, + { + "id": "Sprite/getWidth()", + "memberId": "Sprite/getWidth", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getWidth", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite der Figur in Pixeln zurück" + } + } + }, + { + "id": "Sprite/getX()", + "memberId": "Sprite/getX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x coordinate of the sprite", + "description": "Returns the x coordinate of the sprite", + "scratchblock": "(x position)", + "paramDocs": [], + "returns": "a x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position zurück (Mitte der Bühne ist 0)" + } + } + }, + { + "id": "Sprite/getY()", + "memberId": "Sprite/getY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y coordinate of the sprite", + "description": "Returns the y coordinate of the sprite", + "scratchblock": "(y position)", + "paramDocs": [], + "returns": "a y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position zurück (Mitte der Bühne ist 0, nach oben positiv)" + } + } + }, + { + "id": "Sprite/glide(double,double,double)", + "memberId": "Sprite/glide", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "glide", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "seconds", + "x", + "y" + ], + "params": [ + "double seconds", + "double x", + "double y" + ], + "summary": "Slides the sprite to a place over the given time, instead of jumping there.", + "description": "Slides the sprite to a place over the given time, instead of jumping there.\n\nUnlike Scratch this does not hold up the sprite: `run()` keeps being called\nwhile the sprite is on its way. Use [isGliding()](isGliding) to tell whether it\nhas arrived.", + "scratchblock": "glide (seconds) secs to x: (x) y: (y)", + "paramDocs": [ + "seconds: how long the trip should take", + "x: where to end up", + "y: where to end up" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/glide", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gleitet in der angegebenen Zeit zur Zielposition" + } + } + }, + { + "id": "Sprite/goLayersBackwards(int)", + "memberId": "Sprite/goLayersBackwards", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goLayersBackwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the sprite backwards by a specified number of layers in the stage. If\nthe sprite is not\npart of a stage, the method does nothing.", + "description": "Moves the sprite backwards by a specified number of layers in the stage. If\nthe sprite is not\npart of a stage, the method does nothing.", + "scratchblock": "go [backward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the sprite backwards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goLayersBackwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt die Figur um die angegebene Anzahl Ebenen nach hinten" + } + } + }, + { + "id": "Sprite/goLayersForwards(int)", + "memberId": "Sprite/goLayersForwards", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goLayersForwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the sprite forward by a specified number of layers within its stage.", + "description": "Moves the sprite forward by a specified number of layers within its stage.", + "scratchblock": "go [forward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the sprite forward" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goLayersForwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt die Figur um die angegebene Anzahl Ebenen nach vorne" + } + } + }, + { + "id": "Sprite/goToBackLayer()", + "memberId": "Sprite/goToBackLayer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToBackLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the sprite to the back layer of the stage. If the sprite is not\nassociated with any\nstage, the method returns without performing any action.", + "description": "Moves the sprite to the back layer of the stage. If the sprite is not\nassociated with any\nstage, the method returns without performing any action.", + "scratchblock": "go to [back v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToBackLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt die Figur ganz nach hinten" + } + } + }, + { + "id": "Sprite/goToFrontLayer()", + "memberId": "Sprite/goToFrontLayer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToFrontLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves this sprite to the front layer of the stage. If the sprite is not part\nof any stage, the\nmethod does nothing.", + "description": "Moves this sprite to the front layer of the stage. If the sprite is not part\nof any stage, the\nmethod does nothing.", + "scratchblock": "go to [front v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToFrontLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt die Figur ganz nach vorne" + } + } + }, + { + "id": "Sprite/goToMousePointer()", + "memberId": "Sprite/goToMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToMousePointer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the sprite to the current position of the mouse pointer. This method\nupdates the sprite's\nposition to the coordinates of the mouse cursor.", + "description": "Moves the sprite to the current position of the mouse pointer. This method\nupdates the sprite's\nposition to the coordinates of the mouse cursor.", + "scratchblock": "go to [mouse-pointer v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an die Position des Mauszeigers" + } + } + }, + { + "id": "Sprite/goToRandomPosition()", + "memberId": "Sprite/goToRandomPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToRandomPosition", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the sprite to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "description": "Moves the sprite to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "scratchblock": "go to [random position v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToRandomPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an eine zufällige Position auf der Bühne" + } + } + }, + { + "id": "Sprite/goToSprite(Sprite)", + "memberId": "Sprite/goToSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToSprite", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Moves this sprite to the position of the specified sprite.", + "description": "Moves this sprite to the position of the specified sprite.", + "scratchblock": "go to [sprite v]", + "paramDocs": [ + "sprite: the sprite to move to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur auf die Position einer anderen Figur" + } + } + }, + { + "id": "Sprite/hide()", + "memberId": "Sprite/hide", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "hide", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Hides the sprite. The pen is not effected.", + "description": "Hides the sprite. The pen is not effected.", + "scratchblock": "hide", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/hide", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Macht die Figur unsichtbar" + } + } + }, + { + "id": "Sprite/hideVariable(String)", + "memberId": "Sprite/hideVariable", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "hideVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "description": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "scratchblock": "hide variable [name v]", + "paramDocs": [ + "name: the name the monitor was shown with" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/hideVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/ifOnEdgeBounce()", + "memberId": "Sprite/ifOnEdgeBounce", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "ifOnEdgeBounce", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the sprite is on the edge of the stage and bounces it back if it\nis. The sprite's\ndirection is reversed when it hits the left or right border, and it is\nreversed and rotated by\n180 degrees when it hits the top or bottom border. The method does nothing if\nthe hitbox is\ndisabled or if the sprite is a UI element. It also does nothing if the\nsprite has not been added to a stage yet.", + "description": "Checks if the sprite is on the edge of the stage and bounces it back if it\nis. The sprite's\ndirection is reversed when it hits the left or right border, and it is\nreversed and rotated by\n180 degrees when it hits the top or bottom border. The method does nothing if\nthe hitbox is\ndisabled or if the sprite is a UI element. It also does nothing if the\nsprite has not been added to a stage yet.", + "scratchblock": "if on edge, bounce", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/ifOnEdgeBounce", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Lässt die Figur am Bühnenrand abprallen" + } + } + }, + { + "id": "Sprite/isAsking()", + "memberId": "Sprite/isAsking", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isAsking", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether a question is on screen and still waiting for an answer.", + "description": "Checks whether a question is on screen and still waiting for an answer.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while a question is waiting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isAsking", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn noch auf eine Antwort gewartet wird" + } + } + }, + { + "id": "Sprite/isClone()", + "memberId": "Sprite/isClone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isClone", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Whether this sprite is a clone, made by [clone()](clone).", + "description": "Whether this sprite is a clone, made by [clone()](clone).", + "scratchblock": null, + "paramDocs": [], + "returns": "true for a clone, false for the original", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isClone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der Figur" + } + } + }, + { + "id": "Sprite/isColorTouchingColor(Color,Color)", + "memberId": "Sprite/isColorTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isColorTouchingColor", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "color", + "other" + ], + "params": [ + "Color color", + "Color other" + ], + "summary": "Checks whether a colour of the sprite is touching a colour on the stage:\nonly the parts of the costume painted in `color` count. A car whose\nfront bumper is red can ask whether the bumper touches the grass.", + "description": "Checks whether a colour of the sprite is touching a colour on the stage:\nonly the parts of the costume painted in `color` count. A car whose\nfront bumper is red can ask whether the bumper touches the grass.\n\n```java\nif (this.isColorTouchingColor(HtmlColor.RED, HtmlColor.GREEN)) {\n this.say(\"Off the road!\");\n}\n```", + "scratchblock": "<color [#ff0000] is touching [#00ff00]?>", + "paramDocs": [ + "color: a colour of this sprite's costume", + "other: the colour to look for under it" + ], + "returns": "true if the colour touches the other colour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isColorTouchingColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob die Teile der Figur in der Farbe color über der Farbe other liegen" + } + } + }, + { + "id": "Sprite/isGliding()", + "memberId": "Sprite/isGliding", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isGliding", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether the sprite is still on its way to a place it was told to\nglide to.", + "description": "Checks whether the sprite is still on its way to a place it was told to\nglide to.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while it is still moving", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isGliding", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur gerade gleitet" + } + } + }, + { + "id": "Sprite/isKeyPressed(KeyCode)", + "memberId": "Sprite/isKeyPressed", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isKeyPressed", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "Returns true if the key is pressed", + "description": "Returns true if the key is pressed", + "scratchblock": "<key [space v] pressed?>", + "paramDocs": [ + "keyCode: a key" + ], + "returns": "key pressed", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Taste gerade gedrückt ist" + } + } + }, + { + "id": "Sprite/isMouseDown()", + "memberId": "Sprite/isMouseDown", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isMouseDown", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true is the mouse button is down", + "description": "Returns true is the mouse button is down", + "scratchblock": "<mouse down?>", + "paramDocs": [], + "returns": "mouse button down", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isMouseDown", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine Maustaste gedrückt ist" + } + } + }, + { + "id": "Sprite/isSoundPlaying(String)", + "memberId": "Sprite/isSoundPlaying", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isSoundPlaying", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns true if the sound if playing", + "description": "Returns true if the sound if playing", + "scratchblock": null, + "paramDocs": [ + "name: Name of the sound" + ], + "returns": "playing", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isSoundPlaying", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Klang gerade abgespielt wird" + } + } + }, + { + "id": "Sprite/isTouchingColor(Color)", + "memberId": "Sprite/isTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingColor", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "color" + ], + "params": [ + "Color color" + ], + "summary": "Checks whether the sprite is touching a colour: whether anything it paints\nlies over that colour on the stage - on the backdrop, on what the pen drew,\nor on another sprite.", + "description": "Checks whether the sprite is touching a colour: whether anything it paints\nlies over that colour on the stage - on the backdrop, on what the pen drew,\nor on another sprite.\n\nAs in Scratch, colours that are nearly the same count, so anti-aliased\nedges still match. Only what is under the painted part of the costume\ncounts, not the empty space around it, and not the hitbox.\n\n```java\nif (this.isTouchingColor(HtmlColor.RED)) {\n this.say(\"Ouch!\");\n}\n```\n\nThe time it takes grows with the size of the sprite, not of the stage.", + "scratchblock": "<touching color [#ff0000]?>", + "paramDocs": [ + "color: the colour to look for" + ], + "returns": "true if the sprite is touching the colour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob etwas, das die Figur malt, über dieser Farbe auf der Bühne liegt — auf dem Bühnenbild, auf dem, was der Stift gezeichnet hat, oder auf einer anderen Figur. Fast gleiche Farben zählen wie in Scratch." + } + } + }, + { + "id": "Sprite/isTouchingColor(double,double,double)", + "memberId": "Sprite/isTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingColor", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Checks whether the sprite is touching a colour given by its red, green and\nblue parts.", + "description": "Checks whether the sprite is touching a colour given by its red, green and\nblue parts.", + "scratchblock": null, + "paramDocs": [ + "r: the red part [0...255]", + "g: the green part [0...255]", + "b: the blue part [0...255]" + ], + "returns": "true if the sprite is touching the colour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob die Figur eine Farbe berührt, angegeben durch Rot, Grün und Blau [0...255]" + } + } + }, + { + "id": "Sprite/isTouchingEdge()", + "memberId": "Sprite/isTouchingEdge", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingEdge", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true if the rectangle which contains the image is outside of the\nstage", + "description": "Returns true if the rectangle which contains the image is outside of the\nstage", + "scratchblock": "<touching [edge v]?>", + "paramDocs": [], + "returns": "true if outside", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingEdge", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur den Bühnenrand berührt" + } + } + }, + { + "id": "Sprite/isTouchingMousePointer()", + "memberId": "Sprite/isTouchingMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingMousePointer", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true is the mouse pointer is touching the hitbox of the sprite.", + "description": "Returns true is the mouse pointer is touching the hitbox of the sprite.", + "scratchblock": "<touching [mouse-pointer v]?>", + "paramDocs": [], + "returns": "true if touching", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Mauszeiger auf der Figur liegt" + } + } + }, + { + "id": "Sprite/isTouchingSprite(Sprite)", + "memberId": "Sprite/isTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingSprite", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Checks if this sprite is touching another sprite.", + "description": "Checks if this sprite is touching another sprite.", + "scratchblock": "<touching [sprite v]?>", + "paramDocs": [ + "sprite: The sprite to check for collision with." + ], + "returns": "true if this sprite is touching the specified sprite, false\n otherwise. Returns false if\n the specified sprite is the same as this sprite, if the stage is\n null, if the specified\n sprite is null, not shown, or has its hitbox disabled.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich die Figuren berühren" + } + } + }, + { + "id": "Sprite/isTouchingSprite(Class)", + "memberId": "Sprite/isTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingSprite", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Checks if this sprite is touching any sprite of the specified class type.", + "description": "Checks if this sprite is touching any sprite of the specified class type.", + "scratchblock": null, + "paramDocs": [ + "c: the class type of the sprite to check for collision" + ], + "returns": "true if this sprite is touching any sprite of the specified class\n type, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur eine Figur dieser Klasse berührt, z.B. isTouchingSprite(Apfel.class)" + } + } + }, + { + "id": "Sprite/isVisible()", + "memberId": "Sprite/isVisible", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isVisible", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns if the sprite is visible", + "description": "Returns if the sprite is visible", + "scratchblock": null, + "paramDocs": [], + "returns": "is visible", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isVisible", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur sichtbar ist" + } + } + }, + { + "id": "Sprite/move(double)", + "memberId": "Sprite/move", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "move", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "steps" + ], + "params": [ + "double steps" + ], + "summary": "Moves the sprite towards the current rotation by the received steps.", + "description": "Moves the sprite towards the current rotation by the received steps.", + "scratchblock": "move (steps) steps", + "paramDocs": [ + "steps: a number of pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/move", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bewegt die Figur um die angegebene Schrittzahl in ihre Blickrichtung" + } + } + }, + { + "id": "Sprite/move(Vector2)", + "memberId": "Sprite/move", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "move", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Moves the sprite in the direction of the given vector. The length of the\nvector determines how\nmove the sprite will move in this direction.", + "description": "Moves the sprite in the direction of the given vector. The length of the\nvector determines how\nmove the sprite will move in this direction.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/move", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt die Figur um den Vektor" + } + } + }, + { + "id": "Sprite/nextCostume()", + "memberId": "Sprite/nextCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "nextCostume", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the next costume.", + "description": "Switch to the next costume.", + "scratchblock": "next costume", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/nextCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum nächsten Kostüm" + } + } + }, + { + "id": "Sprite/pickRandom(int,int)", + "memberId": "Sprite/pickRandom", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pickRandom", + "static": false, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "from", + "to" + ], + "params": [ + "int from", + "int to" + ], + "summary": "Returns a random integer between the specified range.", + "description": "Returns a random integer between the specified range.", + "scratchblock": "(pick random (from) to (to))", + "paramDocs": [ + "from: the lower bound of the range (inclusive)", + "to: the upper bound of the range (exclusive)" + ], + "returns": "a random integer between the specified range", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pickRandom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen from und to zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Sprite/playSound(String)", + "memberId": "Sprite/playSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "playSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Plays a sound.", + "description": "Plays a sound.\n\nEvery sprite plays its own copy, so ten sprites playing the same sound are\nheard ten times at once. One sprite only plays a sound once at a time:\nplaying it again while it is still going does nothing.", + "scratchblock": "start sound [name v]", + "paramDocs": [ + "name: the sound name" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/playSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt einen zuvor hinzugefügten Klang ab" + } + } + }, + { + "id": "Sprite/pointInDirection(double)", + "memberId": "Sprite/pointInDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointInDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Points the sprite in the specified direction.", + "description": "Points the sprite in the specified direction.", + "scratchblock": null, + "paramDocs": [ + "degrees: The direction in degrees to point the sprite. 0 degrees is up,\n 90 degrees is to the right, 180 degrees is down, and 270\n degrees is to the left." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointInDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Blickrichtung in Grad (90 = rechts, 0 = oben)" + } + } + }, + { + "id": "Sprite/pointInDirection(Vector2)", + "memberId": "Sprite/pointInDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointInDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Points the sprite in the direction of the given vector.", + "description": "Points the sprite in the direction of the given vector.", + "scratchblock": null, + "paramDocs": [ + "v: the target vector to point towards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointInDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Richtet die Figur entlang des angegebenen Vektors aus" + } + } + }, + { + "id": "Sprite/pointTowardsMousePointer()", + "memberId": "Sprite/pointTowardsMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointTowardsMousePointer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Points the sprite towards the current position of the mouse pointer. This\nmethod calculates the\nangle between the sprite's current position and the mouse pointer's position,\nthen sets the\nsprite's direction accordingly.", + "description": "Points the sprite towards the current position of the mouse pointer. This\nmethod calculates the\nangle between the sprite's current position and the mouse pointer's position,\nthen sets the\nsprite's direction accordingly.", + "scratchblock": "point towards [mouse-pointer v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointTowardsMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Richtet die Figur zum Mauszeiger aus" + } + } + }, + { + "id": "Sprite/pointTowardsSprite(Sprite)", + "memberId": "Sprite/pointTowardsSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointTowardsSprite", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Points the current sprite towards the specified sprite.", + "description": "Points the current sprite towards the specified sprite.", + "scratchblock": "point towards [sprite v]", + "paramDocs": [ + "s: the sprite to point towards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointTowardsSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Richtet die Figur zu einer anderen Figur aus" + } + } + }, + { + "id": "Sprite/previousCostume()", + "memberId": "Sprite/previousCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "previousCostume", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the previous costume.", + "description": "Switch to the previous costume.", + "scratchblock": "switch costume to (previous costume)", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/previousCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum vorherigen Kostüm" + } + } + }, + { + "id": "Sprite/remove()", + "memberId": "Sprite/remove", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes this sprite from its current stage. For \"delete this clone\", see\n[deleteThisClone()](deleteThisClone).", + "description": "Removes this sprite from its current stage. For \"delete this clone\", see\n[deleteThisClone()](deleteThisClone).", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt die Figur von der Bühne" + } + } + }, + { + "id": "Sprite/run()", + "memberId": "Sprite/run", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "run", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is intended to be overridden by subclasses to define the behavior\nof the sprite\nwhen it is run. By default, this method does nothing.", + "description": "This method is intended to be overridden by subclasses to define the behavior\nof the sprite\nwhen it is run. By default, this method does nothing.\n\nIt is called every frame.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/run", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird in jedem Frame aufgerufen" + } + } + }, + { + "id": "Sprite/say(String)", + "memberId": "Sprite/say", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "say", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Makes the sprite display a speech bubble with the specified text.", + "description": "Makes the sprite display a speech bubble with the specified text.", + "scratchblock": "say [text]", + "paramDocs": [ + "text: The text to be displayed in the speech bubble." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/say", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Sprechblase an" + } + } + }, + { + "id": "Sprite/say(String,int)", + "memberId": "Sprite/say", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "say", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays a text message for a specified duration.", + "description": "Displays a text message for a specified duration.", + "scratchblock": "say [text] for (millis) seconds", + "paramDocs": [ + "text: The message to be displayed.", + "millis: The duration in milliseconds for which the message will be\n displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/say", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Sprechblase für die angegebene Zeit in Millisekunden" + } + } + }, + { + "id": "Sprite/setDirection(double)", + "memberId": "Sprite/setDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Sets the direction of the sprite to a given degrees. When this value is 0 the\nsprite moves\nup, when it is 180 it moves down.", + "description": "Sets the direction of the sprite to a given degrees. When this value is 0 the\nsprite moves\nup, when it is 180 it moves down.", + "scratchblock": "point in direction (degrees)", + "paramDocs": [ + "degrees: between 0 and 360" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Blickrichtung in Grad (90 = rechts, 0 = oben)" + } + } + }, + { + "id": "Sprite/setDirection(Vector2)", + "memberId": "Sprite/setDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the direction of the sprite to the direction of a given vector.", + "description": "Sets the direction of the sprite to the direction of a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Blickrichtung auf die Richtung des Vektors" + } + } + }, + { + "id": "Sprite/setHitbox(double[])", + "memberId": "Sprite/setHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double[]" + ], + "parameterNames": [ + "points" + ], + "params": [ + "double[] points" + ], + "summary": "Sets the hitbox for the sprite using the provided points. The points should\nbe provided in\npairs representing the x and y coordinates.", + "description": "Sets the hitbox for the sprite using the provided points. The points should\nbe provided in\npairs representing the x and y coordinates.", + "scratchblock": null, + "paramDocs": [ + "points: an array of integers representing the x and y coordinates of\n the hitbox vertices.\n The length of the array should be even, with each pair of\n integers representing a point (x,\n y)." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/setHitbox(Shape)", + "memberId": "Sprite/setHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Shape" + ], + "parameterNames": [ + "shape" + ], + "params": [ + "Shape shape" + ], + "summary": "Sets the hitbox for the sprite using the specified shape.", + "description": "Sets the hitbox for the sprite using the specified shape.", + "scratchblock": null, + "paramDocs": [ + "shape: the shape to be used for the hitbox" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Trefferfläche auf die angegebene Form; (0/0) ist die Mitte der Figur" + } + } + }, + { + "id": "Sprite/setPosition(double,double)", + "memberId": "Sprite/setPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the position of the sprite", + "description": "Sets the position of the sprite", + "scratchblock": "go to x: (x) y: (y)", + "paramDocs": [ + "x: a x coordinate", + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Sprite/setPosition(Vector2)", + "memberId": "Sprite/setPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the sprite based on the coordinates of a given vector.", + "description": "Sets the position of the sprite based on the coordinates of a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Sprite/setRotationCenter(double,double)", + "memberId": "Sprite/setRotationCenter", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setRotationCenter", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the point of the costume the sprite turns around - Scratch's rotation\ncenter. It is also the point that sits at the sprite's position, so it is\nwhere the pen draws from and what `goTo` puts in place.", + "description": "Sets the point of the costume the sprite turns around - Scratch's rotation\ncenter. It is also the point that sits at the sprite's position, so it is\nwhere the pen draws from and what `goTo` puts in place.\n\nThe point is given in the costume's own pixels, counted from its top left\ncorner, the same way as [setHitbox(double...)](setHitbox): a sword whose hilt\nis 12 pixels from the left and 60 from the top swings around the hilt with\n`setRotationCenter(12, 60)`. It grows and shrinks with the sprite's\nsize and holds for every costume of the sprite. Without it, a sprite turns\naround the middle of its costume.\n\n```java\nthis.addCostume(\"hand\", \"assets/clock-hand.png\");\nthis.setRotationCenter(8, 100); // the end of the hand\n```", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate in the costume, from its left edge", + "y: the y-coordinate in the costume, from its top edge" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setRotationCenter", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Punkt des Kostüms, um den sich die Figur dreht (Drehpunkt). Er sitzt an der Position der Figur. Angegeben in Pixeln des Kostüms von seiner linken oberen Ecke aus, wie bei setHitbox; er wächst mit der Größe und gilt für alle Kostüme." + } + } + }, + { + "id": "Sprite/setRotationStyle(RotationStyle)", + "memberId": "Sprite/setRotationStyle", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setRotationStyle", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.RotationStyle" + ], + "parameterNames": [ + "style" + ], + "params": [ + "RotationStyle style" + ], + "summary": "Sets the rotation style for the sprite.", + "description": "Sets the rotation style for the sprite.", + "scratchblock": "set rotation style [left-right v]", + "paramDocs": [ + "style: the rotation style to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setRotationStyle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie sich die Figur beim Drehen verhält" + } + } + }, + { + "id": "Sprite/setSize(double)", + "memberId": "Sprite/setSize", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "percentage" + ], + "params": [ + "double percentage" + ], + "summary": "Sets the size of the sprite.", + "description": "Sets the size of the sprite.", + "scratchblock": "set size to (percentage) %", + "paramDocs": [ + "percentage: a percentage [0...100]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Größe in Prozent (100 = Originalgröße)" + } + } + }, + { + "id": "Sprite/setTint(Color)", + "memberId": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the tint for the sprite with an color object.", + "description": "Sets the tint for the sprite with an color object.", + "scratchblock": null, + "paramDocs": [ + "c: a color object" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt die Figur mit der angegebenen Farbe ein" + } + } + }, + { + "id": "Sprite/setTint(double,double,double)", + "memberId": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Sets the tint for the sprite with rgb.", + "description": "Sets the tint for the sprite with rgb.", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt die Figur mit der angegebenen Farbe ein (Anteile jeweils 0 bis 255)" + } + } + }, + { + "id": "Sprite/setTint(double)", + "memberId": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the tint for the sprite with a hue.", + "description": "Sets the tint for the sprite with a hue.", + "scratchblock": "set [color v] effect to (h)", + "paramDocs": [ + "h: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt die Figur mit dem angegebenen Farbton ein (0 bis 255)" + } + } + }, + { + "id": "Sprite/setTransparency(double)", + "memberId": "Sprite/setTransparency", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "transparency" + ], + "params": [ + "double transparency" + ], + "summary": "Sets how see-through the sprite is, as Scratch's ghost effect does: 0 is the\nsolid sprite you start with and 100 is invisible. Anything outside that is\npinned to it.", + "description": "Sets how see-through the sprite is, as Scratch's ghost effect does: 0 is the\nsolid sprite you start with and 100 is invisible. Anything outside that is\npinned to it.", + "scratchblock": "set [ghost v] effect to (transparency)", + "paramDocs": [ + "transparency: [0...100], 0 solid and 100 invisible" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Transparenz in Prozent (0 = deckend, 100 = unsichtbar)" + } + } + }, + { + "id": "Sprite/setVolume(double)", + "memberId": "Sprite/setVolume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "percent" + ], + "params": [ + "double percent" + ], + "summary": "Sets how loud every sound of this sprite plays.", + "description": "Sets how loud every sound of this sprite plays.", + "scratchblock": "set volume to (percent) %", + "paramDocs": [ + "percent: 0 for silent, 100 for full volume" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Lautstärke aller Klänge dieser Figur in Prozent" + } + } + }, + { + "id": "Sprite/setX(double)", + "memberId": "Sprite/setX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Sets the x coordinate", + "description": "Sets the x coordinate", + "scratchblock": "set x to (x)", + "paramDocs": [ + "x: a x coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die x-Position" + } + } + }, + { + "id": "Sprite/setY(double)", + "memberId": "Sprite/setY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Sets the y coordinate", + "description": "Sets the y coordinate", + "scratchblock": "set y to (y)", + "paramDocs": [ + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die y-Position" + } + } + }, + { + "id": "Sprite/show()", + "memberId": "Sprite/show", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "show", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Shows the sprite.", + "description": "Shows the sprite.", + "scratchblock": "show", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/show", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Macht die Figur sichtbar" + } + } + }, + { + "id": "Sprite/showVariable(String,Supplier)", + "memberId": "Sprite/showVariable", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "showVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.util.function.Supplier" + ], + "parameterNames": [ + "name", + "value" + ], + "params": [ + "String name", + "Supplier value" + ], + "summary": "Shows a monitor for one of this sprite's variables in the top left corner\nof the stage, like Scratch's variable monitors: \"Cat: score\" and the\ncurrent value, updated every frame. Showing the same name again replaces\nthe monitor; it goes away with the sprite.", + "description": "Shows a monitor for one of this sprite's variables in the top left corner\nof the stage, like Scratch's variable monitors: \"Cat: score\" and the\ncurrent value, updated every frame. Showing the same name again replaces\nthe monitor; it goes away with the sprite.\n\n```java\npublic Cat() {\n this.addCostume(\"cat\", \"bunny1_stand\");\n this.showVariable(\"lives\", () -> lives);\n}\n```", + "scratchblock": "show variable [name v]", + "paramDocs": [ + "name: the variable's name, shown after the sprite's", + "value: gives the value to show; asked for it every frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/showVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/stamp()", + "memberId": "Sprite/stamp", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stamp", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stamps the current sprite to the background. A stamp is a non interactive\nversion of the sprite.", + "description": "Stamps the current sprite to the background. A stamp is a non interactive\nversion of the sprite.", + "scratchblock": "stamp", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stamp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Druckt ein unbewegliches Abbild der Figur auf die Bühne" + } + } + }, + { + "id": "Sprite/stamp(Layer)", + "memberId": "Sprite/stamp", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stamp", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Layer" + ], + "parameterNames": [ + "layer" + ], + "params": [ + "Layer layer" + ], + "summary": "Stamps the sprite onto one of the stage's layers. A stamp is a picture of\nthe sprite that stays where it is put, and is not interactive.", + "description": "Stamps the sprite onto one of the stage's layers. A stamp is a picture of\nthe sprite that stays where it is put, and is not interactive.\n\nExample usage:\n\n```java\nthis.stamp(Layer.UI);\n```", + "scratchblock": null, + "paramDocs": [ + "layer: which layer to stamp onto" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stamp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Druckt ein unbewegliches Abbild der Figur auf die angegebene Ebene" + } + } + }, + { + "id": "Sprite/stopAllSounds()", + "memberId": "Sprite/stopAllSounds", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stopAllSounds", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the playing of all sounds of the sprite.", + "description": "Stops the playing of all sounds of the sprite.", + "scratchblock": "stop all sounds", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stopAllSounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt alle Klänge dieser Figur" + } + } + }, + { + "id": "Sprite/stopSound(String)", + "memberId": "Sprite/stopSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stopSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stops the playing of the sound with the given name", + "description": "Stops the playing of the sound with the given name", + "scratchblock": null, + "paramDocs": [ + "name: Name of the sound" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stopSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt den Klang mit dem angegebenen Namen" + } + } + }, + { + "id": "Sprite/switchCostume(String)", + "memberId": "Sprite/switchCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "switchCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switch to a costume by name.", + "description": "Switch to a costume by name.", + "scratchblock": "switch costume to [name v]", + "paramDocs": [ + "name: the name of a costume" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/switchCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum Kostüm mit dem Namen" + } + } + }, + { + "id": "Sprite/switchCostume(double)", + "memberId": "Sprite/switchCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "switchCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "index" + ], + "params": [ + "double index" + ], + "summary": "Switches the current costume of the sprite to the costume at the specified\nindex.", + "description": "Switches the current costume of the sprite to the costume at the specified\nindex.", + "scratchblock": "switch costume to (index)", + "paramDocs": [ + "index: The index of the costume to switch to." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/switchCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum Kostüm mit der angegebenen Nummer" + } + } + }, + { + "id": "Sprite/think(String)", + "memberId": "Sprite/think", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "think", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Displays a thought bubble with the specified text.", + "description": "Displays a thought bubble with the specified text.", + "scratchblock": "think [text]", + "paramDocs": [ + "text: The text to be displayed in the thought bubble." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/think", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Denkblase an" + } + } + }, + { + "id": "Sprite/think(String,int)", + "memberId": "Sprite/think", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "think", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays a thought bubble with the specified text for a given duration.", + "description": "Displays a thought bubble with the specified text for a given duration.", + "scratchblock": "think [text] for (millis) seconds", + "paramDocs": [ + "text: The text to be displayed in the thought bubble.", + "millis: The duration in milliseconds for which the thought bubble will\n be displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/think", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Denkblase für die angegebene Zeit in Millisekunden" + } + } + }, + { + "id": "Sprite/turnLeft(double)", + "memberId": "Sprite/turnLeft", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "turnLeft", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Rotates the sprite by a certain degrees to the left.", + "description": "Rotates the sprite by a certain degrees to the left.", + "scratchblock": "turn left (degrees) degrees", + "paramDocs": [ + "degrees: between 0 and 360" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/turnLeft", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Dreht die Figur um die angegebene Gradzahl nach links" + } + } + }, + { + "id": "Sprite/turnRight(double)", + "memberId": "Sprite/turnRight", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "turnRight", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Rotates the sprite by a certain degrees to the right.", + "description": "Rotates the sprite by a certain degrees to the right.", + "scratchblock": "turn right (degrees) degrees", + "paramDocs": [ + "degrees: between 0 and 360" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/turnRight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Dreht die Figur um die angegebene Gradzahl nach rechts" + } + } + }, + { + "id": "Sprite/whenAddedToStage()", + "memberId": "Sprite/whenAddedToStage", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenAddedToStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the sprite is added to the stage. Override this\nmethod to define\ncustom behavior when the sprite is added to the stage.", + "description": "This method is called when the sprite is added to the stage. Override this\nmethod to define\ncustom behavior when the sprite is added to the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenAddedToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Figur der Bühne hinzugefügt wird" + } + } + }, + { + "id": "Sprite/whenBackdropSwitches(String)", + "memberId": "Sprite/whenBackdropSwitches", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenBackdropSwitches", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "This method is called when the backdrop switches to the specified name.\nOverride this method to\ndefine custom behavior.", + "description": "This method is called when the backdrop switches to the specified name.\nOverride this method to\ndefine custom behavior.", + "scratchblock": "when backdrop switches to [name v]", + "paramDocs": [ + "name: the name of the backdrop to switch to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenBackdropSwitches", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Hintergrund gewechselt wird" + } + } + }, + { + "id": "Sprite/whenClicked()", + "memberId": "Sprite/whenClicked", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenClicked", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the sprite is clicked. Override this method to\ndefine custom\nbehavior for the sprite when it is clicked.", + "description": "This method is called when the sprite is clicked. Override this method to\ndefine custom\nbehavior for the sprite when it is clicked.", + "scratchblock": "when this sprite clicked", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenClicked", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Figur angeklickt wird" + } + } + }, + { + "id": "Sprite/whenIReceive(String)", + "memberId": "Sprite/whenIReceive", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenIReceive", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "This method is called when a message is received. Override this method to\ndefine custom\nbehavior.", + "description": "This method is called when a message is received. Override this method to\ndefine custom\nbehavior.", + "scratchblock": "when I receive [message v]", + "paramDocs": [ + "message: The message that is received." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenIReceive", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Bühne eine Nachricht sendet" + } + } + }, + { + "id": "Sprite/whenKeyPressed(KeyCode)", + "memberId": "Sprite/whenKeyPressed", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenKeyPressed", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is pressed. Override this method to define\ncustom behavior.", + "description": "This method is called when a key is pressed. Override this method to define\ncustom behavior.", + "scratchblock": "when [space v] key pressed", + "paramDocs": [ + "keyCode: the key that was pressed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Drücken einer Taste aufgerufen" + } + } + }, + { + "id": "Sprite/whenKeyReleased(KeyCode)", + "memberId": "Sprite/whenKeyReleased", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenKeyReleased", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is released. Override this method to define\ncustom behavior.", + "description": "This method is called when a key is released. Override this method to define\ncustom behavior.", + "scratchblock": null, + "paramDocs": [ + "keyCode: the key that was released" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenKeyReleased", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Loslassen einer Taste aufgerufen" + } + } + }, + { + "id": "Sprite/whenMouseClicked(MouseCode)", + "memberId": "Sprite/whenMouseClicked", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenMouseClicked", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.MouseCode" + ], + "parameterNames": [ + "mouseCode" + ], + "params": [ + "MouseCode mouseCode" + ], + "summary": "This method is called when a mouse click event occurs. Override this method\nto define custom\nbehavior.", + "description": "This method is called when a mouse click event occurs. Override this method\nto define custom\nbehavior.", + "scratchblock": null, + "paramDocs": [ + "mouseCode: The code representing the mouse button that was clicked." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenMouseClicked", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei einem Mausklick aufgerufen, egal wo" + } + } + }, + { + "id": "Sprite/whenMouseMoved(double,double)", + "memberId": "Sprite/whenMouseMoved", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenMouseMoved", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "This method is called when the mouse is moved. Override this method to define\ncustom behavior.", + "description": "This method is called when the mouse is moved. Override this method to define\ncustom behavior.", + "scratchblock": null, + "paramDocs": [ + "x: The x-coordinate of the mouse pointer.", + "y: The y-coordinate of the mouse pointer." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenMouseMoved", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei jeder Mausbewegung aufgerufen; x und y sind Bühnenkoordinaten" + } + } + }, + { + "id": "Sprite/whenRemovedFromStage()", + "memberId": "Sprite/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenRemovedFromStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the sprite is removed from the stage. Override\nthis method to define\ncustom behavior when the sprite is removed.", + "description": "This method is called when the sprite is removed from the stage. Override\nthis method to define\ncustom behavior when the sprite is removed.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenRemovedFromStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Figur von der Bühne entfernt wird" + } + } + }, + { + "id": "Sprite/whenStartsAsClone()", + "memberId": "Sprite/whenStartsAsClone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenStartsAsClone", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Runs when this sprite was just made as a clone, like Scratch's \"when I\nstart as a clone\". Override it to give clones their own behaviour, for\nexample to send a bullet on its way.", + "description": "Runs when this sprite was just made as a clone, like Scratch's \"when I\nstart as a clone\". Override it to give clones their own behaviour, for\nexample to send a bullet on its way.\n\n```java\npublic void whenStartsAsClone() {\n this.show();\n this.goToRandomPosition();\n}\n```", + "scratchblock": "when I start as a clone", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenStartsAsClone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/add(Sprite)", + "memberId": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "add", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Adds a sprite to the stage. Sprites are drawn in the order they were added, so a sprite added\nlater is drawn on top of one added earlier.", + "description": "Adds a sprite to the stage. Sprites are drawn in the order they were added, so a sprite added\nlater is drawn on top of one added earlier.", + "scratchblock": null, + "paramDocs": [ + "sprite: the sprite to add" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt der Bühne eine Figur hinzu" + } + } + }, + { + "id": "Stage/add(Text)", + "memberId": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "add", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Text" + ], + "parameterNames": [ + "text" + ], + "params": [ + "Text text" + ], + "summary": "Add a text object to the stage", + "description": "Add a text object to the stage", + "scratchblock": null, + "paramDocs": [ + "text: a text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt der Bühne einen Text hinzu" + } + } + }, + { + "id": "Stage/add(Pen)", + "memberId": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "add", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Pen" + ], + "parameterNames": [ + "pen" + ], + "params": [ + "Pen pen" + ], + "summary": "Adds a Pen object to the stage.", + "description": "Adds a Pen object to the stage.", + "scratchblock": null, + "paramDocs": [ + "pen: the Pen object to be added to the stage" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt der Bühne einen Stift hinzu" + } + } + }, + { + "id": "Stage/addBackdrop(String,String,boolean)", + "memberId": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "boolean" + ], + "parameterNames": [ + "name", + "imagePath", + "stretch" + ], + "params": [ + "String name", + "String imagePath", + "boolean stretch" + ], + "summary": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "description": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "imagePath: a image path, or the name of a built-in sprite such as\n \"bg_castle\"", + "stretch: stretch image to window size" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Hintergrund hinzu; bei stretch == true wird er auf Bühnengröße gedehnt" + } + } + }, + { + "id": "Stage/addBackdrop(String,String)", + "memberId": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "imagePath" + ], + "params": [ + "String name", + "String imagePath" + ], + "summary": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "description": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "imagePath: a image path, or the name of a built-in sprite such as\n \"bg_castle\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Hintergrund unter eigenem Namen hinzu" + } + } + }, + { + "id": "Stage/addBackdrop(String)", + "memberId": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the backdrops that ship with Scratch for Java to the stage. The\nbackdrop gets the same name as the built-in sprite. If a backdrop with that\nname already exists do nothing.", + "description": "Add one of the backdrops that ship with Scratch for Java to the stage. The\nbackdrop gets the same name as the built-in sprite. If a backdrop with that\nname already exists do nothing.\n\nExample usage:\n\n```java\nthis.addBackdrop(\"bg_castle\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sprite, for example \"bg_castle\". Add the\n sheet in front of the name, for example \"platformer/grass\", if\n the same name exists on several sheets." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen der eingebauten Hintergründe hinzu" + } + } + }, + { + "id": "Stage/addSound(String,String)", + "memberId": "Stage/addSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "soundPath" + ], + "params": [ + "String name", + "String soundPath" + ], + "summary": "Add a sound to the stage. If a sound with the received name already exists do\nnothing.", + "description": "Add a sound to the stage. If a sound with the received name already exists do\nnothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "soundPath: a sound path, or the name of a built-in sound such as\n \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Klang unter eigenem Namen hinzu" + } + } + }, + { + "id": "Stage/addSound(String)", + "memberId": "Stage/addSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the sounds that ship with Scratch for Java to the stage. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.", + "description": "Add one of the sounds that ship with Scratch for Java to the stage. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.\n\nExample usage:\n\n```java\nthis.addSound(\"footstep_carpet_000\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sound, for example \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen der eingebauten Klänge hinzu" + } + } + }, + { + "id": "Stage/ask(String)", + "memberId": "Stage/ask", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "ask", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "question" + ], + "params": [ + "String question" + ], + "summary": "Asks a question and waits for an answer to be typed in. A box appears at the\nbottom of the stage; whatever is typed goes into it until Enter is pressed.", + "description": "Asks a question and waits for an answer to be typed in. A box appears at the\nbottom of the stage; whatever is typed goes into it until Enter is pressed.\n\nUnlike Scratch, this does not pause anything. Your `run()` keeps being\ncalled while the question is on screen, so check [isAsking()](isAsking) or wait\nfor [getAnswer()](getAnswer) to change:\n\n```java\npublic void run() {\n if (!this.isAsking() && this.getAnswer().isEmpty()) {\n this.ask(\"What is your name?\");\n }\n if (!this.getAnswer().isEmpty()) {\n this.display(\"Hello \" + this.getAnswer() + \"!\");\n }\n}\n```", + "scratchblock": "ask [question] and wait", + "paramDocs": [ + "question: the question to show" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/ask", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stellt eine Frage; die Antwort wird über getAnswer() abgeholt" + } + } + }, + { + "id": "Stage/broadcast(String)", + "memberId": "Stage/broadcast", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "broadcast", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "Broadcasts a message to every sprite on the stage and to the stage itself,\nas in Scratch. Each of them runs its `whenIReceive` method with the\nmessage.", + "description": "Broadcasts a message to every sprite on the stage and to the stage itself,\nas in Scratch. Each of them runs its `whenIReceive` method with the\nmessage.", + "scratchblock": "broadcast [message v]", + "paramDocs": [ + "message: The message to broadcast." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/broadcast", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Sendet eine Nachricht an alle whenIReceive-Empfänger" + } + } + }, + { + "id": "Stage/changeColor(double)", + "memberId": "Stage/changeColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Changes the background color by adding a step to the hue value.", + "description": "Changes the background color by adding a step to the hue value.", + "scratchblock": null, + "paramDocs": [ + "h: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton des Hintergrunds um den angegebenen Wert" + } + } + }, + { + "id": "Stage/changeTint(double)", + "memberId": "Stage/changeTint", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes the colour the backdrop is tinted with by a step.", + "description": "Changes the colour the backdrop is tinted with by a step.", + "scratchblock": "change [color v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton der Einfärbung um den angegebenen Wert" + } + } + }, + { + "id": "Stage/changeTransparency(double)", + "memberId": "Stage/changeTransparency", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes how see-through the backdrop is by a step. A positive step fades it\nout, a negative one brings it back.", + "description": "Changes how see-through the backdrop is by a step. A positive step fades it\nout, a negative one brings it back.", + "scratchblock": "change [ghost v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Transparenz des Hintergrunds" + } + } + }, + { + "id": "Stage/changeVolume(double)", + "memberId": "Stage/changeVolume", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Makes every sound of this stage louder or quieter.", + "description": "Makes every sound of this stage louder or quieter.", + "scratchblock": "change volume by (step)", + "paramDocs": [ + "step: how much to add to the volume, in percent" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Lautstärke um den angegebenen Wert" + } + } + }, + { + "id": "Stage/constructor()", + "memberId": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "constructor", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Stage with default dimensions. The default width is 480\npixels and the default\nheight is 360 pixels.", + "description": "Constructs a new Stage with default dimensions. The default width is 480\npixels and the default\nheight is 360 pixels.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Bühne der Größe 480 x 360" + } + } + }, + { + "id": "Stage/constructor(int,int)", + "memberId": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "constructor", + "static": false, + "returnType": "Stage", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "width", + "height" + ], + "params": [ + "int width", + "int height" + ], + "summary": "Constructs a new Stage with the specified width and height.", + "description": "Constructs a new Stage with the specified width and height.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the stage", + "height: the height of the stage" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/constructor(int,int,String)", + "memberId": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "constructor", + "static": false, + "returnType": "Stage", + "parameterTypes": [ + "int", + "int", + "java.lang.String" + ], + "parameterNames": [ + "width", + "height", + "assets" + ], + "params": [ + "int width", + "int height", + "String assets" + ], + "summary": "Constructs a new Stage with the specified width, height, and assets path.", + "description": "Constructs a new Stage with the specified width, height, and assets path.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the stage", + "height: the height of the stage", + "assets: the path to the assets directory" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Bühne der angegebenen Größe. Der Asset-Pfad wird im Browser ignoriert" + } + } + }, + { + "id": "Stage/count(Class)", + "memberId": "Stage/count", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "count", + "static": false, + "returnType": "int", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Returns the number of sprites of the specified class.", + "description": "Returns the number of sprites of the specified class.", + "scratchblock": null, + "paramDocs": [ + "c: the class of the sprites to count" + ], + "returns": "the number of sprites of the specified class", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/count", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Anzahl der Figuren dieser Klasse zurück, z.B. count(Apfel.class)" + } + } + }, + { + "id": "Stage/debug(Object[])", + "memberId": "Stage/debug", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "debug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Object[]" + ], + "parameterNames": [ + "values" + ], + "params": [ + "Object[] values" + ], + "summary": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the stage's class name so you can tell\nwhich stage it came from.", + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the stage's class name so you can tell\nwhich stage it came from.\n\nExample:\n\n```java\nthis.debug(\"score =\", score, \"lives =\", lives);\n// prints: [MyStage] score = 5 lives = 3\n```", + "scratchblock": null, + "paramDocs": [ + "values: one or more values to print" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/debug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/display(String)", + "memberId": "Stage/display", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "display", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Displays the given text on the stage.", + "description": "Displays the given text on the stage.", + "scratchblock": null, + "paramDocs": [ + "text: the text to be displayed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/display", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt einen Text am unteren Rand der Bühne an" + } + } + }, + { + "id": "Stage/display(String,int)", + "memberId": "Stage/display", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "display", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays the given text on the screen for a specified duration.", + "description": "Displays the given text on the screen for a specified duration.", + "scratchblock": null, + "paramDocs": [ + "text: The text to be displayed.", + "millis: The duration in milliseconds for which the text will be\n displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/display", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt einen Text für die angegebene Zeit in Millisekunden an" + } + } + }, + { + "id": "Stage/eraseAll()", + "memberId": "Stage/eraseAll", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "eraseAll", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Erases all lines on the pen layer.", + "description": "Erases all lines on the pen layer.", + "scratchblock": "erase all", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/eraseAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Löscht alles, was mit Stiften gezeichnet wurde" + } + } + }, + { + "id": "Stage/exit()", + "memberId": "Stage/exit", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "exit", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Close the window and therefore the whole application.", + "description": "Close the window and therefore the whole application.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/exit", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Beendet das Programm" + } + } + }, + { + "id": "Stage/find(Class)", + "memberId": "Stage/find", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "find", + "static": false, + "returnType": "List", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Find sprites of a given class.", + "description": "Find sprites of a given class.", + "scratchblock": null, + "paramDocs": [ + "c: Class" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/find", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle Figuren dieser Klasse zurück, z.B. find(Apfel.class)" + } + } + }, + { + "id": "Stage/getAll()", + "memberId": "Stage/getAll", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getAll", + "static": false, + "returnType": "List", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves a list of all sprites in the current stage.", + "description": "Retrieves a list of all sprites in the current stage.", + "scratchblock": null, + "paramDocs": [], + "returns": "a list containing all sp", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle Figuren auf der Bühne zurück" + } + } + }, + { + "id": "Stage/getAnswer()", + "memberId": "Stage/getAnswer", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getAnswer", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the last answer that was typed in.", + "description": "Returns the last answer that was typed in.", + "scratchblock": "(answer)", + "paramDocs": [], + "returns": "the answer, or an empty string if nothing has been answered yet", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getAnswer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die zuletzt eingegebene Antwort zurück, sonst eine leere Zeichenkette" + } + } + }, + { + "id": "Stage/getCamera()", + "memberId": "Stage/getCamera", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getCamera", + "static": false, + "returnType": "Camera", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current camera instance associated with this stage.", + "description": "Retrieves the current camera instance associated with this stage.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current Camera object.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getCamera", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Kamera der Bühne zurück" + } + } + }, + { + "id": "Stage/getColor()", + "memberId": "Stage/getColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getColor", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current color of the stage.", + "description": "Returns the current color of the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current color", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Hintergrundfarbe zurück" + } + } + }, + { + "id": "Stage/getCurrentBackdropIndex()", + "memberId": "Stage/getCurrentBackdropIndex", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getCurrentBackdropIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current backdrop index", + "description": "Returns the current backdrop index", + "scratchblock": "(backdrop [number v])", + "paramDocs": [], + "returns": "a backdrop index", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getCurrentBackdropIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer des aktuellen Hintergrunds zurück" + } + } + }, + { + "id": "Stage/getCurrentBackdropName()", + "memberId": "Stage/getCurrentBackdropName", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getCurrentBackdropName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current backdrop name", + "description": "Returns the current backdrop name", + "scratchblock": "(backdrop [name v])", + "paramDocs": [], + "returns": "a backdrop name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getCurrentBackdropName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen des aktuellen Hintergrunds zurück" + } + } + }, + { + "id": "Stage/getDeltaTime()", + "memberId": "Stage/getDeltaTime", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getDeltaTime", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the seconds passed since the last frame.", + "description": "Gets the seconds passed since the last frame.", + "scratchblock": null, + "paramDocs": [], + "returns": "secons since last frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getDeltaTime", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + } + }, + { + "id": "Stage/getFrameRate()", + "memberId": "Stage/getFrameRate", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getFrameRate", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the frame rate of the application.", + "description": "Get the frame rate of the application.", + "scratchblock": null, + "paramDocs": [], + "returns": "the frame rate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getFrameRate", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Bildrate zurück" + } + } + }, + { + "id": "Stage/getHeight()", + "memberId": "Stage/getHeight", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getHeight", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the height of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Höhe der Bühne in Pixeln zurück" + } + } + }, + { + "id": "Stage/getMouse()", + "memberId": "Stage/getMouse", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getMouse", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current position of the mouse cursor as a Vector2", + "description": "Returns the current position of the mouse cursor as a Vector2", + "scratchblock": null, + "paramDocs": [], + "returns": "mouse position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getMouse", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position des Mauszeigers zurück" + } + } + }, + { + "id": "Stage/getMouseX()", + "memberId": "Stage/getMouseX", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getMouseX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current x-position of the mouse cursor", + "description": "Returns the current x-position of the mouse cursor", + "scratchblock": "(mouse x)", + "paramDocs": [], + "returns": "x-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getMouseX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Stage/getMouseY()", + "memberId": "Stage/getMouseY", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getMouseY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current y-position of the mouse cursor", + "description": "Returns the current y-position of the mouse cursor", + "scratchblock": "(mouse y)", + "paramDocs": [], + "returns": "y-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getMouseY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Stage/getPixels()", + "memberId": "Stage/getPixels", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getPixels", + "static": false, + "returnType": "Pixels", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the colours of everything this stage has drawn.", + "description": "Returns the colours of everything this stage has drawn.\n\nExample usage:\n\n```java\nint[] colours = this.getPixels().main();\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the pixels", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getPixels", + "availability": "desktop-only", + "availabilityReason": "The desktop pixel buffer is not exposed by the browser renderer.", + "translations": { + "de": { + "description": "Nur in der Desktop-Version: Zugriff auf einzelne Bildpunkte" + } + } + }, + { + "id": "Stage/getShaders()", + "memberId": "Stage/getShaders", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getShaders", + "static": false, + "returnType": "Shaders", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shaders of this stage. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.", + "description": "Returns the shaders of this stage. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.\n\nExample usage:\n\n```java\nthis.getShaders().add(\"blur\", \"blur.frag\", null);\nthis.getShaders().switchTo(\"blur\");\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the shaders", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getShaders", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Shader der Bühne zurück; sie verändern das ganze Bild ohne die UI" + } + } + }, + { + "id": "Stage/getSorting()", + "memberId": "Stage/getSorting", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getSorting", + "static": false, + "returnType": "Sorting", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the order in which the sprites of this stage are drawn.", + "description": "Returns the order in which the sprites of this stage are drawn.\n\nExample usage:\n\n```java\nthis.getSorting().byY();\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the sorting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getSorting", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Sortierung der Bühne zurück. Mit getSorting().byY() werden Figuren weiter unten vor denen weiter oben gezeichnet." + } + } + }, + { + "id": "Stage/getTimer()", + "memberId": "Stage/getTimer", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the timer", + "description": "Returns the timer", + "scratchblock": "(timer)", + "paramDocs": [], + "returns": "the timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Standard-Timer der Bühne zurück" + } + } + }, + { + "id": "Stage/getTimer(String)", + "memberId": "Stage/getTimer", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns a timer by name", + "description": "Returns a timer by name", + "scratchblock": null, + "paramDocs": [ + "name: a name" + ], + "returns": "the timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Timer mit dem angegebenen Namen zurück und legt ihn bei Bedarf an" + } + } + }, + { + "id": "Stage/getVolume()", + "memberId": "Stage/getVolume", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getVolume", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns how loud the sounds of this stage play.", + "description": "Returns how loud the sounds of this stage play.", + "scratchblock": "(volume)", + "paramDocs": [], + "returns": "the volume, from 0 to 100", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Lautstärke in Prozent zurück" + } + } + }, + { + "id": "Stage/getWidth()", + "memberId": "Stage/getWidth", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getWidth", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite der Bühne in Pixeln zurück" + } + } + }, + { + "id": "Stage/hideVariable(String)", + "memberId": "Stage/hideVariable", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "hideVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "description": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "scratchblock": "hide variable [name v]", + "paramDocs": [ + "name: the name the monitor was shown with" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/hideVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/isAsking()", + "memberId": "Stage/isAsking", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isAsking", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether a question is on screen and still waiting for an answer.", + "description": "Checks whether a question is on screen and still waiting for an answer.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while a question is waiting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isAsking", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn noch auf eine Antwort gewartet wird" + } + } + }, + { + "id": "Stage/isDebug()", + "memberId": "Stage/isDebug", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isDebug", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the application is in debug mode.", + "description": "Checks if the application is in debug mode.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the application is in debug mode, false otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Fehlersuche eingeschaltet ist" + } + } + }, + { + "id": "Stage/isKeyPressed(KeyCode)", + "memberId": "Stage/isKeyPressed", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isKeyPressed", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "Returns true if the key is pressed", + "description": "Returns true if the key is pressed", + "scratchblock": "<key [space v] pressed?>", + "paramDocs": [ + "keyCode: a key" + ], + "returns": "key pressed", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Taste gerade gedrückt ist" + } + } + }, + { + "id": "Stage/isMouseDown()", + "memberId": "Stage/isMouseDown", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isMouseDown", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true is the mouse button is down", + "description": "Returns true is the mouse button is down", + "scratchblock": "<mouse down?>", + "paramDocs": [], + "returns": "mouse button down", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isMouseDown", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine Maustaste gedrückt ist" + } + } + }, + { + "id": "Stage/isSoundPlaying(String)", + "memberId": "Stage/isSoundPlaying", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isSoundPlaying", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns true if the sound if playing", + "description": "Returns true if the sound if playing", + "scratchblock": null, + "paramDocs": [ + "name: " + ], + "returns": "playing", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isSoundPlaying", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Klang gerade abgespielt wird" + } + } + }, + { + "id": "Stage/nextBackdrop()", + "memberId": "Stage/nextBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "nextBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the next backdrop.", + "description": "Switch to the next backdrop.", + "scratchblock": "next backdrop", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/nextBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum nächsten Hintergrund" + } + } + }, + { + "id": "Stage/pickRandom(int,int)", + "memberId": "Stage/pickRandom", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "pickRandom", + "static": false, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "from", + "to" + ], + "params": [ + "int from", + "int to" + ], + "summary": "Returns a random integer between the specified range (inclusive).", + "description": "Returns a random integer between the specified range (inclusive).", + "scratchblock": "(pick random (from) to (to))", + "paramDocs": [ + "from: the lower bound of the range (inclusive)", + "to: the upper bound of the range (inclusive)" + ], + "returns": "a random integer between `from` and `to` (inclusive)", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/pickRandom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen from und to zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Stage/playSound(String)", + "memberId": "Stage/playSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "playSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Plays a sound.", + "description": "Plays a sound.", + "scratchblock": "start sound [name v]", + "paramDocs": [ + "name: the sound name" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/playSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt einen zuvor hinzugefügten Klang ab" + } + } + }, + { + "id": "Stage/previousBackdrop()", + "memberId": "Stage/previousBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "previousBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the previous backdrop.", + "description": "Switch to the previous backdrop.", + "scratchblock": "switch backdrop to [previous backdrop v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/previousBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum vorherigen Hintergrund" + } + } + }, + { + "id": "Stage/randomBackdrop()", + "memberId": "Stage/randomBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "randomBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to a random backdrop.", + "description": "Switch to a random backdrop.", + "scratchblock": "switch backdrop to [random backdrop v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/randomBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zu einem zufälligen Hintergrund" + } + } + }, + { + "id": "Stage/remove(Sprite)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Removes the specified sprite from the stage.", + "description": "Removes the specified sprite from the stage.", + "scratchblock": null, + "paramDocs": [ + "sprite: the sprite to be removed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt die Figur von der Bühne" + } + } + }, + { + "id": "Stage/remove(Pen)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Pen" + ], + "parameterNames": [ + "pen" + ], + "params": [ + "Pen pen" + ], + "summary": "Removes the specified pen from the stage.", + "description": "Removes the specified pen from the stage.", + "scratchblock": null, + "paramDocs": [ + "pen: the pen to be removed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt den Stift von der Bühne" + } + } + }, + { + "id": "Stage/remove(Text)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Text" + ], + "parameterNames": [ + "text" + ], + "params": [ + "Text text" + ], + "summary": "Removes the specified text from the stage.", + "description": "Removes the specified text from the stage.", + "scratchblock": null, + "paramDocs": [ + "text: the text to be removed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt den Text von der Bühne" + } + } + }, + { + "id": "Stage/remove(Class)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Removes all sprites of the specified class from the stage.", + "description": "Removes all sprites of the specified class from the stage.", + "scratchblock": null, + "paramDocs": [ + "c: the class of the sprites to remove" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt alle Figuren dieser Klasse von der Bühne, z.B. remove(Apfel.class)" + } + } + }, + { + "id": "Stage/removeAll()", + "memberId": "Stage/removeAll", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "removeAll", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes all elements from the stage.", + "description": "Removes all elements from the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/removeAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt alle Figuren von der Bühne" + } + } + }, + { + "id": "Stage/run()", + "memberId": "Stage/run", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "run", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Executes the main logic of the stage. This method should be overridden by\nsubclasses to define\nthe specific behavior of the stage.", + "description": "Executes the main logic of the stage. This method should be overridden by\nsubclasses to define\nthe specific behavior of the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/run", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird in jedem Frame aufgerufen" + } + } + }, + { + "id": "Stage/setColor(double)", + "memberId": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the background color via a hue value", + "description": "Sets the background color via a hue value", + "scratchblock": null, + "paramDocs": [ + "h: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Stage/setColor(double,double,double)", + "memberId": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Sets the background color via a rgb value", + "description": "Sets the background color via a rgb value", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Stage/setColor(Color)", + "memberId": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the color of the stage.", + "description": "Sets the color of the stage.", + "scratchblock": null, + "paramDocs": [ + "c: the new color to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe" + } + } + }, + { + "id": "Stage/setCursor(String)", + "memberId": "Stage/setCursor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setCursor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Sets the cursor image for the stage.", + "description": "Sets the cursor image for the stage.", + "scratchblock": null, + "paramDocs": [ + "path: a path to an image file, or the name of a built-in sprite" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setCursor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt das Mauszeigerbild" + } + } + }, + { + "id": "Stage/setCursor(String,int,int)", + "memberId": "Stage/setCursor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setCursor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int", + "int" + ], + "parameterNames": [ + "path", + "x", + "y" + ], + "params": [ + "String path", + "int x", + "int y" + ], + "summary": "Sets the cursor image and its active spot coordinates.", + "description": "Sets the cursor image and its active spot coordinates.", + "scratchblock": null, + "paramDocs": [ + "path: a path to an image file, or the name of a built-in sprite", + "x: the x-coordinate of the cursor's active spot", + "y: the y-coordinate of the cursor's active spot" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setCursor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt das Mauszeigerbild mit eigenem Aktivpunkt" + } + } + }, + { + "id": "Stage/setDebug(boolean)", + "memberId": "Stage/setDebug", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setDebug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "debug" + ], + "params": [ + "boolean debug" + ], + "summary": "Enables or disables the debug mode for the application.", + "description": "Enables or disables the debug mode for the application.", + "scratchblock": null, + "paramDocs": [ + "debug: a boolean value where `true` enables debug mode and\n `false` disables\n it." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Ausgabe von debug() ein oder aus" + } + } + }, + { + "id": "Stage/setTint(double,double,double)", + "memberId": "Stage/setTint", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Sets the colour the backdrop is tinted with.", + "description": "Sets the colour the backdrop is tinted with.", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt den Hintergrund ein (Anteile jeweils 0 bis 255)" + } + } + }, + { + "id": "Stage/setTint(double)", + "memberId": "Stage/setTint", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the colour the backdrop is tinted with, as a hue.", + "description": "Sets the colour the backdrop is tinted with, as a hue.", + "scratchblock": "set [color v] effect to (h)", + "paramDocs": [ + "h: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt den Hintergrund mit dem angegebenen Farbton ein (0 bis 255)" + } + } + }, + { + "id": "Stage/setTransparency(double)", + "memberId": "Stage/setTransparency", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "transparency" + ], + "params": [ + "double transparency" + ], + "summary": "Sets how see-through the backdrop is, as Scratch's ghost effect does: 0 is\nthe solid backdrop you start with and 100 is invisible.", + "description": "Sets how see-through the backdrop is, as Scratch's ghost effect does: 0 is\nthe solid backdrop you start with and 100 is invisible.", + "scratchblock": "set [ghost v] effect to (transparency)", + "paramDocs": [ + "transparency: [0...100], 0 solid and 100 invisible" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Transparenz des Hintergrunds in Prozent" + } + } + }, + { + "id": "Stage/setVolume(double)", + "memberId": "Stage/setVolume", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "percent" + ], + "params": [ + "double percent" + ], + "summary": "Sets how loud every sound of this stage plays.", + "description": "Sets how loud every sound of this stage plays.", + "scratchblock": "set volume to (percent) %", + "paramDocs": [ + "percent: 0 for silent, 100 for full volume" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Lautstärke in Prozent" + } + } + }, + { + "id": "Stage/showVariable(String,Supplier)", + "memberId": "Stage/showVariable", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "showVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.util.function.Supplier" + ], + "parameterNames": [ + "name", + "value" + ], + "params": [ + "String name", + "Supplier value" + ], + "summary": "Shows a monitor for a variable in the top left corner of the stage, like\nScratch's variable monitors: the name and the current value, updated every\nframe. Showing the same name again replaces the monitor.", + "description": "Shows a monitor for a variable in the top left corner of the stage, like\nScratch's variable monitors: the name and the current value, updated every\nframe. Showing the same name again replaces the monitor.\n\n```java\nthis.showVariable(\"score\", () -> score);\n```", + "scratchblock": "show variable [name v]", + "paramDocs": [ + "name: what the monitor says", + "value: gives the value to show; asked for it every frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/showVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Bühne mit der angegebenen Breite und Höhe" + } + } + }, + { + "id": "Stage/stopAllSounds()", + "memberId": "Stage/stopAllSounds", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "stopAllSounds", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the playing of all sounds of the stage.", + "description": "Stops the playing of all sounds of the stage.", + "scratchblock": "stop all sounds", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/stopAllSounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt alle Klänge der Bühne" + } + } + }, + { + "id": "Stage/stopSound(String)", + "memberId": "Stage/stopSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "stopSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stops the playing of the sound with the given name", + "description": "Stops the playing of the sound with the given name", + "scratchblock": null, + "paramDocs": [ + "name: Name of the sound" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/stopSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt den Klang mit dem angegebenen Namen" + } + } + }, + { + "id": "Stage/switchBackdrop(String)", + "memberId": "Stage/switchBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "switchBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switch to a backdrop by name.", + "description": "Switch to a backdrop by name.", + "scratchblock": "switch backdrop to [name v]", + "paramDocs": [ + "name: the name of a backdrop" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/switchBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum Hintergrund mit dem angegebenen Namen" + } + } + }, + { + "id": "Stage/wait(int)", + "memberId": "Stage/wait", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "wait", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Stop the execution of the whole applications for the given milliseconds.", + "description": "Stop the execution of the whole applications for the given milliseconds.", + "scratchblock": "wait (millis) seconds", + "paramDocs": [ + "millis: Milliseconds" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/wait", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Pausiert das Programm für die angegebene Zeit in Millisekunden" + } + } + }, + { + "id": "Stage/waitUntil(BooleanSupplier)", + "memberId": "Stage/waitUntil", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "waitUntil", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.util.function.BooleanSupplier" + ], + "parameterNames": [ + "condition" + ], + "params": [ + "BooleanSupplier condition" + ], + "summary": "Waits until something becomes true, then carries on.", + "description": "Waits until something becomes true, then carries on.\n\nLike [wait(int)](wait) this holds up the code that calls it, not the whole\nprogram: sprites keep running and the stage keeps drawing while it waits.\nThat makes it useful for setting a scene up in a constructor, and a bad idea\ninside `run()`, which is called once per frame and should return quickly.\n\n```java\nthis.ask(\"What is your name?\");\nthis.waitUntil(() -> !this.isAsking());\nthis.display(\"Hello \" + this.getAnswer() + \"!\");\n```", + "scratchblock": "wait until <condition>", + "paramDocs": [ + "condition: checked over and over until it is true" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/waitUntil", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wartet, bis die Bedingung erfüllt ist" + } + } + }, + { + "id": "Stage/whenBackdropSwitches(String)", + "memberId": "Stage/whenBackdropSwitches", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenBackdropSwitches", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "This method is called when the backdrop switches to the specified name.\nOverride this method to\nadd custom behavior.", + "description": "This method is called when the backdrop switches to the specified name.\nOverride this method to\nadd custom behavior.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the backdrop to switch to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenBackdropSwitches", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Wechsel des Hintergrunds aufgerufen" + } + } + }, + { + "id": "Stage/whenIReceive(String)", + "memberId": "Stage/whenIReceive", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenIReceive", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "This method is called when a specific message is received. Override this\nmethod to add custom\nbehavior.", + "description": "This method is called when a specific message is received. Override this\nmethod to add custom\nbehavior.", + "scratchblock": "when I receive [message v]", + "paramDocs": [ + "message: The message that triggers this method." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenIReceive", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei broadcast(message) aufgerufen" + } + } + }, + { + "id": "Stage/whenKeyPressed(KeyCode)", + "memberId": "Stage/whenKeyPressed", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenKeyPressed", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is pressed. Override this method to add\ncustom behavior.", + "description": "This method is called when a key is pressed. Override this method to add\ncustom behavior.", + "scratchblock": "when [space v] key pressed", + "paramDocs": [ + "keyCode: the key that was pressed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Drücken der Taste aufgerufen" + } + } + }, + { + "id": "Stage/whenKeyReleased(KeyCode)", + "memberId": "Stage/whenKeyReleased", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenKeyReleased", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is released. Override this method to add\ncustom behavior.", + "description": "This method is called when a key is released. Override this method to add\ncustom behavior.", + "scratchblock": null, + "paramDocs": [ + "keyCode: the key that was released" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenKeyReleased", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Loslassen der Taste aufgerufen" + } + } + }, + { + "id": "Stage/whenMouseClicked(MouseCode)", + "memberId": "Stage/whenMouseClicked", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenMouseClicked", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.MouseCode" + ], + "parameterNames": [ + "mouseEvent" + ], + "params": [ + "MouseCode mouseEvent" + ], + "summary": "This method is called when a mouse click event occurs. Overwrite this method\nto add custom\nbehavior.", + "description": "This method is called when a mouse click event occurs. Overwrite this method\nto add custom\nbehavior.", + "scratchblock": "when stage clicked", + "paramDocs": [ + "mouseEvent: The mouse event that triggered this method." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenMouseClicked", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei einem Mausklick aufgerufen" + } + } + }, + { + "id": "Stage/whenMouseWheelMoved(int)", + "memberId": "Stage/whenMouseWheelMoved", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenMouseWheelMoved", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "steps" + ], + "params": [ + "int steps" + ], + "summary": "This method is called when the mouse wheel is moved. Overwrite this method to\nadd custom\nbehavior.", + "description": "This method is called when the mouse wheel is moved. Overwrite this method to\nadd custom\nbehavior.", + "scratchblock": null, + "paramDocs": [ + "steps: the number of steps the mouse wheel has moved. Positive values\n indicate movement\n away from the user, while negative values indicate movement\n towards the user." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenMouseWheelMoved", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Drehen des Mausrads aufgerufen" + } + } + }, + { + "id": "Text/addFont(String,String)", + "memberId": "Text/addFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "addFont", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "path" + ], + "params": [ + "String name", + "String path" + ], + "summary": "Adds a new font to the list of fonts if it does not already exist.", + "description": "Adds a new font to the list of fonts if it does not already exist.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the font to be added", + "path: the path to the font file" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/addFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt eine Schriftart hinzu" + } + } + }, + { + "id": "Text/constructor()", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Text object with default values. The text is initialized to an empty string,\npositioned at (0, 0), with a default size of 0. The text style is set to plain and the text\nis centred on its position, as every text is. Call [setAlign(TextAlign)](setAlign) for anything\nelse.", + "description": "Constructs a new Text object with default values. The text is initialized to an empty string,\npositioned at (0, 0), with a default size of 0. The text style is set to plain and the text\nis centred on its position, as every text is. Call [setAlign(TextAlign)](setAlign) for anything\nelse.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen leeren Text in der Mitte der Bühne" + } + } + }, + { + "id": "Text/constructor(Sprite)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Constructs a new Text object associated with a given Sprite.", + "description": "Constructs a new Text object associated with a given Sprite.", + "scratchblock": null, + "paramDocs": [ + "s: the Sprite to associate with this Text object" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Text an der angegebenen Position mit der angegebenen Breite" + } + } + }, + { + "id": "Text/constructor(String,double,double,double)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "java.lang.String", + "double", + "double", + "double" + ], + "parameterNames": [ + "text", + "x", + "y", + "width" + ], + "params": [ + "String text", + "double x", + "double y", + "double width" + ], + "summary": "Constructs a new Text object with the specified text, position, and width.", + "description": "Constructs a new Text object with the specified text, position, and width.", + "scratchblock": null, + "paramDocs": [ + "text: the text to be displayed", + "x: the x-coordinate of the text's position", + "y: the y-coordinate of the text's position", + "width: the width of the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Text/constructor(String,double,double,double,TextStyle)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "java.lang.String", + "double", + "double", + "double", + "org.openpatch.scratch.TextStyle" + ], + "parameterNames": [ + "text", + "x", + "y", + "width", + "style" + ], + "params": [ + "String text", + "double x", + "double y", + "double width", + "TextStyle style" + ], + "summary": "Constructs a new Text object with the specified text, position, width, and style.", + "description": "Constructs a new Text object with the specified text, position, width, and style.", + "scratchblock": null, + "paramDocs": [ + "text: the text content to be displayed", + "x: the x-coordinate of the text's position", + "y: the y-coordinate of the text's position", + "width: the width of the text area", + "style: the style to be applied to the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Text an der angegebenen Position, mit der angegebenen Breite und im angegebenen Stil" + } + } + }, + { + "id": "Text/constructor(Text)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "org.openpatch.scratch.Text" + ], + "parameterNames": [ + "t" + ], + "params": [ + "Text t" + ], + "summary": "Copy constructor for the Text class. Creates a new Text object by copying the properties of the\ngiven Text object.", + "description": "Copy constructor for the Text class. Creates a new Text object by copying the properties of the\ngiven Text object.", + "scratchblock": null, + "paramDocs": [ + "t: the Text object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Text/getAlign()", + "memberId": "Text/getAlign", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getAlign", + "static": false, + "returnType": "TextAlign", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns where the text sits relative to its position.", + "description": "Returns where the text sits relative to its position.", + "scratchblock": null, + "paramDocs": [], + "returns": "the alignment", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getAlign", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Ausrichtung des Texts zurück" + } + } + }, + { + "id": "Text/getCurrentFontIndex()", + "memberId": "Text/getCurrentFontIndex", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getCurrentFontIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the index of the current font.", + "description": "Returns the index of the current font.", + "scratchblock": null, + "paramDocs": [], + "returns": "the index of the current font", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getCurrentFontIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer der aktuellen Schriftart zurück" + } + } + }, + { + "id": "Text/getCurrentFontName()", + "memberId": "Text/getCurrentFontName", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getCurrentFontName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the name of the current font.", + "description": "Retrieves the name of the current font.", + "scratchblock": null, + "paramDocs": [], + "returns": "the name of the current font, or `null` if no fonts are available.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getCurrentFontName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen der aktuellen Schriftart zurück" + } + } + }, + { + "id": "Text/getDefaultFont()", + "memberId": "Text/getDefaultFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getDefaultFont", + "static": true, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the font that text is written in by default.", + "description": "Returns the font that text is written in by default.", + "scratchblock": null, + "paramDocs": [], + "returns": "the path to the font file", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getDefaultFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Standardschriftart zurück" + } + } + }, + { + "id": "Text/getDefaultFontSize()", + "memberId": "Text/getDefaultFontSize", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getDefaultFontSize", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size text is written in by default.", + "description": "Returns the size text is written in by default.", + "scratchblock": null, + "paramDocs": [], + "returns": "the font size", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getDefaultFontSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Standardschriftgröße zurück" + } + } + }, + { + "id": "Text/getFont()", + "memberId": "Text/getFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getFont", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the name of the font.", + "description": "Retrieves the name of the font.", + "scratchblock": null, + "paramDocs": [], + "returns": "the name of the font as a String.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen der aktuellen Schriftart zurück" + } + } + }, + { + "id": "Text/getPosition()", + "memberId": "Text/getPosition", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current position as a Vector2 object.", + "description": "Retrieves the current position as a Vector2 object.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Vector2 object representing the current x and y coordinates.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position des Texts zurück" + } + } + }, + { + "id": "Text/getStage()", + "memberId": "Text/getStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getStage", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current stage associated with this object.", + "description": "Retrieves the current stage associated with this object.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current stage", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Bühne zurück, auf der der Text liegt" + } + } + }, + { + "id": "Text/getStyle()", + "memberId": "Text/getStyle", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getStyle", + "static": false, + "returnType": "TextStyle", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the style the text is drawn in.", + "description": "Returns the style the text is drawn in.", + "scratchblock": null, + "paramDocs": [], + "returns": "the style, never null", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getStyle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Stil zurück, in dem der Text gezeichnet wird" + } + } + }, + { + "id": "Text/getTextSize()", + "memberId": "Text/getTextSize", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getTextSize", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size of the text.", + "description": "Returns the size of the text.", + "scratchblock": null, + "paramDocs": [], + "returns": "the size of the text as an integer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getTextSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Schriftgröße zurück" + } + } + }, + { + "id": "Text/getWidth()", + "memberId": "Text/getWidth", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getWidth", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the width of the text.", + "description": "Returns the width of the text.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the text as a double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite des Textfelds zurück" + } + } + }, + { + "id": "Text/getX()", + "memberId": "Text/getX", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x-coordinate of this object.", + "description": "Returns the x-coordinate of this object.", + "scratchblock": null, + "paramDocs": [], + "returns": "the x-coordinate as a double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position zurück" + } + } + }, + { + "id": "Text/getY()", + "memberId": "Text/getY", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y-coordinate of this object.", + "description": "Returns the y-coordinate of this object.", + "scratchblock": null, + "paramDocs": [], + "returns": "the y-coordinate as a double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position zurück" + } + } + }, + { + "id": "Text/goLayersBackwards(int)", + "memberId": "Text/goLayersBackwards", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goLayersBackwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the text backwards by a specified number of layers in the stage. If\nthe text is not on a stage, the method does nothing.", + "description": "Moves the text backwards by a specified number of layers in the stage. If\nthe text is not on a stage, the method does nothing.", + "scratchblock": "go [backward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the text backwards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goLayersBackwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt den Text um die angegebene Anzahl Ebenen nach hinten" + } + } + }, + { + "id": "Text/goLayersForwards(int)", + "memberId": "Text/goLayersForwards", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goLayersForwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the text forward by a specified number of layers within its stage. If\nthe text is not on a stage, the method does nothing.", + "description": "Moves the text forward by a specified number of layers within its stage. If\nthe text is not on a stage, the method does nothing.", + "scratchblock": "go [forward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the text forward" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goLayersForwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt den Text um die angegebene Anzahl Ebenen nach vorne" + } + } + }, + { + "id": "Text/goToBackLayer()", + "memberId": "Text/goToBackLayer", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goToBackLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves this text to the back layer of the stage, behind every other text on\nit. If the text is not on a stage, the method does nothing.", + "description": "Moves this text to the back layer of the stage, behind every other text on\nit. If the text is not on a stage, the method does nothing.\n\nTexts are drawn on top of the sprites, so this orders a text against the\nother texts rather than against the sprites.", + "scratchblock": "go to [back v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goToBackLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt den Text hinter die anderen Texte" + } + } + }, + { + "id": "Text/goToFrontLayer()", + "memberId": "Text/goToFrontLayer", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goToFrontLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves this text to the front layer of the stage, in front of every other\ntext on it. If the text is not on a stage, the method does nothing.", + "description": "Moves this text to the front layer of the stage, in front of every other\ntext on it. If the text is not on a stage, the method does nothing.\n\nTexts are drawn on top of the sprites, so this orders a text against the\nother texts rather than against the sprites.", + "scratchblock": "go to [front v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goToFrontLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt den Text vor die anderen Texte" + } + } + }, + { + "id": "Text/isUI()", + "memberId": "Text/isUI", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "isUI", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the current instance is a UI element.", + "description": "Checks if the current instance is a UI element.", + "scratchblock": null, + "paramDocs": [], + "returns": "`true` if this instance is a UI element, `false` otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/isUI", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Text zur Benutzeroberfläche gehört" + } + } + }, + { + "id": "Text/nextFont()", + "memberId": "Text/nextFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "nextFont", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Advances to the next font in the list of available fonts. The current font index is incremented\nby one and wraps around to the beginning of the list if it exceeds the number of available\nfonts.", + "description": "Advances to the next font in the list of available fonts. The current font index is incremented\nby one and wraps around to the beginning of the list if it exceeds the number of available\nfonts.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/nextFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zur nächsten Schriftart" + } + } + }, + { + "id": "Text/remove()", + "memberId": "Text/remove", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes this object from its current stage if it is associated with one. If the object is not\nassociated with any stage, this method does nothing.", + "description": "Removes this object from its current stage if it is associated with one. If the object is not\nassociated with any stage, this method does nothing.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt den Text von der Bühne" + } + } + }, + { + "id": "Text/setAlign(TextAlign)", + "memberId": "Text/setAlign", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setAlign", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.TextAlign" + ], + "parameterNames": [ + "align" + ], + "params": [ + "TextAlign align" + ], + "summary": "Sets the alignment of the text.", + "description": "Sets the alignment of the text.", + "scratchblock": null, + "paramDocs": [ + "align: where the text should sit relative to its position" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setAlign", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie der Text zu seiner Position ausgerichtet wird" + } + } + }, + { + "id": "Text/setBackgroundColor(int,int,int)", + "memberId": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setBackgroundColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "int r", + "int g", + "int b" + ], + "summary": "Sets the background color using the specified RGB values.", + "description": "Sets the background color using the specified RGB values.", + "scratchblock": null, + "paramDocs": [ + "r: the red component of the color (0-255)", + "g: the green component of the color (0-255)", + "b: the blue component of the color (0-255)" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setBackgroundColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Text/setBackgroundColor(double)", + "memberId": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setBackgroundColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the background color using the specified hue value.", + "description": "Sets the background color using the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value for the background color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setBackgroundColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Text/setBackgroundColor(Color)", + "memberId": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setBackgroundColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the background color of the text.", + "description": "Sets the background color of the text.", + "scratchblock": null, + "paramDocs": [ + "c: the new background color to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setBackgroundColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe" + } + } + }, + { + "id": "Text/setFont(String)", + "memberId": "Text/setFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setFont", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Sets the font name for the text.", + "description": "Sets the font name for the text.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the font to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zur Schriftart mit dem angegebenen Namen" + } + } + }, + { + "id": "Text/setIsUI(boolean)", + "memberId": "Text/setIsUI", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setIsUI", + "static": false, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "isUI" + ], + "params": [ + "boolean isUI" + ], + "summary": "Sets the UI status of this object.", + "description": "Sets the UI status of this object.", + "scratchblock": null, + "paramDocs": [ + "isUI: a boolean indicating whether this object is part of the UI" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setIsUI", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, ob der Text zur Benutzeroberfläche gehört und sich nicht mit der Kamera bewegt" + } + } + }, + { + "id": "Text/setPosition(double,double)", + "memberId": "Text/setPosition", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the position of the text", + "description": "Sets the position of the text", + "scratchblock": null, + "paramDocs": [ + "x: a x coordinate", + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Text an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Text/setPosition(Vector2)", + "memberId": "Text/setPosition", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the text object using a Vector2 object.", + "description": "Sets the position of the text object using a Vector2 object.", + "scratchblock": null, + "paramDocs": [ + "v: the Vector2 object containing the x and y coordinates" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Text an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Text/setStrokeColor(int,int,int)", + "memberId": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStrokeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "int r", + "int g", + "int b" + ], + "summary": "Sets the stroke color using the specified RGB values.", + "description": "Sets the stroke color using the specified RGB values.", + "scratchblock": null, + "paramDocs": [ + "r: the red component of the color (0-255)", + "g: the green component of the color (0-255)", + "b: the blue component of the color (0-255)" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStrokeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Rahmenfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Text/setStrokeColor(double)", + "memberId": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStrokeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the stroke color using the specified hue value.", + "description": "Sets the stroke color using the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value for the stroke color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStrokeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Rahmenfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Text/setStrokeColor(Color)", + "memberId": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStrokeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the stroke color for the text.", + "description": "Sets the stroke color for the text.", + "scratchblock": null, + "paramDocs": [ + "c: the color to set as the stroke color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStrokeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Rahmenfarbe" + } + } + }, + { + "id": "Text/setStyle(TextStyle)", + "memberId": "Text/setStyle", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStyle", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.TextStyle" + ], + "parameterNames": [ + "style" + ], + "params": [ + "TextStyle style" + ], + "summary": "Sets the style of the text.", + "description": "Sets the style of the text.", + "scratchblock": null, + "paramDocs": [ + "style: the TextStyle to be applied to the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStyle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, ob der Text als Kasten, Sprech- oder Denkblase dargestellt wird" + } + } + }, + { + "id": "Text/setTextColor(int,int,int)", + "memberId": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "int r", + "int g", + "int b" + ], + "summary": "Sets the text color using RGB values.", + "description": "Sets the text color using RGB values.", + "scratchblock": null, + "paramDocs": [ + "r: the red component of the color (0-255)", + "g: the green component of the color (0-255)", + "b: the blue component of the color (0-255)" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Text/setTextColor(double)", + "memberId": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the text color using the specified hue value.", + "description": "Sets the text color using the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value for the text color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Text/setTextColor(Color)", + "memberId": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the color of the text.", + "description": "Sets the color of the text.", + "scratchblock": null, + "paramDocs": [ + "c: the new color to be set for the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftfarbe" + } + } + }, + { + "id": "Text/setTextSize(int)", + "memberId": "Text/setTextSize", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "size" + ], + "params": [ + "int size" + ], + "summary": "Sets the size of the text.", + "description": "Sets the size of the text.", + "scratchblock": null, + "paramDocs": [ + "size: the new size of the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftgröße" + } + } + }, + { + "id": "Text/setWidth(double)", + "memberId": "Text/setWidth", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setWidth", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "width" + ], + "params": [ + "double width" + ], + "summary": "Sets the width of the text.", + "description": "Sets the width of the text.", + "scratchblock": null, + "paramDocs": [ + "width: the new width to set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Breite des Textfelds; längere Texte werden umgebrochen" + } + } + }, + { + "id": "Text/setX(double)", + "memberId": "Text/setX", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Sets the x-coordinate for this object.", + "description": "Sets the x-coordinate for this object.", + "scratchblock": null, + "paramDocs": [ + "x: the new x-coordinate value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die x-Position" + } + } + }, + { + "id": "Text/setY(double)", + "memberId": "Text/setY", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Sets the Y coordinate of the text.", + "description": "Sets the Y coordinate of the text.", + "scratchblock": null, + "paramDocs": [ + "y: the new Y coordinate value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die y-Position" + } + } + }, + { + "id": "Text/showText(String)", + "memberId": "Text/showText", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "showText", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Displays the specified text.", + "description": "Displays the specified text.", + "scratchblock": null, + "paramDocs": [ + "text: The text to be displayed. If the text is null or empty, the text will be set to\n null." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/showText", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt den Text an" + } + } + }, + { + "id": "Text/showText(String,int)", + "memberId": "Text/showText", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "showText", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays the specified text for a given duration.", + "description": "Displays the specified text for a given duration.", + "scratchblock": null, + "paramDocs": [ + "text: The text to be displayed.", + "millis: The duration in milliseconds for which the text should be displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/showText", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt den Text für die angegebene Zeit in Millisekunden an" + } + } + }, + { + "id": "Text/switchFont(String)", + "memberId": "Text/switchFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "switchFont", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switches the current font to the font with the specified name.", + "description": "Switches the current font to the font with the specified name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the font to switch to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/switchFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zur Schriftart mit dem angegebenen Namen" + } + } + }, + { + "id": "Text/useFont(String,int)", + "memberId": "Text/useFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useFont", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "path", + "size" + ], + "params": [ + "String path", + "int size" + ], + "summary": "Chooses the font all text is written in, and how big it is.", + "description": "Chooses the font all text is written in, and how big it is.\n\nCall it before the first stage is created. The font is loaded while the\nwindow starts up, so choosing one later is not reliable.\n\n```java\npublic static void main(String[] args) {\n Text.useFont(\"assets/Retro Gaming.ttf\", 11);\n new MyStage();\n}\n```", + "scratchblock": null, + "paramDocs": [ + "path: the path to a .ttf or .otf file", + "size: the size to write in" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt Schriftart und -größe für alle Texte fest" + } + } + }, + { + "id": "Text/useFont(String)", + "memberId": "Text/useFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useFont", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Chooses the font all text is written in, keeping the current size.", + "description": "Chooses the font all text is written in, keeping the current size.", + "scratchblock": null, + "paramDocs": [ + "path: the path to a .ttf or .otf file" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt die Schriftart für alle Texte fest" + } + } + }, + { + "id": "Text/useFontSizes(int[])", + "memberId": "Text/useFontSizes", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useFontSizes", + "static": true, + "returnType": "void", + "parameterTypes": [ + "int[]" + ], + "parameterNames": [ + "sizes" + ], + "params": [ + "int[] sizes" + ], + "summary": "Prepares several sizes of the font in advance. Only needed when text is\nshown at more than one size, so that every size looks sharp.", + "description": "Prepares several sizes of the font in advance. Only needed when text is\nshown at more than one size, so that every size looks sharp.", + "scratchblock": null, + "paramDocs": [ + "sizes: the sizes to prepare" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useFontSizes", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Text/useSmoothing(boolean)", + "memberId": "Text/useSmoothing", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useSmoothing", + "static": true, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "smooth" + ], + "params": [ + "boolean smooth" + ], + "summary": "Chooses whether letters are smoothed. Turn it off for pixel fonts.", + "description": "Chooses whether letters are smoothed. Turn it off for pixel fonts.", + "scratchblock": null, + "paramDocs": [ + "smooth: true to smooth the letters" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useSmoothing", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, ob Schrift geglättet wird" + } + } + }, + { + "id": "Text/whenAddedToStage()", + "memberId": "Text/whenAddedToStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenAddedToStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the object is added to the stage. Override this method to define\ncustom behavior when the object is added to the stage.", + "description": "This method is called when the object is added to the stage. Override this method to define\ncustom behavior when the object is added to the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenAddedToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text der Bühne hinzugefügt wird" + } + } + }, + { + "id": "Text/whenAddedToStage(Stage)", + "memberId": "Text/whenAddedToStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenAddedToStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "stage" + ], + "params": [ + "Stage stage" + ], + "summary": "This method is called when the text is added to the stage. Override this method to define\ncustom behavior when the text.", + "description": "This method is called when the text is added to the stage. Override this method to define\ncustom behavior when the text.", + "scratchblock": null, + "paramDocs": [ + "stage: The stage to which the text is added." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenAddedToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text der Bühne hinzugefügt wird" + } + } + }, + { + "id": "Text/whenRemovedFromStage()", + "memberId": "Text/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenRemovedFromStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the object is removed from the stage. Override this method to define\ncustom behavior that should occur when the object is no longer part of the stage.", + "description": "This method is called when the object is removed from the stage. Override this method to define\ncustom behavior that should occur when the object is no longer part of the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenRemovedFromStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text von der Bühne entfernt wird" + } + } + }, + { + "id": "Text/whenRemovedFromStage(Stage)", + "memberId": "Text/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenRemovedFromStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "stage" + ], + "params": [ + "Stage stage" + ], + "summary": "This method is called when the text is removed from the stage. Override this method to define\ncustom behavior that should occur.", + "description": "This method is called when the text is removed from the stage. Override this method to define\ncustom behavior that should occur.", + "scratchblock": null, + "paramDocs": [ + "stage: The stage from which the text is removed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenRemovedFromStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text von der Bühne entfernt wird" + } + } + }, + { + "id": "Timer/afterMillis(int)", + "memberId": "Timer/afterMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "afterMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified number of milliseconds has passed since the method was first called.", + "description": "Checks if the specified number of milliseconds has passed since the method was first called.", + "scratchblock": null, + "paramDocs": [ + "millis: the number of milliseconds to check against" + ], + "returns": "true if the specified number of milliseconds has passed since the method was first\n called, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/afterMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt true zurück, sobald seit dem Zurücksetzen millis Millisekunden vergangen sind" + } + } + }, + { + "id": "Timer/constructor()", + "memberId": "Timer/constructor", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "constructor", + "static": false, + "returnType": "Timer", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Timer object.", + "description": "Constructs a new Timer object.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen neuen Timer" + } + } + }, + { + "id": "Timer/everyMillis(int)", + "memberId": "Timer/everyMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "everyMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified number of milliseconds has passed since the last time this method\nreturned true.", + "description": "Checks if the specified number of milliseconds has passed since the last time this method\nreturned true.", + "scratchblock": null, + "paramDocs": [ + "millis: The number of milliseconds to wait before returning true." + ], + "returns": "true if the specified number of milliseconds has passed since the last call that\n returned true, false otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/everyMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle millis Millisekunden einmal true zurück" + } + } + }, + { + "id": "Timer/forMillis(int)", + "memberId": "Timer/forMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "forMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified amount of milliseconds has passed since the method was first called. If\nthe method is called for the first time, it initializes the start time.", + "description": "Checks if the specified amount of milliseconds has passed since the method was first called. If\nthe method is called for the first time, it initializes the start time.", + "scratchblock": null, + "paramDocs": [ + "millis: the number of milliseconds to check against" + ], + "returns": "true if the current time is less than the start time plus the specified milliseconds,\n false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/forMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt für die ersten millis Millisekunden nach dem Zurücksetzen true zurück" + } + } + }, + { + "id": "Timer/intervalMillis(int)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis: the interval in milliseconds to check" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt alle millis Millisekunden zwischen true und false" + } + } + }, + { + "id": "Timer/intervalMillis(int,boolean)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int", + "boolean" + ], + "parameterNames": [ + "millis", + "skipFirst" + ], + "params": [ + "int millis", + "boolean skipFirst" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis: the interval in milliseconds to check", + "skipFirst: if true, the first interval will be skipped" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt alle millis Millisekunden zwischen true und false; skipFirst überspringt das erste Intervall" + } + } + }, + { + "id": "Timer/intervalMillis(int,int)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "millis1", + "millis2" + ], + "params": [ + "int millis1", + "int millis2" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis1: the first interval in milliseconds to check", + "millis2: the second interval in milliseconds to check" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt millis1 Millisekunden lang true und danach millis2 Millisekunden lang false zurück" + } + } + }, + { + "id": "Timer/intervalMillis(int,int,boolean)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int", + "int", + "boolean" + ], + "parameterNames": [ + "millis1", + "millis2", + "skipFirst" + ], + "params": [ + "int millis1", + "int millis2", + "boolean skipFirst" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis1: the first interval in milliseconds to check", + "millis2: the second interval in milliseconds to check", + "skipFirst: if true, the first interval will be skipped" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt millis1 Millisekunden lang true und danach millis2 Millisekunden lang false zurück; skipFirst überspringt das erste Intervall" + } + } + }, + { + "id": "Timer/millis()", + "memberId": "Timer/millis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "millis", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the number of milliseconds of game time since the program started.\nGame time stands still while the game is paused and runs slower or faster\nwith the game speed (see [Window.pause()](../Window/pause) and\n[Window.setGameSpeed(double)](../Window/setGameSpeed)); without either, it is the real time.", + "description": "Returns the number of milliseconds of game time since the program started.\nGame time stands still while the game is paused and runs slower or faster\nwith the game speed (see [Window.pause()](../Window/pause) and\n[Window.setGameSpeed(double)](../Window/setGameSpeed)); without either, it is the real time.", + "scratchblock": "(timer)", + "paramDocs": [], + "returns": "the milliseconds of game time since the program started", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/millis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die seit dem Programmstart vergangenen Millisekunden zurück" + } + } + }, + { + "id": "Timer/reset()", + "memberId": "Timer/reset", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "reset", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Resets the timer.", + "description": "Resets the timer.", + "scratchblock": "reset timer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/reset", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Timer auf 0 zurück" + } + } + }, + { + "id": "Triangle/constructor(double,double,double,double,double,double)", + "memberId": "Triangle/constructor", + "owner": "org.openpatch.scratch.Triangle", + "className": "Triangle", + "methodName": "constructor", + "static": false, + "returnType": "Triangle", + "parameterTypes": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "x1", + "y1", + "x2", + "y2", + "x3", + "y3" + ], + "params": [ + "double x1", + "double y1", + "double x2", + "double y2", + "double x3", + "double y3" + ], + "summary": "Creates a triangle with the specified vertices.", + "description": "Creates a triangle with the specified vertices.", + "scratchblock": null, + "paramDocs": [ + "x1: the x-coordinate of the first vertex", + "y1: the y-coordinate of the first vertex", + "x2: the x-coordinate of the second vertex", + "y2: the y-coordinate of the second vertex", + "x3: the x-coordinate of the third vertex", + "y3: the y-coordinate of the third vertex" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Triangle/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Dreieck aus den drei Eckpunkten" + } + } + }, + { + "id": "UISprite/changeHeight(double)", + "memberId": "UISprite/changeHeight", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "changeHeight", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "amount" + ], + "params": [ + "double amount" + ], + "summary": "Changes the height of the sprite by the given number of pixels.", + "description": "Changes the height of the sprite by the given number of pixels.", + "scratchblock": null, + "paramDocs": [ + "amount: how many pixels to add to the height" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/changeHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Höhe um die angegebene Anzahl Pixel" + } + } + }, + { + "id": "UISprite/changeWidth(double)", + "memberId": "UISprite/changeWidth", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "changeWidth", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "amount" + ], + "params": [ + "double amount" + ], + "summary": "Changes the width of the sprite by the given number of pixels.", + "description": "Changes the width of the sprite by the given number of pixels.", + "scratchblock": null, + "paramDocs": [ + "amount: how many pixels to add to the width" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/changeWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Breite um die angegebene Anzahl Pixel" + } + } + }, + { + "id": "UISprite/constructor()", + "memberId": "UISprite/constructor", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "constructor", + "static": false, + "returnType": "UISprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a sprite that is drawn as part of the user interface.", + "description": "Creates a sprite that is drawn as part of the user interface.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine neue UI-Figur" + } + } + }, + { + "id": "UISprite/disableNineSlice()", + "memberId": "UISprite/disableNineSlice", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "disableNineSlice", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Lets the whole costume stretch again.", + "description": "Lets the whole costume stretch again.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/disableNineSlice", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Lässt das ganze Kostüm wieder mitskalieren" + } + } + }, + { + "id": "UISprite/setHeight(double)", + "memberId": "UISprite/setHeight", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "setHeight", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "height" + ], + "params": [ + "double height" + ], + "summary": "Sets the height of the sprite in pixels.", + "description": "Sets the height of the sprite in pixels.", + "scratchblock": null, + "paramDocs": [ + "height: the height in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/setHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Höhe in Pixeln" + } + } + }, + { + "id": "UISprite/setNineSlice(int,int,int,int)", + "memberId": "UISprite/setNineSlice", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "setNineSlice", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int", + "int" + ], + "parameterNames": [ + "top", + "right", + "bottom", + "left" + ], + "params": [ + "int top", + "int right", + "int bottom", + "int left" + ], + "summary": "Keeps the corners and edges of the costume from stretching when the sprite\nis resized, so that a button costume can be made any size.", + "description": "Keeps the corners and edges of the costume from stretching when the sprite\nis resized, so that a button costume can be made any size.", + "scratchblock": null, + "paramDocs": [ + "top: how many pixels of the costume belong to the top edge", + "right: how many pixels of the costume belong to the right edge", + "bottom: how many pixels of the costume belong to the bottom edge", + "left: how many pixels of the costume belong to the left edge" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/setNineSlice", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Hält die Ecken und Ränder des Kostüms beim Skalieren fest (Nine-Slice)" + } + } + }, + { + "id": "UISprite/setWidth(double)", + "memberId": "UISprite/setWidth", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "setWidth", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "width" + ], + "params": [ + "double width" + ], + "summary": "Sets the width of the sprite in pixels.", + "description": "Sets the width of the sprite in pixels.", + "scratchblock": null, + "paramDocs": [ + "width: the width in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/setWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Breite in Pixeln" + } + } + }, + { + "id": "Vector2/add(Vector2)", + "memberId": "Vector2/add", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "add", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Adds another vector and returns the result", + "description": "Adds another vector and returns the result", + "scratchblock": null, + "paramDocs": [ + "v: " + ], + "returns": "the sum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Summe beider Vektoren als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/angle()", + "memberId": "Vector2/angle", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "angle", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the angle of the vector.", + "description": "Returns the angle of the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/angle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Winkel des Vektors in Grad zurück" + } + } + }, + { + "id": "Vector2/clone()", + "memberId": "Vector2/clone", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "clone", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a clone of the vector", + "description": "Creates a clone of the vector", + "scratchblock": null, + "paramDocs": [], + "returns": "the cloned vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/clone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Kopie des Vektors zurück" + } + } + }, + { + "id": "Vector2/constructor()", + "memberId": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "constructor", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructor for the null vector.", + "description": "Constructor for the null vector.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt den Nullvektor" + } + } + }, + { + "id": "Vector2/constructor(double,double)", + "memberId": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "constructor", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Constructor for a 2D vector.", + "description": "Constructor for a 2D vector.", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate", + "y: y-coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Vektor mit den angegebenen Koordinaten" + } + } + }, + { + "id": "Vector2/constructor(Vector2)", + "memberId": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "constructor", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Copy constructor for copying a vector.", + "description": "Copy constructor for copying a vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie des übergebenen Vektors" + } + } + }, + { + "id": "Vector2/distance(Vector2)", + "memberId": "Vector2/distance", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "distance", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Calculates the distance to another vector.", + "description": "Calculates the distance to another vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": "the distance", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/distance", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Abstand zu v zurück" + } + } + }, + { + "id": "Vector2/distanceSq(Vector2)", + "memberId": "Vector2/distanceSq", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "distanceSq", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Calculates the squared distance to another vector.", + "description": "Calculates the squared distance to another vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": "the squared distance", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/distanceSq", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Quadrat des Abstands zu v zurück" + } + } + }, + { + "id": "Vector2/dot(Vector2)", + "memberId": "Vector2/dot", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "dot", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Calculates the dot product.", + "description": "Calculates the dot product.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": "the dot product", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/dot", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Skalarprodukt beider Vektoren zurück" + } + } + }, + { + "id": "Vector2/equals(Object)", + "memberId": "Vector2/equals", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "equals", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.Object" + ], + "parameterNames": [ + "obj" + ], + "params": [ + "Object obj" + ], + "summary": "Compares this vector with another object.", + "description": "Compares this vector with another object.", + "scratchblock": null, + "paramDocs": [ + "obj: the object to compare with" + ], + "returns": "true if the other object is a vector with the same x- and y-coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/equals", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn beide Vektoren gleich sind" + } + } + }, + { + "id": "Vector2/fromPolar(double,double)", + "memberId": "Vector2/fromPolar", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "fromPolar", + "static": true, + "returnType": "Vector2", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "magnitude", + "angle" + ], + "params": [ + "double magnitude", + "double angle" + ], + "summary": "Constructor method for constructing a vector based on polar coordinates.", + "description": "Constructor method for constructing a vector based on polar coordinates.", + "scratchblock": null, + "paramDocs": [ + "magnitude: of the vector", + "angle: of the vector" + ], + "returns": "a vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/fromPolar", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Vektor aus Länge und Winkel (in Grad)" + } + } + }, + { + "id": "Vector2/getX()", + "memberId": "Vector2/getX", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x coordinate of the vector", + "description": "Returns the x coordinate of the vector", + "scratchblock": null, + "paramDocs": [], + "returns": "the x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Koordinate zurück" + } + } + }, + { + "id": "Vector2/getY()", + "memberId": "Vector2/getY", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y coordinate of the vector", + "description": "Returns the y coordinate of the vector", + "scratchblock": null, + "paramDocs": [], + "returns": "the y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Koordinate zurück" + } + } + }, + { + "id": "Vector2/hashCode()", + "memberId": "Vector2/hashCode", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "hashCode", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the hash code of the vector. Vectors that are equal have the same hash code, which is\nwhat lets them be used as keys in a `HashMap`.", + "description": "Returns the hash code of the vector. Vectors that are equal have the same hash code, which is\nwhat lets them be used as keys in a `HashMap`.", + "scratchblock": null, + "paramDocs": [], + "returns": "the hash code of the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/hashCode", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Hashwert des Vektors zurück" + } + } + }, + { + "id": "Vector2/length()", + "memberId": "Vector2/length", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "length", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Calculates the length of the vector.", + "description": "Calculates the length of the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "the length of the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/length", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Länge des Vektors zurück" + } + } + }, + { + "id": "Vector2/lengthSq()", + "memberId": "Vector2/lengthSq", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "lengthSq", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Calculates the squared length of the vector.", + "description": "Calculates the squared length of the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "the squared length of the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/lengthSq", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Quadrat der Länge zurück (schneller als length())" + } + } + }, + { + "id": "Vector2/multiply(double)", + "memberId": "Vector2/multiply", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "multiply", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "scalar" + ], + "params": [ + "double scalar" + ], + "summary": "Multiplies a scalar and return the result.", + "description": "Multiplies a scalar and return the result.", + "scratchblock": null, + "paramDocs": [ + "scalar: a scalar" + ], + "returns": "the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/multiply", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den mit scalar multiplizierten Vektor als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/normalVector()", + "memberId": "Vector2/normalVector", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "normalVector", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the normal vector, which is perpendicular to the vector.", + "description": "Returns the normal vector, which is perpendicular to the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "a normal vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/normalVector", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen dazu senkrechten Vektor zurück" + } + } + }, + { + "id": "Vector2/reverse()", + "memberId": "Vector2/reverse", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "reverse", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Reverses a vector and returns the result.", + "description": "Reverses a vector and returns the result.", + "scratchblock": null, + "paramDocs": [], + "returns": "the reversed vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/reverse", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den entgegengesetzten Vektor zurück" + } + } + }, + { + "id": "Vector2/rotateBy(double)", + "memberId": "Vector2/rotateBy", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "rotateBy", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "angle" + ], + "params": [ + "double angle" + ], + "summary": "Rotates the vector by an angle and returns the result.", + "description": "Rotates the vector by an angle and returns the result.", + "scratchblock": null, + "paramDocs": [ + "angle: an angle between [0, ..., 360]" + ], + "returns": "the rotated vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/rotateBy", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den um angle Grad gedrehten Vektor als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/rotateTo(double)", + "memberId": "Vector2/rotateTo", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "rotateTo", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "angle" + ], + "params": [ + "double angle" + ], + "summary": "Rotates the vector to a given angle and returns the result.", + "description": "Rotates the vector to a given angle and returns the result.", + "scratchblock": null, + "paramDocs": [ + "angle: an angle between [0,...,360]" + ], + "returns": "the rotated vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/rotateTo", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen Vektor gleicher Länge mit dem Winkel angle (in Grad) zurück" + } + } + }, + { + "id": "Vector2/sub(Vector2)", + "memberId": "Vector2/sub", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "sub", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Substracts another vector and returns the result", + "description": "Substracts another vector and returns the result", + "scratchblock": null, + "paramDocs": [ + "v: " + ], + "returns": "the difference", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/sub", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Differenz beider Vektoren als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/toString()", + "memberId": "Vector2/toString", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the vector as a text, for example `Vector2[60.0, 80.0]`.", + "description": "Returns the vector as a text, for example `Vector2[60.0, 80.0]`.", + "scratchblock": null, + "paramDocs": [], + "returns": "the vector as a text", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/toString", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Vektor als Zeichenkette zurück" + } + } + }, + { + "id": "Vector2/unitVector()", + "memberId": "Vector2/unitVector", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "unitVector", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the unit vector.", + "description": "Returns the unit vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "a unit vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/unitVector", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen Vektor gleicher Richtung mit der Länge 1 zurück" + } + } + }, + { + "id": "Window/constructor()", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Window with default dimensions. The default width is 480\npixels and the\ndefault height is 360 pixels.", + "description": "Constructs a new Window with default dimensions. The default width is 480\npixels and the\ndefault height is 360 pixels.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster in Standardgröße" + } + } + }, + { + "id": "Window/constructor(String)", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "assets" + ], + "params": [ + "String assets" + ], + "summary": "Constructs a new Window with the specified assets. The window will have a\ndefault width of 480\npixels and a height of 360 pixels.", + "description": "Constructs a new Window with the specified assets. The window will have a\ndefault width of 480\npixels and a height of 360 pixels.", + "scratchblock": null, + "paramDocs": [ + "assets: the path to the assets to be used in the window" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster mit eigenem Asset-Ordner" + } + } + }, + { + "id": "Window/constructor(int,int)", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "width", + "height" + ], + "params": [ + "int width", + "int height" + ], + "summary": "Constructs a new Window with the specified width and height.", + "description": "Constructs a new Window with the specified width and height.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the window", + "height: the height of the window" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster mit der angegebenen Größe" + } + } + }, + { + "id": "Window/constructor(int,int,String)", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [ + "int", + "int", + "java.lang.String" + ], + "parameterNames": [ + "width", + "height", + "assets" + ], + "params": [ + "int width", + "int height", + "String assets" + ], + "summary": "Constructs a new Window with the specified width, height, and assets path.\nEnsures that only\none instance of Window can be created.", + "description": "Constructs a new Window with the specified width, height, and assets path.\nEnsures that only\none instance of Window can be created.\n\nThe single exception is the window Java builds by itself: a class that\nextends Window and has a `main` method which is not static is\ninstantiated by the JVM before `main` is called, so the\n`new MyWindow()` in that `main` would be the second window. That\none reuses the first instead of failing.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the window", + "height: the height of the window", + "assets: the path to the assets" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster mit Größe und eigenem Asset-Ordner" + } + } + }, + { + "id": "Window/debug(Object[])", + "memberId": "Window/debug", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "debug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Object[]" + ], + "parameterNames": [ + "values" + ], + "params": [ + "Object[] values" + ], + "summary": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the window's class name.", + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the window's class name.\n\nExample:\n\n```java\nthis.debug(\"fps =\", getFps());\n// prints: [MyWindow] fps = 60\n```", + "scratchblock": null, + "paramDocs": [ + "values: one or more values to print" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/debug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/exit()", + "memberId": "Window/exit", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "exit", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Exits the application by invoking the `whenExits` method and then calling the\n`exit` method on\nthe `Applet` instance.", + "description": "Exits the application by invoking the `whenExits` method and then calling the\n`exit` method on\nthe `Applet` instance.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/exit", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Beendet das Programm" + } + } + }, + { + "id": "Window/getDeltaTime()", + "memberId": "Window/getDeltaTime", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getDeltaTime", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the seconds of game time passed since the last frame. While the game\nis paused this is 0, and at half speed half the real time.", + "description": "Gets the seconds of game time passed since the last frame. While the game\nis paused this is 0, and at half speed half the real time.", + "scratchblock": null, + "paramDocs": [], + "returns": "seconds since last frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getDeltaTime", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + } + }, + { + "id": "Window/getGameSpeed()", + "memberId": "Window/getGameSpeed", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getGameSpeed", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The game speed set with [setGameSpeed(double)](setGameSpeed).", + "description": "The game speed set with [setGameSpeed(double)](setGameSpeed).", + "scratchblock": null, + "paramDocs": [], + "returns": "1 for normal speed", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getGameSpeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/getHeight()", + "memberId": "Window/getHeight", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getHeight", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the height of the current window.", + "description": "Retrieves the height of the current window.", + "scratchblock": null, + "paramDocs": [], + "returns": "the height of the window in pixels", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Höhe des Fensters in Pixeln zurück" + } + } + }, + { + "id": "Window/getInstance()", + "memberId": "Window/getInstance", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getInstance", + "static": true, + "returnType": "Window", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the singleton instance of the Window class.", + "description": "Returns the singleton instance of the Window class.", + "scratchblock": null, + "paramDocs": [], + "returns": "the singleton instance of Window", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getInstance", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Fenster des laufenden Programms zurück" + } + } + }, + { + "id": "Window/getLibraryTitle()", + "memberId": "Window/getLibraryTitle", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getLibraryTitle", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the title of the library.", + "description": "Returns the title of the library.", + "scratchblock": null, + "paramDocs": [], + "returns": "the title of the library as a String", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getLibraryTitle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen der Bibliothek zurück" + } + } + }, + { + "id": "Window/getLibraryVersion()", + "memberId": "Window/getLibraryVersion", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getLibraryVersion", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the version of the library.", + "description": "Returns the version of the library.", + "scratchblock": null, + "paramDocs": [], + "returns": "the version of the library as a String", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getLibraryVersion", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Version der Bibliothek zurück" + } + } + }, + { + "id": "Window/getStage()", + "memberId": "Window/getStage", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getStage", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current stage from the Applet instance.", + "description": "Retrieves the current stage from the Applet instance.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current Stage object", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/getTextureSampling()", + "memberId": "Window/getTextureSampling", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getTextureSampling", + "static": true, + "returnType": "TextureSampling", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns how pictures are being smoothed.", + "description": "Returns how pictures are being smoothed.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current setting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getTextureSampling", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das eingestellte Glättungsverfahren zurück" + } + } + }, + { + "id": "Window/getWidth()", + "memberId": "Window/getWidth", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getWidth", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the width of the current window.", + "description": "Retrieves the width of the current window.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the window in pixels", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite des Fensters in Pixeln zurück" + } + } + }, + { + "id": "Window/isDebug()", + "memberId": "Window/isDebug", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "isDebug", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the application is in debug mode.", + "description": "Checks if the application is in debug mode.\n\nDebug mode can be toggled at runtime by pressing F12.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the application is in debug mode, false otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/isDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Fehlersuche eingeschaltet ist" + } + } + }, + { + "id": "Window/isPaused()", + "memberId": "Window/isPaused", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "isPaused", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Whether the game is paused.", + "description": "Whether the game is paused.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while paused", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/isPaused", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/pause()", + "memberId": "Window/pause", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "pause", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Pauses the game: `run()` is no longer called, and timers, gliding\nand animations stand still. The window keeps drawing, so the paused\npicture stays visible, and keys and clicks still reach methods like\n`whenKeyPressed`, so a key can [resume()](resume) the game.", + "description": "Pauses the game: `run()` is no longer called, and timers, gliding\nand animations stand still. The window keeps drawing, so the paused\npicture stays visible, and keys and clicks still reach methods like\n`whenKeyPressed`, so a key can [resume()](resume) the game.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/pause", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Bühne zurück, die gerade angezeigt wird" + } + } + }, + { + "id": "Window/resume()", + "memberId": "Window/resume", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "resume", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Lets a paused game go on where it stopped.", + "description": "Lets a paused game go on where it stopped.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/resume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/setDebug(boolean)", + "memberId": "Window/setDebug", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "setDebug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "debug" + ], + "params": [ + "boolean debug" + ], + "summary": "Enables or disables the debug mode for the application.", + "description": "Enables or disables the debug mode for the application.\n\nDebug mode shows sprite positions, hitboxes, and other debug information.\nIt can also be toggled at runtime by pressing F12.", + "scratchblock": null, + "paramDocs": [ + "debug: a boolean value where `true` enables debug mode and\n `false` disables\n it." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/setDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Ausgabe von debug() ein oder aus" + } + } + }, + { + "id": "Window/setGameSpeed(double)", + "memberId": "Window/setGameSpeed", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "setGameSpeed", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "speed" + ], + "params": [ + "double speed" + ], + "summary": "Makes the game run slower or faster: 1 is normal, 0.5 half as fast, 2\ntwice as fast. `run()`, timers, gliding and animations all follow,\nso the whole game looks like slow motion; the window keeps drawing\nsmoothly.", + "description": "Makes the game run slower or faster: 1 is normal, 0.5 half as fast, 2\ntwice as fast. `run()`, timers, gliding and animations all follow,\nso the whole game looks like slow motion; the window keeps drawing\nsmoothly.", + "scratchblock": null, + "paramDocs": [ + "speed: 1 for normal speed, smaller for slower, larger for faster" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/setGameSpeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/setStage(Stage)", + "memberId": "Window/setStage", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "setStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "stage" + ], + "params": [ + "Stage stage" + ], + "summary": "Sets the current stage of the application.", + "description": "Sets the current stage of the application.", + "scratchblock": null, + "paramDocs": [ + "stage: the new stage to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/setStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt die angegebene Bühne an" + } + } + }, + { + "id": "Window/step()", + "memberId": "Window/step", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "step", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "While the game is paused: runs it for exactly one frame (every\n`run()` once) and pauses again. Useful to watch closely what\nhappens, for example when two sprites touch.", + "description": "While the game is paused: runs it for exactly one frame (every\n`run()` once) and pauses again. Useful to watch closely what\nhappens, for example when two sprites touch.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/step", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/transitionToStage(Stage,int)", + "memberId": "Window/transitionToStage", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "transitionToStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage", + "int" + ], + "parameterNames": [ + "stage", + "duration" + ], + "params": [ + "Stage stage", + "int duration" + ], + "summary": "Transitions to a new stage with a specified duration.", + "description": "Transitions to a new stage with a specified duration.", + "scratchblock": null, + "paramDocs": [ + "stage: the new stage to transition to", + "duration: the duration of the transition in milliseconds" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/transitionToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Blendet über Schwarz zur angegebenen Bühne über" + } + } + }, + { + "id": "Window/useFullScreen()", + "memberId": "Window/useFullScreen", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "useFullScreen", + "static": true, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Makes the window fill the whole screen.", + "description": "Makes the window fill the whole screen.\n\nCall it before the first stage is created, because the size of the window is\nsettled the moment it opens:\n\n```java\npublic static void main(String[] args) {\n Window.useFullScreen();\n new MyStage();\n}\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/useFullScreen", + "availability": "desktop-only", + "availabilityReason": "The embedded browser output uses its enclosing page; this desktop window option only reports a limitation.", + "translations": { + "de": { + "description": "Nur in der Desktop-Version: startet im Vollbild" + } + } + }, + { + "id": "Window/useSplashLogo(String)", + "memberId": "Window/useSplashLogo", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "useSplashLogo", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Puts your own picture on the loading screen in place of the Scratch for Java\nlogo. The picture fades in while your project starts and fades out again\nonce it is ready.", + "description": "Puts your own picture on the loading screen in place of the Scratch for Java\nlogo. The picture fades in while your project starts and fades out again\nonce it is ready.\n\nIt is shrunk to fit if it is large, and never enlarged, so a picture of\nroughly 300 by 300 looks right in a window of the usual size.\n\nCall it before the first stage is created, because the loading screen is the\nfirst thing the window draws:\n\n```java\npublic static void main(String[] args) {\n Window.useSplashLogo(\"assets/logo.png\");\n new MyStage();\n}\n```", + "scratchblock": null, + "paramDocs": [ + "path: a path to an image file or the name of a built-in sprite, or\n `null` for the Scratch for Java logo" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/useSplashLogo", + "availability": "desktop-only", + "availabilityReason": "The browser has no desktop splash window. This option only reports a limitation.", + "translations": { + "de": { + "description": "Nur in der Desktop-Version: zeigt beim Start ein Logo" + } + } + }, + { + "id": "Window/useTextureSampling(TextureSampling)", + "memberId": "Window/useTextureSampling", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "useTextureSampling", + "static": true, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.TextureSampling" + ], + "parameterNames": [ + "sampling" + ], + "params": [ + "TextureSampling sampling" + ], + "summary": "Chooses how pictures are smoothed when they are drawn larger or smaller than\nthey really are. Pixel art usually wants [TextureSampling.POINT](../TextureSampling/POINT).", + "description": "Chooses how pictures are smoothed when they are drawn larger or smaller than\nthey really are. Pixel art usually wants [TextureSampling.POINT](../TextureSampling/POINT).\n\nCall it before the first stage is created.\n\n```java\nWindow.useTextureSampling(TextureSampling.POINT);\nnew MyStage();\n```", + "scratchblock": null, + "paramDocs": [ + "sampling: how to smooth pictures" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/useTextureSampling", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie Bilder beim Vergrößern und Verkleinern geglättet werden. TextureSampling.POINT hält Pixelgrafik scharf, LINEAR (Standard) glättet. BILINEAR und TRILINEAR wirken im Browser wie LINEAR." + } + } + }, + { + "id": "Window/whenExits()", + "memberId": "Window/whenExits", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "whenExits", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the window exits. Override this method to define\ncustom behavior\nwhen the window is closed.", + "description": "This method is called when the window exits. Override this method to define\ncustom behavior\nwhen the window is closed.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/whenExits", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Beenden des Programms aufgerufen" + } + } + }, + { + "id": "extensions/camera/Camera/changeX(double)", + "memberId": "extensions/camera/Camera/changeX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "changeX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Changes x by a certain amount", + "description": "Changes x by a certain amount", + "scratchblock": null, + "paramDocs": [ + "x: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/changeX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/changeY(double)", + "memberId": "extensions/camera/Camera/changeY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "changeY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Changes y by a certain amount", + "description": "Changes y by a certain amount", + "scratchblock": null, + "paramDocs": [ + "y: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/changeY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/changeZoom(double)", + "memberId": "extensions/camera/Camera/changeZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "changeZoom", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "dz" + ], + "params": [ + "double dz" + ], + "summary": "Changes the zoom level by a certain amount", + "description": "Changes the zoom level by a certain amount", + "scratchblock": null, + "paramDocs": [ + "dz: the amount to change the zoom level by" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/changeZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/constructor()", + "memberId": "extensions/camera/Camera/constructor", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "constructor", + "static": false, + "returnType": "Camera", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Camera with default values. The default position is (0, 0) and the default\nzoom level is 100.", + "description": "Constructs a new Camera with default values. The default position is (0, 0) and the default\nzoom level is 100.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getPosition()", + "memberId": "extensions/camera/Camera/getPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the position of the sprite", + "description": "Returns the position of the sprite", + "scratchblock": null, + "paramDocs": [], + "returns": "a vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getX()", + "memberId": "extensions/camera/Camera/getX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x coordinate of the sprite", + "description": "Returns the x coordinate of the sprite", + "scratchblock": null, + "paramDocs": [], + "returns": "a x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getY()", + "memberId": "extensions/camera/Camera/getY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y coordinate of the sprite", + "description": "Returns the y coordinate of the sprite", + "scratchblock": null, + "paramDocs": [], + "returns": "a y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getZoom()", + "memberId": "extensions/camera/Camera/getZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getZoom", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the zoom level", + "description": "Returns the zoom level", + "scratchblock": null, + "paramDocs": [], + "returns": "the zoom level", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/resetZoom()", + "memberId": "extensions/camera/Camera/resetZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "resetZoom", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Resets the zoom level to 100", + "description": "Resets the zoom level to 100", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/resetZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setPosition(double,double)", + "memberId": "extensions/camera/Camera/setPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the position of the sprite", + "description": "Sets the position of the sprite", + "scratchblock": null, + "paramDocs": [ + "x: a x coordinate", + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setPosition(Vector2)", + "memberId": "extensions/camera/Camera/setPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the sprite based on the coordinates of a given vector.", + "description": "Sets the position of the sprite based on the coordinates of a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setX(double)", + "memberId": "extensions/camera/Camera/setX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Sets the x coordinate", + "description": "Sets the x coordinate", + "scratchblock": null, + "paramDocs": [ + "x: a x coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setY(double)", + "memberId": "extensions/camera/Camera/setY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Sets the y coordinate", + "description": "Sets the y coordinate", + "scratchblock": null, + "paramDocs": [ + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setZoom(double)", + "memberId": "extensions/camera/Camera/setZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setZoom", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "zoom" + ], + "params": [ + "double zoom" + ], + "summary": "Sets the zoom", + "description": "Sets the zoom", + "scratchblock": null, + "paramDocs": [ + "zoom: the zoom level" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setZoomLimit(double,double)", + "memberId": "extensions/camera/Camera/setZoomLimit", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setZoomLimit", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "low", + "high" + ], + "params": [ + "double low", + "double high" + ], + "summary": "Sets the zoom limits", + "description": "Sets the zoom limits", + "scratchblock": null, + "paramDocs": [ + "low: the lower limit", + "high: the upper limit" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setZoomLimit", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toGlobalPosition(Vector2)", + "memberId": "extensions/camera/Camera/toGlobalPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toGlobalPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Converts local camera coordinates to screen coordinates", + "description": "Converts local camera coordinates to screen coordinates", + "scratchblock": null, + "paramDocs": [ + "v: local camera coordinates" + ], + "returns": "screen coordinates", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toGlobalPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toGlobalX(double)", + "memberId": "extensions/camera/Camera/toGlobalX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toGlobalX", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Converts local camera x coordinate to screen x coordinate", + "description": "Converts local camera x coordinate to screen x coordinate", + "scratchblock": null, + "paramDocs": [ + "x: local camera x coordinate" + ], + "returns": "screen x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toGlobalX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toGlobalY(double)", + "memberId": "extensions/camera/Camera/toGlobalY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toGlobalY", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Converts local camera y coordinate to screen y coordinate", + "description": "Converts local camera y coordinate to screen y coordinate", + "scratchblock": null, + "paramDocs": [ + "y: local camera y coordinate" + ], + "returns": "screen y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toGlobalY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toLocalPosition(Vector2)", + "memberId": "extensions/camera/Camera/toLocalPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toLocalPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Converts screen coordinates to local camera coordinates", + "description": "Converts screen coordinates to local camera coordinates", + "scratchblock": null, + "paramDocs": [ + "v: screen coordinates" + ], + "returns": "local coordinates", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toLocalPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toLocalX(double)", + "memberId": "extensions/camera/Camera/toLocalX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toLocalX", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Converts screen x coordinate to local camera x coordinate", + "description": "Converts screen x coordinate to local camera x coordinate", + "scratchblock": null, + "paramDocs": [ + "x: screen x coordinate" + ], + "returns": "local x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toLocalX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toLocalY(double)", + "memberId": "extensions/camera/Camera/toLocalY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toLocalY", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Converts screen y coordinate to local camera y coordinate", + "description": "Converts screen y coordinate to local camera y coordinate", + "scratchblock": null, + "paramDocs": [ + "y: screen y coordinate" + ], + "returns": "local y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toLocalY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/fs/File/constructor()", + "memberId": "extensions/fs/File/constructor", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "constructor", + "static": false, + "returnType": "File", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The File class provides methods to save and load objects to and from files in\nJSON or XML format.\nIt supports saving and loading objects with automatic detection of file type\nbased on the method\nused. The class uses Jackson ObjectMapper for JSON and XmlMapper for XML\nserialization and\ndeserialization.", + "description": "The File class provides methods to save and load objects to and from files in\nJSON or XML format.\nIt supports saving and loading objects with automatic detection of file type\nbased on the method\nused. The class uses Jackson ObjectMapper for JSON and XmlMapper for XML\nserialization and\ndeserialization.\n\nUsage examples:\n\n```java\n// Save an object as JSON\nFile.save(\"/path/to/file.json\", myObject);\n\n// Save an object as XML\nFile.saveXML(\"/path/to/file.xml\", myObject);\n\n// Load an object from JSON\nMyClass obj = File.load(\"/path/to/file.json\", MyClass.class);\n\n// Load an object from XML\nMyClass obj = File.loadXML(\"/path/to/file.xml\", MyClass.class);\n```\n\nNote: The file paths can be absolute or relative. If a relative path is\nprovided, the class\nwill attempt to load the file from the classpath.\n\nSupported file types:\n\n
    \n
  • JSON\n
  • XML\n
", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/load(String,Class)", + "memberId": "extensions/fs/File/load", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "load", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from a file at the given path.", + "description": "Loads an object of the specified class from a file at the given path.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the file from which the object is to be loaded", + "cls: the class of the object to be loaded" + ], + "returns": "the loaded object of the specified class", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/load", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/loadOrCreate(String,Class)", + "memberId": "extensions/fs/File/loadOrCreate", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "loadOrCreate", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from a file at the given path, or\ncreates a new one if the file does not exist.", + "description": "Loads an object of the specified class from a file at the given path, or\ncreates a new one if the file does not exist.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the file from which the object is to be loaded", + "cls: the class of the object to be loaded" + ], + "returns": "the loaded object of the specified class, or a new instance if the\n file does not exist", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/loadOrCreate", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/loadXML(String,Class)", + "memberId": "extensions/fs/File/loadXML", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "loadXML", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from an XML file at the given path.", + "description": "Loads an object of the specified class from an XML file at the given path.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the XML file", + "cls: the class of the object to be loaded" + ], + "returns": "the object loaded from the XML file", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/loadXML", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/loadXMLOrCreate(String,Class)", + "memberId": "extensions/fs/File/loadXMLOrCreate", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "loadXMLOrCreate", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from an XML file at the given path,\nor creates a new one if the file does not exist.", + "description": "Loads an object of the specified class from an XML file at the given path,\nor creates a new one if the file does not exist.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the XML file", + "cls: the class of the object to be loaded" + ], + "returns": "the object loaded from the XML file, or a new instance if the file\n does not exist", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/loadXMLOrCreate", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/save(String,T)", + "memberId": "extensions/fs/File/save", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "save", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "T" + ], + "parameterNames": [ + "path", + "obj" + ], + "params": [ + "String path", + "T obj" + ], + "summary": "Saves the given object to the specified path in the default file type (JSON).", + "description": "Saves the given object to the specified path in the default file type (JSON).", + "scratchblock": null, + "paramDocs": [ + "path: the path where the object should be saved", + "obj: the object to be saved" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/save", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/saveXML(String,T)", + "memberId": "extensions/fs/File/saveXML", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "saveXML", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "T" + ], + "parameterNames": [ + "path", + "obj" + ], + "params": [ + "String path", + "T obj" + ], + "summary": "Saves the given object as an XML file at the specified path.", + "description": "Saves the given object as an XML file at the specified path.", + "scratchblock": null, + "paramDocs": [ + "path: the path where the XML file will be saved", + "obj: the object to be saved as XML" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/saveXML", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/background()", + "memberId": "extensions/pixels/Pixels/background", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "background", + "static": false, + "returnType": "int[]", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pixels of the background layer, where the pen and stamps draw.", + "description": "Returns the pixels of the background layer, where the pen and stamps draw.", + "scratchblock": null, + "paramDocs": [], + "returns": "one colour per pixel", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/background", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/constructor(PGraphics,PGraphics,PGraphics)", + "memberId": "extensions/pixels/Pixels/constructor", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "constructor", + "static": false, + "returnType": "Pixels", + "parameterTypes": [ + "processing.core.PGraphics", + "processing.core.PGraphics", + "processing.core.PGraphics" + ], + "parameterNames": [ + "mainBuffer", + "backgroundBuffer", + "foregroundBuffer" + ], + "params": [ + "PGraphics mainBuffer", + "PGraphics backgroundBuffer", + "PGraphics foregroundBuffer" + ], + "summary": "Creates the pixel access for a stage.", + "description": "Creates the pixel access for a stage.", + "scratchblock": null, + "paramDocs": [ + "mainBuffer: where the sprites are drawn", + "backgroundBuffer: where the background is drawn", + "foregroundBuffer: where the foreground is drawn" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/foreground()", + "memberId": "extensions/pixels/Pixels/foreground", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "foreground", + "static": false, + "returnType": "int[]", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pixels of the foreground layer.", + "description": "Returns the pixels of the foreground layer.", + "scratchblock": null, + "paramDocs": [], + "returns": "one colour per pixel", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/foreground", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/main()", + "memberId": "extensions/pixels/Pixels/main", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "main", + "static": false, + "returnType": "int[]", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pixels of the layer the sprites are drawn on.", + "description": "Returns the pixels of the layer the sprites are drawn on.", + "scratchblock": null, + "paramDocs": [], + "returns": "one colour per pixel", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/main", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FFmpegRecorder/constructor(String)", + "memberId": "extensions/recorder/FFmpegRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "className": "FFmpegRecorder", + "methodName": "constructor", + "static": false, + "returnType": "FFmpegRecorder", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Constructs an FFmpegRecorder object with the specified path.", + "description": "Constructs an FFmpegRecorder object with the specified path.", + "scratchblock": null, + "paramDocs": [ + "path: the path where the recording will be saved\n \n\nThis constructor initializes the FFmpegRecorder by creating a temporary directory and\n setting up a pattern for temporary PNG files. If the temporary directory cannot be created,\n an error message is printed to the console." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FFmpegRecorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FFmpegRecorder/saveFrame()", + "memberId": "extensions/recorder/FFmpegRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "className": "FFmpegRecorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame using the specified pattern.", + "description": "Saves the current frame using the specified pattern.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FFmpegRecorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FFmpegRecorder/stop()", + "memberId": "extensions/recorder/FFmpegRecorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "className": "FFmpegRecorder", + "methodName": "stop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the recording process and converts the recorded frames into a video file using FFmpeg.", + "description": "Stops the recording process and converts the recorded frames into a video file using FFmpeg.\n\nThis method overrides the `stop` method from the superclass. It first calls the superclass's\n`stop` method, then checks if the temporary directory (`tmpDir`) is not null. If it is not\nnull, it constructs a command to run FFmpeg, which converts the recorded frames (stored as PNG\nfiles) into a video file with the specified frame rate and codec.\n\nThe FFmpeg command is executed, and a message is printed to the console indicating that the\nvideo conversion is in progress. If there is an error during the execution of the command, the\nerror message is printed to the console.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FFmpegRecorder/stop", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FrameRecorder/constructor(String)", + "memberId": "extensions/recorder/FrameRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "className": "FrameRecorder", + "methodName": "constructor", + "static": false, + "returnType": "FrameRecorder", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "outputFolder" + ], + "params": [ + "String outputFolder" + ], + "summary": "Constructs a new FrameRecorder with the specified output folder.", + "description": "Constructs a new FrameRecorder with the specified output folder.", + "scratchblock": null, + "paramDocs": [ + "outputFolder: the folder where the recorded frames will be saved" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FrameRecorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FrameRecorder/saveFrame()", + "memberId": "extensions/recorder/FrameRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "className": "FrameRecorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame of the applet to the specified output folder. The frame is saved as a\nPNG file with a filename pattern \"#######.png\". The exact filename will be generated based on\nthe current frame number.", + "description": "Saves the current frame of the applet to the specified output folder. The frame is saved as a\nPNG file with a filename pattern \"#######.png\". The exact filename will be generated based on\nthe current frame number.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FrameRecorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FrameRecorder/snapshot(String)", + "memberId": "extensions/recorder/FrameRecorder/snapshot", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "className": "FrameRecorder", + "methodName": "snapshot", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "filename" + ], + "params": [ + "String filename" + ], + "summary": "Takes a snapshot of the current frame and saves it to the specified filename.", + "description": "Takes a snapshot of the current frame and saves it to the specified filename.", + "scratchblock": null, + "paramDocs": [ + "filename: the name of the file to save the snapshot to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FrameRecorder/snapshot", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/constructor(String)", + "memberId": "extensions/recorder/GifRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "constructor", + "static": false, + "returnType": "GifRecorder", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "filePath" + ], + "params": [ + "String filePath" + ], + "summary": "Constructs a new GifRecorder object.", + "description": "Constructs a new GifRecorder object.", + "scratchblock": null, + "paramDocs": [ + "filePath: the path where the GIF file will be saved" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/saveFrame()", + "memberId": "extensions/recorder/GifRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame of the applet as a GIF image.", + "description": "Saves the current frame of the applet as a GIF image.\n\nThis method captures the current frame from the applet, sets the frame rate, and adds the\nframe to the GIF encoder. If the applet's pixels are null, the frame is not saved.\n\nNote: This method catches and ignores any NullPointerException that may occur.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/snapshot()", + "memberId": "extensions/recorder/GifRecorder/snapshot", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "snapshot", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Captures a snapshot and saves it as a GIF. This method starts the GIF encoder, saves the\ncurrent frame, and then finishes the encoding process.", + "description": "Captures a snapshot and saves it as a GIF. This method starts the GIF encoder, saves the\ncurrent frame, and then finishes the encoding process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/snapshot", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/start()", + "memberId": "extensions/recorder/GifRecorder/start", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "start", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Starts the GIF recording process.", + "description": "Starts the GIF recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/start", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/stop()", + "memberId": "extensions/recorder/GifRecorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "stop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the GIF recording process and finalizes the GIF file.", + "description": "Stops the GIF recording process and finalizes the GIF file.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/stop", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/constructor(String,String)", + "memberId": "extensions/recorder/Recorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "constructor", + "static": false, + "returnType": "Recorder", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "path", + "ext" + ], + "params": [ + "String path", + "String ext" + ], + "summary": "Constructs a new Recorder object with the specified file path and extension. If the provided\npath does not end with the specified extension, the extension is appended to the path.", + "description": "Constructs a new Recorder object with the specified file path and extension. If the provided\npath does not end with the specified extension, the extension is appended to the path.", + "scratchblock": null, + "paramDocs": [ + "path: the file path where the recording will be saved", + "ext: the file extension to be used for the recording" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/post()", + "memberId": "extensions/recorder/Recorder/post", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "post", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Called after each frame is drawn. This method is registered with the Applet class to ensure\nthat frames are saved at the appropriate time during the recording process.", + "description": "Called after each frame is drawn. This method is registered with the Applet class to ensure\nthat frames are saved at the appropriate time during the recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/post", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/saveFrame()", + "memberId": "extensions/recorder/Recorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame. This method should be implemented by subclasses to define the specific\nbehavior for saving a frame.", + "description": "Saves the current frame. This method should be implemented by subclasses to define the specific\nbehavior for saving a frame.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/start()", + "memberId": "extensions/recorder/Recorder/start", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "start", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Starts the recording process.", + "description": "Starts the recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/start", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/stop()", + "memberId": "extensions/recorder/Recorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "stop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the recording process.", + "description": "Stops the recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/stop", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/constructor(String,String,String)", + "memberId": "extensions/shader/Shader/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "constructor", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "fragmentShaderPath", + "vertexShaderPath" + ], + "params": [ + "String name", + "String fragmentShaderPath", + "String vertexShaderPath" + ], + "summary": "Constructor", + "description": "Constructor", + "scratchblock": null, + "paramDocs": [ + "name: unique name", + "fragmentShaderPath: path to the fragment shader file", + "vertexShaderPath: path to the vertex shader file, or null for Processing's default one" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/constructor(Shader)", + "memberId": "extensions/shader/Shader/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "constructor", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "org.openpatch.scratch.extensions.shader.Shader" + ], + "parameterNames": [ + "shader" + ], + "params": [ + "Shader shader" + ], + "summary": "Copy constructor", + "description": "Copy constructor", + "scratchblock": null, + "paramDocs": [ + "shader: shader" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/getName()", + "memberId": "extensions/shader/Shader/getName", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "getName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the name", + "description": "Returns the name", + "scratchblock": null, + "paramDocs": [], + "returns": "the name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/getName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/getPShader()", + "memberId": "extensions/shader/Shader/getPShader", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "getPShader", + "static": false, + "returnType": "PShader", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shader", + "description": "Returns the shader", + "scratchblock": null, + "paramDocs": [], + "returns": "the shader", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/getPShader", + "availability": "desktop-only", + "availabilityReason": "Processing's PShader object belongs to the desktop renderer. The browser uses WebGL filters.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "name", + "x" + ], + "params": [ + "String name", + "int x" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the uniform in the shader file", + "x: the value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,boolean)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "boolean" + ], + "parameterNames": [ + "name", + "x" + ], + "params": [ + "String name", + "boolean x" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,double)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "double" + ], + "parameterNames": [ + "name", + "x" + ], + "params": [ + "String name", + "double x" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,int,int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int", + "int" + ], + "parameterNames": [ + "name", + "x", + "y" + ], + "params": [ + "String name", + "int x", + "int y" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: ", + "y: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,boolean,boolean)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "boolean", + "boolean" + ], + "parameterNames": [ + "name", + "x", + "y" + ], + "params": [ + "String name", + "boolean x", + "boolean y" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: ", + "y: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,double,double)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "double", + "double" + ], + "parameterNames": [ + "name", + "x", + "y" + ], + "params": [ + "String name", + "double x", + "double y" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: ", + "y: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,Vector2)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "name", + "vec" + ], + "params": [ + "String name", + "Vector2 vec" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "vec: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,int[],int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int[]", + "int" + ], + "parameterNames": [ + "name", + "values", + "ncoords" + ], + "params": [ + "String name", + "int[] values", + "int ncoords" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "values: ", + "ncoords: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,double[],int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "double[]", + "int" + ], + "parameterNames": [ + "name", + "values", + "ncoords" + ], + "params": [ + "String name", + "double[] values", + "int ncoords" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "values: ", + "ncoords: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,Color)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "name", + "c" + ], + "params": [ + "String name", + "Color c" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "c: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/setName(String)", + "memberId": "extensions/shader/Shader/setName", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "setName", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Sets the name", + "description": "Sets the name", + "scratchblock": null, + "paramDocs": [ + "name: unique name" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/setName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/add(String,String,String)", + "memberId": "extensions/shader/Shaders/add", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "add", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "fragmentShaderPath", + "vertexShaderPath" + ], + "params": [ + "String name", + "String fragmentShaderPath", + "String vertexShaderPath" + ], + "summary": "Adds a shader. If a shader with the given name already exists, that one is\nreturned instead.", + "description": "Adds a shader. If a shader with the given name already exists, that one is\nreturned instead.\n\nThe first shader added is drawn with right away; the ones after it wait\nuntil [switchTo(String)](switchTo) or [next()](next) picks them.\n\nThe vertex shader is usually `null`, which uses Processing's default\none. In the browser any other vertex shader is ignored.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "fragmentShaderPath: the path to the fragment shader", + "vertexShaderPath: the path to the vertex shader, may be null" + ], + "returns": "the shader", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/constructor(String)", + "memberId": "extensions/shader/Shaders/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "constructor", + "static": false, + "returnType": "Shaders", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "owner" + ], + "params": [ + "String owner" + ], + "summary": "Creates an empty set of shaders.", + "description": "Creates an empty set of shaders.", + "scratchblock": null, + "paramDocs": [ + "owner: what the shaders belong to, used in error messages: \"sprite\" or\n \"stage\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/constructor(Shaders)", + "memberId": "extensions/shader/Shaders/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "constructor", + "static": false, + "returnType": "Shaders", + "parameterTypes": [ + "org.openpatch.scratch.extensions.shader.Shaders" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Shaders s" + ], + "summary": "Copies a set of shaders.", + "description": "Copies a set of shaders.", + "scratchblock": null, + "paramDocs": [ + "s: the shaders to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/get(String)", + "memberId": "extensions/shader/Shaders/get", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "get", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns a shader by name.", + "description": "Returns a shader by name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the shader" + ], + "returns": "the shader, or null if there is none with that name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/get", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/getCurrent()", + "memberId": "extensions/shader/Shaders/getCurrent", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "getCurrent", + "static": false, + "returnType": "Shader", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shader currently drawn with.", + "description": "Returns the shader currently drawn with.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current shader, or null if there is none", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/getCurrent", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/getCurrentIndex()", + "memberId": "extensions/shader/Shaders/getCurrentIndex", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "getCurrentIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the position of the current shader.", + "description": "Returns the position of the current shader.", + "scratchblock": null, + "paramDocs": [], + "returns": "the position, or -1 if no shader is in use", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/getCurrentIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/getCurrentName()", + "memberId": "extensions/shader/Shaders/getCurrentName", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "getCurrentName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the name of the current shader.", + "description": "Returns the name of the current shader.", + "scratchblock": null, + "paramDocs": [], + "returns": "the name, or null if no shader is in use", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/getCurrentName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/next()", + "memberId": "extensions/shader/Shaders/next", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "next", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switches to the next shader, in the order they were added. After the last\none comes the first one again.", + "description": "Switches to the next shader, in the order they were added. After the last\none comes the first one again.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/next", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/reset()", + "memberId": "extensions/shader/Shaders/reset", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "reset", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops drawing with a shader, so the sprite or stage looks as it does\nwithout one. The shaders are kept: [switchTo(String)](switchTo) or\n[next()](next) brings one back.", + "description": "Stops drawing with a shader, so the sprite or stage looks as it does\nwithout one. The shaders are kept: [switchTo(String)](switchTo) or\n[next()](next) brings one back.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/reset", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/switchTo(String)", + "memberId": "extensions/shader/Shaders/switchTo", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "switchTo", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switches to the shader with the given name, or with the given position in\nthe order the shaders were added. A name that is not there leaves the\ncurrent shader and prints which ones there are.", + "description": "Switches to the shader with the given name, or with the given position in\nthe order the shaders were added. A name that is not there leaves the\ncurrent shader and prints which ones there are.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the shader" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/switchTo", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/switchTo(double)", + "memberId": "extensions/shader/Shaders/switchTo", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "switchTo", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "index" + ], + "params": [ + "double index" + ], + "summary": "Switches to the shader at the given position.", + "description": "Switches to the shader at the given position.", + "scratchblock": null, + "paramDocs": [ + "index: the position of the shader" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/switchTo", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/by(Comparator)", + "memberId": "extensions/sorting/Sorting/by", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "by", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.util.Comparator" + ], + "parameterNames": [ + "comparator" + ], + "params": [ + "Comparator comparator" + ], + "summary": "Draws sprites in an order of your own.", + "description": "Draws sprites in an order of your own.", + "scratchblock": null, + "paramDocs": [ + "comparator: decides which of two sprites is drawn first" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/by", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/byY()", + "memberId": "extensions/sorting/Sorting/byY", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "byY", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Draws sprites that are further down the stage in front of sprites that are\nfurther up, which is what a view from above usually wants.", + "description": "Draws sprites that are further down the stage in front of sprites that are\nfurther up, which is what a view from above usually wants.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/byY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/constructor()", + "memberId": "extensions/sorting/Sorting/constructor", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "constructor", + "static": false, + "returnType": "Sorting", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Decides the order in which the sprites of a stage are drawn.", + "description": "Decides the order in which the sprites of a stage are drawn.\n\nReached through `stage.getSorting()`:\n\n```java\nthis.getSorting().byY();\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/getComparator()", + "memberId": "extensions/sorting/Sorting/getComparator", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "getComparator", + "static": false, + "returnType": "Comparator", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the order currently used.", + "description": "Returns the order currently used.", + "scratchblock": null, + "paramDocs": [], + "returns": "the comparator, or null if the sprites are not sorted", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/getComparator", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/isOn()", + "memberId": "extensions/sorting/Sorting/isOn", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "isOn", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether the sprites are being sorted.", + "description": "Checks whether the sprites are being sorted.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if an order is set", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/isOn", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/off()", + "memberId": "extensions/sorting/Sorting/off", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "off", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Draws sprites in the order they were added, which is the default.", + "description": "Draws sprites in the order they were added, which is the default.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/off", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/constructor()", + "memberId": "extensions/tiled/MapObject/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "constructor", + "static": false, + "returnType": "MapObject", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Represents a map object with various properties such as dimensions, position,\nvisibility, and\ntype. It also provides methods to retrieve property values in different\nformats and to get a\nShape representation of the map object.", + "description": "Represents a map object with various properties such as dimensions, position,\nvisibility, and\ntype. It also provides methods to retrieve property values in different\nformats and to get a\nShape representation of the map object.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getProperty(String)", + "memberId": "extensions/tiled/MapObject/getProperty", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getProperty", + "static": false, + "returnType": "String", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of a property with the specified name from the properties\nlist.", + "description": "Retrieves the value of a property with the specified name from the properties\nlist.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the value of the property with the specified name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getProperty", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getPropertyBoolean(String)", + "memberId": "extensions/tiled/MapObject/getPropertyBoolean", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getPropertyBoolean", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of the specified property as a boolean.", + "description": "Retrieves the value of the specified property as a boolean.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the boolean value of the property, or false if the property is not\n found or cannot be\n parsed as a boolean", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getPropertyBoolean", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getPropertyFloat(String)", + "memberId": "extensions/tiled/MapObject/getPropertyFloat", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getPropertyFloat", + "static": false, + "returnType": "float", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of a specified property as a float.", + "description": "Retrieves the value of a specified property as a float.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the float value of the specified property", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getPropertyFloat", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getPropertyInt(String)", + "memberId": "extensions/tiled/MapObject/getPropertyInt", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getPropertyInt", + "static": false, + "returnType": "int", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of a property with the specified name and converts it to\nan integer.", + "description": "Retrieves the value of a property with the specified name and converts it to\nan integer.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the integer value of the property", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getPropertyInt", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getShape()", + "memberId": "extensions/tiled/MapObject/getShape", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getShape", + "static": false, + "returnType": "Shape", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a Shape object representing the current map object. The type of Shape\nreturned depends\non the properties of the map object: - If the object is a point, a 1x1\nrectangle is returned. -\nIf the object is an ellipse, an Ellipse2D object with the specified width and\nheight is\nreturned. - If the object is a polygon, a Polygon object with the specified\npoints is returned.\n- If none of the above conditions are met, a rectangle with the specified\nwidth and height is\nreturned.", + "description": "Returns a Shape object representing the current map object. The type of Shape\nreturned depends\non the properties of the map object: - If the object is a point, a 1x1\nrectangle is returned. -\nIf the object is an ellipse, an Ellipse2D object with the specified width and\nheight is\nreturned. - If the object is a polygon, a Polygon object with the specified\npoints is returned.\n- If none of the above conditions are met, a rectangle with the specified\nwidth and height is\nreturned.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Shape object representing the current map object.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getShape", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/setClassName(String)", + "memberId": "extensions/tiled/MapObject/setClassName", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "setClassName", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "className" + ], + "params": [ + "String className" + ], + "summary": "Tiled 1.9 renamed an object's type to class; both end up in [type](type)\n(an explicit type wins).", + "description": "Tiled 1.9 renamed an object's type to class; both end up in [type](type)\n(an explicit type wins).", + "scratchblock": null, + "paramDocs": [ + "className: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/setClassName", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/Property/constructor()", + "memberId": "extensions/tiled/Property/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.Property", + "className": "Property", + "methodName": "constructor", + "static": false, + "returnType": "Property", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The Property class represents a property of a Tiled object. It includes fields for the property\nname, type, and value.", + "description": "The Property class represents a property of a Tiled object. It includes fields for the property\nname, type, and value.\n\nExample usage:\n\n```java\nProperty p = new Property();\np.name = \"myProperty\";\np.type = \"number\";\np.value = \"42\";\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/Property/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/Property/setText(String)", + "memberId": "extensions/tiled/Property/setText", + "owner": "org.openpatch.scratch.extensions.tiled.Property", + "className": "Property", + "methodName": "setText", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Multi-line strings are written as the element's text instead of a value\nattribute.", + "description": "Multi-line strings are written as the element's text instead of a value\nattribute.", + "scratchblock": null, + "paramDocs": [ + "text: the element text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/Property/setText", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/constructor(String,Stage)", + "memberId": "extensions/tiled/TiledMap/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "constructor", + "static": false, + "returnType": "TiledMap", + "parameterTypes": [ + "java.lang.String", + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "path", + "stage" + ], + "params": [ + "String path", + "Stage stage" + ], + "summary": "Constructs a new TiledMap object.", + "description": "Constructs a new TiledMap object.", + "scratchblock": null, + "paramDocs": [ + "path: the file path to the Tiled map XML file", + "stage: the stage to which this Tiled map belongs" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/getObjectsFromLayer(String)", + "memberId": "extensions/tiled/TiledMap/getObjectsFromLayer", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "getObjectsFromLayer", + "static": false, + "returnType": "MapObject[]", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the objects from a specified layer in the tiled map.", + "description": "Retrieves the objects from a specified layer in the tiled map.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the layer from which to retrieve objects" + ], + "returns": "an array of MapObject from the specified layer, or null if the layer\n does not exist", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/getObjectsFromLayer", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/stampLayerToBackground(String)", + "memberId": "extensions/tiled/TiledMap/stampLayerToBackground", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "stampLayerToBackground", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stamps a specified layer onto the background.", + "description": "Stamps a specified layer onto the background.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the layer to be stamped onto the background" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/stampLayerToBackground", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/stampLayerToForeground(String)", + "memberId": "extensions/tiled/TiledMap/stampLayerToForeground", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "stampLayerToForeground", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stamps the specified layer to the foreground.", + "description": "Stamps the specified layer to the foreground.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the layer to be stamped to the foreground" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/stampLayerToForeground", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/toString()", + "memberId": "extensions/tiled/TiledMap/toString", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "", + "description": "", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/toString", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TilesetImage/constructor()", + "memberId": "extensions/tiled/TilesetImage/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.TilesetImage", + "className": "TilesetImage", + "methodName": "constructor", + "static": false, + "returnType": "TilesetImage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "", + "description": "", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TilesetImage/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + } + ] +} diff --git a/catalogs/assets.json b/catalogs/assets.json new file mode 100644 index 00000000..067f4c30 --- /dev/null +++ b/catalogs/assets.json @@ -0,0 +1,12138 @@ +{ + "schemaVersion": 1, + "libraryVersion": "5.7.0", + "browserVersion": "5.7.0-browser.2", + "license": "CC0", + "images": [ + { + "id": "platformer/alienBeige_climb1", + "name": "alienBeige_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_climb1" + }, + { + "id": "platformer/alienBeige_climb2", + "name": "alienBeige_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_climb2" + }, + { + "id": "platformer/alienBeige_duck", + "name": "alienBeige_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_duck" + }, + { + "id": "platformer/alienBeige_front", + "name": "alienBeige_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_front" + }, + { + "id": "platformer/alienBeige_hit", + "name": "alienBeige_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_hit" + }, + { + "id": "platformer/alienBeige_jump", + "name": "alienBeige_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_jump" + }, + { + "id": "platformer/alienBeige_stand", + "name": "alienBeige_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_stand" + }, + { + "id": "platformer/alienBeige_swim1", + "name": "alienBeige_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_swim1" + }, + { + "id": "platformer/alienBeige_swim2", + "name": "alienBeige_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_swim2" + }, + { + "id": "platformer/alienBeige_walk1", + "name": "alienBeige_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_walk1" + }, + { + "id": "platformer/alienBeige_walk2", + "name": "alienBeige_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_walk2" + }, + { + "id": "platformer/alienBlue_climb1", + "name": "alienBlue_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_climb1" + }, + { + "id": "platformer/alienBlue_climb2", + "name": "alienBlue_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_climb2" + }, + { + "id": "platformer/alienBlue_duck", + "name": "alienBlue_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_duck" + }, + { + "id": "platformer/alienBlue_front", + "name": "alienBlue_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_front" + }, + { + "id": "platformer/alienBlue_hit", + "name": "alienBlue_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_hit" + }, + { + "id": "platformer/alienBlue_jump", + "name": "alienBlue_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_jump" + }, + { + "id": "platformer/alienBlue_stand", + "name": "alienBlue_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_stand" + }, + { + "id": "platformer/alienBlue_swim1", + "name": "alienBlue_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_swim1" + }, + { + "id": "platformer/alienBlue_swim2", + "name": "alienBlue_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_swim2" + }, + { + "id": "platformer/alienBlue_walk1", + "name": "alienBlue_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_walk1" + }, + { + "id": "platformer/alienBlue_walk2", + "name": "alienBlue_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_walk2" + }, + { + "id": "platformer/alienGreen_climb1", + "name": "alienGreen_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_climb1" + }, + { + "id": "platformer/alienGreen_climb2", + "name": "alienGreen_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_climb2" + }, + { + "id": "platformer/alienGreen_duck", + "name": "alienGreen_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_duck" + }, + { + "id": "platformer/alienGreen_front", + "name": "alienGreen_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_front" + }, + { + "id": "platformer/alienGreen_hit", + "name": "alienGreen_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_hit" + }, + { + "id": "platformer/alienGreen_jump", + "name": "alienGreen_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_jump" + }, + { + "id": "platformer/alienGreen_stand", + "name": "alienGreen_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_stand" + }, + { + "id": "platformer/alienGreen_swim1", + "name": "alienGreen_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_swim1" + }, + { + "id": "platformer/alienGreen_swim2", + "name": "alienGreen_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_swim2" + }, + { + "id": "platformer/alienGreen_walk1", + "name": "alienGreen_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_walk1" + }, + { + "id": "platformer/alienGreen_walk2", + "name": "alienGreen_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_walk2" + }, + { + "id": "platformer/alienPink_climb1", + "name": "alienPink_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_climb1" + }, + { + "id": "platformer/alienPink_climb2", + "name": "alienPink_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_climb2" + }, + { + "id": "platformer/alienPink_duck", + "name": "alienPink_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_duck" + }, + { + "id": "platformer/alienPink_front", + "name": "alienPink_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_front" + }, + { + "id": "platformer/alienPink_hit", + "name": "alienPink_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_hit" + }, + { + "id": "platformer/alienPink_jump", + "name": "alienPink_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_jump" + }, + { + "id": "platformer/alienPink_stand", + "name": "alienPink_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_stand" + }, + { + "id": "platformer/alienPink_swim1", + "name": "alienPink_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_swim1" + }, + { + "id": "platformer/alienPink_swim2", + "name": "alienPink_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_swim2" + }, + { + "id": "platformer/alienPink_walk1", + "name": "alienPink_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_walk1" + }, + { + "id": "platformer/alienPink_walk2", + "name": "alienPink_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_walk2" + }, + { + "id": "platformer/alienYellow_climb1", + "name": "alienYellow_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_climb1" + }, + { + "id": "platformer/alienYellow_climb2", + "name": "alienYellow_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_climb2" + }, + { + "id": "platformer/alienYellow_duck", + "name": "alienYellow_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_duck" + }, + { + "id": "platformer/alienYellow_front", + "name": "alienYellow_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_front" + }, + { + "id": "platformer/alienYellow_hit", + "name": "alienYellow_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_hit" + }, + { + "id": "platformer/alienYellow_jump", + "name": "alienYellow_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_jump" + }, + { + "id": "platformer/alienYellow_stand", + "name": "alienYellow_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_stand" + }, + { + "id": "platformer/alienYellow_swim1", + "name": "alienYellow_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_swim1" + }, + { + "id": "platformer/alienYellow_swim2", + "name": "alienYellow_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_swim2" + }, + { + "id": "platformer/alienYellow_walk1", + "name": "alienYellow_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_walk1" + }, + { + "id": "platformer/alienYellow_walk2", + "name": "alienYellow_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_walk2" + }, + { + "id": "platformer/barnacle", + "name": "barnacle", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "barnacle" + }, + { + "id": "platformer/barnacle_attack", + "name": "barnacle_attack", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "barnacle_attack" + }, + { + "id": "platformer/barnacle_dead", + "name": "barnacle_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "barnacle_dead" + }, + { + "id": "platformer/bee", + "name": "bee", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3510, + "y": 130, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "bee" + }, + { + "id": "platformer/bee_dead", + "name": "bee_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3510, + "y": 0, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "bee_dead" + }, + { + "id": "platformer/bee_move", + "name": "bee_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1820, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "bee_move" + }, + { + "id": "platformer/bomb", + "name": "bomb", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bomb" + }, + { + "id": "platformer/bombWhite", + "name": "bombWhite", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bombWhite" + }, + { + "id": "platformer/boxCoin", + "name": "boxCoin", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin" + }, + { + "id": "platformer/boxCoin_boxed", + "name": "boxCoin_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin_boxed" + }, + { + "id": "platformer/boxCoin_disabled", + "name": "boxCoin_disabled", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin_disabled" + }, + { + "id": "platformer/boxCoin_disabled_boxed", + "name": "boxCoin_disabled_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin_disabled_boxed" + }, + { + "id": "platformer/boxCrate", + "name": "boxCrate", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate" + }, + { + "id": "platformer/boxCrate_double", + "name": "boxCrate_double", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate_double" + }, + { + "id": "platformer/boxCrate_single", + "name": "boxCrate_single", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate_single" + }, + { + "id": "platformer/boxCrate_warning", + "name": "boxCrate_warning", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate_warning" + }, + { + "id": "platformer/boxExplosive", + "name": "boxExplosive", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxExplosive" + }, + { + "id": "platformer/boxExplosive_disabled", + "name": "boxExplosive_disabled", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxExplosive_disabled" + }, + { + "id": "platformer/boxExplosive_used", + "name": "boxExplosive_used", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxExplosive_used" + }, + { + "id": "platformer/boxItem", + "name": "boxItem", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem" + }, + { + "id": "platformer/boxItem_boxed", + "name": "boxItem_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem_boxed" + }, + { + "id": "platformer/boxItem_disabled", + "name": "boxItem_disabled", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem_disabled" + }, + { + "id": "platformer/boxItem_disabled_boxed", + "name": "boxItem_disabled_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem_disabled_boxed" + }, + { + "id": "platformer/brickBrown", + "name": "brickBrown", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "brickBrown" + }, + { + "id": "platformer/brickGrey", + "name": "brickGrey", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "brickGrey" + }, + { + "id": "platformer/bridgeA", + "name": "bridgeA", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bridgeA" + }, + { + "id": "platformer/bridgeB", + "name": "bridgeB", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bridgeB" + }, + { + "id": "platformer/bush", + "name": "bush", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bush" + }, + { + "id": "platformer/cactus", + "name": "cactus", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "cactus" + }, + { + "id": "platformer/chain", + "name": "chain", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "chain" + }, + { + "id": "platformer/coinBronze", + "name": "coinBronze", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "coinBronze" + }, + { + "id": "platformer/coinGold", + "name": "coinGold", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "coinGold" + }, + { + "id": "platformer/coinSilver", + "name": "coinSilver", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "coinSilver" + }, + { + "id": "platformer/dirt", + "name": "dirt", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirt" + }, + { + "id": "platformer/dirtCenter", + "name": "dirtCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCenter" + }, + { + "id": "platformer/dirtCenter_rounded", + "name": "dirtCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCenter_rounded" + }, + { + "id": "platformer/dirtCliffAlt_left", + "name": "dirtCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliffAlt_left" + }, + { + "id": "platformer/dirtCliffAlt_right", + "name": "dirtCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliffAlt_right" + }, + { + "id": "platformer/dirtCliff_left", + "name": "dirtCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliff_left" + }, + { + "id": "platformer/dirtCliff_right", + "name": "dirtCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliff_right" + }, + { + "id": "platformer/dirtCorner_left", + "name": "dirtCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCorner_left" + }, + { + "id": "platformer/dirtCorner_right", + "name": "dirtCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCorner_right" + }, + { + "id": "platformer/dirtHalf", + "name": "dirtHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf" + }, + { + "id": "platformer/dirtHalf_left", + "name": "dirtHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf_left" + }, + { + "id": "platformer/dirtHalf_mid", + "name": "dirtHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf_mid" + }, + { + "id": "platformer/dirtHalf_right", + "name": "dirtHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf_right" + }, + { + "id": "platformer/dirtHill_left", + "name": "dirtHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHill_left" + }, + { + "id": "platformer/dirtHill_right", + "name": "dirtHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHill_right" + }, + { + "id": "platformer/dirtLeft", + "name": "dirtLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtLeft" + }, + { + "id": "platformer/dirtMid", + "name": "dirtMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtMid" + }, + { + "id": "platformer/dirtRight", + "name": "dirtRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtRight" + }, + { + "id": "platformer/doorClosed_mid", + "name": "doorClosed_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorClosed_mid" + }, + { + "id": "platformer/doorClosed_top", + "name": "doorClosed_top", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorClosed_top" + }, + { + "id": "platformer/doorOpen_mid", + "name": "doorOpen_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorOpen_mid" + }, + { + "id": "platformer/doorOpen_top", + "name": "doorOpen_top", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorOpen_top" + }, + { + "id": "platformer/fence", + "name": "fence", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "fence" + }, + { + "id": "platformer/fenceBroken", + "name": "fenceBroken", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "fenceBroken" + }, + { + "id": "platformer/fireball", + "name": "fireball", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 650, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fireball" + }, + { + "id": "platformer/fishBlue", + "name": "fishBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1690, + "width": 128, + "height": 128, + "direction": 0.0, + "referenceName": "fishBlue" + }, + { + "id": "platformer/fishBlue_dead", + "name": "fishBlue_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1560, + "width": 128, + "height": 128, + "direction": 0.0, + "referenceName": "fishBlue_dead" + }, + { + "id": "platformer/fishBlue_fall", + "name": "fishBlue_fall", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1430, + "width": 128, + "height": 128, + "direction": 0.0, + "referenceName": "fishBlue_fall" + }, + { + "id": "platformer/fishGreen", + "name": "fishGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishGreen" + }, + { + "id": "platformer/fishGreen_dead", + "name": "fishGreen_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishGreen_dead" + }, + { + "id": "platformer/fishGreen_move", + "name": "fishGreen_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishGreen_move" + }, + { + "id": "platformer/fishPink", + "name": "fishPink", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 910, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishPink" + }, + { + "id": "platformer/fishPink_dead", + "name": "fishPink_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 780, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishPink_dead" + }, + { + "id": "platformer/fishPink_move", + "name": "fishPink_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 650, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishPink_move" + }, + { + "id": "platformer/flagBlue1", + "name": "flagBlue1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagBlue1" + }, + { + "id": "platformer/flagBlue2", + "name": "flagBlue2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagBlue2" + }, + { + "id": "platformer/flagBlue_down", + "name": "flagBlue_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagBlue_down" + }, + { + "id": "platformer/flagGreen1", + "name": "flagGreen1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagGreen1" + }, + { + "id": "platformer/flagGreen2", + "name": "flagGreen2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagGreen2" + }, + { + "id": "platformer/flagGreen_down", + "name": "flagGreen_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagGreen_down" + }, + { + "id": "platformer/flagRed1", + "name": "flagRed1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagRed1" + }, + { + "id": "platformer/flagRed2", + "name": "flagRed2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagRed2" + }, + { + "id": "platformer/flagRed_down", + "name": "flagRed_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagRed_down" + }, + { + "id": "platformer/flagYellow1", + "name": "flagYellow1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagYellow1" + }, + { + "id": "platformer/flagYellow2", + "name": "flagYellow2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagYellow2" + }, + { + "id": "platformer/flagYellow_down", + "name": "flagYellow_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagYellow_down" + }, + { + "id": "platformer/fly", + "name": "fly", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 520, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fly" + }, + { + "id": "platformer/fly_dead", + "name": "fly_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 390, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fly_dead" + }, + { + "id": "platformer/fly_move", + "name": "fly_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 260, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fly_move" + }, + { + "id": "platformer/frog", + "name": "frog", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 130, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "frog" + }, + { + "id": "platformer/frog_dead", + "name": "frog_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 0, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "frog_dead" + }, + { + "id": "platformer/frog_move", + "name": "frog_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1820, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "frog_move" + }, + { + "id": "platformer/gemBlue", + "name": "gemBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemBlue" + }, + { + "id": "platformer/gemGreen", + "name": "gemGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemGreen" + }, + { + "id": "platformer/gemRed", + "name": "gemRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemRed" + }, + { + "id": "platformer/gemYellow", + "name": "gemYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemYellow" + }, + { + "id": "platformer/grass", + "name": "grass", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grass" + }, + { + "id": "platformer/grassCenter", + "name": "grassCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCenter" + }, + { + "id": "platformer/grassCenter_round", + "name": "grassCenter_round", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCenter_round" + }, + { + "id": "platformer/grassCliffAlt_left", + "name": "grassCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliffAlt_left" + }, + { + "id": "platformer/grassCliffAlt_right", + "name": "grassCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliffAlt_right" + }, + { + "id": "platformer/grassCliff_left", + "name": "grassCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliff_left" + }, + { + "id": "platformer/grassCliff_right", + "name": "grassCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliff_right" + }, + { + "id": "platformer/grassCorner_left", + "name": "grassCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCorner_left" + }, + { + "id": "platformer/grassCorner_right", + "name": "grassCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCorner_right" + }, + { + "id": "platformer/grassHalf", + "name": "grassHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf" + }, + { + "id": "platformer/grassHalf_left", + "name": "grassHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf_left" + }, + { + "id": "platformer/grassHalf_mid", + "name": "grassHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf_mid" + }, + { + "id": "platformer/grassHalf_right", + "name": "grassHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf_right" + }, + { + "id": "platformer/grassHill_left", + "name": "grassHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHill_left" + }, + { + "id": "platformer/grassHill_right", + "name": "grassHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHill_right" + }, + { + "id": "platformer/grassLeft", + "name": "grassLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassLeft" + }, + { + "id": "platformer/grassMid", + "name": "grassMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassMid" + }, + { + "id": "platformer/grassRight", + "name": "grassRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassRight" + }, + { + "id": "platformer/hud0", + "name": "hud0", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud0" + }, + { + "id": "platformer/hud1", + "name": "hud1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud1" + }, + { + "id": "platformer/hud2", + "name": "hud2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud2" + }, + { + "id": "platformer/hud3", + "name": "hud3", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud3" + }, + { + "id": "platformer/hud4", + "name": "hud4", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud4" + }, + { + "id": "platformer/hud5", + "name": "hud5", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud5" + }, + { + "id": "platformer/hud6", + "name": "hud6", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud6" + }, + { + "id": "platformer/hud7", + "name": "hud7", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud7" + }, + { + "id": "platformer/hud8", + "name": "hud8", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud8" + }, + { + "id": "platformer/hud9", + "name": "hud9", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud9" + }, + { + "id": "platformer/hudCoin", + "name": "hudCoin", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudCoin" + }, + { + "id": "platformer/hudHeart_empty", + "name": "hudHeart_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudHeart_empty" + }, + { + "id": "platformer/hudHeart_full", + "name": "hudHeart_full", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudHeart_full" + }, + { + "id": "platformer/hudHeart_half", + "name": "hudHeart_half", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudHeart_half" + }, + { + "id": "platformer/hudJewel_blue", + "name": "hudJewel_blue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_blue" + }, + { + "id": "platformer/hudJewel_blue_empty", + "name": "hudJewel_blue_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_blue_empty" + }, + { + "id": "platformer/hudJewel_green", + "name": "hudJewel_green", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_green" + }, + { + "id": "platformer/hudJewel_green_empty", + "name": "hudJewel_green_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_green_empty" + }, + { + "id": "platformer/hudJewel_red", + "name": "hudJewel_red", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_red" + }, + { + "id": "platformer/hudJewel_red_empty", + "name": "hudJewel_red_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_red_empty" + }, + { + "id": "platformer/hudJewel_yellow", + "name": "hudJewel_yellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_yellow" + }, + { + "id": "platformer/hudJewel_yellow_empty", + "name": "hudJewel_yellow_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_yellow_empty" + }, + { + "id": "platformer/hudKey_blue", + "name": "hudKey_blue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_blue" + }, + { + "id": "platformer/hudKey_blue_empty", + "name": "hudKey_blue_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_blue_empty" + }, + { + "id": "platformer/hudKey_green", + "name": "hudKey_green", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_green" + }, + { + "id": "platformer/hudKey_green_empty", + "name": "hudKey_green_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_green_empty" + }, + { + "id": "platformer/hudKey_red", + "name": "hudKey_red", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_red" + }, + { + "id": "platformer/hudKey_red_empty", + "name": "hudKey_red_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_red_empty" + }, + { + "id": "platformer/hudKey_yellow", + "name": "hudKey_yellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_yellow" + }, + { + "id": "platformer/hudKey_yellow_empty", + "name": "hudKey_yellow_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_yellow_empty" + }, + { + "id": "platformer/hudPlayer_beige", + "name": "hudPlayer_beige", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_beige" + }, + { + "id": "platformer/hudPlayer_blue", + "name": "hudPlayer_blue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_blue" + }, + { + "id": "platformer/hudPlayer_green", + "name": "hudPlayer_green", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_green" + }, + { + "id": "platformer/hudPlayer_pink", + "name": "hudPlayer_pink", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_pink" + }, + { + "id": "platformer/hudPlayer_yellow", + "name": "hudPlayer_yellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_yellow" + }, + { + "id": "platformer/hudX", + "name": "hudX", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudX" + }, + { + "id": "platformer/keyBlue", + "name": "keyBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyBlue" + }, + { + "id": "platformer/keyGreen", + "name": "keyGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyGreen" + }, + { + "id": "platformer/keyRed", + "name": "keyRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyRed" + }, + { + "id": "platformer/keyYellow", + "name": "keyYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyYellow" + }, + { + "id": "platformer/ladderMid", + "name": "ladderMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "ladderMid" + }, + { + "id": "platformer/ladderTop", + "name": "ladderTop", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "ladderTop" + }, + { + "id": "platformer/ladybug", + "name": "ladybug", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1690, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "ladybug" + }, + { + "id": "platformer/ladybug_fly", + "name": "ladybug_fly", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1560, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "ladybug_fly" + }, + { + "id": "platformer/ladybug_move", + "name": "ladybug_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1430, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "ladybug_move" + }, + { + "id": "platformer/lava", + "name": "lava", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lava" + }, + { + "id": "platformer/lavaTop_high", + "name": "lavaTop_high", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lavaTop_high" + }, + { + "id": "platformer/lavaTop_low", + "name": "lavaTop_low", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lavaTop_low" + }, + { + "id": "platformer/leverLeft", + "name": "leverLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "leverLeft" + }, + { + "id": "platformer/leverMid", + "name": "leverMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "leverMid" + }, + { + "id": "platformer/leverRight", + "name": "leverRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "leverRight" + }, + { + "id": "platformer/lockBlue", + "name": "lockBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockBlue" + }, + { + "id": "platformer/lockGreen", + "name": "lockGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockGreen" + }, + { + "id": "platformer/lockRed", + "name": "lockRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockRed" + }, + { + "id": "platformer/lockYellow", + "name": "lockYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockYellow" + }, + { + "id": "platformer/mouse", + "name": "mouse", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "mouse" + }, + { + "id": "platformer/mouse_dead", + "name": "mouse_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "mouse_dead" + }, + { + "id": "platformer/mouse_move", + "name": "mouse_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "mouse_move" + }, + { + "id": "platformer/mushroomBrown", + "name": "mushroomBrown", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "mushroomBrown" + }, + { + "id": "platformer/mushroomRed", + "name": "mushroomRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "mushroomRed" + }, + { + "id": "platformer/planet", + "name": "planet", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planet" + }, + { + "id": "platformer/planetCenter", + "name": "planetCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCenter" + }, + { + "id": "platformer/planetCenter_rounded", + "name": "planetCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCenter_rounded" + }, + { + "id": "platformer/planetCliffAlt_left", + "name": "planetCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliffAlt_left" + }, + { + "id": "platformer/planetCliffAlt_right", + "name": "planetCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliffAlt_right" + }, + { + "id": "platformer/planetCliff_left", + "name": "planetCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliff_left" + }, + { + "id": "platformer/planetCliff_right", + "name": "planetCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliff_right" + }, + { + "id": "platformer/planetCorner_left", + "name": "planetCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCorner_left" + }, + { + "id": "platformer/planetCorner_right", + "name": "planetCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCorner_right" + }, + { + "id": "platformer/planetHalf", + "name": "planetHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf" + }, + { + "id": "platformer/planetHalf_left", + "name": "planetHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf_left" + }, + { + "id": "platformer/planetHalf_mid", + "name": "planetHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf_mid" + }, + { + "id": "platformer/planetHalf_right", + "name": "planetHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf_right" + }, + { + "id": "platformer/planetHill_left", + "name": "planetHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHill_left" + }, + { + "id": "platformer/planetHill_right", + "name": "planetHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHill_right" + }, + { + "id": "platformer/planetLeft", + "name": "planetLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetLeft" + }, + { + "id": "platformer/planetMid", + "name": "planetMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetMid" + }, + { + "id": "platformer/planetRight", + "name": "planetRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetRight" + }, + { + "id": "platformer/plantPurple", + "name": "plantPurple", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "plantPurple" + }, + { + "id": "platformer/rock", + "name": "rock", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "rock" + }, + { + "id": "platformer/sand", + "name": "sand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sand" + }, + { + "id": "platformer/sandCenter", + "name": "sandCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCenter" + }, + { + "id": "platformer/sandCenter_rounded", + "name": "sandCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCenter_rounded" + }, + { + "id": "platformer/sandCliffAlt_left", + "name": "sandCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliffAlt_left" + }, + { + "id": "platformer/sandCliffAlt_right", + "name": "sandCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliffAlt_right" + }, + { + "id": "platformer/sandCliff_left", + "name": "sandCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliff_left" + }, + { + "id": "platformer/sandCliff_right", + "name": "sandCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliff_right" + }, + { + "id": "platformer/sandCorner_leftg", + "name": "sandCorner_leftg", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCorner_leftg" + }, + { + "id": "platformer/sandCorner_right", + "name": "sandCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCorner_right" + }, + { + "id": "platformer/sandHalf", + "name": "sandHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf" + }, + { + "id": "platformer/sandHalf_left", + "name": "sandHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf_left" + }, + { + "id": "platformer/sandHalf_mid", + "name": "sandHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf_mid" + }, + { + "id": "platformer/sandHalf_right", + "name": "sandHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf_right" + }, + { + "id": "platformer/sandHill_left", + "name": "sandHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHill_left" + }, + { + "id": "platformer/sandHill_right", + "name": "sandHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHill_right" + }, + { + "id": "platformer/sandLeft", + "name": "sandLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandLeft" + }, + { + "id": "platformer/sandMid", + "name": "sandMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandMid" + }, + { + "id": "platformer/sandRight", + "name": "sandRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandRight" + }, + { + "id": "platformer/saw", + "name": "saw", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "saw" + }, + { + "id": "platformer/sawHalf", + "name": "sawHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sawHalf" + }, + { + "id": "platformer/sawHalf_dead", + "name": "sawHalf_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sawHalf_dead" + }, + { + "id": "platformer/sawHalf_move", + "name": "sawHalf_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3510, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sawHalf_move" + }, + { + "id": "platformer/saw_dead", + "name": "saw_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "saw_dead" + }, + { + "id": "platformer/saw_move", + "name": "saw_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "saw_move" + }, + { + "id": "platformer/sign", + "name": "sign", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sign" + }, + { + "id": "platformer/signExit", + "name": "signExit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "signExit" + }, + { + "id": "platformer/signLeft", + "name": "signLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "signLeft" + }, + { + "id": "platformer/signRight", + "name": "signRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "signRight" + }, + { + "id": "platformer/slimeBlock", + "name": "slimeBlock", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "slimeBlock" + }, + { + "id": "platformer/slimeBlock_dead", + "name": "slimeBlock_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "slimeBlock_dead" + }, + { + "id": "platformer/slimeBlock_move", + "name": "slimeBlock_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "slimeBlock_move" + }, + { + "id": "platformer/slimeBlue", + "name": "slimeBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1690, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue" + }, + { + "id": "platformer/slimeBlue_dead", + "name": "slimeBlue_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1560, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue_dead" + }, + { + "id": "platformer/slimeBlue_hit", + "name": "slimeBlue_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1430, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue_hit" + }, + { + "id": "platformer/slimeBlue_move", + "name": "slimeBlue_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue_move" + }, + { + "id": "platformer/slimeGreen", + "name": "slimeGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen" + }, + { + "id": "platformer/slimeGreen_dead", + "name": "slimeGreen_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen_dead" + }, + { + "id": "platformer/slimeGreen_hit", + "name": "slimeGreen_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 910, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen_hit" + }, + { + "id": "platformer/slimeGreen_move", + "name": "slimeGreen_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 780, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen_move" + }, + { + "id": "platformer/slimePurple", + "name": "slimePurple", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 650, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple" + }, + { + "id": "platformer/slimePurple_dead", + "name": "slimePurple_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 520, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple_dead" + }, + { + "id": "platformer/slimePurple_hit", + "name": "slimePurple_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 390, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple_hit" + }, + { + "id": "platformer/slimePurple_move", + "name": "slimePurple_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 260, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple_move" + }, + { + "id": "platformer/snail", + "name": "snail", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 130, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "snail" + }, + { + "id": "platformer/snail_move", + "name": "snail_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 0, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "snail_move" + }, + { + "id": "platformer/snail_shell", + "name": "snail_shell", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1820, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "snail_shell" + }, + { + "id": "platformer/snow", + "name": "snow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snow" + }, + { + "id": "platformer/snowCenter", + "name": "snowCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCenter" + }, + { + "id": "platformer/snowCenter_rounded", + "name": "snowCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCenter_rounded" + }, + { + "id": "platformer/snowCliffAlt_left", + "name": "snowCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliffAlt_left" + }, + { + "id": "platformer/snowCliffAlt_right", + "name": "snowCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliffAlt_right" + }, + { + "id": "platformer/snowCliff_left", + "name": "snowCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliff_left" + }, + { + "id": "platformer/snowCliff_right", + "name": "snowCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliff_right" + }, + { + "id": "platformer/snowCorner_left", + "name": "snowCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCorner_left" + }, + { + "id": "platformer/snowCorner_right", + "name": "snowCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCorner_right" + }, + { + "id": "platformer/snowHalf", + "name": "snowHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf" + }, + { + "id": "platformer/snowHalf_left", + "name": "snowHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf_left" + }, + { + "id": "platformer/snowHalf_mid", + "name": "snowHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf_mid" + }, + { + "id": "platformer/snowHalf_right", + "name": "snowHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf_right" + }, + { + "id": "platformer/snowHill_left", + "name": "snowHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHill_left" + }, + { + "id": "platformer/snowHill_right", + "name": "snowHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHill_right" + }, + { + "id": "platformer/snowLeft", + "name": "snowLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowLeft" + }, + { + "id": "platformer/snowMid", + "name": "snowMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowMid" + }, + { + "id": "platformer/snowRight", + "name": "snowRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowRight" + }, + { + "id": "platformer/spikes", + "name": "spikes", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "spikes" + }, + { + "id": "platformer/spring", + "name": "spring", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "spring" + }, + { + "id": "platformer/sprung", + "name": "sprung", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sprung" + }, + { + "id": "platformer/star", + "name": "star", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "star" + }, + { + "id": "platformer/stone", + "name": "stone", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stone" + }, + { + "id": "platformer/stoneCenter", + "name": "stoneCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCenter" + }, + { + "id": "platformer/stoneCenter_rounded", + "name": "stoneCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCenter_rounded" + }, + { + "id": "platformer/stoneCliffAlt_left", + "name": "stoneCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliffAlt_left" + }, + { + "id": "platformer/stoneCliffAlt_right", + "name": "stoneCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliffAlt_right" + }, + { + "id": "platformer/stoneCliff_left", + "name": "stoneCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliff_left" + }, + { + "id": "platformer/stoneCliff_right", + "name": "stoneCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliff_right" + }, + { + "id": "platformer/stoneCorner_left", + "name": "stoneCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCorner_left" + }, + { + "id": "platformer/stoneCorner_right", + "name": "stoneCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1808, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCorner_right" + }, + { + "id": "platformer/stoneHalf", + "name": "stoneHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1678, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf" + }, + { + "id": "platformer/stoneHalf_left", + "name": "stoneHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1548, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf_left" + }, + { + "id": "platformer/stoneHalf_mid", + "name": "stoneHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf_mid" + }, + { + "id": "platformer/stoneHalf_right", + "name": "stoneHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf_right" + }, + { + "id": "platformer/stoneHill_left", + "name": "stoneHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHill_left" + }, + { + "id": "platformer/stoneHill_right", + "name": "stoneHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHill_right" + }, + { + "id": "platformer/stoneLeft", + "name": "stoneLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneLeft" + }, + { + "id": "platformer/stoneMid", + "name": "stoneMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneMid" + }, + { + "id": "platformer/stoneRight", + "name": "stoneRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneRight" + }, + { + "id": "platformer/switchBlue", + "name": "switchBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchBlue" + }, + { + "id": "platformer/switchBlue_pressed", + "name": "switchBlue_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchBlue_pressed" + }, + { + "id": "platformer/switchGreen", + "name": "switchGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchGreen" + }, + { + "id": "platformer/switchGreen_pressed", + "name": "switchGreen_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchGreen_pressed" + }, + { + "id": "platformer/switchRed", + "name": "switchRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchRed" + }, + { + "id": "platformer/switchRed_pressed", + "name": "switchRed_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchRed_pressed" + }, + { + "id": "platformer/switchYellow", + "name": "switchYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchYellow" + }, + { + "id": "platformer/switchYellow_pressed", + "name": "switchYellow_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchYellow_pressed" + }, + { + "id": "platformer/torch1", + "name": "torch1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "torch1" + }, + { + "id": "platformer/torch2", + "name": "torch2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "torch2" + }, + { + "id": "platformer/torchOff", + "name": "torchOff", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "torchOff" + }, + { + "id": "platformer/water", + "name": "water", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "water" + }, + { + "id": "platformer/waterTop_high", + "name": "waterTop_high", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "waterTop_high" + }, + { + "id": "platformer/waterTop_low", + "name": "waterTop_low", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "waterTop_low" + }, + { + "id": "platformer/weight", + "name": "weight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "weight" + }, + { + "id": "platformer/weightAttached", + "name": "weightAttached", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "weightAttached" + }, + { + "id": "platformer/window", + "name": "window", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "window" + }, + { + "id": "platformer/wormGreen", + "name": "wormGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1690, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormGreen" + }, + { + "id": "platformer/wormGreen_dead", + "name": "wormGreen_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1560, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormGreen_dead" + }, + { + "id": "platformer/wormGreen_move", + "name": "wormGreen_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1430, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormGreen_move" + }, + { + "id": "platformer/wormPink", + "name": "wormPink", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormPink" + }, + { + "id": "platformer/wormPink_dead", + "name": "wormPink_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormPink_dead" + }, + { + "id": "platformer/wormPink_move", + "name": "wormPink_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormPink_move" + }, + { + "id": "jumper/bronze_1", + "name": "bronze_1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 707, + "y": 296, + "width": 84, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_1" + }, + { + "id": "jumper/bronze_2", + "name": "bronze_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 206, + "width": 66, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_2" + }, + { + "id": "jumper/bronze_3", + "name": "bronze_3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 899, + "y": 116, + "width": 50, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_3" + }, + { + "id": "jumper/bronze_4", + "name": "bronze_4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 670, + "y": 406, + "width": 14, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_4" + }, + { + "id": "jumper/bubble", + "name": "bubble", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1662, + "width": 211, + "height": 215, + "direction": 90.0, + "referenceName": "bubble" + }, + { + "id": "jumper/bunny1_hurt", + "name": "bunny1_hurt", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 946, + "width": 150, + "height": 174, + "direction": 90.0, + "referenceName": "bunny1_hurt" + }, + { + "id": "jumper/bunny1_jump", + "name": "bunny1_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 763, + "width": 150, + "height": 181, + "direction": 90.0, + "referenceName": "bunny1_jump" + }, + { + "id": "jumper/bunny1_ready", + "name": "bunny1_ready", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 614, + "y": 1063, + "width": 120, + "height": 191, + "direction": 90.0, + "referenceName": "bunny1_ready" + }, + { + "id": "jumper/bunny1_stand", + "name": "bunny1_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 690, + "y": 406, + "width": 120, + "height": 201, + "direction": 90.0, + "referenceName": "bunny1_stand" + }, + { + "id": "jumper/bunny1_walk1", + "name": "bunny1_walk1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 678, + "y": 860, + "width": 120, + "height": 201, + "direction": 90.0, + "referenceName": "bunny1_walk1" + }, + { + "id": "jumper/bunny1_walk2", + "name": "bunny1_walk2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 692, + "y": 1458, + "width": 120, + "height": 207, + "direction": 90.0, + "referenceName": "bunny1_walk2" + }, + { + "id": "jumper/bunny2_hurt", + "name": "bunny2_hurt", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 411, + "y": 1866, + "width": 150, + "height": 174, + "direction": 90.0, + "referenceName": "bunny2_hurt" + }, + { + "id": "jumper/bunny2_jump", + "name": "bunny2_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 416, + "y": 1660, + "width": 150, + "height": 181, + "direction": 90.0, + "referenceName": "bunny2_jump" + }, + { + "id": "jumper/bunny2_ready", + "name": "bunny2_ready", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 581, + "y": 1265, + "width": 121, + "height": 191, + "direction": 90.0, + "referenceName": "bunny2_ready" + }, + { + "id": "jumper/bunny2_stand", + "name": "bunny2_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 584, + "y": 0, + "width": 121, + "height": 201, + "direction": 90.0, + "referenceName": "bunny2_stand" + }, + { + "id": "jumper/bunny2_walk1", + "name": "bunny2_walk1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 584, + "y": 203, + "width": 121, + "height": 201, + "direction": 90.0, + "referenceName": "bunny2_walk1" + }, + { + "id": "jumper/bunny2_walk2", + "name": "bunny2_walk2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 678, + "y": 651, + "width": 121, + "height": 207, + "direction": 90.0, + "referenceName": "bunny2_walk2" + }, + { + "id": "jumper/cactus", + "name": "cactus", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 707, + "y": 134, + "width": 117, + "height": 160, + "direction": 90.0, + "referenceName": "jumper/cactus" + }, + { + "id": "jumper/carrot", + "name": "carrot", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 820, + "y": 1733, + "width": 78, + "height": 70, + "direction": 90.0, + "referenceName": "carrot" + }, + { + "id": "jumper/carrot_gold", + "name": "carrot_gold", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 814, + "y": 1661, + "width": 78, + "height": 70, + "direction": 90.0, + "referenceName": "carrot_gold" + }, + { + "id": "jumper/carrots", + "name": "carrots", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 812, + "y": 554, + "width": 54, + "height": 49, + "direction": 90.0, + "referenceName": "carrots" + }, + { + "id": "jumper/cloud", + "name": "cloud", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1152, + "width": 260, + "height": 134, + "direction": 90.0, + "referenceName": "cloud" + }, + { + "id": "jumper/coin_bronze", + "name": "coin_bronze", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 329, + "y": 1390, + "width": 60, + "height": 61, + "direction": 90.0, + "referenceName": "coin_bronze" + }, + { + "id": "jumper/coin_gold", + "name": "coin_gold", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 244, + "y": 1981, + "width": 61, + "height": 61, + "direction": 90.0, + "referenceName": "coin_gold" + }, + { + "id": "jumper/coin_silver", + "name": "coin_silver", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 307, + "y": 1981, + "width": 61, + "height": 61, + "direction": 90.0, + "referenceName": "coin_silver" + }, + { + "id": "jumper/flame", + "name": "flame", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 900, + "y": 1733, + "width": 41, + "height": 80, + "direction": 90.0, + "referenceName": "flame" + }, + { + "id": "jumper/flyMan_fly", + "name": "flyMan_fly", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 566, + "y": 510, + "width": 122, + "height": 139, + "direction": 90.0, + "referenceName": "flyMan_fly" + }, + { + "id": "jumper/flyMan_jump", + "name": "flyMan_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 568, + "y": 1534, + "width": 122, + "height": 135, + "direction": 90.0, + "referenceName": "flyMan_jump" + }, + { + "id": "jumper/flyMan_stand", + "name": "flyMan_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 568, + "y": 1671, + "width": 122, + "height": 139, + "direction": 90.0, + "referenceName": "flyMan_stand" + }, + { + "id": "jumper/flyMan_still_fly", + "name": "flyMan_still_fly", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 692, + "y": 1667, + "width": 120, + "height": 132, + "direction": 90.0, + "referenceName": "flyMan_still_fly" + }, + { + "id": "jumper/flyMan_still_jump", + "name": "flyMan_still_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 698, + "y": 1801, + "width": 120, + "height": 128, + "direction": 90.0, + "referenceName": "flyMan_still_jump" + }, + { + "id": "jumper/flyMan_still_stand", + "name": "flyMan_still_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 707, + "y": 0, + "width": 120, + "height": 132, + "direction": 90.0, + "referenceName": "flyMan_still_stand" + }, + { + "id": "jumper/gold_1", + "name": "gold_1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 698, + "y": 1931, + "width": 84, + "height": 84, + "direction": 90.0, + "referenceName": "gold_1" + }, + { + "id": "jumper/gold_2", + "name": "gold_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 829, + "y": 0, + "width": 66, + "height": 84, + "direction": 90.0, + "referenceName": "gold_2" + }, + { + "id": "jumper/gold_3", + "name": "gold_3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 897, + "y": 1574, + "width": 50, + "height": 84, + "direction": 90.0, + "referenceName": "gold_3" + }, + { + "id": "jumper/gold_4", + "name": "gold_4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 645, + "y": 651, + "width": 15, + "height": 84, + "direction": 90.0, + "referenceName": "gold_4" + }, + { + "id": "jumper/grass1", + "name": "grass1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 868, + "y": 1877, + "width": 58, + "height": 57, + "direction": 90.0, + "referenceName": "grass1" + }, + { + "id": "jumper/grass2", + "name": "grass2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 784, + "y": 1931, + "width": 82, + "height": 70, + "direction": 90.0, + "referenceName": "grass2" + }, + { + "id": "jumper/grass_brown1", + "name": "grass_brown1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 534, + "y": 1063, + "width": 58, + "height": 57, + "direction": 90.0, + "referenceName": "grass_brown1" + }, + { + "id": "jumper/grass_brown2", + "name": "grass_brown2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 801, + "y": 752, + "width": 82, + "height": 70, + "direction": 90.0, + "referenceName": "grass_brown2" + }, + { + "id": "jumper/ground_cake", + "name": "ground_cake", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 576, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_cake" + }, + { + "id": "jumper/ground_cake_broken", + "name": "ground_cake_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 0, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_cake_broken" + }, + { + "id": "jumper/ground_cake_small", + "name": "ground_cake_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 218, + "y": 1456, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_cake_small" + }, + { + "id": "jumper/ground_cake_small_broken", + "name": "ground_cake_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 262, + "y": 1152, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_cake_small_broken" + }, + { + "id": "jumper/ground_grass", + "name": "ground_grass", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 288, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_grass" + }, + { + "id": "jumper/ground_grass_broken", + "name": "ground_grass_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 384, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_grass_broken" + }, + { + "id": "jumper/ground_grass_small", + "name": "ground_grass_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 213, + "y": 1662, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_grass_small" + }, + { + "id": "jumper/ground_grass_small_broken", + "name": "ground_grass_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 204, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_grass_small_broken" + }, + { + "id": "jumper/ground_sand", + "name": "ground_sand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 672, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_sand" + }, + { + "id": "jumper/ground_sand_broken", + "name": "ground_sand_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1056, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_sand_broken" + }, + { + "id": "jumper/ground_sand_small", + "name": "ground_sand_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 208, + "y": 1879, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_sand_small" + }, + { + "id": "jumper/ground_sand_small_broken", + "name": "ground_sand_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 102, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_sand_small_broken" + }, + { + "id": "jumper/ground_snow", + "name": "ground_snow", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 768, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_snow" + }, + { + "id": "jumper/ground_snow_broken", + "name": "ground_snow_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 480, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_snow_broken" + }, + { + "id": "jumper/ground_snow_small", + "name": "ground_snow_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 213, + "y": 1764, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_snow_small" + }, + { + "id": "jumper/ground_snow_small_broken", + "name": "ground_snow_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 306, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_snow_small_broken" + }, + { + "id": "jumper/ground_stone", + "name": "ground_stone", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 96, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_stone" + }, + { + "id": "jumper/ground_stone_broken", + "name": "ground_stone_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 192, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_stone_broken" + }, + { + "id": "jumper/ground_stone_small", + "name": "ground_stone_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 408, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_stone_small" + }, + { + "id": "jumper/ground_stone_small_broken", + "name": "ground_stone_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 232, + "y": 1288, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_stone_small_broken" + }, + { + "id": "jumper/ground_wood", + "name": "ground_wood", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 960, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_wood" + }, + { + "id": "jumper/ground_wood_broken", + "name": "ground_wood_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 864, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_wood_broken" + }, + { + "id": "jumper/ground_wood_small", + "name": "ground_wood_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 218, + "y": 1558, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_wood_small" + }, + { + "id": "jumper/ground_wood_small_broken", + "name": "ground_wood_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 0, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_wood_small_broken" + }, + { + "id": "jumper/jetpack", + "name": "jetpack", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 563, + "y": 1843, + "width": 133, + "height": 160, + "direction": 90.0, + "referenceName": "jetpack" + }, + { + "id": "jumper/jetpack_item", + "name": "jetpack_item", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 852, + "y": 1089, + "width": 65, + "height": 77, + "direction": 90.0, + "referenceName": "jetpack_item" + }, + { + "id": "jumper/lifes", + "name": "lifes", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 868, + "y": 1936, + "width": 52, + "height": 71, + "direction": 90.0, + "referenceName": "lifes" + }, + { + "id": "jumper/lighting_blue", + "name": "lighting_blue", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 895, + "y": 453, + "width": 55, + "height": 114, + "direction": 90.0, + "referenceName": "lighting_blue" + }, + { + "id": "jumper/lighting_yellow", + "name": "lighting_yellow", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 897, + "y": 0, + "width": 55, + "height": 114, + "direction": 90.0, + "referenceName": "lighting_yellow" + }, + { + "id": "jumper/mushroom_brown", + "name": "mushroom_brown", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 814, + "y": 1574, + "width": 81, + "height": 85, + "direction": 90.0, + "referenceName": "mushroom_brown" + }, + { + "id": "jumper/mushroom_red", + "name": "mushroom_red", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 812, + "y": 453, + "width": 81, + "height": 99, + "direction": 90.0, + "referenceName": "mushroom_red" + }, + { + "id": "jumper/particle_beige", + "name": "particle_beige", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 563, + "y": 2005, + "width": 58, + "height": 41, + "direction": 90.0, + "referenceName": "particle_beige" + }, + { + "id": "jumper/particle_blue", + "name": "particle_blue", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 852, + "y": 1168, + "width": 51, + "height": 49, + "direction": 90.0, + "referenceName": "particle_blue" + }, + { + "id": "jumper/particle_brown", + "name": "particle_brown", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 820, + "y": 1877, + "width": 44, + "height": 48, + "direction": 90.0, + "referenceName": "particle_brown" + }, + { + "id": "jumper/particle_darkBrown", + "name": "particle_darkBrown", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 784, + "y": 2003, + "width": 54, + "height": 43, + "direction": 90.0, + "referenceName": "particle_darkBrown" + }, + { + "id": "jumper/particle_darkGrey", + "name": "particle_darkGrey", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 1364, + "width": 51, + "height": 43, + "direction": 90.0, + "referenceName": "particle_darkGrey" + }, + { + "id": "jumper/particle_green", + "name": "particle_green", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 800, + "y": 1003, + "width": 48, + "height": 46, + "direction": 90.0, + "referenceName": "particle_green" + }, + { + "id": "jumper/particle_grey", + "name": "particle_grey", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 623, + "y": 2005, + "width": 38, + "height": 41, + "direction": 90.0, + "referenceName": "particle_grey" + }, + { + "id": "jumper/particle_pink", + "name": "particle_pink", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 829, + "y": 86, + "width": 53, + "height": 46, + "direction": 90.0, + "referenceName": "particle_pink" + }, + { + "id": "jumper/portal_orange", + "name": "portal_orange", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1288, + "width": 230, + "height": 82, + "direction": 90.0, + "referenceName": "portal_orange" + }, + { + "id": "jumper/portal_orangeParticle", + "name": "portal_orangeParticle", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 262, + "y": 1254, + "width": 20, + "height": 20, + "direction": 90.0, + "referenceName": "portal_orangeParticle" + }, + { + "id": "jumper/portal_yellow", + "name": "portal_yellow", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1372, + "width": 230, + "height": 82, + "direction": 90.0, + "referenceName": "portal_yellow" + }, + { + "id": "jumper/portal_yellowParticle", + "name": "portal_yellowParticle", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 284, + "y": 1254, + "width": 20, + "height": 20, + "direction": 90.0, + "referenceName": "portal_yellowParticle" + }, + { + "id": "jumper/powerup_bubble", + "name": "powerup_bubble", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 134, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_bubble" + }, + { + "id": "jumper/powerup_bunny", + "name": "powerup_bunny", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 1220, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_bunny" + }, + { + "id": "jumper/powerup_empty", + "name": "powerup_empty", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 894, + "y": 1661, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_empty" + }, + { + "id": "jumper/powerup_jetpack", + "name": "powerup_jetpack", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 820, + "y": 1805, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_jetpack" + }, + { + "id": "jumper/powerup_wings", + "name": "powerup_wings", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 1292, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_wings" + }, + { + "id": "jumper/silver_1", + "name": "silver_1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 584, + "y": 406, + "width": 84, + "height": 84, + "direction": 90.0, + "referenceName": "silver_1" + }, + { + "id": "jumper/silver_2", + "name": "silver_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 852, + "y": 1003, + "width": 66, + "height": 84, + "direction": 90.0, + "referenceName": "silver_2" + }, + { + "id": "jumper/silver_3", + "name": "silver_3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 899, + "y": 1219, + "width": 50, + "height": 84, + "direction": 90.0, + "referenceName": "silver_3" + }, + { + "id": "jumper/silver_4", + "name": "silver_4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 662, + "y": 651, + "width": 14, + "height": 84, + "direction": 90.0, + "referenceName": "silver_4" + }, + { + "id": "jumper/smoke", + "name": "smoke", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 879, + "y": 1364, + "width": 51, + "height": 48, + "direction": 90.0, + "referenceName": "smoke" + }, + { + "id": "jumper/spikeBall1", + "name": "spikeBall1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 534, + "y": 763, + "width": 142, + "height": 148, + "direction": 90.0, + "referenceName": "spikeBall1" + }, + { + "id": "jumper/spikeBall_2", + "name": "spikeBall_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 464, + "y": 1122, + "width": 148, + "height": 141, + "direction": 90.0, + "referenceName": "spikeBall_2" + }, + { + "id": "jumper/spikeMan_jump", + "name": "spikeMan_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 736, + "y": 1063, + "width": 114, + "height": 155, + "direction": 90.0, + "referenceName": "spikeMan_jump" + }, + { + "id": "jumper/spikeMan_stand", + "name": "spikeMan_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 814, + "y": 1417, + "width": 90, + "height": 155, + "direction": 90.0, + "referenceName": "spikeMan_stand" + }, + { + "id": "jumper/spikeMan_walk1", + "name": "spikeMan_walk1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 704, + "y": 1256, + "width": 120, + "height": 159, + "direction": 90.0, + "referenceName": "spikeMan_walk1" + }, + { + "id": "jumper/spikeMan_walk2", + "name": "spikeMan_walk2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 812, + "y": 296, + "width": 90, + "height": 155, + "direction": 90.0, + "referenceName": "spikeMan_walk2" + }, + { + "id": "jumper/spike_bottom", + "name": "spike_bottom", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 894, + "y": 206, + "width": 51, + "height": 87, + "direction": 90.0, + "referenceName": "spike_bottom" + }, + { + "id": "jumper/spike_top", + "name": "spike_top", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 885, + "y": 752, + "width": 51, + "height": 87, + "direction": 90.0, + "referenceName": "spike_top" + }, + { + "id": "jumper/spikes_bottom", + "name": "spikes_bottom", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 147, + "y": 1988, + "width": 95, + "height": 53, + "direction": 90.0, + "referenceName": "spikes_bottom" + }, + { + "id": "jumper/spikes_top", + "name": "spikes_top", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 232, + "y": 1390, + "width": 95, + "height": 53, + "direction": 90.0, + "referenceName": "spikes_top" + }, + { + "id": "jumper/spring", + "name": "spring", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 420, + "y": 1558, + "width": 145, + "height": 77, + "direction": 90.0, + "referenceName": "jumper/spring" + }, + { + "id": "jumper/springMan_hurt", + "name": "springMan_hurt", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 800, + "y": 860, + "width": 110, + "height": 141, + "direction": 90.0, + "referenceName": "springMan_hurt" + }, + { + "id": "jumper/springMan_stand", + "name": "springMan_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 801, + "y": 609, + "width": 110, + "height": 141, + "direction": 90.0, + "referenceName": "springMan_stand" + }, + { + "id": "jumper/spring_in", + "name": "spring_in", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1988, + "width": 145, + "height": 57, + "direction": 90.0, + "referenceName": "spring_in" + }, + { + "id": "jumper/spring_out", + "name": "spring_out", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 434, + "y": 1265, + "width": 145, + "height": 110, + "direction": 90.0, + "referenceName": "spring_out" + }, + { + "id": "jumper/sun1", + "name": "sun1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 534, + "y": 913, + "width": 142, + "height": 148, + "direction": 90.0, + "referenceName": "sun1" + }, + { + "id": "jumper/sun2", + "name": "sun2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 421, + "y": 1390, + "width": 148, + "height": 142, + "direction": 90.0, + "referenceName": "sun2" + }, + { + "id": "jumper/wingMan1", + "name": "wingMan1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 635, + "width": 174, + "height": 126, + "direction": 90.0, + "referenceName": "wingMan1" + }, + { + "id": "jumper/wingMan2", + "name": "wingMan2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1879, + "width": 206, + "height": 107, + "direction": 90.0, + "referenceName": "wingMan2" + }, + { + "id": "jumper/wingMan3", + "name": "wingMan3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1559, + "width": 216, + "height": 101, + "direction": 90.0, + "referenceName": "wingMan3" + }, + { + "id": "jumper/wingMan4", + "name": "wingMan4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1456, + "width": 216, + "height": 101, + "direction": 90.0, + "referenceName": "wingMan4" + }, + { + "id": "jumper/wingMan5", + "name": "wingMan5", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 510, + "width": 182, + "height": 123, + "direction": 90.0, + "referenceName": "wingMan5" + }, + { + "id": "jumper/wing_left", + "name": "wing_left", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 558, + "y": 651, + "width": 85, + "height": 74, + "direction": 90.0, + "referenceName": "wing_left" + }, + { + "id": "jumper/wing_right", + "name": "wing_right", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 571, + "y": 1458, + "width": 85, + "height": 74, + "direction": 90.0, + "referenceName": "wing_right" + }, + { + "id": "space_shooter/beam0", + "name": "beam0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 143, + "y": 377, + "width": 43, + "height": 31, + "direction": 0.0, + "referenceName": "beam0" + }, + { + "id": "space_shooter/beam1", + "name": "beam1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 327, + "y": 644, + "width": 40, + "height": 20, + "direction": 0.0, + "referenceName": "beam1" + }, + { + "id": "space_shooter/beam2", + "name": "beam2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 262, + "y": 907, + "width": 38, + "height": 31, + "direction": 0.0, + "referenceName": "beam2" + }, + { + "id": "space_shooter/beam3", + "name": "beam3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 396, + "y": 384, + "width": 29, + "height": 29, + "direction": 0.0, + "referenceName": "beam3" + }, + { + "id": "space_shooter/beam4", + "name": "beam4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 177, + "y": 496, + "width": 41, + "height": 17, + "direction": 0.0, + "referenceName": "beam4" + }, + { + "id": "space_shooter/beam5", + "name": "beam5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 186, + "y": 377, + "width": 40, + "height": 25, + "direction": 0.0, + "referenceName": "beam5" + }, + { + "id": "space_shooter/beam6", + "name": "beam6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 120, + "y": 688, + "width": 43, + "height": 23, + "direction": 0.0, + "referenceName": "beam6" + }, + { + "id": "space_shooter/beamLong1", + "name": "beamLong1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 943, + "width": 15, + "height": 67, + "direction": 0.0, + "referenceName": "beamLong1" + }, + { + "id": "space_shooter/beamLong2", + "name": "beamLong2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 307, + "y": 309, + "width": 25, + "height": 64, + "direction": 0.0, + "referenceName": "beamLong2" + }, + { + "id": "space_shooter/bold_silver", + "name": "bold_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 837, + "width": 19, + "height": 30, + "direction": 90.0, + "referenceName": "bold_silver" + }, + { + "id": "space_shooter/bolt_bronze", + "name": "bolt_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 467, + "width": 19, + "height": 30, + "direction": 90.0, + "referenceName": "bolt_bronze" + }, + { + "id": "space_shooter/bolt_gold", + "name": "bolt_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 437, + "width": 19, + "height": 30, + "direction": 90.0, + "referenceName": "bolt_gold" + }, + { + "id": "space_shooter/buttonBlue", + "name": "buttonBlue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 78, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonBlue" + }, + { + "id": "space_shooter/buttonGreen", + "name": "buttonGreen", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 117, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonGreen" + }, + { + "id": "space_shooter/buttonRed", + "name": "buttonRed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 0, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonRed" + }, + { + "id": "space_shooter/buttonYellow", + "name": "buttonYellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 39, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonYellow" + }, + { + "id": "space_shooter/cockpitBlue_0", + "name": "cockpitBlue_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 586, + "y": 0, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitBlue_0" + }, + { + "id": "space_shooter/cockpitBlue_1", + "name": "cockpitBlue_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 862, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitBlue_1" + }, + { + "id": "space_shooter/cockpitBlue_2", + "name": "cockpitBlue_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 684, + "y": 67, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitBlue_2" + }, + { + "id": "space_shooter/cockpitBlue_3", + "name": "cockpitBlue_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 336, + "y": 384, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitBlue_3" + }, + { + "id": "space_shooter/cockpitBlue_4", + "name": "cockpitBlue_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 637, + "y": 0, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitBlue_4" + }, + { + "id": "space_shooter/cockpitBlue_5", + "name": "cockpitBlue_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 627, + "y": 144, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitBlue_5" + }, + { + "id": "space_shooter/cockpitBlue_6", + "name": "cockpitBlue_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 684, + "y": 0, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitBlue_6" + }, + { + "id": "space_shooter/cockpitBlue_7", + "name": "cockpitBlue_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 737, + "y": 542, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitBlue_7" + }, + { + "id": "space_shooter/cockpitGreen_0", + "name": "cockpitGreen_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 576, + "y": 225, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitGreen_0" + }, + { + "id": "space_shooter/cockpitGreen_1", + "name": "cockpitGreen_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 734, + "y": 977, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitGreen_1" + }, + { + "id": "space_shooter/cockpitGreen_2", + "name": "cockpitGreen_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 696, + "y": 659, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitGreen_2" + }, + { + "id": "space_shooter/cockpitGreen_3", + "name": "cockpitGreen_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 234, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitGreen_3" + }, + { + "id": "space_shooter/cockpitGreen_4", + "name": "cockpitGreen_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 627, + "y": 219, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitGreen_4" + }, + { + "id": "space_shooter/cockpitGreen_5", + "name": "cockpitGreen_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 694, + "y": 364, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitGreen_5" + }, + { + "id": "space_shooter/cockpitGreen_6", + "name": "cockpitGreen_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 737, + "y": 471, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitGreen_6" + }, + { + "id": "space_shooter/cockpitGreen_7", + "name": "cockpitGreen_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 602, + "y": 525, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitGreen_7" + }, + { + "id": "space_shooter/cockpitRed_0", + "name": "cockpitRed_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 535, + "y": 75, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitRed_0" + }, + { + "id": "space_shooter/cockpitRed_1", + "name": "cockpitRed_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 351, + "y": 982, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitRed_1" + }, + { + "id": "space_shooter/cockpitRed_2", + "name": "cockpitRed_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 718, + "y": 197, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitRed_2" + }, + { + "id": "space_shooter/cockpitRed_3", + "name": "cockpitRed_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 520, + "y": 661, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitRed_3" + }, + { + "id": "space_shooter/cockpitRed_4", + "name": "cockpitRed_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 647, + "y": 857, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitRed_4" + }, + { + "id": "space_shooter/cockpitRed_5", + "name": "cockpitRed_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 605, + "y": 707, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitRed_5" + }, + { + "id": "space_shooter/cockpitRed_6", + "name": "cockpitRed_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 795, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitRed_6" + }, + { + "id": "space_shooter/cockpitRed_7", + "name": "cockpitRed_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 329, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitRed_7" + }, + { + "id": "space_shooter/cockpitYellow_0", + "name": "cockpitYellow_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 726, + "y": 80, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitYellow_0" + }, + { + "id": "space_shooter/cockpitYellow_1", + "name": "cockpitYellow_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 309, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitYellow_1" + }, + { + "id": "space_shooter/cockpitYellow_2", + "name": "cockpitYellow_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 637, + "y": 67, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitYellow_2" + }, + { + "id": "space_shooter/cockpitYellow_3", + "name": "cockpitYellow_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 607, + "y": 782, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitYellow_3" + }, + { + "id": "space_shooter/cockpitYellow_4", + "name": "cockpitYellow_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 696, + "y": 262, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitYellow_4" + }, + { + "id": "space_shooter/cockpitYellow_5", + "name": "cockpitYellow_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 400, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitYellow_5" + }, + { + "id": "space_shooter/cockpitYellow_6", + "name": "cockpitYellow_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 734, + "y": 921, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitYellow_6" + }, + { + "id": "space_shooter/cockpitYellow_7", + "name": "cockpitYellow_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 600, + "y": 375, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitYellow_7" + }, + { + "id": "space_shooter/cursor", + "name": "cursor", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 797, + "y": 173, + "width": 30, + "height": 33, + "direction": 90.0, + "referenceName": "cursor" + }, + { + "id": "space_shooter/enemyBlack1", + "name": "enemyBlack1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 728, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack1" + }, + { + "id": "space_shooter/enemyBlack2", + "name": "enemyBlack2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 120, + "y": 604, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack2" + }, + { + "id": "space_shooter/enemyBlack3", + "name": "enemyBlack3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 144, + "y": 156, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack3" + }, + { + "id": "space_shooter/enemyBlack4", + "name": "enemyBlack4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 325, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack4" + }, + { + "id": "space_shooter/enemyBlack5", + "name": "enemyBlack5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 150, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack5" + }, + { + "id": "space_shooter/enemyBlue1", + "name": "enemyBlue1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 425, + "y": 468, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue1" + }, + { + "id": "space_shooter/enemyBlue2", + "name": "enemyBlue2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 143, + "y": 293, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue2" + }, + { + "id": "space_shooter/enemyBlue3", + "name": "enemyBlue3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 0, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue3" + }, + { + "id": "space_shooter/enemyBlue4", + "name": "enemyBlue4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 409, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue4" + }, + { + "id": "space_shooter/enemyBlue5", + "name": "enemyBlue5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 421, + "y": 814, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue5" + }, + { + "id": "space_shooter/enemyGreen1", + "name": "enemyGreen1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 425, + "y": 552, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen1" + }, + { + "id": "space_shooter/enemyGreen2", + "name": "enemyGreen2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 133, + "y": 412, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen2" + }, + { + "id": "space_shooter/enemyGreen3", + "name": "enemyGreen3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 496, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen3" + }, + { + "id": "space_shooter/enemyGreen4", + "name": "enemyGreen4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 493, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen4" + }, + { + "id": "space_shooter/enemyGreen5", + "name": "enemyGreen5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 408, + "y": 907, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen5" + }, + { + "id": "space_shooter/enemyRed1", + "name": "enemyRed1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 425, + "y": 384, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed1" + }, + { + "id": "space_shooter/enemyRed2", + "name": "enemyRed2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 120, + "y": 520, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed2" + }, + { + "id": "space_shooter/enemyRed3", + "name": "enemyRed3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 580, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed3" + }, + { + "id": "space_shooter/enemyRed4", + "name": "enemyRed4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 520, + "y": 577, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed4" + }, + { + "id": "space_shooter/enemyRed5", + "name": "enemyRed5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 644, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed5" + }, + { + "id": "space_shooter/engine1", + "name": "engine1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 907, + "width": 38, + "height": 23, + "direction": 0.0, + "referenceName": "engine1" + }, + { + "id": "space_shooter/engine2", + "name": "engine2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 163, + "y": 688, + "width": 42, + "height": 28, + "direction": 0.0, + "referenceName": "engine2" + }, + { + "id": "space_shooter/engine3", + "name": "engine3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 644, + "y": 1002, + "width": 27, + "height": 22, + "direction": 0.0, + "referenceName": "engine3" + }, + { + "id": "space_shooter/engine4", + "name": "engine4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 144, + "y": 240, + "width": 49, + "height": 45, + "direction": 0.0, + "referenceName": "engine4" + }, + { + "id": "space_shooter/engine5", + "name": "engine5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 133, + "y": 496, + "width": 44, + "height": 24, + "direction": 0.0, + "referenceName": "engine5" + }, + { + "id": "space_shooter/fire00", + "name": "fire00", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 125, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire00" + }, + { + "id": "space_shooter/fire01", + "name": "fire01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 206, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire01" + }, + { + "id": "space_shooter/fire02", + "name": "fire02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 663, + "width": 14, + "height": 32, + "direction": 0.0, + "referenceName": "fire02" + }, + { + "id": "space_shooter/fire03", + "name": "fire03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 437, + "width": 14, + "height": 34, + "direction": 0.0, + "referenceName": "fire03" + }, + { + "id": "space_shooter/fire04", + "name": "fire04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 831, + "y": 0, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire04" + }, + { + "id": "space_shooter/fire05", + "name": "fire05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 834, + "y": 299, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire05" + }, + { + "id": "space_shooter/fire06", + "name": "fire06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 502, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire06" + }, + { + "id": "space_shooter/fire07", + "name": "fire07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 330, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire07" + }, + { + "id": "space_shooter/fire08", + "name": "fire08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 867, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire08" + }, + { + "id": "space_shooter/fire09", + "name": "fire09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 811, + "y": 663, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire09" + }, + { + "id": "space_shooter/fire10", + "name": "fire10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 812, + "y": 206, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire10" + }, + { + "id": "space_shooter/fire11", + "name": "fire11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 395, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire11" + }, + { + "id": "space_shooter/fire12", + "name": "fire12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 533, + "width": 14, + "height": 32, + "direction": 0.0, + "referenceName": "fire12" + }, + { + "id": "space_shooter/fire13", + "name": "fire13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 361, + "width": 14, + "height": 34, + "direction": 0.0, + "referenceName": "fire13" + }, + { + "id": "space_shooter/fire14", + "name": "fire14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 831, + "y": 31, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire14" + }, + { + "id": "space_shooter/fire15", + "name": "fire15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 471, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire15" + }, + { + "id": "space_shooter/fire16", + "name": "fire16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 268, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire16" + }, + { + "id": "space_shooter/fire17", + "name": "fire17", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 237, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire17" + }, + { + "id": "space_shooter/fire18", + "name": "fire18", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 165, + "width": 16, + "height": 41, + "direction": 0.0, + "referenceName": "fire18" + }, + { + "id": "space_shooter/fire19", + "name": "fire19", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 812, + "y": 246, + "width": 16, + "height": 41, + "direction": 0.0, + "referenceName": "fire19" + }, + { + "id": "space_shooter/gun00", + "name": "gun00", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 907, + "width": 16, + "height": 36, + "direction": 0.0, + "referenceName": "gun00" + }, + { + "id": "space_shooter/gun01", + "name": "gun01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 867, + "width": 17, + "height": 33, + "direction": 0.0, + "referenceName": "gun01" + }, + { + "id": "space_shooter/gun02", + "name": "gun02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 611, + "width": 14, + "height": 36, + "direction": 0.0, + "referenceName": "gun02" + }, + { + "id": "space_shooter/gun03", + "name": "gun03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 796, + "width": 20, + "height": 41, + "direction": 0.0, + "referenceName": "gun03" + }, + { + "id": "space_shooter/gun04", + "name": "gun04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 84, + "width": 16, + "height": 41, + "direction": 0.0, + "referenceName": "gun04" + }, + { + "id": "space_shooter/gun05", + "name": "gun05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 0, + "width": 21, + "height": 41, + "direction": 0.0, + "referenceName": "gun05" + }, + { + "id": "space_shooter/gun06", + "name": "gun06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 900, + "width": 17, + "height": 38, + "direction": 0.0, + "referenceName": "gun06" + }, + { + "id": "space_shooter/gun07", + "name": "gun07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 796, + "width": 14, + "height": 41, + "direction": 0.0, + "referenceName": "gun07" + }, + { + "id": "space_shooter/gun08", + "name": "gun08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 263, + "width": 10, + "height": 47, + "direction": 0.0, + "referenceName": "gun08" + }, + { + "id": "space_shooter/gun09", + "name": "gun09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 611, + "width": 20, + "height": 52, + "direction": 0.0, + "referenceName": "gun09" + }, + { + "id": "space_shooter/gun10", + "name": "gun10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 808, + "y": 961, + "width": 20, + "height": 52, + "direction": 0.0, + "referenceName": "gun10" + }, + { + "id": "space_shooter/laserBlue01", + "name": "laserBlue01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 421, + "width": 9, + "height": 54, + "direction": 0.0, + "referenceName": "laserBlue01" + }, + { + "id": "space_shooter/laserBlue02", + "name": "laserBlue02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 841, + "y": 647, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue02" + }, + { + "id": "space_shooter/laserBlue03", + "name": "laserBlue03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 57, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue03" + }, + { + "id": "space_shooter/laserBlue04", + "name": "laserBlue04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 565, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue04" + }, + { + "id": "space_shooter/laserBlue05", + "name": "laserBlue05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 475, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue05" + }, + { + "id": "space_shooter/laserBlue06", + "name": "laserBlue06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 752, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue06" + }, + { + "id": "space_shooter/laserBlue07", + "name": "laserBlue07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 775, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue07" + }, + { + "id": "space_shooter/laserBlue08", + "name": "laserBlue08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 596, + "y": 961, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserBlue08" + }, + { + "id": "space_shooter/laserBlue09", + "name": "laserBlue09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 434, + "y": 325, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserBlue09" + }, + { + "id": "space_shooter/laserBlue10", + "name": "laserBlue10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 740, + "y": 724, + "width": 37, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue10" + }, + { + "id": "space_shooter/laserBlue11", + "name": "laserBlue11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 698, + "y": 795, + "width": 38, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue11" + }, + { + "id": "space_shooter/laserBlue12", + "name": "laserBlue12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 695, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue12" + }, + { + "id": "space_shooter/laserBlue13", + "name": "laserBlue13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 869, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue13" + }, + { + "id": "space_shooter/laserBlue14", + "name": "laserBlue14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 842, + "y": 206, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue14" + }, + { + "id": "space_shooter/laserBlue15", + "name": "laserBlue15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 849, + "y": 480, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue15" + }, + { + "id": "space_shooter/laserBlue16", + "name": "laserBlue16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 62, + "width": 13, + "height": 54, + "direction": 0.0, + "referenceName": "laserBlue16" + }, + { + "id": "space_shooter/laserGreen01", + "name": "laserGreen01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 740, + "y": 686, + "width": 37, + "height": 38, + "direction": 0.0, + "referenceName": "laserGreen01" + }, + { + "id": "space_shooter/laserGreen02", + "name": "laserGreen02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 116, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen02" + }, + { + "id": "space_shooter/laserGreen03", + "name": "laserGreen03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 855, + "y": 173, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen03" + }, + { + "id": "space_shooter/laserGreen04", + "name": "laserGreen04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 565, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen04" + }, + { + "id": "space_shooter/laserGreen05", + "name": "laserGreen05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 854, + "y": 639, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen05" + }, + { + "id": "space_shooter/laserGreen06", + "name": "laserGreen06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 845, + "y": 0, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen06" + }, + { + "id": "space_shooter/laserGreen07", + "name": "laserGreen07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 849, + "y": 364, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen07" + }, + { + "id": "space_shooter/laserGreen08", + "name": "laserGreen08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 738, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen08" + }, + { + "id": "space_shooter/laserGreen09", + "name": "laserGreen09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 94, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen09" + }, + { + "id": "space_shooter/laserGreen10", + "name": "laserGreen10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 426, + "width": 13, + "height": 54, + "direction": 0.0, + "referenceName": "laserGreen10" + }, + { + "id": "space_shooter/laserGreen11", + "name": "laserGreen11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 849, + "y": 310, + "width": 9, + "height": 54, + "direction": 0.0, + "referenceName": "laserGreen11" + }, + { + "id": "space_shooter/laserGreen12", + "name": "laserGreen12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 602, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen12" + }, + { + "id": "space_shooter/laserGreen13", + "name": "laserGreen13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 0, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen13" + }, + { + "id": "space_shooter/laserGreen14", + "name": "laserGreen14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 193, + "y": 240, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserGreen14" + }, + { + "id": "space_shooter/laserGreen15", + "name": "laserGreen15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 443, + "y": 182, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserGreen15" + }, + { + "id": "space_shooter/laserGreen16", + "name": "laserGreen16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 760, + "y": 192, + "width": 37, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen16" + }, + { + "id": "space_shooter/laserRed01", + "name": "laserRed01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 230, + "width": 9, + "height": 54, + "direction": 0.0, + "referenceName": "laserRed01" + }, + { + "id": "space_shooter/laserRed02", + "name": "laserRed02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 977, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed02" + }, + { + "id": "space_shooter/laserRed03", + "name": "laserRed03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 602, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed03" + }, + { + "id": "space_shooter/laserRed04", + "name": "laserRed04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 940, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed04" + }, + { + "id": "space_shooter/laserRed05", + "name": "laserRed05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 983, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed05" + }, + { + "id": "space_shooter/laserRed06", + "name": "laserRed06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 903, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed06" + }, + { + "id": "space_shooter/laserRed07", + "name": "laserRed07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 131, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed07" + }, + { + "id": "space_shooter/laserRed08", + "name": "laserRed08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 580, + "y": 661, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserRed08" + }, + { + "id": "space_shooter/laserRed09", + "name": "laserRed09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 602, + "y": 600, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserRed09" + }, + { + "id": "space_shooter/laserRed10", + "name": "laserRed10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 738, + "y": 650, + "width": 37, + "height": 36, + "direction": 0.0, + "referenceName": "laserRed10" + }, + { + "id": "space_shooter/laserRed11", + "name": "laserRed11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 737, + "y": 613, + "width": 37, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed11" + }, + { + "id": "space_shooter/laserRed12", + "name": "laserRed12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 846, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed12" + }, + { + "id": "space_shooter/laserRed13", + "name": "laserRed13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 812, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed13" + }, + { + "id": "space_shooter/laserRed14", + "name": "laserRed14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 789, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed14" + }, + { + "id": "space_shooter/laserRed15", + "name": "laserRed15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 926, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed15" + }, + { + "id": "space_shooter/laserRed16", + "name": "laserRed16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 684, + "width": 13, + "height": 54, + "direction": 0.0, + "referenceName": "laserRed16" + }, + { + "id": "space_shooter/meteorBrown_big1", + "name": "meteorBrown_big1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 664, + "width": 101, + "height": 84, + "direction": 90.0, + "referenceName": "meteorBrown_big1" + }, + { + "id": "space_shooter/meteorBrown_big2", + "name": "meteorBrown_big2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 520, + "width": 120, + "height": 98, + "direction": 90.0, + "referenceName": "meteorBrown_big2" + }, + { + "id": "space_shooter/meteorBrown_big3", + "name": "meteorBrown_big3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 810, + "width": 89, + "height": 82, + "direction": 90.0, + "referenceName": "meteorBrown_big3" + }, + { + "id": "space_shooter/meteorBrown_big4", + "name": "meteorBrown_big4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 327, + "y": 452, + "width": 98, + "height": 96, + "direction": 90.0, + "referenceName": "meteorBrown_big4" + }, + { + "id": "space_shooter/meteorBrown_med1", + "name": "meteorBrown_med1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 447, + "width": 43, + "height": 43, + "direction": 90.0, + "referenceName": "meteorBrown_med1" + }, + { + "id": "space_shooter/meteorBrown_med3", + "name": "meteorBrown_med3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 237, + "y": 452, + "width": 45, + "height": 40, + "direction": 90.0, + "referenceName": "meteorBrown_med3" + }, + { + "id": "space_shooter/meteorBrown_small1", + "name": "meteorBrown_small1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 406, + "y": 234, + "width": 28, + "height": 28, + "direction": 90.0, + "referenceName": "meteorBrown_small1" + }, + { + "id": "space_shooter/meteorBrown_small2", + "name": "meteorBrown_small2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 587, + "width": 29, + "height": 26, + "direction": 90.0, + "referenceName": "meteorBrown_small2" + }, + { + "id": "space_shooter/meteorBrown_tiny1", + "name": "meteorBrown_tiny1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 814, + "width": 18, + "height": 18, + "direction": 90.0, + "referenceName": "meteorBrown_tiny1" + }, + { + "id": "space_shooter/meteorBrown_tiny2", + "name": "meteorBrown_tiny2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 399, + "y": 814, + "width": 16, + "height": 15, + "direction": 90.0, + "referenceName": "meteorBrown_tiny2" + }, + { + "id": "space_shooter/meteorGrey_big1", + "name": "meteorGrey_big1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 748, + "width": 101, + "height": 84, + "direction": 90.0, + "referenceName": "meteorGrey_big1" + }, + { + "id": "space_shooter/meteorGrey_big2", + "name": "meteorGrey_big2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 618, + "width": 120, + "height": 98, + "direction": 90.0, + "referenceName": "meteorGrey_big2" + }, + { + "id": "space_shooter/meteorGrey_big3", + "name": "meteorGrey_big3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 516, + "y": 728, + "width": 89, + "height": 82, + "direction": 90.0, + "referenceName": "meteorGrey_big3" + }, + { + "id": "space_shooter/meteorGrey_big4", + "name": "meteorGrey_big4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 327, + "y": 548, + "width": 98, + "height": 96, + "direction": 90.0, + "referenceName": "meteorGrey_big4" + }, + { + "id": "space_shooter/meteorGrey_med1", + "name": "meteorGrey_med1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 674, + "y": 219, + "width": 43, + "height": 43, + "direction": 90.0, + "referenceName": "meteorGrey_med1" + }, + { + "id": "space_shooter/meteorGrey_med2", + "name": "meteorGrey_med2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 282, + "y": 452, + "width": 45, + "height": 40, + "direction": 90.0, + "referenceName": "meteorGrey_med2" + }, + { + "id": "space_shooter/meteorGrey_small1", + "name": "meteorGrey_small1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 406, + "y": 262, + "width": 28, + "height": 28, + "direction": 90.0, + "referenceName": "meteorGrey_small1" + }, + { + "id": "space_shooter/meteorGrey_small2", + "name": "meteorGrey_small2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 396, + "y": 413, + "width": 29, + "height": 26, + "direction": 90.0, + "referenceName": "meteorGrey_small2" + }, + { + "id": "space_shooter/meteorGrey_tiny1", + "name": "meteorGrey_tiny1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 364, + "y": 814, + "width": 18, + "height": 18, + "direction": 90.0, + "referenceName": "meteorGrey_tiny1" + }, + { + "id": "space_shooter/meteorGrey_tiny2", + "name": "meteorGrey_tiny2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 602, + "y": 646, + "width": 16, + "height": 15, + "direction": 90.0, + "referenceName": "meteorGrey_tiny2" + }, + { + "id": "space_shooter/numeral0", + "name": "numeral0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 367, + "y": 644, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral0" + }, + { + "id": "space_shooter/numeral1", + "name": "numeral1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 205, + "y": 688, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral1" + }, + { + "id": "space_shooter/numeral2", + "name": "numeral2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 406, + "y": 290, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral2" + }, + { + "id": "space_shooter/numeral3", + "name": "numeral3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 580, + "y": 707, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral3" + }, + { + "id": "space_shooter/numeral4", + "name": "numeral4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 386, + "y": 644, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral4" + }, + { + "id": "space_shooter/numeral5", + "name": "numeral5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 628, + "y": 646, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral5" + }, + { + "id": "space_shooter/numeral6", + "name": "numeral6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 671, + "y": 1002, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral6" + }, + { + "id": "space_shooter/numeral7", + "name": "numeral7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 690, + "y": 1004, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral7" + }, + { + "id": "space_shooter/numeral8", + "name": "numeral8", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 709, + "y": 1004, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral8" + }, + { + "id": "space_shooter/numeral9", + "name": "numeral9", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 491, + "y": 215, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral9" + }, + { + "id": "space_shooter/numeralX", + "name": "numeralX", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 382, + "y": 814, + "width": 17, + "height": 17, + "direction": 90.0, + "referenceName": "numeralX" + }, + { + "id": "space_shooter/pill_blue", + "name": "pill_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 674, + "y": 262, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_blue" + }, + { + "id": "space_shooter/pill_green", + "name": "pill_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 573, + "y": 989, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_green" + }, + { + "id": "space_shooter/pill_red", + "name": "pill_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 108, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_red" + }, + { + "id": "space_shooter/pill_yellow", + "name": "pill_yellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 129, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_yellow" + }, + { + "id": "space_shooter/playerLife1_blue", + "name": "playerLife1_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 482, + "y": 358, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_blue" + }, + { + "id": "space_shooter/playerLife1_green", + "name": "playerLife1_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 535, + "y": 150, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_green" + }, + { + "id": "space_shooter/playerLife1_orange", + "name": "playerLife1_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 327, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_orange" + }, + { + "id": "space_shooter/playerLife1_red", + "name": "playerLife1_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 775, + "y": 301, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_red" + }, + { + "id": "space_shooter/playerLife2_blue", + "name": "playerLife2_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 465, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_blue" + }, + { + "id": "space_shooter/playerLife2_green", + "name": "playerLife2_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 391, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_green" + }, + { + "id": "space_shooter/playerLife2_orange", + "name": "playerLife2_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 428, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_orange" + }, + { + "id": "space_shooter/playerLife2_red", + "name": "playerLife2_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 502, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_red" + }, + { + "id": "space_shooter/playerLife3_blue", + "name": "playerLife3_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 385, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_blue" + }, + { + "id": "space_shooter/playerLife3_green", + "name": "playerLife3_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 469, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_green" + }, + { + "id": "space_shooter/playerLife3_orange", + "name": "playerLife3_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 712, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_orange" + }, + { + "id": "space_shooter/playerLife3_red", + "name": "playerLife3_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 443, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_red" + }, + { + "id": "space_shooter/playerShip1_blue", + "name": "playerShip1_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 211, + "y": 941, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_blue" + }, + { + "id": "space_shooter/playerShip1_damage1", + "name": "playerShip1_damage1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 941, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_damage1" + }, + { + "id": "space_shooter/playerShip1_damage2", + "name": "playerShip1_damage2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 234, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_damage2" + }, + { + "id": "space_shooter/playerShip1_damage3", + "name": "playerShip1_damage3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 159, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_damage3" + }, + { + "id": "space_shooter/playerShip1_green", + "name": "playerShip1_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 237, + "y": 377, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_green" + }, + { + "id": "space_shooter/playerShip1_orange", + "name": "playerShip1_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 84, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_orange" + }, + { + "id": "space_shooter/playerShip1_red", + "name": "playerShip1_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 832, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_red" + }, + { + "id": "space_shooter/playerShip2_blue", + "name": "playerShip2_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 791, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_blue" + }, + { + "id": "space_shooter/playerShip2_damage1", + "name": "playerShip2_damage1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 866, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_damage1" + }, + { + "id": "space_shooter/playerShip2_damage2", + "name": "playerShip2_damage2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 791, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_damage2" + }, + { + "id": "space_shooter/playerShip2_damage3", + "name": "playerShip2_damage3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 716, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_damage3" + }, + { + "id": "space_shooter/playerShip2_green", + "name": "playerShip2_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 866, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_green" + }, + { + "id": "space_shooter/playerShip2_orange", + "name": "playerShip2_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 716, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_orange" + }, + { + "id": "space_shooter/playerShip2_red", + "name": "playerShip2_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 941, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_red" + }, + { + "id": "space_shooter/playerShip3_blue", + "name": "playerShip3_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 739, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_blue" + }, + { + "id": "space_shooter/playerShip3_damage1", + "name": "playerShip3_damage1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 323, + "y": 832, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_damage1" + }, + { + "id": "space_shooter/playerShip3_damage2", + "name": "playerShip3_damage2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 310, + "y": 907, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_damage2" + }, + { + "id": "space_shooter/playerShip3_damage3", + "name": "playerShip3_damage3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 664, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_damage3" + }, + { + "id": "space_shooter/playerShip3_green", + "name": "playerShip3_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 75, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_green" + }, + { + "id": "space_shooter/playerShip3_orange", + "name": "playerShip3_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 336, + "y": 309, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_orange" + }, + { + "id": "space_shooter/playerShip3_red", + "name": "playerShip3_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 0, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_red" + }, + { + "id": "space_shooter/powerupBlue", + "name": "powerupBlue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 696, + "y": 329, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue" + }, + { + "id": "space_shooter/powerupBlue_bolt", + "name": "powerupBlue_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 539, + "y": 989, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue_bolt" + }, + { + "id": "space_shooter/powerupBlue_shield", + "name": "powerupBlue_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 679, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue_shield" + }, + { + "id": "space_shooter/powerupBlue_star", + "name": "powerupBlue_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 776, + "y": 895, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue_star" + }, + { + "id": "space_shooter/powerupGreen", + "name": "powerupGreen", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 774, + "y": 613, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen" + }, + { + "id": "space_shooter/powerupGreen_bolt", + "name": "powerupGreen_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 766, + "y": 80, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen_bolt" + }, + { + "id": "space_shooter/powerupGreen_shield", + "name": "powerupGreen_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 776, + "y": 862, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen_shield" + }, + { + "id": "space_shooter/powerupGreen_star", + "name": "powerupGreen_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 490, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen_star" + }, + { + "id": "space_shooter/powerupRed", + "name": "powerupRed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 491, + "y": 182, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed" + }, + { + "id": "space_shooter/powerupRed_bolt", + "name": "powerupRed_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 775, + "y": 646, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed_bolt" + }, + { + "id": "space_shooter/powerupRed_shield", + "name": "powerupRed_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 776, + "y": 928, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed_shield" + }, + { + "id": "space_shooter/powerupRed_star", + "name": "powerupRed_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 774, + "y": 977, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed_star" + }, + { + "id": "space_shooter/powerupYellow", + "name": "powerupYellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 774, + "y": 761, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow" + }, + { + "id": "space_shooter/powerupYellow_bolt", + "name": "powerupYellow_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 740, + "y": 761, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow_bolt" + }, + { + "id": "space_shooter/powerupYellow_shield", + "name": "powerupYellow_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 482, + "y": 325, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow_shield" + }, + { + "id": "space_shooter/powerupYellow_star", + "name": "powerupYellow_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 607, + "y": 857, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow_star" + }, + { + "id": "space_shooter/scratch1", + "name": "scratch1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 814, + "width": 21, + "height": 16, + "direction": 90.0, + "referenceName": "scratch1" + }, + { + "id": "space_shooter/scratch2", + "name": "scratch2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 41, + "width": 21, + "height": 16, + "direction": 90.0, + "referenceName": "scratch2" + }, + { + "id": "space_shooter/scratch3", + "name": "scratch3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 295, + "width": 16, + "height": 12, + "direction": 90.0, + "referenceName": "scratch3" + }, + { + "id": "space_shooter/shield1", + "name": "shield1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 412, + "width": 133, + "height": 108, + "direction": 0.0, + "referenceName": "shield1" + }, + { + "id": "space_shooter/shield2", + "name": "shield2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 293, + "width": 143, + "height": 119, + "direction": 0.0, + "referenceName": "shield2" + }, + { + "id": "space_shooter/shield3", + "name": "shield3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 156, + "width": 144, + "height": 137, + "direction": 0.0, + "referenceName": "shield3" + }, + { + "id": "space_shooter/shield_bronze", + "name": "shield_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 797, + "y": 143, + "width": 30, + "height": 30, + "direction": 90.0, + "referenceName": "shield_bronze" + }, + { + "id": "space_shooter/shield_gold", + "name": "shield_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 797, + "y": 113, + "width": 30, + "height": 30, + "direction": 90.0, + "referenceName": "shield_gold" + }, + { + "id": "space_shooter/shield_silver", + "name": "shield_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 824, + "width": 30, + "height": 30, + "direction": 90.0, + "referenceName": "shield_silver" + }, + { + "id": "space_shooter/speed", + "name": "speed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 284, + "width": 7, + "height": 108, + "direction": 0.0, + "referenceName": "speed" + }, + { + "id": "space_shooter/star1", + "name": "star1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 628, + "y": 681, + "width": 25, + "height": 24, + "direction": 90.0, + "referenceName": "star1" + }, + { + "id": "space_shooter/star2", + "name": "star2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 84, + "width": 25, + "height": 24, + "direction": 90.0, + "referenceName": "star2" + }, + { + "id": "space_shooter/star3", + "name": "star3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 576, + "y": 300, + "width": 24, + "height": 24, + "direction": 90.0, + "referenceName": "star3" + }, + { + "id": "space_shooter/star_bronze", + "name": "star_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 794, + "width": 31, + "height": 30, + "direction": 90.0, + "referenceName": "star_bronze" + }, + { + "id": "space_shooter/star_gold", + "name": "star_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 557, + "width": 31, + "height": 30, + "direction": 90.0, + "referenceName": "star_gold" + }, + { + "id": "space_shooter/star_silver", + "name": "star_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 527, + "width": 31, + "height": 30, + "direction": 90.0, + "referenceName": "star_silver" + }, + { + "id": "space_shooter/things_bronze", + "name": "things_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 495, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "things_bronze" + }, + { + "id": "space_shooter/things_gold", + "name": "things_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 411, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "things_gold" + }, + { + "id": "space_shooter/things_silver", + "name": "things_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 353, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "things_silver" + }, + { + "id": "space_shooter/turretBase_big", + "name": "turretBase_big", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 310, + "y": 982, + "width": 41, + "height": 41, + "direction": 90.0, + "referenceName": "turretBase_big" + }, + { + "id": "space_shooter/turretBase_small", + "name": "turretBase_small", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 808, + "y": 301, + "width": 26, + "height": 26, + "direction": 90.0, + "referenceName": "turretBase_small" + }, + { + "id": "space_shooter/ufoBlue", + "name": "ufoBlue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 444, + "y": 91, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoBlue" + }, + { + "id": "space_shooter/ufoGreen", + "name": "ufoGreen", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 434, + "y": 234, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoGreen" + }, + { + "id": "space_shooter/ufoRed", + "name": "ufoRed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 444, + "y": 0, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoRed" + }, + { + "id": "space_shooter/ufoYellow", + "name": "ufoYellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 505, + "y": 898, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoYellow" + }, + { + "id": "space_shooter/wingBlue_0", + "name": "wingBlue_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 647, + "y": 924, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingBlue_0" + }, + { + "id": "space_shooter/wingBlue_1", + "name": "wingBlue_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 738, + "y": 253, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingBlue_1" + }, + { + "id": "space_shooter/wingBlue_2", + "name": "wingBlue_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 805, + "y": 0, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingBlue_2" + }, + { + "id": "space_shooter/wingBlue_3", + "name": "wingBlue_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 600, + "y": 450, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingBlue_3" + }, + { + "id": "space_shooter/wingBlue_4", + "name": "wingBlue_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 692, + "y": 924, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingBlue_4" + }, + { + "id": "space_shooter/wingBlue_5", + "name": "wingBlue_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 596, + "y": 892, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingBlue_5" + }, + { + "id": "space_shooter/wingBlue_6", + "name": "wingBlue_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 694, + "y": 847, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingBlue_6" + }, + { + "id": "space_shooter/wingBlue_7", + "name": "wingBlue_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 675, + "y": 134, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingBlue_7" + }, + { + "id": "space_shooter/wingGreen_0", + "name": "wingGreen_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 650, + "y": 525, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingGreen_0" + }, + { + "id": "space_shooter/wingGreen_1", + "name": "wingGreen_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 775, + "y": 229, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingGreen_1" + }, + { + "id": "space_shooter/wingGreen_2", + "name": "wingGreen_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 527, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingGreen_2" + }, + { + "id": "space_shooter/wingGreen_3", + "name": "wingGreen_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 535, + "y": 0, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingGreen_3" + }, + { + "id": "space_shooter/wingGreen_4", + "name": "wingGreen_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 694, + "y": 431, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingGreen_4" + }, + { + "id": "space_shooter/wingGreen_5", + "name": "wingGreen_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 525, + "y": 251, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingGreen_5" + }, + { + "id": "space_shooter/wingGreen_6", + "name": "wingGreen_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 695, + "y": 511, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingGreen_6" + }, + { + "id": "space_shooter/wingGreen_7", + "name": "wingGreen_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 655, + "y": 764, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingGreen_7" + }, + { + "id": "space_shooter/wingRed_0", + "name": "wingRed_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 712, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingRed_0" + }, + { + "id": "space_shooter/wingRed_1", + "name": "wingRed_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 768, + "y": 0, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingRed_1" + }, + { + "id": "space_shooter/wingRed_2", + "name": "wingRed_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 600, + "y": 300, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingRed_2" + }, + { + "id": "space_shooter/wingRed_3", + "name": "wingRed_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 698, + "y": 715, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingRed_3" + }, + { + "id": "space_shooter/wingRed_4", + "name": "wingRed_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 586, + "y": 75, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingRed_4" + }, + { + "id": "space_shooter/wingRed_5", + "name": "wingRed_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 718, + "y": 123, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingRed_5" + }, + { + "id": "space_shooter/wingRed_6", + "name": "wingRed_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 653, + "y": 681, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingRed_6" + }, + { + "id": "space_shooter/wingRed_7", + "name": "wingRed_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 286, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingRed_7" + }, + { + "id": "space_shooter/wingYellow_0", + "name": "wingYellow_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 650, + "y": 603, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingYellow_0" + }, + { + "id": "space_shooter/wingYellow_1", + "name": "wingYellow_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 760, + "y": 120, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingYellow_1" + }, + { + "id": "space_shooter/wingYellow_2", + "name": "wingYellow_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 353, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingYellow_2" + }, + { + "id": "space_shooter/wingYellow_3", + "name": "wingYellow_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 576, + "y": 150, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingYellow_3" + }, + { + "id": "space_shooter/wingYellow_4", + "name": "wingYellow_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 726, + "y": 0, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingYellow_4" + }, + { + "id": "space_shooter/wingYellow_5", + "name": "wingYellow_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 525, + "y": 182, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingYellow_5" + }, + { + "id": "space_shooter/wingYellow_6", + "name": "wingYellow_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 695, + "y": 585, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingYellow_6" + }, + { + "id": "space_shooter/wingYellow_7", + "name": "wingYellow_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 364, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingYellow_7" + }, + { + "id": "tappy_plane/UIbg", + "name": "UIbg", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 986, + "width": 264, + "height": 264, + "direction": 90.0, + "referenceName": "UIbg" + }, + { + "id": "tappy_plane/background", + "name": "background", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 355, + "width": 800, + "height": 480, + "direction": 90.0, + "referenceName": "background" + }, + { + "id": "tappy_plane/buttonLarge", + "name": "buttonLarge", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1250, + "width": 196, + "height": 70, + "direction": 90.0, + "referenceName": "buttonLarge" + }, + { + "id": "tappy_plane/buttonSmall", + "name": "buttonSmall", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1320, + "width": 136, + "height": 80, + "direction": 90.0, + "referenceName": "buttonSmall" + }, + { + "id": "tappy_plane/groundDirt", + "name": "groundDirt", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 0, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundDirt" + }, + { + "id": "tappy_plane/groundGrass", + "name": "groundGrass", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 142, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundGrass" + }, + { + "id": "tappy_plane/groundIce", + "name": "groundIce", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 71, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundIce" + }, + { + "id": "tappy_plane/groundRock", + "name": "groundRock", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 284, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundRock" + }, + { + "id": "tappy_plane/groundSnow", + "name": "groundSnow", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 213, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundSnow" + }, + { + "id": "tappy_plane/letterA", + "name": "letterA", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 412, + "y": 835, + "width": 61, + "height": 64, + "direction": 90.0, + "referenceName": "letterA" + }, + { + "id": "tappy_plane/letterB", + "name": "letterB", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 487, + "y": 1537, + "width": 50, + "height": 66, + "direction": 90.0, + "referenceName": "letterB" + }, + { + "id": "tappy_plane/letterC", + "name": "letterC", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 460, + "y": 977, + "width": 52, + "height": 66, + "direction": 90.0, + "referenceName": "letterC" + }, + { + "id": "tappy_plane/letterD", + "name": "letterD", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1613, + "width": 54, + "height": 66, + "direction": 90.0, + "referenceName": "letterD" + }, + { + "id": "tappy_plane/letterE", + "name": "letterE", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 511, + "y": 1965, + "width": 45, + "height": 64, + "direction": 90.0, + "referenceName": "letterE" + }, + { + "id": "tappy_plane/letterF", + "name": "letterF", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 963, + "width": 44, + "height": 64, + "direction": 90.0, + "referenceName": "letterF" + }, + { + "id": "tappy_plane/letterG", + "name": "letterG", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 460, + "y": 1107, + "width": 52, + "height": 66, + "direction": 90.0, + "referenceName": "letterG" + }, + { + "id": "tappy_plane/letterH", + "name": "letterH", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 473, + "y": 835, + "width": 51, + "height": 64, + "direction": 90.0, + "referenceName": "letterH" + }, + { + "id": "tappy_plane/letterI", + "name": "letterI", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 524, + "y": 835, + "width": 22, + "height": 64, + "direction": 90.0, + "referenceName": "letterI" + }, + { + "id": "tappy_plane/letterJ", + "name": "letterJ", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 1027, + "width": 42, + "height": 66, + "direction": 90.0, + "referenceName": "letterJ" + }, + { + "id": "tappy_plane/letterK", + "name": "letterK", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1821, + "width": 53, + "height": 64, + "direction": 90.0, + "referenceName": "letterK" + }, + { + "id": "tappy_plane/letterL", + "name": "letterL", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 899, + "width": 44, + "height": 64, + "direction": 90.0, + "referenceName": "letterL" + }, + { + "id": "tappy_plane/letterM", + "name": "letterM", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 392, + "y": 1967, + "width": 66, + "height": 64, + "direction": 90.0, + "referenceName": "letterM" + }, + { + "id": "tappy_plane/letterN", + "name": "letterN", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1679, + "width": 53, + "height": 64, + "direction": 90.0, + "referenceName": "letterN" + }, + { + "id": "tappy_plane/letterO", + "name": "letterO", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1284, + "width": 60, + "height": 66, + "direction": 90.0, + "referenceName": "letterO" + }, + { + "id": "tappy_plane/letterP", + "name": "letterP", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 489, + "y": 1427, + "width": 48, + "height": 65, + "direction": 90.0, + "referenceName": "letterP" + }, + { + "id": "tappy_plane/letterQ", + "name": "letterQ", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1205, + "width": 60, + "height": 79, + "direction": 90.0, + "referenceName": "letterQ" + }, + { + "id": "tappy_plane/letterR", + "name": "letterR", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 478, + "y": 1249, + "width": 51, + "height": 65, + "direction": 90.0, + "referenceName": "letterR" + }, + { + "id": "tappy_plane/letterS", + "name": "letterS", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 511, + "y": 1899, + "width": 46, + "height": 66, + "direction": 90.0, + "referenceName": "letterS" + }, + { + "id": "tappy_plane/letterT", + "name": "letterT", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 460, + "y": 1043, + "width": 52, + "height": 64, + "direction": 90.0, + "referenceName": "letterT" + }, + { + "id": "tappy_plane/letterU", + "name": "letterU", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 485, + "y": 1757, + "width": 51, + "height": 66, + "direction": 90.0, + "referenceName": "letterU" + }, + { + "id": "tappy_plane/letterV", + "name": "letterV", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 400, + "y": 913, + "width": 61, + "height": 64, + "direction": 90.0, + "referenceName": "letterV" + }, + { + "id": "tappy_plane/letterW", + "name": "letterW", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 136, + "y": 1320, + "width": 76, + "height": 64, + "direction": 90.0, + "referenceName": "letterW" + }, + { + "id": "tappy_plane/letterX", + "name": "letterX", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1409, + "width": 58, + "height": 64, + "direction": 90.0, + "referenceName": "letterX" + }, + { + "id": "tappy_plane/letterY", + "name": "letterY", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1473, + "width": 57, + "height": 64, + "direction": 90.0, + "referenceName": "letterY" + }, + { + "id": "tappy_plane/letterZ", + "name": "letterZ", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 486, + "y": 1613, + "width": 50, + "height": 64, + "direction": 90.0, + "referenceName": "letterZ" + }, + { + "id": "tappy_plane/medalBronze", + "name": "medalBronze", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1400, + "width": 114, + "height": 119, + "direction": 90.0, + "referenceName": "medalBronze" + }, + { + "id": "tappy_plane/medalGold", + "name": "medalGold", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1519, + "width": 114, + "height": 119, + "direction": 90.0, + "referenceName": "medalGold" + }, + { + "id": "tappy_plane/medalSilver", + "name": "medalSilver", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1638, + "width": 114, + "height": 119, + "direction": 90.0, + "referenceName": "medalSilver" + }, + { + "id": "tappy_plane/number0", + "name": "number0", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1743, + "width": 53, + "height": 78, + "direction": 90.0, + "referenceName": "number0" + }, + { + "id": "tappy_plane/number1", + "name": "number1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 1093, + "width": 37, + "height": 76, + "direction": 90.0, + "referenceName": "number1" + }, + { + "id": "tappy_plane/number2", + "name": "number2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 477, + "y": 1350, + "width": 51, + "height": 77, + "direction": 90.0, + "referenceName": "number2" + }, + { + "id": "tappy_plane/number3", + "name": "number3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 485, + "y": 1679, + "width": 51, + "height": 78, + "direction": 90.0, + "referenceName": "number3" + }, + { + "id": "tappy_plane/number4", + "name": "number4", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1537, + "width": 55, + "height": 76, + "direction": 90.0, + "referenceName": "number4" + }, + { + "id": "tappy_plane/number5", + "name": "number5", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 485, + "y": 1823, + "width": 50, + "height": 76, + "direction": 90.0, + "referenceName": "number5" + }, + { + "id": "tappy_plane/number6", + "name": "number6", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1885, + "width": 53, + "height": 77, + "direction": 90.0, + "referenceName": "number6" + }, + { + "id": "tappy_plane/number7", + "name": "number7", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 478, + "y": 1173, + "width": 51, + "height": 76, + "direction": 90.0, + "referenceName": "number7" + }, + { + "id": "tappy_plane/number8", + "name": "number8", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 461, + "y": 899, + "width": 51, + "height": 78, + "direction": 90.0, + "referenceName": "number8" + }, + { + "id": "tappy_plane/number9", + "name": "number9", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 458, + "y": 1962, + "width": 53, + "height": 77, + "direction": 90.0, + "referenceName": "number9" + }, + { + "id": "tappy_plane/planeBlue1", + "name": "planeBlue1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1371, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeBlue1" + }, + { + "id": "tappy_plane/planeBlue2", + "name": "planeBlue2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 372, + "y": 1132, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeBlue2" + }, + { + "id": "tappy_plane/planeBlue3", + "name": "planeBlue3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 222, + "y": 1562, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeBlue3" + }, + { + "id": "tappy_plane/planeGreen1", + "name": "planeGreen1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 114, + "y": 1639, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeGreen1" + }, + { + "id": "tappy_plane/planeGreen2", + "name": "planeGreen2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 216, + "y": 1951, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeGreen2" + }, + { + "id": "tappy_plane/planeGreen3", + "name": "planeGreen3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 222, + "y": 1489, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeGreen3" + }, + { + "id": "tappy_plane/planeRed1", + "name": "planeRed1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 216, + "y": 1878, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeRed1" + }, + { + "id": "tappy_plane/planeRed2", + "name": "planeRed2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 372, + "y": 1059, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeRed2" + }, + { + "id": "tappy_plane/planeRed3", + "name": "planeRed3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 372, + "y": 986, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeRed3" + }, + { + "id": "tappy_plane/planeYellow1", + "name": "planeYellow1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 304, + "y": 1967, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeYellow1" + }, + { + "id": "tappy_plane/planeYellow2", + "name": "planeYellow2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1298, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeYellow2" + }, + { + "id": "tappy_plane/planeYellow3", + "name": "planeYellow3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1225, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeYellow3" + }, + { + "id": "tappy_plane/puffLarge", + "name": "puffLarge", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 114, + "y": 1712, + "width": 42, + "height": 35, + "direction": 90.0, + "referenceName": "puffLarge" + }, + { + "id": "tappy_plane/puffSmall", + "name": "puffSmall", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 196, + "y": 1250, + "width": 25, + "height": 21, + "direction": 90.0, + "referenceName": "puffSmall" + }, + { + "id": "tappy_plane/rock", + "name": "rock", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 114, + "y": 1400, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "tappy_plane/rock" + }, + { + "id": "tappy_plane/rockDown", + "name": "rockDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 324, + "y": 1489, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockDown" + }, + { + "id": "tappy_plane/rockGrass", + "name": "rockGrass", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1757, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockGrass" + }, + { + "id": "tappy_plane/rockGrassDown", + "name": "rockGrassDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 264, + "y": 986, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockGrassDown" + }, + { + "id": "tappy_plane/rockIce", + "name": "rockIce", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 216, + "y": 1639, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockIce" + }, + { + "id": "tappy_plane/rockIceDown", + "name": "rockIceDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 222, + "y": 1250, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockIceDown" + }, + { + "id": "tappy_plane/rockSnow", + "name": "rockSnow", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 324, + "y": 1728, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockSnow" + }, + { + "id": "tappy_plane/rockSnowDown", + "name": "rockSnowDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 108, + "y": 1757, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockSnowDown" + }, + { + "id": "tappy_plane/starBronze", + "name": "starBronze", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 170, + "y": 1996, + "width": 39, + "height": 37, + "direction": 90.0, + "referenceName": "starBronze" + }, + { + "id": "tappy_plane/starGold", + "name": "starGold", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 369, + "y": 1444, + "width": 39, + "height": 37, + "direction": 90.0, + "referenceName": "starGold" + }, + { + "id": "tappy_plane/starSilver", + "name": "starSilver", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1444, + "width": 39, + "height": 37, + "direction": 90.0, + "referenceName": "starSilver" + }, + { + "id": "tappy_plane/tap", + "name": "tap", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 156, + "y": 1712, + "width": 40, + "height": 40, + "direction": 90.0, + "referenceName": "tap" + }, + { + "id": "tappy_plane/tapLeft", + "name": "tapLeft", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1996, + "width": 85, + "height": 42, + "direction": 90.0, + "referenceName": "tapLeft" + }, + { + "id": "tappy_plane/tapRight", + "name": "tapRight", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 85, + "y": 1996, + "width": 85, + "height": 42, + "direction": 90.0, + "referenceName": "tapRight" + }, + { + "id": "tappy_plane/tapTick", + "name": "tapTick", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1350, + "width": 59, + "height": 59, + "direction": 90.0, + "referenceName": "tapTick" + }, + { + "id": "tappy_plane/textGameOver", + "name": "textGameOver", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 835, + "width": 412, + "height": 78, + "direction": 90.0, + "referenceName": "textGameOver" + }, + { + "id": "tappy_plane/textGetReady", + "name": "textGetReady", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 913, + "width": 400, + "height": 73, + "direction": 90.0, + "referenceName": "textGetReady" + }, + { + "id": "cat/cat_idle_1", + "name": "cat_idle_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_1" + }, + { + "id": "cat/cat_idle_2", + "name": "cat_idle_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_2" + }, + { + "id": "cat/cat_idle_6", + "name": "cat_idle_6", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_6" + }, + { + "id": "cat/cat_idle_10", + "name": "cat_idle_10", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_10" + }, + { + "id": "cat/cat_idle_14", + "name": "cat_idle_14", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_14" + }, + { + "id": "cat/cat_idle_18", + "name": "cat_idle_18", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_18" + }, + { + "id": "cat/cat_idle_3", + "name": "cat_idle_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_3" + }, + { + "id": "cat/cat_idle_7", + "name": "cat_idle_7", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_7" + }, + { + "id": "cat/cat_idle_11", + "name": "cat_idle_11", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_11" + }, + { + "id": "cat/cat_idle_15", + "name": "cat_idle_15", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_15" + }, + { + "id": "cat/cat_idle_19", + "name": "cat_idle_19", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_19" + }, + { + "id": "cat/cat_idle_25", + "name": "cat_idle_25", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_25" + }, + { + "id": "cat/cat_idle_4", + "name": "cat_idle_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_4" + }, + { + "id": "cat/cat_idle_8", + "name": "cat_idle_8", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_8" + }, + { + "id": "cat/cat_idle_12", + "name": "cat_idle_12", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_12" + }, + { + "id": "cat/cat_idle_16", + "name": "cat_idle_16", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_16" + }, + { + "id": "cat/cat_idle_26", + "name": "cat_idle_26", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_26" + }, + { + "id": "cat/cat_idle_5", + "name": "cat_idle_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_5" + }, + { + "id": "cat/cat_idle_9", + "name": "cat_idle_9", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_9" + }, + { + "id": "cat/cat_idle_13", + "name": "cat_idle_13", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_13" + }, + { + "id": "cat/cat_idle_17", + "name": "cat_idle_17", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_17" + }, + { + "id": "cat/cat_idle_20", + "name": "cat_idle_20", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 330, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_20" + }, + { + "id": "cat/cat_idle_21", + "name": "cat_idle_21", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 396, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_21" + }, + { + "id": "cat/cat_idle_22", + "name": "cat_idle_22", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 462, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_22" + }, + { + "id": "cat/cat_idle_23", + "name": "cat_idle_23", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 528, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_23" + }, + { + "id": "cat/cat_idle_24", + "name": "cat_idle_24", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 594, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_24" + }, + { + "id": "cat/cat_walk_1", + "name": "cat_walk_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_1" + }, + { + "id": "cat/cat_walk_2", + "name": "cat_walk_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_2" + }, + { + "id": "cat/cat_walk_3", + "name": "cat_walk_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_3" + }, + { + "id": "cat/cat_walk_4", + "name": "cat_walk_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_4" + }, + { + "id": "cat/cat_walk_5", + "name": "cat_walk_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_5" + }, + { + "id": "cat/cat_walk_6", + "name": "cat_walk_6", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 330, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_6" + }, + { + "id": "cat/cat_crouch_1", + "name": "cat_crouch_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_1" + }, + { + "id": "cat/cat_crouch_2", + "name": "cat_crouch_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_2" + }, + { + "id": "cat/cat_crouch_3", + "name": "cat_crouch_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_3" + }, + { + "id": "cat/cat_crouch_4", + "name": "cat_crouch_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_4" + }, + { + "id": "cat/cat_jump_1", + "name": "cat_jump_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 198, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_jump_1" + }, + { + "id": "cat/cat_jump_2", + "name": "cat_jump_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 198, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_jump_2" + }, + { + "id": "cat/cat_jump_3", + "name": "cat_jump_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 198, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_jump_3" + }, + { + "id": "cat/cat_fall_1", + "name": "cat_fall_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 264, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_fall_1" + }, + { + "id": "cat/cat_fall_2", + "name": "cat_fall_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 264, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_fall_2" + }, + { + "id": "cat/cat_land_1", + "name": "cat_land_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 330, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_land_1" + }, + { + "id": "cat/cat_land_2", + "name": "cat_land_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 330, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_land_2" + }, + { + "id": "cat/cat_punch_1", + "name": "cat_punch_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_1" + }, + { + "id": "cat/cat_punch_2", + "name": "cat_punch_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_2" + }, + { + "id": "cat/cat_punch_3", + "name": "cat_punch_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_3" + }, + { + "id": "cat/cat_punch_4", + "name": "cat_punch_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_4" + }, + { + "id": "cat/cat_punch_5", + "name": "cat_punch_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_5" + }, + { + "id": "cat/cat_punch_6", + "name": "cat_punch_6", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_6" + }, + { + "id": "cat/cat_hurt_1", + "name": "cat_hurt_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 462, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_hurt_1" + }, + { + "id": "cat/cat_hurt_2", + "name": "cat_hurt_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 462, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_hurt_2" + }, + { + "id": "cat/cat_hurt_3", + "name": "cat_hurt_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 462, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_hurt_3" + }, + { + "id": "cat/cat_ko_1", + "name": "cat_ko_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_1" + }, + { + "id": "cat/cat_ko_2", + "name": "cat_ko_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_2" + }, + { + "id": "cat/cat_ko_3", + "name": "cat_ko_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_3" + }, + { + "id": "cat/cat_ko_4", + "name": "cat_ko_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_4" + }, + { + "id": "cat/cat_ko_5", + "name": "cat_ko_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_5" + }, + { + "id": "cat/cat_cheer_1", + "name": "cat_cheer_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_1" + }, + { + "id": "cat/cat_cheer_3", + "name": "cat_cheer_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_3" + }, + { + "id": "cat/cat_cheer_2", + "name": "cat_cheer_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_2" + }, + { + "id": "cat/cat_cheer_4", + "name": "cat_cheer_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_4" + }, + { + "id": "cat/cat_climb_1", + "name": "cat_climb_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_1" + }, + { + "id": "cat/cat_climb_2", + "name": "cat_climb_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_2" + }, + { + "id": "cat/cat_climb_4", + "name": "cat_climb_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_4" + }, + { + "id": "cat/cat_climb_3", + "name": "cat_climb_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_3" + }, + { + "id": "cat/coffee_bean_1", + "name": "coffee_bean_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_1" + }, + { + "id": "cat/coffee_bean_2", + "name": "coffee_bean_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_2" + }, + { + "id": "cat/coffee_bean_3", + "name": "coffee_bean_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 68, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_3" + }, + { + "id": "cat/coffee_bean_4", + "name": "coffee_bean_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 102, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_4" + }, + { + "id": "cat/bug_walk_1", + "name": "bug_walk_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_1" + }, + { + "id": "cat/bug_walk_3", + "name": "bug_walk_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_3" + }, + { + "id": "cat/bug_walk_2", + "name": "bug_walk_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_2" + }, + { + "id": "cat/bug_walk_4", + "name": "bug_walk_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 68, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_4" + }, + { + "id": "cat/bug_squished_1", + "name": "bug_squished_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 794, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_squished_1" + }, + { + "id": "cat/bug_squished_2", + "name": "bug_squished_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 794, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_squished_2" + }, + { + "id": "cat/goal_mug_1", + "name": "goal_mug_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_1" + }, + { + "id": "cat/goal_mug_2", + "name": "goal_mug_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_2" + }, + { + "id": "cat/goal_mug_3", + "name": "goal_mug_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 68, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_3" + }, + { + "id": "cat/goal_mug_4", + "name": "goal_mug_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 102, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_4" + }, + { + "id": "cat/heart_full", + "name": "heart_full", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 862, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "heart_full" + }, + { + "id": "cat/heart_empty", + "name": "heart_empty", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 862, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "heart_empty" + } + ], + "sounds": [ + { + "id": "footstep_carpet_000", + "path": "sounds/impact/footstep_carpet_000.ogg" + }, + { + "id": "footstep_carpet_001", + "path": "sounds/impact/footstep_carpet_001.ogg" + }, + { + "id": "footstep_carpet_002", + "path": "sounds/impact/footstep_carpet_002.ogg" + }, + { + "id": "footstep_carpet_003", + "path": "sounds/impact/footstep_carpet_003.ogg" + }, + { + "id": "footstep_carpet_004", + "path": "sounds/impact/footstep_carpet_004.ogg" + }, + { + "id": "footstep_concrete_000", + "path": "sounds/impact/footstep_concrete_000.ogg" + }, + { + "id": "footstep_concrete_001", + "path": "sounds/impact/footstep_concrete_001.ogg" + }, + { + "id": "footstep_concrete_002", + "path": "sounds/impact/footstep_concrete_002.ogg" + }, + { + "id": "footstep_concrete_003", + "path": "sounds/impact/footstep_concrete_003.ogg" + }, + { + "id": "footstep_concrete_004", + "path": "sounds/impact/footstep_concrete_004.ogg" + }, + { + "id": "footstep_grass_000", + "path": "sounds/impact/footstep_grass_000.ogg" + }, + { + "id": "footstep_grass_001", + "path": "sounds/impact/footstep_grass_001.ogg" + }, + { + "id": "footstep_grass_002", + "path": "sounds/impact/footstep_grass_002.ogg" + }, + { + "id": "footstep_grass_003", + "path": "sounds/impact/footstep_grass_003.ogg" + }, + { + "id": "footstep_grass_004", + "path": "sounds/impact/footstep_grass_004.ogg" + }, + { + "id": "footstep_snow_000", + "path": "sounds/impact/footstep_snow_000.ogg" + }, + { + "id": "footstep_snow_001", + "path": "sounds/impact/footstep_snow_001.ogg" + }, + { + "id": "footstep_snow_002", + "path": "sounds/impact/footstep_snow_002.ogg" + }, + { + "id": "footstep_snow_003", + "path": "sounds/impact/footstep_snow_003.ogg" + }, + { + "id": "footstep_snow_004", + "path": "sounds/impact/footstep_snow_004.ogg" + }, + { + "id": "footstep_wood_000", + "path": "sounds/impact/footstep_wood_000.ogg" + }, + { + "id": "footstep_wood_001", + "path": "sounds/impact/footstep_wood_001.ogg" + }, + { + "id": "footstep_wood_002", + "path": "sounds/impact/footstep_wood_002.ogg" + }, + { + "id": "footstep_wood_003", + "path": "sounds/impact/footstep_wood_003.ogg" + }, + { + "id": "footstep_wood_004", + "path": "sounds/impact/footstep_wood_004.ogg" + }, + { + "id": "impactBell_heavy_000", + "path": "sounds/impact/impactBell_heavy_000.ogg" + }, + { + "id": "impactBell_heavy_001", + "path": "sounds/impact/impactBell_heavy_001.ogg" + }, + { + "id": "impactBell_heavy_002", + "path": "sounds/impact/impactBell_heavy_002.ogg" + }, + { + "id": "impactBell_heavy_003", + "path": "sounds/impact/impactBell_heavy_003.ogg" + }, + { + "id": "impactBell_heavy_004", + "path": "sounds/impact/impactBell_heavy_004.ogg" + }, + { + "id": "impactGeneric_light_000", + "path": "sounds/impact/impactGeneric_light_000.ogg" + }, + { + "id": "impactGeneric_light_001", + "path": "sounds/impact/impactGeneric_light_001.ogg" + }, + { + "id": "impactGeneric_light_002", + "path": "sounds/impact/impactGeneric_light_002.ogg" + }, + { + "id": "impactGeneric_light_003", + "path": "sounds/impact/impactGeneric_light_003.ogg" + }, + { + "id": "impactGeneric_light_004", + "path": "sounds/impact/impactGeneric_light_004.ogg" + }, + { + "id": "impactGlass_heavy_000", + "path": "sounds/impact/impactGlass_heavy_000.ogg" + }, + { + "id": "impactGlass_heavy_001", + "path": "sounds/impact/impactGlass_heavy_001.ogg" + }, + { + "id": "impactGlass_heavy_002", + "path": "sounds/impact/impactGlass_heavy_002.ogg" + }, + { + "id": "impactGlass_heavy_003", + "path": "sounds/impact/impactGlass_heavy_003.ogg" + }, + { + "id": "impactGlass_heavy_004", + "path": "sounds/impact/impactGlass_heavy_004.ogg" + }, + { + "id": "impactGlass_light_000", + "path": "sounds/impact/impactGlass_light_000.ogg" + }, + { + "id": "impactGlass_light_001", + "path": "sounds/impact/impactGlass_light_001.ogg" + }, + { + "id": "impactGlass_light_002", + "path": "sounds/impact/impactGlass_light_002.ogg" + }, + { + "id": "impactGlass_light_003", + "path": "sounds/impact/impactGlass_light_003.ogg" + }, + { + "id": "impactGlass_light_004", + "path": "sounds/impact/impactGlass_light_004.ogg" + }, + { + "id": "impactGlass_medium_000", + "path": "sounds/impact/impactGlass_medium_000.ogg" + }, + { + "id": "impactGlass_medium_001", + "path": "sounds/impact/impactGlass_medium_001.ogg" + }, + { + "id": "impactGlass_medium_002", + "path": "sounds/impact/impactGlass_medium_002.ogg" + }, + { + "id": "impactGlass_medium_003", + "path": "sounds/impact/impactGlass_medium_003.ogg" + }, + { + "id": "impactGlass_medium_004", + "path": "sounds/impact/impactGlass_medium_004.ogg" + }, + { + "id": "impactMetal_heavy_000", + "path": "sounds/impact/impactMetal_heavy_000.ogg" + }, + { + "id": "impactMetal_heavy_001", + "path": "sounds/impact/impactMetal_heavy_001.ogg" + }, + { + "id": "impactMetal_heavy_002", + "path": "sounds/impact/impactMetal_heavy_002.ogg" + }, + { + "id": "impactMetal_heavy_003", + "path": "sounds/impact/impactMetal_heavy_003.ogg" + }, + { + "id": "impactMetal_heavy_004", + "path": "sounds/impact/impactMetal_heavy_004.ogg" + }, + { + "id": "impactMetal_light_000", + "path": "sounds/impact/impactMetal_light_000.ogg" + }, + { + "id": "impactMetal_light_001", + "path": "sounds/impact/impactMetal_light_001.ogg" + }, + { + "id": "impactMetal_light_002", + "path": "sounds/impact/impactMetal_light_002.ogg" + }, + { + "id": "impactMetal_light_003", + "path": "sounds/impact/impactMetal_light_003.ogg" + }, + { + "id": "impactMetal_light_004", + "path": "sounds/impact/impactMetal_light_004.ogg" + }, + { + "id": "impactMetal_medium_000", + "path": "sounds/impact/impactMetal_medium_000.ogg" + }, + { + "id": "impactMetal_medium_001", + "path": "sounds/impact/impactMetal_medium_001.ogg" + }, + { + "id": "impactMetal_medium_002", + "path": "sounds/impact/impactMetal_medium_002.ogg" + }, + { + "id": "impactMetal_medium_003", + "path": "sounds/impact/impactMetal_medium_003.ogg" + }, + { + "id": "impactMetal_medium_004", + "path": "sounds/impact/impactMetal_medium_004.ogg" + }, + { + "id": "impactMining_000", + "path": "sounds/impact/impactMining_000.ogg" + }, + { + "id": "impactMining_001", + "path": "sounds/impact/impactMining_001.ogg" + }, + { + "id": "impactMining_002", + "path": "sounds/impact/impactMining_002.ogg" + }, + { + "id": "impactMining_003", + "path": "sounds/impact/impactMining_003.ogg" + }, + { + "id": "impactMining_004", + "path": "sounds/impact/impactMining_004.ogg" + }, + { + "id": "impactPlank_medium_000", + "path": "sounds/impact/impactPlank_medium_000.ogg" + }, + { + "id": "impactPlank_medium_001", + "path": "sounds/impact/impactPlank_medium_001.ogg" + }, + { + "id": "impactPlank_medium_002", + "path": "sounds/impact/impactPlank_medium_002.ogg" + }, + { + "id": "impactPlank_medium_003", + "path": "sounds/impact/impactPlank_medium_003.ogg" + }, + { + "id": "impactPlank_medium_004", + "path": "sounds/impact/impactPlank_medium_004.ogg" + }, + { + "id": "impactPlate_heavy_000", + "path": "sounds/impact/impactPlate_heavy_000.ogg" + }, + { + "id": "impactPlate_heavy_001", + "path": "sounds/impact/impactPlate_heavy_001.ogg" + }, + { + "id": "impactPlate_heavy_002", + "path": "sounds/impact/impactPlate_heavy_002.ogg" + }, + { + "id": "impactPlate_heavy_003", + "path": "sounds/impact/impactPlate_heavy_003.ogg" + }, + { + "id": "impactPlate_heavy_004", + "path": "sounds/impact/impactPlate_heavy_004.ogg" + }, + { + "id": "impactPlate_light_000", + "path": "sounds/impact/impactPlate_light_000.ogg" + }, + { + "id": "impactPlate_light_001", + "path": "sounds/impact/impactPlate_light_001.ogg" + }, + { + "id": "impactPlate_light_002", + "path": "sounds/impact/impactPlate_light_002.ogg" + }, + { + "id": "impactPlate_light_003", + "path": "sounds/impact/impactPlate_light_003.ogg" + }, + { + "id": "impactPlate_light_004", + "path": "sounds/impact/impactPlate_light_004.ogg" + }, + { + "id": "impactPlate_medium_000", + "path": "sounds/impact/impactPlate_medium_000.ogg" + }, + { + "id": "impactPlate_medium_001", + "path": "sounds/impact/impactPlate_medium_001.ogg" + }, + { + "id": "impactPlate_medium_002", + "path": "sounds/impact/impactPlate_medium_002.ogg" + }, + { + "id": "impactPlate_medium_003", + "path": "sounds/impact/impactPlate_medium_003.ogg" + }, + { + "id": "impactPlate_medium_004", + "path": "sounds/impact/impactPlate_medium_004.ogg" + }, + { + "id": "impactPunch_heavy_000", + "path": "sounds/impact/impactPunch_heavy_000.ogg" + }, + { + "id": "impactPunch_heavy_001", + "path": "sounds/impact/impactPunch_heavy_001.ogg" + }, + { + "id": "impactPunch_heavy_002", + "path": "sounds/impact/impactPunch_heavy_002.ogg" + }, + { + "id": "impactPunch_heavy_003", + "path": "sounds/impact/impactPunch_heavy_003.ogg" + }, + { + "id": "impactPunch_heavy_004", + "path": "sounds/impact/impactPunch_heavy_004.ogg" + }, + { + "id": "impactPunch_medium_000", + "path": "sounds/impact/impactPunch_medium_000.ogg" + }, + { + "id": "impactPunch_medium_001", + "path": "sounds/impact/impactPunch_medium_001.ogg" + }, + { + "id": "impactPunch_medium_002", + "path": "sounds/impact/impactPunch_medium_002.ogg" + }, + { + "id": "impactPunch_medium_003", + "path": "sounds/impact/impactPunch_medium_003.ogg" + }, + { + "id": "impactPunch_medium_004", + "path": "sounds/impact/impactPunch_medium_004.ogg" + }, + { + "id": "impactSoft_heavy_000", + "path": "sounds/impact/impactSoft_heavy_000.ogg" + }, + { + "id": "impactSoft_heavy_001", + "path": "sounds/impact/impactSoft_heavy_001.ogg" + }, + { + "id": "impactSoft_heavy_002", + "path": "sounds/impact/impactSoft_heavy_002.ogg" + }, + { + "id": "impactSoft_heavy_003", + "path": "sounds/impact/impactSoft_heavy_003.ogg" + }, + { + "id": "impactSoft_heavy_004", + "path": "sounds/impact/impactSoft_heavy_004.ogg" + }, + { + "id": "impactSoft_medium_000", + "path": "sounds/impact/impactSoft_medium_000.ogg" + }, + { + "id": "impactSoft_medium_001", + "path": "sounds/impact/impactSoft_medium_001.ogg" + }, + { + "id": "impactSoft_medium_002", + "path": "sounds/impact/impactSoft_medium_002.ogg" + }, + { + "id": "impactSoft_medium_003", + "path": "sounds/impact/impactSoft_medium_003.ogg" + }, + { + "id": "impactSoft_medium_004", + "path": "sounds/impact/impactSoft_medium_004.ogg" + }, + { + "id": "impactTin_medium_000", + "path": "sounds/impact/impactTin_medium_000.ogg" + }, + { + "id": "impactTin_medium_001", + "path": "sounds/impact/impactTin_medium_001.ogg" + }, + { + "id": "impactTin_medium_002", + "path": "sounds/impact/impactTin_medium_002.ogg" + }, + { + "id": "impactTin_medium_003", + "path": "sounds/impact/impactTin_medium_003.ogg" + }, + { + "id": "impactTin_medium_004", + "path": "sounds/impact/impactTin_medium_004.ogg" + }, + { + "id": "impactWood_heavy_000", + "path": "sounds/impact/impactWood_heavy_000.ogg" + }, + { + "id": "impactWood_heavy_001", + "path": "sounds/impact/impactWood_heavy_001.ogg" + }, + { + "id": "impactWood_heavy_002", + "path": "sounds/impact/impactWood_heavy_002.ogg" + }, + { + "id": "impactWood_heavy_003", + "path": "sounds/impact/impactWood_heavy_003.ogg" + }, + { + "id": "impactWood_heavy_004", + "path": "sounds/impact/impactWood_heavy_004.ogg" + }, + { + "id": "impactWood_light_000", + "path": "sounds/impact/impactWood_light_000.ogg" + }, + { + "id": "impactWood_light_001", + "path": "sounds/impact/impactWood_light_001.ogg" + }, + { + "id": "impactWood_light_002", + "path": "sounds/impact/impactWood_light_002.ogg" + }, + { + "id": "impactWood_light_003", + "path": "sounds/impact/impactWood_light_003.ogg" + }, + { + "id": "impactWood_light_004", + "path": "sounds/impact/impactWood_light_004.ogg" + }, + { + "id": "impactWood_medium_000", + "path": "sounds/impact/impactWood_medium_000.ogg" + }, + { + "id": "impactWood_medium_001", + "path": "sounds/impact/impactWood_medium_001.ogg" + }, + { + "id": "impactWood_medium_002", + "path": "sounds/impact/impactWood_medium_002.ogg" + }, + { + "id": "impactWood_medium_003", + "path": "sounds/impact/impactWood_medium_003.ogg" + }, + { + "id": "impactWood_medium_004", + "path": "sounds/impact/impactWood_medium_004.ogg" + }, + { + "id": "jingles_NES00", + "path": "sounds/jingles/8-Bit jingles/jingles_NES00.ogg" + }, + { + "id": "jingles_NES01", + "path": "sounds/jingles/8-Bit jingles/jingles_NES01.ogg" + }, + { + "id": "jingles_NES02", + "path": "sounds/jingles/8-Bit jingles/jingles_NES02.ogg" + }, + { + "id": "jingles_NES03", + "path": "sounds/jingles/8-Bit jingles/jingles_NES03.ogg" + }, + { + "id": "jingles_NES04", + "path": "sounds/jingles/8-Bit jingles/jingles_NES04.ogg" + }, + { + "id": "jingles_NES05", + "path": "sounds/jingles/8-Bit jingles/jingles_NES05.ogg" + }, + { + "id": "jingles_NES06", + "path": "sounds/jingles/8-Bit jingles/jingles_NES06.ogg" + }, + { + "id": "jingles_NES07", + "path": "sounds/jingles/8-Bit jingles/jingles_NES07.ogg" + }, + { + "id": "jingles_NES08", + "path": "sounds/jingles/8-Bit jingles/jingles_NES08.ogg" + }, + { + "id": "jingles_NES09", + "path": "sounds/jingles/8-Bit jingles/jingles_NES09.ogg" + }, + { + "id": "jingles_NES10", + "path": "sounds/jingles/8-Bit jingles/jingles_NES10.ogg" + }, + { + "id": "jingles_NES11", + "path": "sounds/jingles/8-Bit jingles/jingles_NES11.ogg" + }, + { + "id": "jingles_NES12", + "path": "sounds/jingles/8-Bit jingles/jingles_NES12.ogg" + }, + { + "id": "jingles_NES13", + "path": "sounds/jingles/8-Bit jingles/jingles_NES13.ogg" + }, + { + "id": "jingles_NES14", + "path": "sounds/jingles/8-Bit jingles/jingles_NES14.ogg" + }, + { + "id": "jingles_NES15", + "path": "sounds/jingles/8-Bit jingles/jingles_NES15.ogg" + }, + { + "id": "jingles_NES16", + "path": "sounds/jingles/8-Bit jingles/jingles_NES16.ogg" + }, + { + "id": "jingles_HIT00", + "path": "sounds/jingles/Hit jingles/jingles_HIT00.ogg" + }, + { + "id": "jingles_HIT01", + "path": "sounds/jingles/Hit jingles/jingles_HIT01.ogg" + }, + { + "id": "jingles_HIT02", + "path": "sounds/jingles/Hit jingles/jingles_HIT02.ogg" + }, + { + "id": "jingles_HIT03", + "path": "sounds/jingles/Hit jingles/jingles_HIT03.ogg" + }, + { + "id": "jingles_HIT04", + "path": "sounds/jingles/Hit jingles/jingles_HIT04.ogg" + }, + { + "id": "jingles_HIT05", + "path": "sounds/jingles/Hit jingles/jingles_HIT05.ogg" + }, + { + "id": "jingles_HIT06", + "path": "sounds/jingles/Hit jingles/jingles_HIT06.ogg" + }, + { + "id": "jingles_HIT07", + "path": "sounds/jingles/Hit jingles/jingles_HIT07.ogg" + }, + { + "id": "jingles_HIT08", + "path": "sounds/jingles/Hit jingles/jingles_HIT08.ogg" + }, + { + "id": "jingles_HIT09", + "path": "sounds/jingles/Hit jingles/jingles_HIT09.ogg" + }, + { + "id": "jingles_HIT10", + "path": "sounds/jingles/Hit jingles/jingles_HIT10.ogg" + }, + { + "id": "jingles_HIT11", + "path": "sounds/jingles/Hit jingles/jingles_HIT11.ogg" + }, + { + "id": "jingles_HIT12", + "path": "sounds/jingles/Hit jingles/jingles_HIT12.ogg" + }, + { + "id": "jingles_HIT13", + "path": "sounds/jingles/Hit jingles/jingles_HIT13.ogg" + }, + { + "id": "jingles_HIT14", + "path": "sounds/jingles/Hit jingles/jingles_HIT14.ogg" + }, + { + "id": "jingles_HIT15", + "path": "sounds/jingles/Hit jingles/jingles_HIT15.ogg" + }, + { + "id": "jingles_HIT16", + "path": "sounds/jingles/Hit jingles/jingles_HIT16.ogg" + }, + { + "id": "jingles_PIZZI00", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI00.ogg" + }, + { + "id": "jingles_PIZZI01", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI01.ogg" + }, + { + "id": "jingles_PIZZI02", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI02.ogg" + }, + { + "id": "jingles_PIZZI03", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI03.ogg" + }, + { + "id": "jingles_PIZZI04", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI04.ogg" + }, + { + "id": "jingles_PIZZI05", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI05.ogg" + }, + { + "id": "jingles_PIZZI06", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI06.ogg" + }, + { + "id": "jingles_PIZZI07", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI07.ogg" + }, + { + "id": "jingles_PIZZI08", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI08.ogg" + }, + { + "id": "jingles_PIZZI09", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI09.ogg" + }, + { + "id": "jingles_PIZZI10", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI10.ogg" + }, + { + "id": "jingles_PIZZI11", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI11.ogg" + }, + { + "id": "jingles_PIZZI12", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI12.ogg" + }, + { + "id": "jingles_PIZZI13", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI13.ogg" + }, + { + "id": "jingles_PIZZI14", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI14.ogg" + }, + { + "id": "jingles_PIZZI15", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI15.ogg" + }, + { + "id": "jingles_PIZZI16", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI16.ogg" + }, + { + "id": "jingles_SAX00", + "path": "sounds/jingles/Sax jingles/jingles_SAX00.ogg" + }, + { + "id": "jingles_SAX01", + "path": "sounds/jingles/Sax jingles/jingles_SAX01.ogg" + }, + { + "id": "jingles_SAX02", + "path": "sounds/jingles/Sax jingles/jingles_SAX02.ogg" + }, + { + "id": "jingles_SAX03", + "path": "sounds/jingles/Sax jingles/jingles_SAX03.ogg" + }, + { + "id": "jingles_SAX04", + "path": "sounds/jingles/Sax jingles/jingles_SAX04.ogg" + }, + { + "id": "jingles_SAX05", + "path": "sounds/jingles/Sax jingles/jingles_SAX05.ogg" + }, + { + "id": "jingles_SAX06", + "path": "sounds/jingles/Sax jingles/jingles_SAX06.ogg" + }, + { + "id": "jingles_SAX07", + "path": "sounds/jingles/Sax jingles/jingles_SAX07.ogg" + }, + { + "id": "jingles_SAX08", + "path": "sounds/jingles/Sax jingles/jingles_SAX08.ogg" + }, + { + "id": "jingles_SAX09", + "path": "sounds/jingles/Sax jingles/jingles_SAX09.ogg" + }, + { + "id": "jingles_SAX10", + "path": "sounds/jingles/Sax jingles/jingles_SAX10.ogg" + }, + { + "id": "jingles_SAX11", + "path": "sounds/jingles/Sax jingles/jingles_SAX11.ogg" + }, + { + "id": "jingles_SAX12", + "path": "sounds/jingles/Sax jingles/jingles_SAX12.ogg" + }, + { + "id": "jingles_SAX13", + "path": "sounds/jingles/Sax jingles/jingles_SAX13.ogg" + }, + { + "id": "jingles_SAX14", + "path": "sounds/jingles/Sax jingles/jingles_SAX14.ogg" + }, + { + "id": "jingles_SAX15", + "path": "sounds/jingles/Sax jingles/jingles_SAX15.ogg" + }, + { + "id": "jingles_SAX16", + "path": "sounds/jingles/Sax jingles/jingles_SAX16.ogg" + }, + { + "id": "jingles_STEEL00", + "path": "sounds/jingles/Steel jingles/jingles_STEEL00.ogg" + }, + { + "id": "jingles_STEEL01", + "path": "sounds/jingles/Steel jingles/jingles_STEEL01.ogg" + }, + { + "id": "jingles_STEEL02", + "path": "sounds/jingles/Steel jingles/jingles_STEEL02.ogg" + }, + { + "id": "jingles_STEEL03", + "path": "sounds/jingles/Steel jingles/jingles_STEEL03.ogg" + }, + { + "id": "jingles_STEEL04", + "path": "sounds/jingles/Steel jingles/jingles_STEEL04.ogg" + }, + { + "id": "jingles_STEEL05", + "path": "sounds/jingles/Steel jingles/jingles_STEEL05.ogg" + }, + { + "id": "jingles_STEEL06", + "path": "sounds/jingles/Steel jingles/jingles_STEEL06.ogg" + }, + { + "id": "jingles_STEEL07", + "path": "sounds/jingles/Steel jingles/jingles_STEEL07.ogg" + }, + { + "id": "jingles_STEEL08", + "path": "sounds/jingles/Steel jingles/jingles_STEEL08.ogg" + }, + { + "id": "jingles_STEEL09", + "path": "sounds/jingles/Steel jingles/jingles_STEEL09.ogg" + }, + { + "id": "jingles_STEEL10", + "path": "sounds/jingles/Steel jingles/jingles_STEEL10.ogg" + }, + { + "id": "jingles_STEEL11", + "path": "sounds/jingles/Steel jingles/jingles_STEEL11.ogg" + }, + { + "id": "jingles_STEEL12", + "path": "sounds/jingles/Steel jingles/jingles_STEEL12.ogg" + }, + { + "id": "jingles_STEEL13", + "path": "sounds/jingles/Steel jingles/jingles_STEEL13.ogg" + }, + { + "id": "jingles_STEEL14", + "path": "sounds/jingles/Steel jingles/jingles_STEEL14.ogg" + }, + { + "id": "jingles_STEEL15", + "path": "sounds/jingles/Steel jingles/jingles_STEEL15.ogg" + }, + { + "id": "jingles_STEEL16", + "path": "sounds/jingles/Steel jingles/jingles_STEEL16.ogg" + }, + { + "id": "beltHandle1", + "path": "sounds/rpg/beltHandle1.ogg" + }, + { + "id": "beltHandle2", + "path": "sounds/rpg/beltHandle2.ogg" + }, + { + "id": "bookClose", + "path": "sounds/rpg/bookClose.ogg" + }, + { + "id": "bookFlip1", + "path": "sounds/rpg/bookFlip1.ogg" + }, + { + "id": "bookFlip2", + "path": "sounds/rpg/bookFlip2.ogg" + }, + { + "id": "bookFlip3", + "path": "sounds/rpg/bookFlip3.ogg" + }, + { + "id": "bookOpen", + "path": "sounds/rpg/bookOpen.ogg" + }, + { + "id": "bookPlace1", + "path": "sounds/rpg/bookPlace1.ogg" + }, + { + "id": "bookPlace2", + "path": "sounds/rpg/bookPlace2.ogg" + }, + { + "id": "bookPlace3", + "path": "sounds/rpg/bookPlace3.ogg" + }, + { + "id": "chop", + "path": "sounds/rpg/chop.ogg" + }, + { + "id": "cloth1", + "path": "sounds/rpg/cloth1.ogg" + }, + { + "id": "cloth2", + "path": "sounds/rpg/cloth2.ogg" + }, + { + "id": "cloth3", + "path": "sounds/rpg/cloth3.ogg" + }, + { + "id": "cloth4", + "path": "sounds/rpg/cloth4.ogg" + }, + { + "id": "clothBelt", + "path": "sounds/rpg/clothBelt.ogg" + }, + { + "id": "clothBelt2", + "path": "sounds/rpg/clothBelt2.ogg" + }, + { + "id": "creak1", + "path": "sounds/rpg/creak1.ogg" + }, + { + "id": "creak2", + "path": "sounds/rpg/creak2.ogg" + }, + { + "id": "creak3", + "path": "sounds/rpg/creak3.ogg" + }, + { + "id": "doorClose_1", + "path": "sounds/rpg/doorClose_1.ogg" + }, + { + "id": "doorClose_2", + "path": "sounds/rpg/doorClose_2.ogg" + }, + { + "id": "doorClose_3", + "path": "sounds/rpg/doorClose_3.ogg" + }, + { + "id": "doorClose_4", + "path": "sounds/rpg/doorClose_4.ogg" + }, + { + "id": "doorOpen_1", + "path": "sounds/rpg/doorOpen_1.ogg" + }, + { + "id": "doorOpen_2", + "path": "sounds/rpg/doorOpen_2.ogg" + }, + { + "id": "drawKnife1", + "path": "sounds/rpg/drawKnife1.ogg" + }, + { + "id": "drawKnife2", + "path": "sounds/rpg/drawKnife2.ogg" + }, + { + "id": "drawKnife3", + "path": "sounds/rpg/drawKnife3.ogg" + }, + { + "id": "dropLeather", + "path": "sounds/rpg/dropLeather.ogg" + }, + { + "id": "footstep00", + "path": "sounds/rpg/footstep00.ogg" + }, + { + "id": "footstep01", + "path": "sounds/rpg/footstep01.ogg" + }, + { + "id": "footstep02", + "path": "sounds/rpg/footstep02.ogg" + }, + { + "id": "footstep03", + "path": "sounds/rpg/footstep03.ogg" + }, + { + "id": "footstep04", + "path": "sounds/rpg/footstep04.ogg" + }, + { + "id": "footstep05", + "path": "sounds/rpg/footstep05.ogg" + }, + { + "id": "footstep06", + "path": "sounds/rpg/footstep06.ogg" + }, + { + "id": "footstep07", + "path": "sounds/rpg/footstep07.ogg" + }, + { + "id": "footstep08", + "path": "sounds/rpg/footstep08.ogg" + }, + { + "id": "footstep09", + "path": "sounds/rpg/footstep09.ogg" + }, + { + "id": "handleCoins", + "path": "sounds/rpg/handleCoins.ogg" + }, + { + "id": "handleCoins2", + "path": "sounds/rpg/handleCoins2.ogg" + }, + { + "id": "handleSmallLeather", + "path": "sounds/rpg/handleSmallLeather.ogg" + }, + { + "id": "handleSmallLeather2", + "path": "sounds/rpg/handleSmallLeather2.ogg" + }, + { + "id": "knifeSlice", + "path": "sounds/rpg/knifeSlice.ogg" + }, + { + "id": "knifeSlice2", + "path": "sounds/rpg/knifeSlice2.ogg" + }, + { + "id": "metalClick", + "path": "sounds/rpg/metalClick.ogg" + }, + { + "id": "metalLatch", + "path": "sounds/rpg/metalLatch.ogg" + }, + { + "id": "metalPot1", + "path": "sounds/rpg/metalPot1.ogg" + }, + { + "id": "metalPot2", + "path": "sounds/rpg/metalPot2.ogg" + }, + { + "id": "metalPot3", + "path": "sounds/rpg/metalPot3.ogg" + } + ] +} diff --git a/catalogs/examples.json b/catalogs/examples.json new file mode 100644 index 00000000..da2df7c9 --- /dev/null +++ b/catalogs/examples.json @@ -0,0 +1,1907 @@ +{ + "schemaVersion": 1, + "libraryVersion": "5.7.0", + "browserVersion": "5.7.0-browser.2", + "examples": [ + { + "id": "demo/cat", + "kind": "demo", + "source": "src/examples/java/demos/cat", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "CatSketch.ctxt", + "sha256": "f0425f9eda65280859247b795144aa7570088d0c95635b7ac4d8f21a494a5282" + }, + { + "path": "CatSketch.java", + "sha256": "720ccf8f24d9c87beaf05c0e130dee65da5c8e2a31d98352a21ea319577df3ea" + }, + { + "path": "sprites/cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + } + ] + }, + { + "id": "demo/catPlatformer", + "kind": "demo", + "source": "src/examples/java/demos/catPlatformer", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "cat", + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Bean.java", + "sha256": "e711aead57857c6d25ff96f5e0de6a969ffd9c1b33f359e3f2bb8a36428f5a10" + }, + { + "path": "Bug.java", + "sha256": "6a6e39b0925985b93f9e5e1c509fe898a9cd13a5dc2cba3f46b3c58eae58677a" + }, + { + "path": "Cat.java", + "sha256": "40752d42d41e75295bbea5463ae5f574b58ddc4a888cde56b319cf57a4484c40" + }, + { + "path": "CatPlatformer.java", + "sha256": "bbe3fe14eee8152747818462485beb514870dc2a5f57a6bec9c164a2c294ecb2" + }, + { + "path": "Goal.java", + "sha256": "a0ab034b3dbf2835a1b85dd1edbb32b67a7774dd8e41b3a493194ba778b97572" + }, + { + "path": "Ground.java", + "sha256": "9515a80cf4c830e9646a64b61c2d3f9eca9fad899438f83fec8566c439643032" + }, + { + "path": "Heart.java", + "sha256": "bd423d745bd2b5ccbc0e765a6b838946411e044e4f51972e325f4cfe21e2d31c" + }, + { + "path": "Ladder.java", + "sha256": "d133f3365cc26cccb4c1c29bdce907bc28b41f2de158cb8b59d869a5e1367d1e" + }, + { + "path": "Platform.java", + "sha256": "7b42871f874fb59bb1849760af9fcd2963540c7b541326a5d2e9631fb21eb1fd" + } + ] + }, + { + "id": "demo/clock", + "kind": "demo", + "source": "src/examples/java/demos/clock", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Clock.class", + "sha256": "e2385a27deb9148840fd3970d3eebc1afe9435ccac77d267e768263e92c7d0b6" + }, + { + "path": "Clock.ctxt", + "sha256": "a960e294f7621fb7227cc21a5bc5e761bd30b49afc2406a0b39b4bd4b710d9ea" + }, + { + "path": "ClockSprite.class", + "sha256": "d8b2710f3fa9c2bf05ce42bd37cb8345601e3c6212d20a33a076c8c3c6f1d25d" + }, + { + "path": "ClockSprite.ctxt", + "sha256": "e0fdbbe2e22df1af27e684de6846215e261693cf1f48357945ea5a67978473aa" + }, + { + "path": "ClockSprite.java", + "sha256": "498b9a3b87b2863f054895e9cc4d668274f15e7b555cc82025e3715fc68dc79b" + }, + { + "path": "ClockStage.java", + "sha256": "1b1a9a5cfbec16b86956258fad2e1243df6f8d70d20a9570a5152a513371577b" + }, + { + "path": "HourHandSprite.class", + "sha256": "e42303dd06146e30882eefe6fa672cf087993441b9347acdd68d465370c72133" + }, + { + "path": "HourHandSprite.ctxt", + "sha256": "e4563507c584bd87322f84a7bb3aac369554eb8358ad5226d1b708350cf54add" + }, + { + "path": "HourHandSprite.java", + "sha256": "afbdbddccfa8e4e2faa0e498d13d8175fb8ccca82f38a6792a9e7b4fe3e9e54b" + }, + { + "path": "MinuteHandSprite.class", + "sha256": "69a6d94a87a4ee79eb1eeae4d77fa1417f916f57ff02eec415c3066e8b8ef3c5" + }, + { + "path": "MinuteHandSprite.ctxt", + "sha256": "c1c794edc010292c0271a543c16f7c8bbe380a189e5e74b8c7dede318a592914" + }, + { + "path": "MinuteHandSprite.java", + "sha256": "654e62b72e7e03b1df52077eefac3b077894f1a64a9f2176c9b72c1fac32a6ef" + }, + { + "path": "SecondHandSprite.class", + "sha256": "0eafa22bfa3e4635e5861972c84aa6e7f14f11bbc1f9db82647a95be749b9952" + }, + { + "path": "SecondHandSprite.ctxt", + "sha256": "ba3487ee3509b252d581a4984334ac1ffb85b7b1f8188eef5cb1987e4747bdf1" + }, + { + "path": "SecondHandSprite.java", + "sha256": "1404a90a1da7fb355b662b7ae5d6d46c4b370d99ea4888cacc3be93e5bb653dd" + }, + { + "path": "sprites/clock.png", + "sha256": "4aa62eaede42134ec9cbc0d22290a82d3c2b6deb9c064f56c34be7af124c41b7" + }, + { + "path": "sprites/clock.svg", + "sha256": "3566b50f76e74e035e68f89df03302fb4887f13ce67d873a497224091e4501d2" + }, + { + "path": "sprites/hour.png", + "sha256": "86dc71146074f166e783459b2c5252bfccc37d54a384d90e604adb4ed0e048ac" + }, + { + "path": "sprites/minute.png", + "sha256": "9023359e8e1273e72dae86678f4f0d1b860e32277b09d8e24977107c60021ad7" + }, + { + "path": "sprites/second.png", + "sha256": "0fa19932a82e616e71b6af073b360cf2dd8939ba73da037ed94bc815b5843241" + } + ] + }, + { + "id": "demo/coinCollector", + "kind": "demo", + "source": "src/examples/java/demos/coinCollector", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Coin.java", + "sha256": "968265215317ce300737ad31da7e07d0b3aff9f09d98f783e5a599bf28203957" + }, + { + "path": "CoinCollector.java", + "sha256": "f8100c3e5db0378bb30a3ff74e7c455e4de3a1781dd23e565ff8c604404c3688" + }, + { + "path": "Ground.java", + "sha256": "6599317ccac9c3c7535da8dd63e4ffa3aed4e59d02a331ae810aec7c5fb54e3a" + }, + { + "path": "Player.java", + "sha256": "7727f61aba83dfc7e368f0f924d313571d7030af54a587eba2c72ba1236129af" + } + ] + }, + { + "id": "demo/donutIO", + "kind": "demo", + "source": "src/examples/java/demos/donutIO", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Background.ctxt", + "sha256": "928fffee1697b0af11be67b58f6b21913f484c87bb1b6e567436ec4327c8ce8a" + }, + { + "path": "Background.java", + "sha256": "1309869222dd8488b6215aa09da058dfafc753d741584c73dfcd33e50a59adfe" + }, + { + "path": "Donut.ctxt", + "sha256": "f43e48901fa8e514397d4ef9a2aa8ae68822546815012ca47195f7f6997e27f4" + }, + { + "path": "Donut.java", + "sha256": "0b4f61e3f7d46d341c2002ebabe8f5039878c2ce189f0621880fa77bfcc71a41" + }, + { + "path": "FollowDonut.ctxt", + "sha256": "041ce42c129381a457e1e6ffe9bc524fd0cfa1410f26ff96a15cd6494e66796b" + }, + { + "path": "FollowDonut.java", + "sha256": "07e45838abc4aa1053b1b3cef7e85850924cbd668ff601c1691063e27875a136" + }, + { + "path": "Game.ctxt", + "sha256": "32f617410e6cd0068706aafc86086cf4ae5ec7ca0f4e274db220f56d4ee7c762" + }, + { + "path": "Game.java", + "sha256": "74d613db1055f1bbcdf4e90b26c7edeb971066be49614ef3b8f5036330649190" + }, + { + "path": "GameOverStage.ctxt", + "sha256": "3b56ea634fcbda7cb669f9e41a7dfd2cd29decbd8b043ec7593a9d860c0ea26d" + }, + { + "path": "GameOverStage.java", + "sha256": "913c81a99e0a8f3b92c8c7bf8889def04cd765a3ec563fdbba9057a45cfc5ab6" + }, + { + "path": "PlayerDonut.ctxt", + "sha256": "8a21359b0e1b2fde96c7e335146bbb2e04a5da4139bf5b9391f6fbba7c54e0d5" + }, + { + "path": "PlayerDonut.java", + "sha256": "dbb1026901d854e2c728ecec7f8d49d83e31e75db93c56a755f7d0d93a9bed97" + }, + { + "path": "StartStage.ctxt", + "sha256": "cc4e75d1c25e1d9e5728c2a582fa1fef347902811a3a391f41bafbe410a63b84" + }, + { + "path": "StartStage.java", + "sha256": "f8419017ad70bb40949a78b17888188b091e57f347898ca495a6dc80c649c896" + }, + { + "path": "WinStage.ctxt", + "sha256": "ddc4334a25724a3df7c614643591d09c9058763b65ce9e9e175eff8e0e3c4b6f" + }, + { + "path": "WinStage.java", + "sha256": "c4c9fa066d10fc19215d56763ec5a67e09f296764dc1f1d57c7023dda269e86f" + }, + { + "path": "WorldStage.ctxt", + "sha256": "8588835d2b413a0e603786d8c1bb55b0600836208bb916eabd99337a6c9b1b96" + }, + { + "path": "WorldStage.java", + "sha256": "2143d816a12266a4a1f3cf244e1ecc42201275718187975002499777396817d1" + }, + { + "path": "assets/donut.png", + "sha256": "1a3106071f180d9f484eaf82c8567d759fa94689f9ee9ba7b122c6daf99bf6db" + }, + { + "path": "assets/donut.svg", + "sha256": "1fb30404f57873f363b2e47711831e7d460df57575946bcb9e626e1f0a71c58c" + }, + { + "path": "assets/grid.png", + "sha256": "4b91fff890e34ddb540e1be514eee580dc138fcaaa9ca41ef2b633344c22467b" + } + ] + }, + { + "id": "demo/glide", + "kind": "demo", + "source": "src/examples/java/demos/glide", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Glide.java", + "sha256": "ae653f7ce351b21cbed2e71f1a02bac9cc31ac37881fd59c2783a45652df4f16" + } + ] + }, + { + "id": "demo/pipes", + "kind": "demo", + "source": "src/examples/java/demos/pipes", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "PenSprite.ctxt", + "sha256": "04b2796df4f437a74936fee3614e5cb54f896b266db1028c7723802283a6cc69" + }, + { + "path": "PenSprite.java", + "sha256": "d582f5bc29738b2d69f9433c4b7a40b9fae7d6451b8f938fba2768b028a9b736" + }, + { + "path": "Pipes.ctxt", + "sha256": "0ad6a99a6b2b6c5641ef9e6a744240851853eadc5d9bc234c711e91184585611" + }, + { + "path": "Pipes.java", + "sha256": "3026f03ca92b00776cccd363d0dafa2e15801dc6578279b0c4cc1ca508c155d1" + }, + { + "path": "backdrops/chalk_board.jpg", + "sha256": "72e78e95fd5a3225b6beb7f681cbc78dcc49e1c3b51ec2d1d140105cadd33389" + }, + { + "path": "sounds/bensound-enigmatic.ogg", + "sha256": "a41a57516dfea5f0a8e0c857bef66ce698197c923d6468992f23d7e94fa34a19" + }, + { + "path": "sprites/pen.png", + "sha256": "dc1c56c00f27c97ba4059f98e7fd3d7f9db8f4b33f2779c461568e09aac9b1dc" + } + ] + }, + { + "id": "demo/quiz", + "kind": "demo", + "source": "src/examples/java/demos/quiz", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Quiz.java", + "sha256": "e7d5e15ce5a8ae60f4f19bda5942784f1a6a3d23e21f0e86f4def2117ca6c9ff" + } + ] + }, + { + "id": "demo/rainbowVine", + "kind": "demo", + "source": "src/examples/java/demos/rainbowVine", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "RainbowVine.ctxt", + "sha256": "893b65df4e627e0e41fe61c83451a4cf9fb9e309aed93db3164c3c28a169fabd" + }, + { + "path": "RainbowVine.java", + "sha256": "a6fc438d97c957b62e0499fb63fbdd970cab0abd744374049158f233693593bb" + } + ] + }, + { + "id": "demo/randomDot", + "kind": "demo", + "source": "src/examples/java/demos/randomDot", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "RandomDot.ctxt", + "sha256": "4ae975d6ed03fa370334ddc03c86924b1f8bbdb488bd89ba80d5b113ff6ea354" + }, + { + "path": "RandomDot.java", + "sha256": "ea0ad9068e6bc875f94aaee7c5e15528c8409b4d4d0b3f819ae795a541cdb0bc" + } + ] + }, + { + "id": "demo/robot", + "kind": "demo", + "source": "src/examples/java/demos/robot", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "RobotSprite.java", + "sha256": "ae603a01374a9838a2430ebd7d9de573df7f9fd5d83780c17c3c24966b2ce3a2" + }, + { + "path": "RobotStage.java", + "sha256": "587f25bbe2b14b6cece3ca64df11c4aad6adac66739a0b8ae02354c11110d81b" + }, + { + "path": "sprites/robot.png", + "sha256": "e3426e0f0fbcd9f472326a39f45089ce074797d85c6ce8a42ca6fbf21a1b92a0" + } + ] + }, + { + "id": "demo/saving", + "kind": "demo", + "source": "src/examples/java/demos/saving", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "ExampleSettings.class", + "sha256": "9ed58f7c1ffaade0add634819a1dd8308f7636632144b3a285815ce17c0b87d4" + }, + { + "path": "ExampleSettings.ctxt", + "sha256": "c9ddd1270673bc58cbf59167f9b5f39e680f16bb08f6ddd0f3319872937e0823" + }, + { + "path": "ExampleSettings.java", + "sha256": "45cefc5bb42d659e1d077f6cb08d5a61b64b05d80fc65e8d71b8e4aad740b75d" + }, + { + "path": "Saving.class", + "sha256": "b23649e8611ce04e037ec21761fac333edbafd74e01f90908be8d20f89a246f2" + }, + { + "path": "Saving.ctxt", + "sha256": "d87b7c8939e43df7044652428bc71292949d82bf3e1080a45719fe51c9a7b3c3" + }, + { + "path": "Saving.java", + "sha256": "083c69f9950f753e83a21bc722b4d91bdf476d6bb5d73f41d939c27d4ff60ac6" + } + ] + }, + { + "id": "demo/sensing", + "kind": "demo", + "source": "src/examples/java/demos/sensing", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Sensing.java", + "sha256": "fb506f93964443ada7a50cdda42c0aea955b1c76886108d9bec59c18fd282394" + }, + { + "path": "sprites/hero.png", + "sha256": "c2c48af7fae8913bbe5b175296e07e1b2c05d7b0e557a403c7c7055f0eaafbc7" + }, + { + "path": "sprites/hero2.png", + "sha256": "fc49e2ed1f0e7546c2f5fb7250447b7ca1ca8be70ed74469ab4d97a12e7b8a88" + } + ] + }, + { + "id": "demo/shader", + "kind": "demo", + "source": "src/examples/java/demos/shader", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "LightSprite.ctxt", + "sha256": "ae5012fbc67213f2cb843984467c3eab8cd203ede506a7bff3cc29aee2943743" + }, + { + "path": "LightSprite.java", + "sha256": "3e8e37f53699f06e7d6c1e9838670b9a52f4eeab8289cabf94e5e7f86a5d2bd0" + }, + { + "path": "MySprite.ctxt", + "sha256": "528b4e6b95dcdcbb7064d7a3867fedca6db69f968a4d3d6929506c67bfb0ded7" + }, + { + "path": "MySprite.java", + "sha256": "fbc85f8ec07d603cc62e7fcf2d47a8eb1a9e6e17ccc60bab4508f6feab2ce60f" + }, + { + "path": "MyStage.ctxt", + "sha256": "fb7fcc3280c829e9aee2eb6ea0f7fa9e2b098b7f2951749a492faff83c0aded4" + }, + { + "path": "MyStage.java", + "sha256": "d4cfacd6f2749b5e703b3f2f6668d46f30340356d6787f629b744b833a7899a1" + }, + { + "path": "MyWindow.ctxt", + "sha256": "48638300d8d294aaef715d2aa33a0057a13de7880d217a4c852c99aebe88c56c" + }, + { + "path": "NormalSprite.ctxt", + "sha256": "ce8686adf891caaab2d194fd31b4a29d34360f5202b45e871c3e47c86c045432" + }, + { + "path": "NormalSprite.java", + "sha256": "e645c87cb21f235ad255eec06ca4558b019b5f9f773182b12d3bfc8df29ba612" + }, + { + "path": "ShaderExample.java", + "sha256": "df96b2c473b62166e2ac533ac4daac394ec3bd9ced8cebf3b431dc524b75ba93" + }, + { + "path": "blobby.frag", + "sha256": "384933079eec3bb08beb0b141bec7cd59ff7ef17c4a8fa706e3c4f1640dba55b" + }, + { + "path": "cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + }, + { + "path": "default.vert", + "sha256": "74b864ff74fb681af02ede001826b988ec94edcbb2c3b3377cd08975edca7cbf" + }, + { + "path": "glitch.frag", + "sha256": "cc97afe4a6df211c95abf0dead361f05d32cf4e42d042d78ad47f22a3c1fdb5d" + }, + { + "path": "halftone.frag", + "sha256": "64e2eb806ed07b091fa5d9c15329cf776d2950832021fb985172edebd0c0df71" + }, + { + "path": "light.frag", + "sha256": "cbb7e7c862a6944b620919c8643b40f8986a6dcc389e2308966fa5f50694e551" + }, + { + "path": "light.png", + "sha256": "8e64a24aedd5860c5573d818d708d8ba8ba2772d33ec86175eca26acb8ecb631" + }, + { + "path": "neon.frag", + "sha256": "8e875c5eb0cc2884d3470ae96797bf3708e01eb1725a98ad560414d5c9493f75" + }, + { + "path": "pixel.frag", + "sha256": "3b3d471cd76f42313008ffaa3019fd382e80916ddc990c48b748786a54f5796f" + }, + { + "path": "pixelate.frag", + "sha256": "7d0842e4fc000f92a2ac9cf113fce083b7c2c5e5bb43c2cb2edfbf0bc045075b" + } + ] + }, + { + "id": "demo/shakespeare", + "kind": "demo", + "source": "src/examples/java/demos/shakespeare", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "DNA.java", + "sha256": "d7fb514623ec03739084107481332ee1e68f24f288ac10cf278266100ba52e1a" + }, + { + "path": "Population.java", + "sha256": "1225987f167ca4db84acb4be8b3f1e57f089c122617409b09dcf13e0fd851eb8" + }, + { + "path": "Shakespeare.java", + "sha256": "bc83a9c98e6bc68976626c097e8058fd1bacb30bf43e5fdc91851b7a0fddeb3b" + }, + { + "path": "assets/Singkong.ttf", + "sha256": "0e4ccf7a12fe3282f2f8622ff1612206675d283f2881582f81ebba4702c4e0c2" + } + ] + }, + { + "id": "demo/smartRocket", + "kind": "demo", + "source": "src/examples/java/demos/smartRocket", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "DNA.ctxt", + "sha256": "98794aa9e549f0edaeed468e530fd4cd55e99601b2a30713c35be97d2c2c5cf0" + }, + { + "path": "DNA.java", + "sha256": "a032039dcd704fd3d7cabc8899cd3f94938aa74e767f0211560124612b38f59b" + }, + { + "path": "Level.ctxt", + "sha256": "a048cdb9d29e029b5f6dec0ad60a050e336cdf11572195d92c25c71331ea0399" + }, + { + "path": "Level.java", + "sha256": "6d65f2fda636d2f51f9184cfc87650491e0f31690cf374c9fff7ef6cfd48aa59" + }, + { + "path": "Population.ctxt", + "sha256": "a5fd04c02b7c3f63c5a3e14a70073b743ef60187b2f725ecab8f6046ec38fe37" + }, + { + "path": "Population.java", + "sha256": "eb21b9da4d7c03a1e6b8b5042a7d48ec5d16c80417915d80710d9ef011df7203" + }, + { + "path": "Rocket.ctxt", + "sha256": "42435a32b0244f81eadc863452dffc7bbe18be9bf74fc58da1aee46825a9686b" + }, + { + "path": "Rocket.java", + "sha256": "a6245304fc1ae2d9824e5c325ff2dcc697e61eb498d8808df165836ad46514b8" + }, + { + "path": "SmartRocket.ctxt", + "sha256": "16a36a50aafe1b7ada036a7b9e61354aafb0423677ba0c5626ed05265f12f4dc" + }, + { + "path": "SmartRocket.java", + "sha256": "865b4f7ecd65133e52d9e00d0a94ef248eee2ce1462af6109ca307d4aaaff9be" + }, + { + "path": "Ziel.ctxt", + "sha256": "37e64e2c172d4e8263b83b0b603d94e200f47cd38496d28c0c4300b8079e452f" + }, + { + "path": "Ziel.java", + "sha256": "e82ad1e3accf297c08135a588a3765e270857dc76ff70df91751f79321cc71f5" + }, + { + "path": "assets/rocket.png", + "sha256": "e459d96e8fb8c399efe9205796da70d2b652e584c82ecff5a2bb8a1963bdc428" + }, + { + "path": "assets/target.png", + "sha256": "d56b2aa9d5a9dac9bec50487138341ec3d16d703ab83eda47fbb2d6203d4c57d" + } + ] + }, + { + "id": "demo/stressTest", + "kind": "demo", + "source": "src/examples/java/demos/stressTest", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Character$1.class", + "sha256": "c54b3302c596103fbb7c10ff55575d27278e6df2d0a7c26fde7fab8a6b6cee43" + }, + { + "path": "Character.class", + "sha256": "2d20a2d119b2a2b31e395a16c61d3af8f80ea0559deb86fb4b2e8b7aba001c0d" + }, + { + "path": "Character.ctxt", + "sha256": "2d221a16e536712cdd95b8772539e5ca0ceb203aa1b12b123ccac427780e70da" + }, + { + "path": "CharacterState.class", + "sha256": "850c11afb05ad164fa316d2edfad7478ff36d5d865a159c8702e3cff0e13af4f" + }, + { + "path": "CharacterState.ctxt", + "sha256": "7b6d2b9e8f1ba867699553cc6b946185eee057d3e8d07316df78bcfd64730a2e" + }, + { + "path": "Dino.class", + "sha256": "9a4f79cb8e642b3dae71afc717fb98ca9ff00d54761567747257cfcce8370d47" + }, + { + "path": "Dino.ctxt", + "sha256": "ebfd59731c6410ab84c229bc2ed240fdf9d781e0c3b092e8d36d8b08d0bcf9f4" + }, + { + "path": "Dino.java", + "sha256": "d65f08c55ec15351ff77d625e3d8797d12dc24e877ea7dfe2c05ba576153c7d1" + }, + { + "path": "Figure.java", + "sha256": "345693eb286fb99f5fdb74a6f892130362b3eb9c973004434a38c172dc3e2a3e" + }, + { + "path": "FigureState.java", + "sha256": "5dcedf8f434d2d16809700a117377e7a527feecc48c4267d61206c2c0cf72a69" + }, + { + "path": "Knight.class", + "sha256": "eff5f2da50488896b663e4fd1895a60766bddea06b82988e19f09c83138498c7" + }, + { + "path": "Knight.ctxt", + "sha256": "b99051a2ba771b2ec034ec583f18a56f9263c1b5a1980b58ce9a4c1b86adf060" + }, + { + "path": "Knight.java", + "sha256": "5984f9ce9d6ce09247f0b5ae45b752e809e7fe1bffdf0a0f2b468cd2360470f3" + }, + { + "path": "Ninja.class", + "sha256": "d3b1c73c1efe9839fbe8105a2ca3251356f228e2cd97f3e096716c2622891216" + }, + { + "path": "Ninja.ctxt", + "sha256": "f52f8ff8464b4abe32573730ea4adc43471e20a4c707e1ff99f01233df024be3" + }, + { + "path": "Ninja.java", + "sha256": "cf6cf2d953366cd7b11c186a1fe01103788a2c9ad221c9ad58531ba402e9dbb5" + }, + { + "path": "StressTest.class", + "sha256": "42bc2bf49062b8fe6d78db099858c0c4381338b06a3a43f353ababa8591e9896" + }, + { + "path": "StressTest.ctxt", + "sha256": "390de6aefa294d1cb9d2b405ed8d39b1f239d5a0b4aac273c20f375615083ee6" + }, + { + "path": "StressTest.java", + "sha256": "e8566d3630cd0b6767c5fab6d4e774bd8d3d857fbd4a0f6517f4dcf36fba9bf4" + }, + { + "path": "assets/dino/Idle (1).png", + "sha256": "5a5507544b8bd548d21107ae9cfaa9adedf1d8ca893e67e0c5598fd2b5c154d6" + }, + { + "path": "assets/dino/Idle (10).png", + "sha256": "da4d5bbb19dcf39d249e498ca96e11bddada2a84af48a5f1ca2089a490573c77" + }, + { + "path": "assets/dino/Idle (2).png", + "sha256": "983cee1459218c3840f025ff11dd9471bbe0f236486ebae1d8c282628ddd6539" + }, + { + "path": "assets/dino/Idle (3).png", + "sha256": "5a57aa76e9a3ed48cc4c98842c2c11f286001fa5de44abe3763b7b353b76d18f" + }, + { + "path": "assets/dino/Idle (4).png", + "sha256": "745e0448bbeb086dcf534a1c7c1e1e3430c195f5da6455a194e0699c18cdd0d3" + }, + { + "path": "assets/dino/Idle (5).png", + "sha256": "3cfd09a9fe8e3bb57cb6e7ebff89335dd77082a7c4e541659c65f99094dc3647" + }, + { + "path": "assets/dino/Idle (6).png", + "sha256": "114b32b8ac4a3298a3fa904371140476fb642224905932e2d3f8b1888b209a11" + }, + { + "path": "assets/dino/Idle (7).png", + "sha256": "562ef3c99b1272535b25929c70bb1e85fc73f7d57d99f5cb2a87eaf9f29b90f3" + }, + { + "path": "assets/dino/Idle (8).png", + "sha256": "5e065cc1c4011cbbd94b0de89ad0cca66c8d6daf8a9cb499c45993508e3f2f75" + }, + { + "path": "assets/dino/Idle (9).png", + "sha256": "b9749fe9651f851dc668ab6799282bc840f921681e41632428bc5a2196df141b" + }, + { + "path": "assets/dino/LICENSE", + "sha256": "41ddb588901b4a011ec2c39dc469619fc39dbf24cd9d3d3e705a8d6d9c057a48" + }, + { + "path": "assets/dino/Run (1).png", + "sha256": "7c9413292b23282208285ce71572f15530f1b8006169f4d5c71945bd5f33c348" + }, + { + "path": "assets/dino/Run (2).png", + "sha256": "ed19846de2252f3acbe08f0db10b24830d0293c3abf11c94124da7a177cd7099" + }, + { + "path": "assets/dino/Run (3).png", + "sha256": "4defb15ffe20561b77d3a3120d6d822fea184907f651be13bd78de20907bbdd8" + }, + { + "path": "assets/dino/Run (4).png", + "sha256": "379025216e878055da8a488a0e90979a563425c8e85ad5886caea37bdd9d9ec4" + }, + { + "path": "assets/dino/Run (5).png", + "sha256": "6f68b216e7528402ab1f0328760af4afdd2689d47b561dde067df38303ba1561" + }, + { + "path": "assets/dino/Run (6).png", + "sha256": "7765bae61c2c89866f0ac5f77bed070e3768a557654072c38d9b2d2326f8665e" + }, + { + "path": "assets/dino/Run (7).png", + "sha256": "bfbdd6350d890a0a95183f2d92319328caa36dd4c5bca0436b2448d3907fe009" + }, + { + "path": "assets/dino/Run (8).png", + "sha256": "c877c9363595e93597b303d776b966c5dc4a08ecb4ec6fce2b618ac2d8fd09b8" + }, + { + "path": "assets/dino/Walk (1).png", + "sha256": "03eaac74a29a8275e08813a04274a55d6d048952d52afa21bfa9c1885a53288b" + }, + { + "path": "assets/dino/Walk (10).png", + "sha256": "c4d281e972230304095ef3739d5fe3b6432666cc715e5fa17e768cf6bea0e6aa" + }, + { + "path": "assets/dino/Walk (2).png", + "sha256": "1c3388e5a87aa73e76ed423c007f412146e6e5ccd8f3d02411e3616ce273d59e" + }, + { + "path": "assets/dino/Walk (3).png", + "sha256": "b5df437fea73b909af59869828ad11dd5c4e41f5f7f2e138bcf489d40ebeffc7" + }, + { + "path": "assets/dino/Walk (4).png", + "sha256": "536aba6c1b2e8629c5c252c9bd9dfe4db24865a69ff9a8e3f0c895bb4f68b6f4" + }, + { + "path": "assets/dino/Walk (5).png", + "sha256": "8aaca1f70101d07c303f6a9a585d6c8cd982af151269fcf7e9819d83d700337e" + }, + { + "path": "assets/dino/Walk (6).png", + "sha256": "cc549f0864920a1a91d0871ff0d4d183d1cf17d83a27ba173b8a0f92e72ffc7f" + }, + { + "path": "assets/dino/Walk (7).png", + "sha256": "59a842c2ec44dfe826e2f21b3fd1dfc2963835add460085b275619eb04f83adb" + }, + { + "path": "assets/dino/Walk (8).png", + "sha256": "3ae05a7c2aaccd4619d55743f07f8ec1fd5c070bba90fedfc7583467f5ccd372" + }, + { + "path": "assets/dino/Walk (9).png", + "sha256": "7346764788de8d010edc91fb22c569ec68305f5238278621115ccf060b31ab0b" + }, + { + "path": "assets/knight/Idle (1).png", + "sha256": "4b6d4d9dbf5e776ec29182e49f10a502706005f4ff16906f9e946c4f58df9a00" + }, + { + "path": "assets/knight/Idle (10).png", + "sha256": "7b9820b9548b1fd8295dc41d1dfdc80f640b3265394828916e8abb9583237303" + }, + { + "path": "assets/knight/Idle (2).png", + "sha256": "8383c766cece063cddad8ff222c75ee2c281a73f4b2ef19f050c5f4a4eef87b0" + }, + { + "path": "assets/knight/Idle (3).png", + "sha256": "2398b3f7adb8dbbdc842905875554d7534544b0b8a5ed5f43365d39fab3dd9a9" + }, + { + "path": "assets/knight/Idle (4).png", + "sha256": "1dba5fc199c72e4b64a46335de38564cb31e3040473acdcfee15d80d5240cfb3" + }, + { + "path": "assets/knight/Idle (5).png", + "sha256": "880d23363c9f98439be163902d33bb22b8e7badb74417c2b4c3e33b2aa43abc9" + }, + { + "path": "assets/knight/Idle (6).png", + "sha256": "98f0596f2e217b30954f387e87158f5f84ba240a8dd7cbbb4317eff0f5cd226a" + }, + { + "path": "assets/knight/Idle (7).png", + "sha256": "9fef5f0f6979017e9ec57c76e2ae5bfb113ec1e94058b1045725144fd1cbb2a9" + }, + { + "path": "assets/knight/Idle (8).png", + "sha256": "ff3607f8ec62a73f2a50701f3bfa0eaf23ccd54b51895f88dbc7faa933e8b539" + }, + { + "path": "assets/knight/Idle (9).png", + "sha256": "87290c26d989986ad165714e66b96f91b13a9e186457703e1c31b4dae5f16daa" + }, + { + "path": "assets/knight/LICENSE", + "sha256": "41ddb588901b4a011ec2c39dc469619fc39dbf24cd9d3d3e705a8d6d9c057a48" + }, + { + "path": "assets/knight/Run (1).png", + "sha256": "583cb89513c8751b93aebb5fb90f1361a6289b38bc7e4edba9daff5211084359" + }, + { + "path": "assets/knight/Run (10).png", + "sha256": "f5a0f7a74f3488e0a653f3755b4c31dde6f271cf38223a78023cadc0b1f6c256" + }, + { + "path": "assets/knight/Run (2).png", + "sha256": "8f28f129a99478b4047680cfd610d1639b02b080a5cbc6e4e43899944af4f807" + }, + { + "path": "assets/knight/Run (3).png", + "sha256": "d15180f29cf929491321fd2cb8dcd4e9070d907e433be3189b3f4126c9d70764" + }, + { + "path": "assets/knight/Run (4).png", + "sha256": "301411a800855e958327dbad85fc03a61b9a8d48c6b498cf5e04edf9a4f2c4cd" + }, + { + "path": "assets/knight/Run (5).png", + "sha256": "ad4364d8efbdf3ebe1f39027db941f132c07f503e2e135a6e0e7e1f425d609bd" + }, + { + "path": "assets/knight/Run (6).png", + "sha256": "277bdd09098e59e931e4cae2725960e2ff043ff4e18723b6a90c164bfb7d77d9" + }, + { + "path": "assets/knight/Run (7).png", + "sha256": "1a29dcc0e4af930e79aa323b6ba6c3389285b385007be1b73b6d155e6fe4128a" + }, + { + "path": "assets/knight/Run (8).png", + "sha256": "12135dad389f2c3e960fcebe8c93a1b63fdd5e31336b0d785ea494e22cb4a2ee" + }, + { + "path": "assets/knight/Run (9).png", + "sha256": "e343327bcf5b00affa1aa3a106a0226d3583fdd189e44c3b80a387572091efc4" + }, + { + "path": "assets/knight/Walk (1).png", + "sha256": "955c15b659e10ed4cebc643c54103b6a44f6416a6939dc5b6d5cc557cb75f9ad" + }, + { + "path": "assets/knight/Walk (10).png", + "sha256": "59ffbc390b816191c77ed43a0413fc787b1f7b8351bf23d4417f999765790392" + }, + { + "path": "assets/knight/Walk (2).png", + "sha256": "5de5cccce717a475601ad3ea15c1be72521c9440510d1b282185c3e1c129e13b" + }, + { + "path": "assets/knight/Walk (3).png", + "sha256": "cf19653994521807a80130ffe57040bc64a5a25389497b6ae959d9e94e8f7d7c" + }, + { + "path": "assets/knight/Walk (4).png", + "sha256": "d7369d0871f658488c771df762559848068677aebe61580e48360e2966eedfac" + }, + { + "path": "assets/knight/Walk (5).png", + "sha256": "4d61315a5b709747e87ef1579e08511a8646b63d19006de627def0685359fcab" + }, + { + "path": "assets/knight/Walk (6).png", + "sha256": "c2085e09e60c936c025c16fb0ff77a2cd5eb652c40d7a057ef57b2abb210f901" + }, + { + "path": "assets/knight/Walk (7).png", + "sha256": "1d142843fc0ac6db840a0914cfdfb5baaf2633af36f11329a28a9d98e5b1a174" + }, + { + "path": "assets/knight/Walk (8).png", + "sha256": "f22d91ce3e47ff33897063f7e968f685233c34718baf0cc567867d43ea6a6798" + }, + { + "path": "assets/knight/Walk (9).png", + "sha256": "ee09f04c688e818aaeac1f1981d492120f92c94a823d3ca0d77f90e5a5721cfe" + }, + { + "path": "assets/ninja/Idle (1).png", + "sha256": "0e8d98d16b056815c84f15bd095d47087c4dceac5880218b0466d37c573b8435" + }, + { + "path": "assets/ninja/Idle (10).png", + "sha256": "d402a6f4ad672e9f010764a426f90ab3ddfe04f924eed09c6eeded42ed98ca82" + }, + { + "path": "assets/ninja/Idle (2).png", + "sha256": "e7089bff695efef7bb2a62e0ead0d2f3334adca21a9adfc61e273010605c1142" + }, + { + "path": "assets/ninja/Idle (3).png", + "sha256": "8573a41086a0b6db1cc4f8f26ff4f525361d1e5a1483159996d7a3f385a6d83c" + }, + { + "path": "assets/ninja/Idle (4).png", + "sha256": "ae706a981eaa808fa29459e73a2f5b783de316f089284295a5857fce0f0c28ba" + }, + { + "path": "assets/ninja/Idle (5).png", + "sha256": "2952a1475585b3577f0643b01c3f713b36416354d5f6dbfb2d3f699fe6df4671" + }, + { + "path": "assets/ninja/Idle (6).png", + "sha256": "45d5e685296a7e1369bd107f0a474efcfca66a86eb0702f58c768b32056b847d" + }, + { + "path": "assets/ninja/Idle (7).png", + "sha256": "ef22c61ee05024cb3eee41a9844f04104f90d650c99038d6463107a5623ae125" + }, + { + "path": "assets/ninja/Idle (8).png", + "sha256": "4b337b7fe5364464b6cc28159609d0931d7d58004c45a59a2051326b4c753aa1" + }, + { + "path": "assets/ninja/Idle (9).png", + "sha256": "8c5805a5174380fc5aba30907c0d3170c91dc014879610cb5e9e6b2c0331983d" + }, + { + "path": "assets/ninja/Run (1).png", + "sha256": "166c069c125c24647cf1ddf8125be7596ff0e343bd672931f4260f4a8adc87ad" + }, + { + "path": "assets/ninja/Run (10).png", + "sha256": "c675b3bb8d58abd12cdc14dbd17f850024938ee747b225d0c8b3f7d4306e18a9" + }, + { + "path": "assets/ninja/Run (2).png", + "sha256": "199ed64724fec0582fa23290f54d6bb81b6f470078cf9d714cf84e75426b530e" + }, + { + "path": "assets/ninja/Run (3).png", + "sha256": "d92601cbae9825843712a2bac073424523910fa50d598f3b989a179d7c4b44a6" + }, + { + "path": "assets/ninja/Run (4).png", + "sha256": "c98bb0e654454674d4a73dda2f0255136a7ddd21424294a3a4ebe69dbb8c3f19" + }, + { + "path": "assets/ninja/Run (5).png", + "sha256": "f4491b94c618545aed63cf6571ddd9cd3b376ae0517653cd5b2a7761e89d0daa" + }, + { + "path": "assets/ninja/Run (6).png", + "sha256": "9003fa5099305f05b5fb269ffdf2f4b961d72353fedad946b05594f5e4c7a939" + }, + { + "path": "assets/ninja/Run (7).png", + "sha256": "fe2bd878b84d0db115dae64656904cf7ac70afdbe1ef70b3acbeb4da797085a9" + }, + { + "path": "assets/ninja/Run (8).png", + "sha256": "b4ab32fd8497c1d9938a97a02705a49da439239261da56d024c9e2eb4a5c994d" + }, + { + "path": "assets/ninja/Run (9).png", + "sha256": "9cec762184ecc45d6f6280dd2fd902d7a3717b77e4f06155ea3923756b8fe31a" + }, + { + "path": "assets/ninja/Walk (1).png", + "sha256": "cdef02a5555f3cd4ef85ad76a6efbf7c91f7b9b1ec78ef65c662db684e7529a0" + }, + { + "path": "assets/ninja/Walk (10).png", + "sha256": "4355a26cad8e9aebe6577d81a387daf0802a7da520e655db93343f568d7a3ebb" + }, + { + "path": "assets/ninja/Walk (2).png", + "sha256": "8013fddefb284075164858edb2ceee216347e265fcff69b374ce4a4264b30897" + }, + { + "path": "assets/ninja/Walk (3).png", + "sha256": "707ddc7fb87b4ddc18c81352cc653b89c3b942ebcb4d9256dea6ba5d2685f00e" + }, + { + "path": "assets/ninja/Walk (4).png", + "sha256": "03d8cd607dc37de0aef1883919bc0313bffee85b445658b18411f52e47ad81e8" + }, + { + "path": "assets/ninja/Walk (5).png", + "sha256": "c5ec5152a19b8fc1ce23ea55dbaa5e293538f09b5b8238ce2717bfdd199c7e85" + }, + { + "path": "assets/ninja/Walk (6).png", + "sha256": "0350f8d5c31c235b79337152908446853245b6b2b2e384b21cb212837794065d" + }, + { + "path": "assets/ninja/Walk (7).png", + "sha256": "1eed321418b4c20c3be3be89ed033d4e02e7fff9c4c637b51bfbdfda9d700a92" + }, + { + "path": "assets/ninja/Walk (8).png", + "sha256": "964d5a8e793750dc800650612a9480e2da91c3d223e7cdcab25f3169469bde40" + }, + { + "path": "assets/ninja/Walk (9).png", + "sha256": "ff8863152a575ef1e1a890006c217585458046cf7f4091c0cf5186c2a74be879" + }, + { + "path": "assets/outback.png", + "sha256": "b4d02cf557f6bdfbd59fd384160a5d583d4adf8b1610d25d1ceeafcb98f26766" + } + ] + }, + { + "id": "demo/tiled", + "kind": "demo", + "source": "src/examples/java/demos/tiled", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer" + ], + "files": [ + { + "path": "Bamboo.class", + "sha256": "c26b6f104820f8af4a28b7c584ce5e3c2a75391779fbe1ea81f5b0061c115af9" + }, + { + "path": "Bamboo.ctxt", + "sha256": "2a39143d1cf20a56edbcdeb1b8cbf854a6a1cd5f5ffcd541bb69cc727fd85413" + }, + { + "path": "Bamboo.java", + "sha256": "46ec44f8d28c5a0eaec1fb30f5c42d35ed9b6962b75a9c08105f770e4ee2df08" + }, + { + "path": "Enemy.class", + "sha256": "8c299d6a3c10413bbba0dbbfa3117fb8a3e3692eb9d5ff16193706512842867e" + }, + { + "path": "Enemy.ctxt", + "sha256": "04c8b38d50c18e54af9910661234395c755647c3abe112b7efd31968c4eea226" + }, + { + "path": "Enemy.java", + "sha256": "936060f67fbea9d35ce80ea0c829c120b7863eca6d775d97aea9fd5b7b7365cf" + }, + { + "path": "Fireball.class", + "sha256": "9295f82784260315454e89e833d3026722a73e7e8c8c66bff92968d84e9f050f" + }, + { + "path": "Fireball.ctxt", + "sha256": "a1c973e135a1b16087b5c274e57b9889ea3608209929261e1faf90f28545689a" + }, + { + "path": "Fireball.java", + "sha256": "9064b7fc0b8f286026ed08125db9c5b4fb77bc15c7add1dc51760732e346ecb2" + }, + { + "path": "GameState.class", + "sha256": "733989ae6ce95a5cd213c8e054479b75d6cb659ce22534907ef5e54f178bd7a0" + }, + { + "path": "GameState.ctxt", + "sha256": "dbb84dad708d630c1742ea7db99de5969e8f8f60b0c02070a874f73f954365dc" + }, + { + "path": "GameState.java", + "sha256": "816c40b0209a5f9dafd418e98238cb1d1f3296998e33b2e5eb397cc1a3be88ae" + }, + { + "path": "I18n.class", + "sha256": "a4d0a154874b6272dd68c86f50f5e6fe7c3cad9b91936118bd1ed0780416d87f" + }, + { + "path": "I18n.ctxt", + "sha256": "60c0ee8f6d6db7e07f6285c40639dffd399a90cc4d70c9ae66a24556e745f505" + }, + { + "path": "I18n.java", + "sha256": "c430cf0eb4d31e17a702971553b6f6bc629085fd197d7ac3bb3444a683920e55" + }, + { + "path": "Item.class", + "sha256": "1143e34a6338a38fb2e06fb68e8d0eb385301cf2eaf89cf670c6b98edc2541a9" + }, + { + "path": "Item.ctxt", + "sha256": "6ba89206c1707eb33b0096dcbbcf3c2fce18c964ed89d8c4f20debcc5d4904c6" + }, + { + "path": "Item.java", + "sha256": "17b9d7b4679d4ffd6f66d0ea0a83cb6e4fb8674b05e0091347bec523add6e276" + }, + { + "path": "Level1.tmx", + "sha256": "d0313669a472f49b6f1caa8d4effc390278176644339b7513819b44bac2c80be" + }, + { + "path": "Level2.tmx", + "sha256": "d3d104297fd78a7c1c85699d295b645ae21b7c8ff0ff0d9e11d556aca88641e3" + }, + { + "path": "Player.class", + "sha256": "495c890aeff50f812eb2c322ce793717e01dee09ba6ae91ea9c56c10a14337e5" + }, + { + "path": "Player.ctxt", + "sha256": "e96a1822d023b73fe3e7360e15793ad9b5a8375af898fad8905c05f4d59a54db" + }, + { + "path": "Player.java", + "sha256": "8731b294011650eb0f9f8e89562a820972c0a0457de6c2e21a73a5560310cc74" + }, + { + "path": "Tiled.class", + "sha256": "ed1dffc627fd2dd3c4e39d00ef788b881397390f11ddc97642399aa9292f5271" + }, + { + "path": "Tiled.ctxt", + "sha256": "ca7d54283b0c374cdd2c95f27fb82b64280c5da3ea3acdeb0f46fa679db94e0e" + }, + { + "path": "Tiled.java", + "sha256": "97c8631d9f363d1939987c86353cb2e34a4e530187fc93231864ba7a8a5bf5d3" + }, + { + "path": "UIItem.java", + "sha256": "f1177f7cfd7c7147ed3ef2e10b475c53c5de228c8ba2ab118bd9058563c17479" + }, + { + "path": "Wall.class", + "sha256": "7673195e6d30d0706583a98faeade7f6c0e64f6b9d2fd16bde130e2fbb8bcf0f" + }, + { + "path": "Wall.ctxt", + "sha256": "68d498fd9b3b2e81b3294aa50951ee9bd8866f4ada25e503badbcb844da84ae7" + }, + { + "path": "Wall.java", + "sha256": "b226bdddba1cc32e7ccabbe3c686161a2b04060acff79b769c34f6af53487bb0" + }, + { + "path": "Warp.class", + "sha256": "13bddf0b6ed387b51f2ceea6d1abe5ed05921867cbf1b92bb795395603d63233" + }, + { + "path": "Warp.ctxt", + "sha256": "103c797aaf7c290b62e01b4ccea36e0f8193d9ac9b30d67fc47133c5b322301c" + }, + { + "path": "Warp.java", + "sha256": "5749bb006f674e1a3aab8c3bb14933dd517edadb4ab1a38d213e7040c9791eab" + }, + { + "path": "Water.class", + "sha256": "1ed25c488dedb5ba53394aec075e1fdd82e0039ef0f132ee84790497754170b9" + }, + { + "path": "Water.ctxt", + "sha256": "2ff25af7e4be086febc0986f6f777cafdabbfbb81ec0966fa0965e7514a3624c" + }, + { + "path": "Water.java", + "sha256": "aee560ddb396dd81e10d84dfa4769b31dbf3cd8433955068886c436581c03b17" + }, + { + "path": "World.class", + "sha256": "993ca3729bd777ad7acec0f648c41c30b8d40a42b94a1584bff5c62f411ea71d" + }, + { + "path": "World.ctxt", + "sha256": "2f2969200a5664660259551bd4ee40aa6a523d8aa5c898c5916da50e2cf9808f" + }, + { + "path": "World.java", + "sha256": "3f0965034fd75e1d6c16501172bd72e53566b1dd8894cd7e8f46cf53ef7576a9" + }, + { + "path": "assets/Bamboo.png", + "sha256": "767a9fe9f5a386fb095471c2e934be15c6725be114a00c731500746ba98247fd" + }, + { + "path": "assets/Fireball.png", + "sha256": "366f2d49d9456c32c0eec2ce96e5487011af35da8007a0ef7cf82788e93a7b75" + }, + { + "path": "assets/Retro Gaming.ttf", + "sha256": "dfd827142124c0fab4b916a4c72dbf4c91a9069a150aa8be71d0566f6d612066" + }, + { + "path": "assets/ScrollFire.png", + "sha256": "899b4bc72a4a95e7c93ba481bfda2c2fd9990159db86523eb33a6dbcc260b69b" + }, + { + "path": "assets/ScrollWater.png", + "sha256": "274a12dd4ec4ccf2a4a4884d647c3880f7a3d7cb499aa573e7ad8d58fa5a3e0e" + }, + { + "path": "assets/Skeleton.png", + "sha256": "81fc368cb542892934400f7e3350433ff506ed966f5b9c95543e2745899ce2fe" + }, + { + "path": "assets/TilesetField.png", + "sha256": "b482b0b257baf09648db4d507ca255231fc4bff2dff89e59a9f70ba66b9e1845" + }, + { + "path": "assets/TilesetFloor.png", + "sha256": "5a4b0208e732a48f16fbe50ced54910cf0cb7ccc5552f426e5fb586829819681" + }, + { + "path": "assets/TilesetWater.png", + "sha256": "3d37d9581179c746fb55bc5e9eb83ed7f2ca6e0ee892cb9c0627250833b02277" + }, + { + "path": "save.json", + "sha256": "ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356" + } + ] + }, + { + "id": "demo/timedDot", + "kind": "demo", + "source": "src/examples/java/demos/timedDot", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "TimedDot.java", + "sha256": "439ceeabb6aeb4997221ad6b862c2e3707954caba15a181998bae51f304bddf3" + } + ] + }, + { + "id": "demo/timer", + "kind": "demo", + "source": "src/examples/java/demos/timer", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "TimerStage.java", + "sha256": "aca34300457121b32f740e294eb0e1589cf487cbe0cad5c431fb0de63402a608" + } + ] + }, + { + "id": "demo/ui", + "kind": "demo", + "source": "src/examples/java/demos/ui", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "UI.java", + "sha256": "864245b75532369c5e9115043ad8615214770401307c3f68611f62f9b1f2a5b2" + }, + { + "path": "bar_round_gloss_large.png", + "sha256": "44fea9186b56afe4c1cfc676b0dcf64fdee42c18ef4843389acc294b5666cbf0" + }, + { + "path": "bar_round_gloss_large_gray.png", + "sha256": "4f5c4d98f462cb38b7e81ad1f45a529a63f224fb032e430eec0df53da1f8fb46" + }, + { + "path": "crosshair_color_c.png", + "sha256": "53ad72c48a8fdb550b1e4cf2b6cf97e2de7a892cdbcb098e73263d804b530127" + }, + { + "path": "metalPanel_greenCorner.png", + "sha256": "8f8b0f856a0da0abb1aad33497331eb1f892bf7ea9f97e945882c8dd83164c70" + } + ] + }, + { + "id": "demo/volume", + "kind": "demo", + "source": "src/examples/java/demos/volume", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Volume.java", + "sha256": "ff6b1b109ab36acb97181fe2309bc0966da5487629ba33815c1a15b483b8d89e" + } + ] + }, + { + "id": "tutorial/Halloween", + "kind": "tutorial", + "source": "docs/archives/Halloween", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "GhostSprite.java", + "sha256": "0384d2d29fd627071a580ffdb91b3ebec648f6a210ba6bce3ffb7959941c3652" + }, + { + "path": "HalloweenStage.java", + "sha256": "b9a53144da5c0108e71af7c34b05094239c67d786923ed239fc0fa16f314e5e8" + }, + { + "path": "HouseSprite.java", + "sha256": "58e61a14d64b70fb3e4b98337a5ce347ee8441af6a39bb0496156c2813e21812" + }, + { + "path": "PumpkinSprite.java", + "sha256": "2437b012ead25f8fdcb8297c0e94b1bbc4ec37037226f5aa8b5113d669e8b27b" + }, + { + "path": "package.bluej", + "sha256": "a9623d91bd998d884124ed3815a659d2195e71377b797edba9b97a0afc15e558" + }, + { + "path": "sounds/background.wav", + "sha256": "36fa67c1a4c199dccfe608b1ff64170551949c73003fb26b9da708cc2e2114b7" + }, + { + "path": "sounds/door.wav", + "sha256": "ee087d54d051f29102b3ea941b37761970780ece13dc11d7aa8a23d68e6d5b0f" + }, + { + "path": "sounds/ghost.wav", + "sha256": "edc570c66f778ea33affa5ab73ea96f059943bcfe412b266295a769ace824e6d" + }, + { + "path": "sprites/background.jpg", + "sha256": "4fe64d2bcdbdbccaeb385e609517fc403a0376f4edce2278000e54c9028b8988" + }, + { + "path": "sprites/castle_off.png", + "sha256": "d269553f298a33879f87523e012ad02d28deead9bf243b55b5df3de4bce49cc6" + }, + { + "path": "sprites/castle_on.png", + "sha256": "24085f67d62563a9aef4c6f0fb2f8a39d17cf2cd1ebecb4320cce0196e30e781" + }, + { + "path": "sprites/ghost/ghost_01.png", + "sha256": "c5347db7381e24b302ec5645672ee51246fa385849f5cc2ff26601eb87fa40dd" + }, + { + "path": "sprites/ghost/ghost_02.png", + "sha256": "cabbc13b4ae8d8c7af666393a780d86b00591bc52022cee4d435c739a388dff0" + }, + { + "path": "sprites/ghost/ghost_03.png", + "sha256": "f2b7f233412b4b71b4cb2917233ff811f75108dbf8efe5adc17e044063b319c6" + }, + { + "path": "sprites/ghost/ghost_04.png", + "sha256": "5640a6c6f320c86ace35f3715ae673580160d6423fc8d109d970180ee936aaa0" + }, + { + "path": "sprites/ghost/ghost_05.png", + "sha256": "d7a7243abf5d99728511d80123d1126f4383f558f1f908c697101417c50ff618" + }, + { + "path": "sprites/ghost/ghost_06.png", + "sha256": "ec2e02c3d1bedcf66f4c1c780f053d9cef17b89e14dcb1a1a5b754597398e90a" + }, + { + "path": "sprites/ghost/ghost_07.png", + "sha256": "042d23019bc143786c00ba551153ab5eb36be365a1252a93467d5922706a81cb" + }, + { + "path": "sprites/ghost/ghost_08.png", + "sha256": "785e28befc1dba98421e4c45e19870b903700963a915a07b7d4c547565373ecd" + }, + { + "path": "sprites/ghost/ghost_09.png", + "sha256": "f83b5c359c13dfcacddd4bc6987bf073fba96f06e080e4f4b2d690e8cd57807c" + }, + { + "path": "sprites/ghost/ghost_10.png", + "sha256": "e155c4ed62aed589a1378613e850ff05ba86e57e82a1e33944efd28b661efc10" + }, + { + "path": "sprites/pumpkin/pumpkin_01.png", + "sha256": "0b2df0a538510e7f6dc941db10e83dafe3ebde7eb23fb0ff3334bd0b427ca3a9" + }, + { + "path": "sprites/pumpkin/pumpkin_02.png", + "sha256": "5db69c37a0bcffbbd81690d1fe0d2e75aea9773bfdec6f64fcfb9c109f9b6a3c" + } + ] + }, + { + "id": "tutorial/bluej-starter", + "kind": "tutorial", + "source": "docs/archives/bluej-starter", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Cat.java", + "sha256": "f5e71d1da4812c7810701eeaf23bc2d8bb455b8c8d607fa0ab04fcebd8df9f2b" + }, + { + "path": "MyStage.java", + "sha256": "cbe0c5ef6165e8ac0194090a50b5085a0b59b22d2b91633980953823aab1152a" + }, + { + "path": "MyWindow.java", + "sha256": "8056b03a70774938863b829c750300549323c4287eb9f9e6350cd77ccb101005" + }, + { + "path": "assets/.gitkeep", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "assets/cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/bouncy-hedgehog", + "kind": "tutorial", + "source": "docs/archives/bouncy-hedgehog", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": ".vscode/extensions.json", + "sha256": "5d6b599db5e395f6c21b38697c7d9d8768f67dbd0eebc36a6e610cc0a3786ef0" + }, + { + "path": ".vscode/settings.json", + "sha256": "516b1cf9e9ebc68be9b9e4df0b89c6c43beaa6b8f75be6ed7f1fadae2d5c8ce9" + }, + { + "path": "BouncyHedgehogStage.java", + "sha256": "483de7f13ab0903792bafecb7be0048edf9c2eb7244ac3493459bfd8a0cb7fda" + }, + { + "path": "HedgehogSprite.java", + "sha256": "8e14206fda7f43637aff1e8b7a43e6c42de2ae14de97af2b86dd6f4ad5d50d7b" + }, + { + "path": "README.md", + "sha256": "a52e43821ba57c053e89735bb8f0fab2cd9f1e039e1f16380405ab14f8654e78" + }, + { + "path": "TrampolineSprite.java", + "sha256": "a7fdb464a46167825abcefb161b93d3560b0bc8a09c0204879791ddb4e8b988f" + }, + { + "path": "hedgehog.png", + "sha256": "731e677d38912bf339a16cda8c61035db1db52489c462181e9be4874bd310db7" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "playground.jpg", + "sha256": "c68f76ab3c5ac54be427706d571cd5b268141c4448b88e7277ebae45c347f0dd" + }, + { + "path": "trampoline.png", + "sha256": "ca11b0fbb8ec2f002f30659bda64a3d979d65f8d0f465629cd19b57c81e18df8" + } + ] + }, + { + "id": "tutorial/bouncy-hedgehog-100", + "kind": "tutorial", + "source": "docs/archives/bouncy-hedgehog-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": ".vscode/extensions.json", + "sha256": "5d6b599db5e395f6c21b38697c7d9d8768f67dbd0eebc36a6e610cc0a3786ef0" + }, + { + "path": ".vscode/settings.json", + "sha256": "516b1cf9e9ebc68be9b9e4df0b89c6c43beaa6b8f75be6ed7f1fadae2d5c8ce9" + }, + { + "path": "BouncyHedgehogStage.java", + "sha256": "f28090be3f0aabf674ebe1870740440d7573773256cae63450517262261f5f59" + }, + { + "path": "HedgehogSprite.java", + "sha256": "ec727a72eac0f5d5ef58ff7093c0852a2031aeb5ea40702b3e7c50af928c8cbf" + }, + { + "path": "README.md", + "sha256": "a52e43821ba57c053e89735bb8f0fab2cd9f1e039e1f16380405ab14f8654e78" + }, + { + "path": "TrampolineSprite.java", + "sha256": "a5f262e0116c12f34e18bdcad56395ac0a1da5f8517266f6b1eaf69321ce9fbc" + }, + { + "path": "hedgehog.png", + "sha256": "731e677d38912bf339a16cda8c61035db1db52489c462181e9be4874bd310db7" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "playground.jpg", + "sha256": "c68f76ab3c5ac54be427706d571cd5b268141c4448b88e7277ebae45c347f0dd" + }, + { + "path": "trampoline.png", + "sha256": "ca11b0fbb8ec2f002f30659bda64a3d979d65f8d0f465629cd19b57c81e18df8" + } + ] + }, + { + "id": "tutorial/cat", + "kind": "tutorial", + "source": "docs/archives/cat", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "CatSprite.java", + "sha256": "f21ff0ec0c7ffa8c269d91fbac2ac0dbce1154ac6ac41cefe9e2cae198c20d3f" + }, + { + "path": "CatStage.java", + "sha256": "59d5a5e628e9e285d9af9462ed37dbb23ca613af0b46d315461ba763c0aad64f" + }, + { + "path": "cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + }, + { + "path": "package.bluej", + "sha256": "d18f1b5e976159b105ce08a72f95f98dffc64cec82f0d618460e73d710040604" + } + ] + }, + { + "id": "tutorial/catch-the-coins-100", + "kind": "tutorial", + "source": "docs/archives/catch-the-coins-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "Basket.java", + "sha256": "7f7aa0c5a52ed0db3e39e1b97f0817103d27d43fd424c16539ed1063bf90657d" + }, + { + "path": "CatchStage.java", + "sha256": "81f4c96b7e2015b381d5845d995d1fcf00369f11197def706b950a86d5f9b630" + }, + { + "path": "Coin.java", + "sha256": "bc0752b8e5509455422e7625613f83bbe0dc4f5c2d8e83cb2d312532a313489f" + }, + { + "path": "README.md", + "sha256": "7867d20f01bf95412d4b307e34210e9a62e0850b2db0eb7453a82c011deab634" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/dodge-the-rocks-100", + "kind": "tutorial", + "source": "docs/archives/dodge-the-rocks-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "Alien.java", + "sha256": "27311fafd34fdba30e4aa0f92d058d3ae6127d8fb48dd82837302ac6bd512be7" + }, + { + "path": "DodgeWindow.java", + "sha256": "2bcec14f90ff80f49281d0baf142d538f1853a14d78d1f299f1161cbfb975732" + }, + { + "path": "GameStage.java", + "sha256": "ab21802ccf2c2a3fe04e1aacadfe02731a8f1a417cb42b1b5b9b54b1442f2956" + }, + { + "path": "README.md", + "sha256": "2222d201aea0e8f6b0531e5344e0ac69a424a45c969f2ad1e29c869d6d7de3bd" + }, + { + "path": "Rock.java", + "sha256": "4d3905160b6a34d732a477a37c74e06edcbc4222440c8d743200de9d382e6318" + }, + { + "path": "TitleStage.java", + "sha256": "370fe74347c426309e2fd77c10589bb71e2c18ced5d638db7a3f8a67922c000d" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/getting-started-100", + "kind": "tutorial", + "source": "docs/archives/getting-started-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "jumper", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "Bunny.java", + "sha256": "a6de1d1ff1505cd507406533201239c548d715e9deb59604e702ae5c49974662" + }, + { + "path": "MyStage.java", + "sha256": "d8b26cf64078f1a2dcc95b033df292282e8271b2b1c14212582b39ed15b6fc10" + }, + { + "path": "README.md", + "sha256": "1cf7971612162c7486cd95894fa740ec9f3e8f8268e01790ef5cb48ed37a0507" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/guess-the-number-100", + "kind": "tutorial", + "source": "docs/archives/guess-the-number-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "GuessStage.java", + "sha256": "9fac29bde01fcfe5248d25e5f069e2a992508f53fd54ee364fb6fc9d8a548e7d" + }, + { + "path": "README.md", + "sha256": "2e83410662b1d66e3b506bc668ecb59ee2651b9fe5344a1b16e0c43b6e0c6d27" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/make-it-walk-100", + "kind": "tutorial", + "source": "docs/archives/make-it-walk-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "README.md", + "sha256": "fabacace7e210742909cd107a230f3e4c47ca68197963b619c1e932fa1464cc0" + }, + { + "path": "WalkStage.java", + "sha256": "c2e5518d8b29b623fd9e85ca5570df179aa1043fcfc13669719cb13bd8ff1414" + }, + { + "path": "Walker.java", + "sha256": "1811c6b4ea7c206ca0d78be206c377cdd470bc9092884f3a94ff8e023d04d1b3" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/red-light-green-light-100", + "kind": "tutorial", + "source": "docs/archives/red-light-green-light-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "README.md", + "sha256": "343be5278ad1ba4f7f23205363319e90239a1b4a4c5f85340d7af3430e5943d3" + }, + { + "path": "RaceStage.java", + "sha256": "a1d264b816b4accf9740b2ed0c8b1e053accc8bee1c2a55c4e74c264f490dee4" + }, + { + "path": "Racer.java", + "sha256": "e5e157f62c18400e22e2eb8aa7aed4020542e45fecca31757e8c3f7c456cc304" + }, + { + "path": "Referee.java", + "sha256": "989580b24499248a299e09d0b5c2ea0fef733a0577a750d5a2fb840bb4792ef2" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/vs-code-starter", + "kind": "tutorial", + "source": "docs/archives/vs-code-starter", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": ".vscode/extensions.json", + "sha256": "c31c30ca102830cd851010c0cd32527c8b943e248a3f73512ee4da7586021183" + }, + { + "path": ".vscode/settings.json", + "sha256": "5ab65d6d595d057a9124aa7fe85e76a3f5bb128f1c7b04a7f49aebd0631a4b0a" + }, + { + "path": "Cat.java", + "sha256": "f5e71d1da4812c7810701eeaf23bc2d8bb455b8c8d607fa0ab04fcebd8df9f2b" + }, + { + "path": "MyStage.java", + "sha256": "cbe0c5ef6165e8ac0194090a50b5085a0b59b22d2b91633980953823aab1152a" + }, + { + "path": "MyWindow.java", + "sha256": "8056b03a70774938863b829c750300549323c4287eb9f9e6350cd77ccb101005" + }, + { + "path": "assets/.gitkeep", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "assets/cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + } + ] + } + ] +} diff --git a/catalogs/translations.json b/catalogs/translations.json new file mode 100644 index 00000000..67720cf4 --- /dev/null +++ b/catalogs/translations.json @@ -0,0 +1,2207 @@ +{ + "AnimatedSprite/constructor()": { + "de": { + "description": "Erzeugt eine neue animierte Figur" + } + }, + "AnimatedSprite/constructor(AnimatedSprite)": { + "de": { + "description": "Erzeugt eine Kopie der angegebenen animierten Figur" + } + }, + "AnimatedSprite/clone()": { + "de": { + "description": "Erzeugt eine Kopie dieser Figur" + } + }, + "AnimatedSprite/toString()": { + "de": { + "description": "Gibt die Figur als Zeichenkette zurück" + } + }, + "AnimatedSprite/addAnimation(String,String,int)": { + "de": { + "description": "Fügt eine Animation hinzu. %d im Muster wird durch 1..frames ersetzt, z.B. bunny1_walk%d" + } + }, + "AnimatedSprite/addAnimation(String,String,int,int,int)": { + "de": { + "description": "Zerlegt ein Bild in gleich große Einzelbilder und legt daraus eine Animation an" + } + }, + "AnimatedSprite/addAnimation(String,String,int,int,int,int)": { + "de": { + "description": "Wie addAnimation(name, imagePath, frames, width, height), beginnt aber in der angegebenen Zeile" + } + }, + "AnimatedSprite/addAnimation(String,String,int,int,int,int,boolean)": { + "de": { + "description": "Legt eine Animation aus einer Spalte des Bildes an" + } + }, + "AnimatedSprite/addAnimation(String,Function,int)": { + "de": { + "description": "Legt eine Animation an; builder liefert zu 1..frames jeweils den Bildpfad" + } + }, + "AnimatedSprite/playAnimation(String)": { + "de": { + "description": "Spielt die Animation in einer Schleife ab" + } + }, + "AnimatedSprite/playAnimation(String,boolean)": { + "de": { + "description": "Spielt die Animation ab; bei once == true nur ein einziges Mal" + } + }, + "AnimatedSprite/resetAnimation()": { + "de": { + "description": "Setzt die Animation auf das erste Einzelbild zurück" + } + }, + "AnimatedSprite/setAnimationInterval(int)": { + "de": { + "description": "Legt fest, wie viele Millisekunden ein Einzelbild angezeigt wird" + } + }, + "AnimatedSprite/getAnimationInterval()": { + "de": { + "description": "Gibt zurück, wie viele Millisekunden ein Einzelbild angezeigt wird" + } + }, + "AnimatedSprite/getAnimationFrame()": { + "de": { + "description": "Gibt die Nummer des aktuellen Einzelbildes zurück" + } + }, + "AnimatedSprite/setAnimationFrame(int)": { + "de": { + "description": "Springt zum Einzelbild mit der angegebenen Nummer" + } + }, + "AnimatedSprite/isAnimationPlayed()": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine mit once gestartete Animation durchgelaufen ist" + } + }, + "Clock/getYear()": { + "de": { + "description": "Gibt das aktuelle Jahr zurück" + } + }, + "Clock/getMonth()": { + "de": { + "description": "Gibt den aktuellen Monat zurück (1 = Januar)" + } + }, + "Clock/getDay()": { + "de": { + "description": "Gibt den aktuellen Tag im Monat zurück" + } + }, + "Clock/getDayOfWeek()": { + "de": { + "description": "Gibt den Wochentag zurück (1 = Montag, 7 = Sonntag)" + } + }, + "Clock/getHour()": { + "de": { + "description": "Gibt die aktuelle Stunde zurück" + } + }, + "Clock/getMinute()": { + "de": { + "description": "Gibt die aktuelle Minute zurück" + } + }, + "Clock/getSecond()": { + "de": { + "description": "Gibt die aktuelle Sekunde zurück" + } + }, + "Clock/getMillisecond()": { + "de": { + "description": "Gibt die aktuelle Millisekunde zurück" + } + }, + "Clock/getDaysSince2000()": { + "de": { + "description": "Gibt die Anzahl der Tage seit dem 1. Januar 2000 zurück" + } + }, + "Color/constructor()": { + "de": { + "description": "Erzeugt die Farbe Weiß" + } + }, + "Color/constructor(String)": { + "de": { + "description": "Erzeugt eine Farbe aus einem Hex-Code, z.B. #ff0000" + } + }, + "Color/constructor(double)": { + "de": { + "description": "Erzeugt eine Farbe mit dem angegebenen Farbton (0 bis 255)" + } + }, + "Color/constructor(double,double,double)": { + "de": { + "description": "Erzeugt eine Farbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + }, + "Color/constructor(Color)": { + "de": { + "description": "Erzeugt eine Kopie der übergebenen Farbe" + } + }, + "Color/get()": { + "de": { + "description": "Gibt die Farbe als ganze Zahl zurück" + } + }, + "Color/getHSB()": { + "de": { + "description": "Gibt den Farbton zurück (0 bis 255)" + } + }, + "Color/setHSB(double)": { + "de": { + "description": "Setzt den Farbton (0 bis 255)" + } + }, + "Color/setHSB(double,double,double)": { + "de": { + "description": "Setzt Farbton, Sättigung und Helligkeit (jeweils 0 bis 255)" + } + }, + "Color/setRGB(double,double,double)": { + "de": { + "description": "Setzt Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + }, + "Color/changeColor(double)": { + "de": { + "description": "Ändert den Farbton um den angegebenen Wert" + } + }, + "Color/getRed()": { + "de": { + "description": "Gibt den Rotanteil zurück (0 bis 255)" + } + }, + "Color/getGreen()": { + "de": { + "description": "Gibt den Grünanteil zurück (0 bis 255)" + } + }, + "Color/getBlue()": { + "de": { + "description": "Gibt den Blauanteil zurück (0 bis 255)" + } + }, + "Color/getH()": { + "de": { + "description": "Gibt den Farbton zurück (0 bis 255)" + } + }, + "Color/getS()": { + "de": { + "description": "Gibt die Sättigung zurück (0 bis 255)" + } + }, + "Color/getL()": { + "de": { + "description": "Gibt die Helligkeit zurück (0 bis 255)" + } + }, + "Color/toString()": { + "de": { + "description": "Gibt die Farbe als Text aus" + } + }, + "Color/equals(Object)": { + "de": { + "description": "Prüft, ob es dieselbe Farbe ist" + } + }, + "Hitbox/constructor(double[],double[])": { + "de": { + "description": "Erzeugt einen Umriss aus x- und y-Koordinaten" + } + }, + "Hitbox/constructor(Shape)": { + "de": { + "description": "Erzeugt einen Umriss aus einer Form" + } + }, + "Hitbox/getShape()": { + "de": { + "description": "Gibt den Umriss als Form zurück" + } + }, + "Hitbox/translateAndRotateAndResize(double,double,double,double,double,double)": { + "de": { + "description": "Verschiebt, dreht und skaliert den Umriss" + } + }, + "Hitbox/contains(double,double)": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Punkt im Umriss liegt" + } + }, + "Hitbox/getBounds()": { + "de": { + "description": "Gibt das umschließende Rechteck zurück" + } + }, + "Hitbox/intersects(Hitbox)": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich beide Umrisse überlappen" + } + }, + "HtmlColor/constructor()": { + "de": { + "description": "Gibt eine zufällige der benannten Farben zurück" + } + }, + "Operators/lerp(double,double,double)": { + "de": { + "description": "Interpoliert linear zwischen start und stop; amt liegt zwischen 0 und 1" + } + }, + "Operators/constrain(double,double,double)": { + "de": { + "description": "Begrenzt den Wert auf den Bereich zwischen low und high" + } + }, + "Operators/constrain(int,int,int)": { + "de": { + "description": "Begrenzt den Wert auf den Bereich zwischen low und high" + } + }, + "Operators/map(double,double,double,double,double)": { + "de": { + "description": "Rechnet einen Wert aus dem Bereich start1..stop1 in den Bereich start2..stop2 um" + } + }, + "Operators/round(double)": { + "de": { + "description": "Rundet auf eine ganze Zahl" + } + }, + "Operators/round(double,int)": { + "de": { + "description": "Rundet auf die angegebene Anzahl Nachkommastellen" + } + }, + "Operators/mod(double,double)": { + "de": { + "description": "Gibt den Rest der Division x geteilt durch y zurück" + } + }, + "Operators/mod(int,int)": { + "de": { + "description": "Gibt den Rest der Division x geteilt durch y zurück" + } + }, + "Operators/absOf(int)": { + "de": { + "description": "Gibt den Betrag zurück" + } + }, + "Operators/absOf(double)": { + "de": { + "description": "Gibt den Betrag zurück" + } + }, + "Operators/floorOf(double)": { + "de": { + "description": "Rundet ab" + } + }, + "Operators/ceilingOf(double)": { + "de": { + "description": "Rundet auf" + } + }, + "Operators/sqrtOf(double)": { + "de": { + "description": "Gibt die Quadratwurzel zurück" + } + }, + "Operators/sinOf(double)": { + "de": { + "description": "Sinus des Winkels x, x in Grad" + } + }, + "Operators/cosOf(double)": { + "de": { + "description": "Kosinus des Winkels x, x in Grad" + } + }, + "Operators/tanOf(double)": { + "de": { + "description": "Tangens des Winkels x, x in Grad" + } + }, + "Operators/asinOf(double)": { + "de": { + "description": "Arkussinus von x, Ergebnis in Grad" + } + }, + "Operators/acosOf(double)": { + "de": { + "description": "Arkuskosinus von x, Ergebnis in Grad" + } + }, + "Operators/atanOf(double)": { + "de": { + "description": "Arkustangens von x, Ergebnis in Grad" + } + }, + "Operators/lnOf(double)": { + "de": { + "description": "Natürlicher Logarithmus von x" + } + }, + "Operators/logOf(double)": { + "de": { + "description": "Zehnerlogarithmus von x" + } + }, + "Operators/eToThePowerOf(double)": { + "de": { + "description": "Gibt e hoch x zurück" + } + }, + "Operators/tenToThePowerOf(double)": { + "de": { + "description": "Gibt 10 hoch x zurück" + } + }, + "Pen/constructor()": { + "de": { + "description": "Erzeugt einen neuen Stift" + } + }, + "Pen/constructor(Sprite)": { + "de": { + "description": "Senkt den Stift ab, so dass er beim Bewegen zeichnet" + } + }, + "Pen/up()": { + "de": { + "description": "Hebt den Stift an, so dass er nicht mehr zeichnet" + } + }, + "Pen/setColor(Color)": { + "de": { + "description": "Setzt die Stiftfarbe" + } + }, + "Pen/setColor(double)": { + "de": { + "description": "Setzt die Stiftfarbe über den Farbton (0 bis 255)" + } + }, + "Pen/setColor(double,double,double)": { + "de": { + "description": "Setzt die Stiftfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + }, + "Pen/changeColor(double)": { + "de": { + "description": "Ändert den Farbton des Stifts um den angegebenen Wert" + } + }, + "Pen/setSize(double)": { + "de": { + "description": "Setzt die Strichstärke" + } + }, + "Pen/getSize()": { + "de": { + "description": "Gibt die Strichstärke zurück" + } + }, + "Pen/changeSize(double)": { + "de": { + "description": "Ändert die Strichstärke um den angegebenen Wert" + } + }, + "Pen/getColor()": { + "de": { + "description": "Gibt die Stiftfarbe zurück" + } + }, + "Pen/setTransparency(double)": { + "de": { + "description": "Setzt die Deckkraft von 0 (unsichtbar) bis 255 (deckend)" + } + }, + "Pen/changeTransparency(double)": { + "de": { + "description": "Ändert die Deckkraft um den angegebenen Wert" + } + }, + "Pen/goToBackground()": { + "de": { + "description": "Zeichnet hinter den Figuren" + } + }, + "Pen/goToForeground()": { + "de": { + "description": "Zeichnet vor den Figuren" + } + }, + "Pen/isInBackground()": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Stift hinter den Figuren zeichnet" + } + }, + "Pen/goToRandomPosition()": { + "de": { + "description": "Setzt den Stift an eine zufällige Position der Bühne" + } + }, + "Pen/goToMousePointer()": { + "de": { + "description": "Setzt den Stift auf die Position des Mauszeigers" + } + }, + "Pen/stamp()": { + "de": { + "description": "Druckt ein Abbild der zugehörigen Figur auf die Bühne" + } + }, + "Pen/setPosition(double,double)": { + "de": { + "description": "Setzt den Stift an die angegebene Position; bei abgesenktem Stift wird eine Linie gezeichnet" + } + }, + "Pen/setPosition(Vector2)": { + "de": { + "description": "Setzt den Stift an die angegebene Position; bei abgesenktem Stift wird eine Linie gezeichnet" + } + }, + "Pen/eraseAll()": { + "de": { + "description": "Löscht alles Gezeichnete" + } + }, + "Random/noise(double)": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle x zurück" + } + }, + "Random/noise(double,double)": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle (x, y) zurück" + } + }, + "Random/noise(double,double,double)": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle (x, y, z) zurück" + } + }, + "Random/noiseSeed(long)": { + "de": { + "description": "Setzt den Startwert für das Rauschen" + } + }, + "Random/randomVector2()": { + "de": { + "description": "Gibt einen zufälligen Vektor der Länge 1 zurück" + } + }, + "Random/randomX()": { + "de": { + "description": "Gibt eine zufällige x-Koordinate innerhalb der Bühne zurück" + } + }, + "Random/randomY()": { + "de": { + "description": "Gibt eine zufällige y-Koordinate innerhalb der Bühne zurück" + } + }, + "Random/randomPosition()": { + "de": { + "description": "Gibt eine zufällige Position auf der Bühne zurück" + } + }, + "Random/random()": { + "de": { + "description": "Gibt eine Zufallszahl zwischen 0 und 1 zurück" + } + }, + "Random/random(double)": { + "de": { + "description": "Gibt eine Zufallszahl zwischen 0 und max zurück" + } + }, + "Random/random(double,double)": { + "de": { + "description": "Gibt eine Zufallszahl zwischen min und max zurück" + } + }, + "Random/randomInt(int)": { + "de": { + "description": "Gibt eine ganze Zufallszahl zwischen 0 und max zurück (beide eingeschlossen)" + } + }, + "Random/randomInt(int,int)": { + "de": { + "description": "Gibt eine ganze Zufallszahl zwischen min und max zurück (beide eingeschlossen)" + } + }, + "Random/randomSeed(long)": { + "de": { + "description": "Setzt den Startwert für die Zufallszahlen; danach wiederholt sich dieselbe Folge" + } + }, + "Shape/contains(double,double)": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Punkt in der Form liegt" + } + }, + "Shape/intersects(Shape)": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich beide Formen überlappen" + } + }, + "Shape/scale(double,double)": { + "de": { + "description": "Gibt die skalierte Form als neue Form zurück" + } + }, + "Shape/translate(double,double)": { + "de": { + "description": "Gibt die verschobene Form als neue Form zurück" + } + }, + "Shape/rotate(double,double,double)": { + "de": { + "description": "Gibt die um theta Grad gedrehte Form als neue Form zurück" + } + }, + "Shape/getBounds()": { + "de": { + "description": "Gibt das umschließende Rechteck zurück" + } + }, + "Circle/constructor(double,double,double)": { + "de": { + "description": "Erzeugt einen Kreis um (x, y) mit dem angegebenen Radius" + } + }, + "Rectangle/constructor(double,double,double,double)": { + "de": { + "description": "Erzeugt ein Rechteck mit der linken oberen Ecke bei (x, y)" + } + }, + "Ellipse/constructor(double,double,double,double)": { + "de": { + "description": "Erzeugt eine Ellipse im angegebenen Rechteck" + } + }, + "Triangle/constructor(double,double,double,double,double,double)": { + "de": { + "description": "Erzeugt ein Dreieck aus den drei Eckpunkten" + } + }, + "Polygon/constructor()": { + "de": { + "description": "Erzeugt ein leeres Vieleck; Punkte kommen mit addPoint() dazu" + } + }, + "Polygon/constructor(double[],double[])": { + "de": { + "description": "Erzeugt ein Vieleck aus x- und y-Koordinaten" + } + }, + "Polygon/addPoint(double,double)": { + "de": { + "description": "Fügt dem Vieleck einen Punkt hinzu" + } + }, + "Sprite/constructor()": { + "de": { + "description": "Erzeugt eine neue Figur" + } + }, + "Sprite/constructor(String,String)": { + "de": { + "description": "Erzeugt eine Figur mit einem ersten Kostüm" + } + }, + "Sprite/constructor(Sprite)": { + "de": { + "description": "Erzeugt eine Kopie der angegebenen Figur" + } + }, + "Sprite/run()": { + "de": { + "description": "Wird in jedem Frame aufgerufen" + } + }, + "Sprite/whenAddedToStage()": { + "de": { + "description": "Wird aufgerufen, wenn die Figur der Bühne hinzugefügt wird" + } + }, + "Sprite/whenRemovedFromStage()": { + "de": { + "description": "Wird aufgerufen, wenn die Figur von der Bühne entfernt wird" + } + }, + "Sprite/whenClicked()": { + "de": { + "description": "Wird aufgerufen, wenn die Figur angeklickt wird" + } + }, + "Sprite/whenKeyPressed(KeyCode)": { + "de": { + "description": "Wird beim Drücken einer Taste aufgerufen" + } + }, + "Sprite/whenKeyReleased(KeyCode)": { + "de": { + "description": "Wird beim Loslassen einer Taste aufgerufen" + } + }, + "Sprite/whenMouseClicked(MouseCode)": { + "de": { + "description": "Wird bei einem Mausklick aufgerufen, egal wo" + } + }, + "Sprite/whenMouseMoved(double,double)": { + "de": { + "description": "Wird bei jeder Mausbewegung aufgerufen; x und y sind Bühnenkoordinaten" + } + }, + "Sprite/whenIReceive(String)": { + "de": { + "description": "Wird aufgerufen, wenn die Bühne eine Nachricht sendet" + } + }, + "Sprite/whenBackdropSwitches(String)": { + "de": { + "description": "Wird aufgerufen, wenn der Hintergrund gewechselt wird" + } + }, + "Sprite/say(String)": { + "de": { + "description": "Zeigt eine Sprechblase an" + } + }, + "Sprite/say(String,int)": { + "de": { + "description": "Zeigt eine Sprechblase für die angegebene Zeit in Millisekunden" + } + }, + "Sprite/think(String)": { + "de": { + "description": "Zeigt eine Denkblase an" + } + }, + "Sprite/think(String,int)": { + "de": { + "description": "Zeigt eine Denkblase für die angegebene Zeit in Millisekunden" + } + }, + "Sprite/addCostume(String)": { + "de": { + "description": "Fügt eines der eingebauten Kostüme hinzu" + } + }, + "Sprite/addCostume(String,String)": { + "de": { + "description": "Fügt ein Kostüm unter eigenem Namen hinzu" + } + }, + "Sprite/addCostume(String,String,int,int,int,int)": { + "de": { + "description": "Schneidet ein Kostüm aus einem Bild aus" + } + }, + "Sprite/addCostumes(String,String,int,int)": { + "de": { + "description": "Zerschneidet ein Bild in gleich große Kacheln und fügt sie als Kostüme hinzu" + } + }, + "Sprite/switchCostume(String)": { + "de": { + "description": "Wechselt zum Kostüm mit dem Namen" + } + }, + "Sprite/switchCostume(double)": { + "de": { + "description": "Wechselt zum Kostüm mit der angegebenen Nummer" + } + }, + "Sprite/nextCostume()": { + "de": { + "description": "Wechselt zum nächsten Kostüm" + } + }, + "Sprite/previousCostume()": { + "de": { + "description": "Wechselt zum vorherigen Kostüm" + } + }, + "Sprite/getCurrentCostumeName()": { + "de": { + "description": "Gibt den Namen des aktuellen Kostüms zurück" + } + }, + "Sprite/getCurrentCostumeIndex()": { + "de": { + "description": "Gibt die Nummer des aktuellen Kostüms zurück" + } + }, + "Sprite/addSound(String)": { + "de": { + "description": "Fügt einen der eingebauten Klänge hinzu" + } + }, + "Sprite/addSound(String,String)": { + "de": { + "description": "Fügt einen Klang unter eigenem Namen hinzu" + } + }, + "Sprite/playSound(String)": { + "de": { + "description": "Spielt einen zuvor hinzugefügten Klang ab" + } + }, + "Sprite/stopSound(String)": { + "de": { + "description": "Stoppt den Klang mit dem angegebenen Namen" + } + }, + "Sprite/stopAllSounds()": { + "de": { + "description": "Stoppt alle Klänge dieser Figur" + } + }, + "Sprite/isSoundPlaying(String)": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Klang gerade abgespielt wird" + } + }, + "Sprite/setVolume(double)": { + "de": { + "description": "Setzt die Lautstärke aller Klänge dieser Figur in Prozent" + } + }, + "Sprite/changeVolume(double)": { + "de": { + "description": "Ändert die Lautstärke um den angegebenen Wert" + } + }, + "Sprite/getVolume()": { + "de": { + "description": "Gibt die Lautstärke in Prozent zurück" + } + }, + "Sprite/move(double)": { + "de": { + "description": "Bewegt die Figur um die angegebene Schrittzahl in ihre Blickrichtung" + } + }, + "Sprite/move(Vector2)": { + "de": { + "description": "Verschiebt die Figur um den Vektor" + } + }, + "Sprite/setPosition(double,double)": { + "de": { + "description": "Setzt die Figur an die angegebene Position (Mitte der Bühne ist 0/0)" + } + }, + "Sprite/setPosition(Vector2)": { + "de": { + "description": "Setzt die Figur an die angegebene Position (Mitte der Bühne ist 0/0)" + } + }, + "Sprite/changePosition(double,double)": { + "de": { + "description": "Verschiebt die Figur um die angegebenen Werte" + } + }, + "Sprite/changePosition(Vector2)": { + "de": { + "description": "Verschiebt die Figur um den angegebenen Vektor" + } + }, + "Sprite/getPosition()": { + "de": { + "description": "Gibt die Position der Figur zurück" + } + }, + "Sprite/glide(double,double,double)": { + "de": { + "description": "Gleitet in der angegebenen Zeit zur Zielposition" + } + }, + "Sprite/isGliding()": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur gerade gleitet" + } + }, + "Sprite/goToMousePointer()": { + "de": { + "description": "Setzt die Figur an die Position des Mauszeigers" + } + }, + "Sprite/getX()": { + "de": { + "description": "Gibt die x-Position zurück (Mitte der Bühne ist 0)" + } + }, + "Sprite/getY()": { + "de": { + "description": "Gibt die y-Position zurück (Mitte der Bühne ist 0, nach oben positiv)" + } + }, + "Sprite/setX(double)": { + "de": { + "description": "Setzt die x-Position" + } + }, + "Sprite/setY(double)": { + "de": { + "description": "Setzt die y-Position" + } + }, + "Sprite/changeX(double)": { + "de": { + "description": "Ändert die x-Position um den angegebenen Wert" + } + }, + "Sprite/changeY(double)": { + "de": { + "description": "Ändert die y-Position um den angegebenen Wert" + } + }, + "Sprite/goToRandomPosition()": { + "de": { + "description": "Setzt die Figur an eine zufällige Position auf der Bühne" + } + }, + "Sprite/ifOnEdgeBounce()": { + "de": { + "description": "Lässt die Figur am Bühnenrand abprallen" + } + }, + "Sprite/turnRight(double)": { + "de": { + "description": "Dreht die Figur um die angegebene Gradzahl nach rechts" + } + }, + "Sprite/turnLeft(double)": { + "de": { + "description": "Dreht die Figur um die angegebene Gradzahl nach links" + } + }, + "Sprite/setDirection(double)": { + "de": { + "description": "Setzt die Blickrichtung in Grad (90 = rechts, 0 = oben)" + } + }, + "Sprite/setDirection(Vector2)": { + "de": { + "description": "Setzt die Blickrichtung auf die Richtung des Vektors" + } + }, + "Sprite/goToSprite(Sprite)": { + "de": { + "description": "Setzt die Figur auf die Position einer anderen Figur" + } + }, + "Sprite/pointInDirection(double)": { + "de": { + "description": "Setzt die Blickrichtung in Grad (90 = rechts, 0 = oben)" + } + }, + "Sprite/pointInDirection(Vector2)": { + "de": { + "description": "Richtet die Figur entlang des angegebenen Vektors aus" + } + }, + "Sprite/pointTowardsMousePointer()": { + "de": { + "description": "Richtet die Figur zum Mauszeiger aus" + } + }, + "Sprite/pointTowardsSprite(Sprite)": { + "de": { + "description": "Richtet die Figur zu einer anderen Figur aus" + } + }, + "Sprite/getDirection()": { + "de": { + "description": "Gibt die Blickrichtung in Grad zurück (90 = rechts, 0 = oben)" + } + }, + "Sprite/setRotationStyle(RotationStyle)": { + "de": { + "description": "Legt fest, wie sich die Figur beim Drehen verhält" + } + }, + "Sprite/setRotationCenter(double,double)": { + "de": { + "description": "Setzt den Punkt des Kostüms, um den sich die Figur dreht (Drehpunkt). Er sitzt an der Position der Figur. Angegeben in Pixeln des Kostüms von seiner linken oberen Ecke aus, wie bei setHitbox; er wächst mit der Größe und gilt für alle Kostüme." + } + }, + "Sprite/show()": { + "de": { + "description": "Macht die Figur sichtbar" + } + }, + "Sprite/hide()": { + "de": { + "description": "Macht die Figur unsichtbar" + } + }, + "Sprite/isVisible()": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur sichtbar ist" + } + }, + "Sprite/setSize(double)": { + "de": { + "description": "Setzt die Größe in Prozent (100 = Originalgröße)" + } + }, + "Sprite/changeSize(double)": { + "de": { + "description": "Ändert die Größe um den angegebenen Wert in Prozent" + } + }, + "Sprite/getSize()": { + "de": { + "description": "Gibt die Größe in Prozent zurück" + } + }, + "Sprite/setTransparency(double)": { + "de": { + "description": "Setzt die Transparenz in Prozent (0 = deckend, 100 = unsichtbar)" + } + }, + "Sprite/changeTransparency(double)": { + "de": { + "description": "Ändert die Transparenz um den angegebenen Wert" + } + }, + "Sprite/getTransparency()": { + "de": { + "description": "Gibt die Transparenz in Prozent zurück" + } + }, + "Sprite/getWidth()": { + "de": { + "description": "Gibt die Breite der Figur in Pixeln zurück" + } + }, + "Sprite/getHeight()": { + "de": { + "description": "Gibt die Höhe der Figur in Pixeln zurück" + } + }, + "Sprite/setTint(Color)": { + "de": { + "description": "Färbt die Figur mit der angegebenen Farbe ein" + } + }, + "Sprite/setTint(double)": { + "de": { + "description": "Färbt die Figur mit dem angegebenen Farbton ein (0 bis 255)" + } + }, + "Sprite/setTint(double,double,double)": { + "de": { + "description": "Färbt die Figur mit der angegebenen Farbe ein (Anteile jeweils 0 bis 255)" + } + }, + "Sprite/changeTint(double)": { + "de": { + "description": "Ändert den Farbton der Einfärbung um den angegebenen Wert" + } + }, + "Sprite/getTint()": { + "de": { + "description": "Gibt die Farbe der Einfärbung zurück" + } + }, + "Sprite/goToFrontLayer()": { + "de": { + "description": "Bringt die Figur ganz nach vorne" + } + }, + "Sprite/goToBackLayer()": { + "de": { + "description": "Schiebt die Figur ganz nach hinten" + } + }, + "Sprite/goLayersForwards(int)": { + "de": { + "description": "Bringt die Figur um die angegebene Anzahl Ebenen nach vorne" + } + }, + "Sprite/goLayersBackwards(int)": { + "de": { + "description": "Schiebt die Figur um die angegebene Anzahl Ebenen nach hinten" + } + }, + "Sprite/isTouchingSprite(Sprite)": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich die Figuren berühren" + } + }, + "Sprite/isTouchingSprite(Class)": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur eine Figur dieser Klasse berührt, z.B. isTouchingSprite(Apfel.class)" + } + }, + "Sprite/getTouchingSprite(Class)": { + "de": { + "description": "Gibt die erste berührte Figur dieser Klasse zurück, sonst null" + } + }, + "Sprite/getTouchingSprites(Class)": { + "de": { + "description": "Gibt alle berührten Figuren dieser Klasse zurück" + } + }, + "Sprite/isTouchingColor(Color)": { + "de": { + "description": "Prüft, ob etwas, das die Figur malt, über dieser Farbe auf der Bühne liegt — auf dem Bühnenbild, auf dem, was der Stift gezeichnet hat, oder auf einer anderen Figur. Fast gleiche Farben zählen wie in Scratch." + } + }, + "Sprite/isTouchingColor(double,double,double)": { + "de": { + "description": "Prüft, ob die Figur eine Farbe berührt, angegeben durch Rot, Grün und Blau [0...255]" + } + }, + "Sprite/isColorTouchingColor(Color,Color)": { + "de": { + "description": "Prüft, ob die Teile der Figur in der Farbe color über der Farbe other liegen" + } + }, + "Sprite/isTouchingEdge()": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur den Bühnenrand berührt" + } + }, + "Sprite/isTouchingMousePointer()": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Mauszeiger auf der Figur liegt" + } + }, + "Sprite/isKeyPressed(KeyCode)": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Taste gerade gedrückt ist" + } + }, + "Sprite/getMouseX()": { + "de": { + "description": "Gibt die x-Position des Mauszeigers zurück" + } + }, + "Sprite/getMouseY()": { + "de": { + "description": "Gibt die y-Position des Mauszeigers zurück" + } + }, + "Sprite/getMouse()": { + "de": { + "description": "Gibt die Position des Mauszeigers zurück" + } + }, + "Sprite/isMouseDown()": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine Maustaste gedrückt ist" + } + }, + "Sprite/distanceToSprite(Sprite)": { + "de": { + "description": "Gibt den Abstand zu einer anderen Figur zurück" + } + }, + "Sprite/distanceToMousePointer()": { + "de": { + "description": "Gibt den Abstand zum Mauszeiger zurück" + } + }, + "Sprite/getStage()": { + "de": { + "description": "Gibt die Bühne zurück, auf der die Figur steht" + } + }, + "Sprite/broadcast(String)": { + "de": { + "description": "Sendet eine Nachricht an alle Figuren und die Bühne" + } + }, + "Sprite/ask(String)": { + "de": { + "description": "Stellt eine Frage; die Antwort wird über getAnswer() abgeholt" + } + }, + "Sprite/getAnswer()": { + "de": { + "description": "Gibt die zuletzt eingegebene Antwort zurück, sonst eine leere Zeichenkette" + } + }, + "Sprite/isAsking()": { + "de": { + "description": "Gibt genau dann true zurück, wenn noch auf eine Antwort gewartet wird" + } + }, + "Sprite/pickRandom(int,int)": { + "de": { + "description": "Gibt eine Zufallszahl zwischen from und to zurück (beide eingeschlossen)" + } + }, + "Sprite/getDeltaTime()": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + }, + "Sprite/getText()": { + "de": { + "description": "Gibt den Text zurück, der über der Figur angezeigt wird" + } + }, + "Sprite/getTimer()": { + "de": { + "description": "Gibt den Standard-Timer dieser Figur zurück" + } + }, + "Sprite/getTimer(String)": { + "de": { + "description": "Gibt den Timer mit dem angegebenen Namen zurück und legt ihn bei Bedarf an" + } + }, + "Sprite/setHitbox(Shape)": { + "de": { + "description": "Setzt die Trefferfläche auf die angegebene Form; (0/0) ist die Mitte der Figur" + } + }, + "Sprite/getHitbox()": { + "de": { + "description": "Gibt die Trefferfläche der Figur zurück" + } + }, + "Sprite/enableHitbox()": { + "de": { + "description": "Schaltet die Berührungserkennung wieder ein" + } + }, + "Sprite/disableHitbox()": { + "de": { + "description": "Schaltet die Berührungserkennung aus" + } + }, + "Sprite/stamp()": { + "de": { + "description": "Druckt ein unbewegliches Abbild der Figur auf die Bühne" + } + }, + "Sprite/stamp(Layer)": { + "de": { + "description": "Druckt ein unbewegliches Abbild der Figur auf die angegebene Ebene" + } + }, + "Sprite/getPen()": { + "de": { + "description": "Gibt den Stift dieser Figur zurück; mit ihm kann sie eine Spur zeichnen" + } + }, + "Sprite/remove()": { + "de": { + "description": "Entfernt die Figur von der Bühne" + } + }, + "Sprite/isClone()": { + "de": { + "description": "Erzeugt eine Kopie der Figur" + } + }, + "Sprite/getShaders()": { + "de": { + "description": "Gibt die Shader dieser Figur zurück" + } + }, + "Stage/constructor()": { + "de": { + "description": "Erzeugt eine Bühne der Größe 480 x 360" + } + }, + "Stage/showVariable(String,Supplier)": { + "de": { + "description": "Erzeugt eine Bühne mit der angegebenen Breite und Höhe" + } + }, + "Stage/constructor(int,int,String)": { + "de": { + "description": "Erzeugt eine Bühne der angegebenen Größe. Der Asset-Pfad wird im Browser ignoriert" + } + }, + "Stage/run()": { + "de": { + "description": "Wird in jedem Frame aufgerufen" + } + }, + "Stage/whenIReceive(String)": { + "de": { + "description": "Wird bei broadcast(message) aufgerufen" + } + }, + "Stage/whenKeyPressed(KeyCode)": { + "de": { + "description": "Wird beim Drücken der Taste aufgerufen" + } + }, + "Stage/whenKeyReleased(KeyCode)": { + "de": { + "description": "Wird beim Loslassen der Taste aufgerufen" + } + }, + "Stage/whenMouseClicked(MouseCode)": { + "de": { + "description": "Wird bei einem Mausklick aufgerufen" + } + }, + "Stage/whenMouseWheelMoved(int)": { + "de": { + "description": "Wird beim Drehen des Mausrads aufgerufen" + } + }, + "Stage/whenBackdropSwitches(String)": { + "de": { + "description": "Wird beim Wechsel des Hintergrunds aufgerufen" + } + }, + "Stage/broadcast(String)": { + "de": { + "description": "Sendet eine Nachricht an alle whenIReceive-Empfänger" + } + }, + "Stage/add(Sprite)": { + "de": { + "description": "Fügt der Bühne eine Figur hinzu" + } + }, + "Stage/add(Pen)": { + "de": { + "description": "Fügt der Bühne einen Stift hinzu" + } + }, + "Stage/add(Text)": { + "de": { + "description": "Fügt der Bühne einen Text hinzu" + } + }, + "Stage/remove(Text)": { + "de": { + "description": "Entfernt den Text von der Bühne" + } + }, + "Stage/remove(Pen)": { + "de": { + "description": "Entfernt den Stift von der Bühne" + } + }, + "Stage/remove(Sprite)": { + "de": { + "description": "Entfernt die Figur von der Bühne" + } + }, + "Stage/removeAll()": { + "de": { + "description": "Entfernt alle Figuren von der Bühne" + } + }, + "Stage/remove(Class)": { + "de": { + "description": "Entfernt alle Figuren dieser Klasse von der Bühne, z.B. remove(Apfel.class)" + } + }, + "Stage/getAll()": { + "de": { + "description": "Gibt alle Figuren auf der Bühne zurück" + } + }, + "Stage/find(Class)": { + "de": { + "description": "Gibt alle Figuren dieser Klasse zurück, z.B. find(Apfel.class)" + } + }, + "Stage/count(Class)": { + "de": { + "description": "Gibt die Anzahl der Figuren dieser Klasse zurück, z.B. count(Apfel.class)" + } + }, + "Stage/addBackdrop(String)": { + "de": { + "description": "Fügt einen der eingebauten Hintergründe hinzu" + } + }, + "Stage/addBackdrop(String,String)": { + "de": { + "description": "Fügt einen Hintergrund unter eigenem Namen hinzu" + } + }, + "Stage/addBackdrop(String,String,boolean)": { + "de": { + "description": "Fügt einen Hintergrund hinzu; bei stretch == true wird er auf Bühnengröße gedehnt" + } + }, + "Stage/switchBackdrop(String)": { + "de": { + "description": "Wechselt zum Hintergrund mit dem angegebenen Namen" + } + }, + "Stage/nextBackdrop()": { + "de": { + "description": "Wechselt zum nächsten Hintergrund" + } + }, + "Stage/previousBackdrop()": { + "de": { + "description": "Wechselt zum vorherigen Hintergrund" + } + }, + "Stage/randomBackdrop()": { + "de": { + "description": "Wechselt zu einem zufälligen Hintergrund" + } + }, + "Stage/getCurrentBackdropName()": { + "de": { + "description": "Gibt den Namen des aktuellen Hintergrunds zurück" + } + }, + "Stage/getCurrentBackdropIndex()": { + "de": { + "description": "Gibt die Nummer des aktuellen Hintergrunds zurück" + } + }, + "Stage/addSound(String)": { + "de": { + "description": "Fügt einen der eingebauten Klänge hinzu" + } + }, + "Stage/addSound(String,String)": { + "de": { + "description": "Fügt einen Klang unter eigenem Namen hinzu" + } + }, + "Stage/playSound(String)": { + "de": { + "description": "Spielt einen zuvor hinzugefügten Klang ab" + } + }, + "Stage/stopSound(String)": { + "de": { + "description": "Stoppt den Klang mit dem angegebenen Namen" + } + }, + "Stage/stopAllSounds()": { + "de": { + "description": "Stoppt alle Klänge der Bühne" + } + }, + "Stage/isSoundPlaying(String)": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Klang gerade abgespielt wird" + } + }, + "Stage/setVolume(double)": { + "de": { + "description": "Setzt die Lautstärke in Prozent" + } + }, + "Stage/changeVolume(double)": { + "de": { + "description": "Ändert die Lautstärke um den angegebenen Wert" + } + }, + "Stage/getVolume()": { + "de": { + "description": "Gibt die Lautstärke in Prozent zurück" + } + }, + "Stage/setColor(double)": { + "de": { + "description": "Setzt die Hintergrundfarbe über den Farbton (0 bis 255)" + } + }, + "Stage/setColor(double,double,double)": { + "de": { + "description": "Setzt die Hintergrundfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + }, + "Stage/setColor(Color)": { + "de": { + "description": "Setzt die Hintergrundfarbe" + } + }, + "Stage/getColor()": { + "de": { + "description": "Gibt die Hintergrundfarbe zurück" + } + }, + "Stage/changeColor(double)": { + "de": { + "description": "Ändert den Farbton des Hintergrunds um den angegebenen Wert" + } + }, + "Stage/getCamera()": { + "de": { + "description": "Gibt die Kamera der Bühne zurück" + } + }, + "Stage/setTint(double,double,double)": { + "de": { + "description": "Färbt den Hintergrund ein (Anteile jeweils 0 bis 255)" + } + }, + "Stage/setTint(double)": { + "de": { + "description": "Färbt den Hintergrund mit dem angegebenen Farbton ein (0 bis 255)" + } + }, + "Stage/changeTint(double)": { + "de": { + "description": "Ändert den Farbton der Einfärbung um den angegebenen Wert" + } + }, + "Stage/setTransparency(double)": { + "de": { + "description": "Setzt die Transparenz des Hintergrunds in Prozent" + } + }, + "Stage/changeTransparency(double)": { + "de": { + "description": "Ändert die Transparenz des Hintergrunds" + } + }, + "Stage/setDebug(boolean)": { + "de": { + "description": "Schaltet die Ausgabe von debug() ein oder aus" + } + }, + "Stage/isDebug()": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Fehlersuche eingeschaltet ist" + } + }, + "Stage/waitUntil(BooleanSupplier)": { + "de": { + "description": "Wartet, bis die Bedingung erfüllt ist" + } + }, + "Stage/exit()": { + "de": { + "description": "Beendet das Programm" + } + }, + "Stage/setCursor(String)": { + "de": { + "description": "Setzt das Mauszeigerbild" + } + }, + "Stage/setCursor(String,int,int)": { + "de": { + "description": "Setzt das Mauszeigerbild mit eigenem Aktivpunkt" + } + }, + "Stage/getPixels()": { + "de": { + "description": "Nur in der Desktop-Version: Zugriff auf einzelne Bildpunkte" + } + }, + "Stage/getShaders()": { + "de": { + "description": "Gibt die Shader der Bühne zurück; sie verändern das ganze Bild ohne die UI" + } + }, + "Stage/getSorting()": { + "de": { + "description": "Gibt die Sortierung der Bühne zurück. Mit getSorting().byY() werden Figuren weiter unten vor denen weiter oben gezeichnet." + } + }, + "Stage/getWidth()": { + "de": { + "description": "Gibt die Breite der Bühne in Pixeln zurück" + } + }, + "Stage/getHeight()": { + "de": { + "description": "Gibt die Höhe der Bühne in Pixeln zurück" + } + }, + "Stage/isKeyPressed(KeyCode)": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Taste gerade gedrückt ist" + } + }, + "Stage/getMouseX()": { + "de": { + "description": "Gibt die x-Position des Mauszeigers zurück" + } + }, + "Stage/getMouseY()": { + "de": { + "description": "Gibt die y-Position des Mauszeigers zurück" + } + }, + "Stage/getMouse()": { + "de": { + "description": "Gibt die Position des Mauszeigers zurück" + } + }, + "Stage/isMouseDown()": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine Maustaste gedrückt ist" + } + }, + "Stage/getTimer()": { + "de": { + "description": "Gibt den Standard-Timer der Bühne zurück" + } + }, + "Stage/getTimer(String)": { + "de": { + "description": "Gibt den Timer mit dem angegebenen Namen zurück und legt ihn bei Bedarf an" + } + }, + "Stage/getDeltaTime()": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + }, + "Stage/getFrameRate()": { + "de": { + "description": "Gibt die aktuelle Bildrate zurück" + } + }, + "Stage/eraseAll()": { + "de": { + "description": "Löscht alles, was mit Stiften gezeichnet wurde" + } + }, + "Stage/display(String)": { + "de": { + "description": "Zeigt einen Text am unteren Rand der Bühne an" + } + }, + "Stage/display(String,int)": { + "de": { + "description": "Zeigt einen Text für die angegebene Zeit in Millisekunden an" + } + }, + "Stage/wait(int)": { + "de": { + "description": "Pausiert das Programm für die angegebene Zeit in Millisekunden" + } + }, + "Stage/ask(String)": { + "de": { + "description": "Stellt eine Frage; die Antwort wird über getAnswer() abgeholt" + } + }, + "Stage/getAnswer()": { + "de": { + "description": "Gibt die zuletzt eingegebene Antwort zurück, sonst eine leere Zeichenkette" + } + }, + "Stage/isAsking()": { + "de": { + "description": "Gibt genau dann true zurück, wenn noch auf eine Antwort gewartet wird" + } + }, + "Stage/pickRandom(int,int)": { + "de": { + "description": "Gibt eine Zufallszahl zwischen from und to zurück (beide eingeschlossen)" + } + }, + "Text/constructor()": { + "de": { + "description": "Erzeugt einen leeren Text in der Mitte der Bühne" + } + }, + "Text/constructor(Sprite)": { + "de": { + "description": "Erzeugt einen Text an der angegebenen Position mit der angegebenen Breite" + } + }, + "Text/constructor(String,double,double,double,TextStyle)": { + "de": { + "description": "Erzeugt einen Text an der angegebenen Position, mit der angegebenen Breite und im angegebenen Stil" + } + }, + "Text/showText(String)": { + "de": { + "description": "Zeigt den Text an" + } + }, + "Text/showText(String,int)": { + "de": { + "description": "Zeigt den Text für die angegebene Zeit in Millisekunden an" + } + }, + "Text/setPosition(double,double)": { + "de": { + "description": "Setzt den Text an die angegebene Position (Mitte der Bühne ist 0/0)" + } + }, + "Text/setPosition(Vector2)": { + "de": { + "description": "Setzt den Text an die angegebene Position (Mitte der Bühne ist 0/0)" + } + }, + "Text/getPosition()": { + "de": { + "description": "Gibt die Position des Texts zurück" + } + }, + "Text/setX(double)": { + "de": { + "description": "Setzt die x-Position" + } + }, + "Text/getX()": { + "de": { + "description": "Gibt die x-Position zurück" + } + }, + "Text/setY(double)": { + "de": { + "description": "Setzt die y-Position" + } + }, + "Text/getY()": { + "de": { + "description": "Gibt die y-Position zurück" + } + }, + "Text/setTextColor(int,int,int)": { + "de": { + "description": "Setzt die Schriftfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + }, + "Text/setTextColor(double)": { + "de": { + "description": "Setzt die Schriftfarbe über den Farbton (0 bis 255)" + } + }, + "Text/setTextColor(Color)": { + "de": { + "description": "Setzt die Schriftfarbe" + } + }, + "Text/setBackgroundColor(int,int,int)": { + "de": { + "description": "Setzt die Hintergrundfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + }, + "Text/setBackgroundColor(double)": { + "de": { + "description": "Setzt die Hintergrundfarbe über den Farbton (0 bis 255)" + } + }, + "Text/setBackgroundColor(Color)": { + "de": { + "description": "Setzt die Hintergrundfarbe" + } + }, + "Text/setStrokeColor(int,int,int)": { + "de": { + "description": "Setzt die Rahmenfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + }, + "Text/setStrokeColor(double)": { + "de": { + "description": "Setzt die Rahmenfarbe über den Farbton (0 bis 255)" + } + }, + "Text/setStrokeColor(Color)": { + "de": { + "description": "Setzt die Rahmenfarbe" + } + }, + "Text/addFont(String,String)": { + "de": { + "description": "Fügt eine Schriftart hinzu" + } + }, + "Text/switchFont(String)": { + "de": { + "description": "Wechselt zur Schriftart mit dem angegebenen Namen" + } + }, + "Text/nextFont()": { + "de": { + "description": "Wechselt zur nächsten Schriftart" + } + }, + "Text/getCurrentFontName()": { + "de": { + "description": "Gibt den Namen der aktuellen Schriftart zurück" + } + }, + "Text/getCurrentFontIndex()": { + "de": { + "description": "Gibt die Nummer der aktuellen Schriftart zurück" + } + }, + "Text/setFont(String)": { + "de": { + "description": "Wechselt zur Schriftart mit dem angegebenen Namen" + } + }, + "Text/getFont()": { + "de": { + "description": "Gibt den Namen der aktuellen Schriftart zurück" + } + }, + "Text/setTextSize(int)": { + "de": { + "description": "Setzt die Schriftgröße" + } + }, + "Text/getTextSize()": { + "de": { + "description": "Gibt die Schriftgröße zurück" + } + }, + "Text/getWidth()": { + "de": { + "description": "Gibt die Breite des Textfelds zurück" + } + }, + "Text/setWidth(double)": { + "de": { + "description": "Setzt die Breite des Textfelds; längere Texte werden umgebrochen" + } + }, + "Text/setAlign(TextAlign)": { + "de": { + "description": "Legt fest, wie der Text zu seiner Position ausgerichtet wird" + } + }, + "Text/getAlign()": { + "de": { + "description": "Gibt die Ausrichtung des Texts zurück" + } + }, + "Text/setStyle(TextStyle)": { + "de": { + "description": "Legt fest, ob der Text als Kasten, Sprech- oder Denkblase dargestellt wird" + } + }, + "Text/getStyle()": { + "de": { + "description": "Gibt den Stil zurück, in dem der Text gezeichnet wird" + } + }, + "Text/remove()": { + "de": { + "description": "Entfernt den Text von der Bühne" + } + }, + "Text/goToFrontLayer()": { + "de": { + "description": "Bringt den Text vor die anderen Texte" + } + }, + "Text/goToBackLayer()": { + "de": { + "description": "Schiebt den Text hinter die anderen Texte" + } + }, + "Text/goLayersForwards(int)": { + "de": { + "description": "Bringt den Text um die angegebene Anzahl Ebenen nach vorne" + } + }, + "Text/goLayersBackwards(int)": { + "de": { + "description": "Schiebt den Text um die angegebene Anzahl Ebenen nach hinten" + } + }, + "Text/isUI()": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Text zur Benutzeroberfläche gehört" + } + }, + "Text/setIsUI(boolean)": { + "de": { + "description": "Legt fest, ob der Text zur Benutzeroberfläche gehört und sich nicht mit der Kamera bewegt" + } + }, + "Text/getStage()": { + "de": { + "description": "Gibt die Bühne zurück, auf der der Text liegt" + } + }, + "Text/whenAddedToStage()": { + "de": { + "description": "Wird aufgerufen, wenn der Text der Bühne hinzugefügt wird" + } + }, + "Text/whenAddedToStage(Stage)": { + "de": { + "description": "Wird aufgerufen, wenn der Text der Bühne hinzugefügt wird" + } + }, + "Text/whenRemovedFromStage()": { + "de": { + "description": "Wird aufgerufen, wenn der Text von der Bühne entfernt wird" + } + }, + "Text/whenRemovedFromStage(Stage)": { + "de": { + "description": "Wird aufgerufen, wenn der Text von der Bühne entfernt wird" + } + }, + "Text/getDefaultFont()": { + "de": { + "description": "Gibt die Standardschriftart zurück" + } + }, + "Text/getDefaultFontSize()": { + "de": { + "description": "Gibt die Standardschriftgröße zurück" + } + }, + "Text/useFont(String,int)": { + "de": { + "description": "Legt Schriftart und -größe für alle Texte fest" + } + }, + "Text/useFont(String)": { + "de": { + "description": "Legt die Schriftart für alle Texte fest" + } + }, + "Text/useSmoothing(boolean)": { + "de": { + "description": "Legt fest, ob Schrift geglättet wird" + } + }, + "Timer/constructor()": { + "de": { + "description": "Erzeugt einen neuen Timer" + } + }, + "Timer/reset()": { + "de": { + "description": "Setzt den Timer auf 0 zurück" + } + }, + "Timer/millis()": { + "de": { + "description": "Gibt die seit dem Programmstart vergangenen Millisekunden zurück" + } + }, + "Timer/everyMillis(int)": { + "de": { + "description": "Gibt alle millis Millisekunden einmal true zurück" + } + }, + "Timer/forMillis(int)": { + "de": { + "description": "Gibt für die ersten millis Millisekunden nach dem Zurücksetzen true zurück" + } + }, + "Timer/afterMillis(int)": { + "de": { + "description": "Gibt true zurück, sobald seit dem Zurücksetzen millis Millisekunden vergangen sind" + } + }, + "Timer/intervalMillis(int)": { + "de": { + "description": "Wechselt alle millis Millisekunden zwischen true und false" + } + }, + "Timer/intervalMillis(int,boolean)": { + "de": { + "description": "Wechselt alle millis Millisekunden zwischen true und false; skipFirst überspringt das erste Intervall" + } + }, + "Timer/intervalMillis(int,int)": { + "de": { + "description": "Gibt millis1 Millisekunden lang true und danach millis2 Millisekunden lang false zurück" + } + }, + "Timer/intervalMillis(int,int,boolean)": { + "de": { + "description": "Gibt millis1 Millisekunden lang true und danach millis2 Millisekunden lang false zurück; skipFirst überspringt das erste Intervall" + } + }, + "UISprite/constructor()": { + "de": { + "description": "Erzeugt eine neue UI-Figur" + } + }, + "UISprite/setWidth(double)": { + "de": { + "description": "Setzt die Breite in Pixeln" + } + }, + "UISprite/setHeight(double)": { + "de": { + "description": "Setzt die Höhe in Pixeln" + } + }, + "UISprite/changeWidth(double)": { + "de": { + "description": "Ändert die Breite um die angegebene Anzahl Pixel" + } + }, + "UISprite/changeHeight(double)": { + "de": { + "description": "Ändert die Höhe um die angegebene Anzahl Pixel" + } + }, + "UISprite/setNineSlice(int,int,int,int)": { + "de": { + "description": "Hält die Ecken und Ränder des Kostüms beim Skalieren fest (Nine-Slice)" + } + }, + "UISprite/disableNineSlice()": { + "de": { + "description": "Lässt das ganze Kostüm wieder mitskalieren" + } + }, + "Vector2/constructor()": { + "de": { + "description": "Erzeugt den Nullvektor" + } + }, + "Vector2/constructor(double,double)": { + "de": { + "description": "Erzeugt einen Vektor mit den angegebenen Koordinaten" + } + }, + "Vector2/constructor(Vector2)": { + "de": { + "description": "Erzeugt eine Kopie des übergebenen Vektors" + } + }, + "Vector2/fromPolar(double,double)": { + "de": { + "description": "Erzeugt einen Vektor aus Länge und Winkel (in Grad)" + } + }, + "Vector2/length()": { + "de": { + "description": "Gibt die Länge des Vektors zurück" + } + }, + "Vector2/lengthSq()": { + "de": { + "description": "Gibt das Quadrat der Länge zurück (schneller als length())" + } + }, + "Vector2/distanceSq(Vector2)": { + "de": { + "description": "Gibt das Quadrat des Abstands zu v zurück" + } + }, + "Vector2/distance(Vector2)": { + "de": { + "description": "Gibt den Abstand zu v zurück" + } + }, + "Vector2/angle()": { + "de": { + "description": "Gibt den Winkel des Vektors in Grad zurück" + } + }, + "Vector2/unitVector()": { + "de": { + "description": "Gibt einen Vektor gleicher Richtung mit der Länge 1 zurück" + } + }, + "Vector2/normalVector()": { + "de": { + "description": "Gibt einen dazu senkrechten Vektor zurück" + } + }, + "Vector2/add(Vector2)": { + "de": { + "description": "Gibt die Summe beider Vektoren als neuen Vektor zurück" + } + }, + "Vector2/sub(Vector2)": { + "de": { + "description": "Gibt die Differenz beider Vektoren als neuen Vektor zurück" + } + }, + "Vector2/multiply(double)": { + "de": { + "description": "Gibt den mit scalar multiplizierten Vektor als neuen Vektor zurück" + } + }, + "Vector2/dot(Vector2)": { + "de": { + "description": "Gibt das Skalarprodukt beider Vektoren zurück" + } + }, + "Vector2/rotateBy(double)": { + "de": { + "description": "Gibt den um angle Grad gedrehten Vektor als neuen Vektor zurück" + } + }, + "Vector2/rotateTo(double)": { + "de": { + "description": "Gibt einen Vektor gleicher Länge mit dem Winkel angle (in Grad) zurück" + } + }, + "Vector2/reverse()": { + "de": { + "description": "Gibt den entgegengesetzten Vektor zurück" + } + }, + "Vector2/getX()": { + "de": { + "description": "Gibt die x-Koordinate zurück" + } + }, + "Vector2/getY()": { + "de": { + "description": "Gibt die y-Koordinate zurück" + } + }, + "Vector2/clone()": { + "de": { + "description": "Gibt eine Kopie des Vektors zurück" + } + }, + "Vector2/equals(Object)": { + "de": { + "description": "Gibt genau dann true zurück, wenn beide Vektoren gleich sind" + } + }, + "Vector2/toString()": { + "de": { + "description": "Gibt den Vektor als Zeichenkette zurück" + } + }, + "Vector2/hashCode()": { + "de": { + "description": "Gibt den Hashwert des Vektors zurück" + } + }, + "Window/constructor()": { + "de": { + "description": "Erzeugt ein Fenster in Standardgröße" + } + }, + "Window/constructor(String)": { + "de": { + "description": "Erzeugt ein Fenster mit eigenem Asset-Ordner" + } + }, + "Window/constructor(int,int)": { + "de": { + "description": "Erzeugt ein Fenster mit der angegebenen Größe" + } + }, + "Window/constructor(int,int,String)": { + "de": { + "description": "Erzeugt ein Fenster mit Größe und eigenem Asset-Ordner" + } + }, + "Window/getInstance()": { + "de": { + "description": "Gibt das Fenster des laufenden Programms zurück" + } + }, + "Window/getWidth()": { + "de": { + "description": "Gibt die Breite des Fensters in Pixeln zurück" + } + }, + "Window/getHeight()": { + "de": { + "description": "Gibt die Höhe des Fensters in Pixeln zurück" + } + }, + "Window/getDeltaTime()": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + }, + "Window/pause()": { + "de": { + "description": "Gibt die Bühne zurück, die gerade angezeigt wird" + } + }, + "Window/setStage(Stage)": { + "de": { + "description": "Zeigt die angegebene Bühne an" + } + }, + "Window/transitionToStage(Stage,int)": { + "de": { + "description": "Blendet über Schwarz zur angegebenen Bühne über" + } + }, + "Window/setDebug(boolean)": { + "de": { + "description": "Schaltet die Ausgabe von debug() ein oder aus" + } + }, + "Window/isDebug()": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Fehlersuche eingeschaltet ist" + } + }, + "Window/exit()": { + "de": { + "description": "Beendet das Programm" + } + }, + "Window/whenExits()": { + "de": { + "description": "Wird beim Beenden des Programms aufgerufen" + } + }, + "Window/getLibraryVersion()": { + "de": { + "description": "Gibt die Version der Bibliothek zurück" + } + }, + "Window/getLibraryTitle()": { + "de": { + "description": "Gibt den Namen der Bibliothek zurück" + } + }, + "Window/useFullScreen()": { + "de": { + "description": "Nur in der Desktop-Version: startet im Vollbild" + } + }, + "Window/useTextureSampling(TextureSampling)": { + "de": { + "description": "Legt fest, wie Bilder beim Vergrößern und Verkleinern geglättet werden. TextureSampling.POINT hält Pixelgrafik scharf, LINEAR (Standard) glättet. BILINEAR und TRILINEAR wirken im Browser wie LINEAR." + } + }, + "Window/getTextureSampling()": { + "de": { + "description": "Gibt das eingestellte Glättungsverfahren zurück" + } + }, + "Window/useSplashLogo(String)": { + "de": { + "description": "Nur in der Desktop-Version: zeigt beim Start ein Logo" + } + } +} diff --git a/compatibility/README.md b/compatibility/README.md new file mode 100644 index 00000000..73e7bf59 --- /dev/null +++ b/compatibility/README.md @@ -0,0 +1,59 @@ +# Browser compatibility artifacts + +`browser-policy.json` records the reviewed desktop version, browser revision, +library flavors, intentional desktop limitations and known behavioral gaps. +`browser-api.json` is a snapshot of the browser compiler's declarations for both +flavors. The Javadoc doclet adds structured owners and overloads to generated +reference pages; `scripts/browser-compatibility.py` combines them into +`contract.json`, the documentation table and browser reference fixtures. + +The contract covers documented public constructors and method groups. Overload +matching uses simple erased parameter names and static/constructor kinds. The +full desktop types remain in the artifact. Compilation and declaration coverage +do not establish complete behavioral or binary compatibility. + +## Updating both repositories + +Use an explicit checkout path; the repositories need not be siblings: + +```bash +# In online-ide: refresh the inventory after a declaration change. +UPDATE_SCRATCH_INVENTORY=1 npm run test:ci -- src/test/ScratchCompatibilityTest.test.ts -t "inventory matches" + +# In scratch-for-java: generate reference metadata and synchronize consumers. +mvn -q -DskipTests prepare-package +python3 scripts/browser-compatibility.py --online-ide /path/to/online-ide +python3 scripts/parity-fixture.py --check --strict --online-ide /path/to/online-ide + +# In online-ide: validate the newly generated examples and contract. +npm run test:ci -- src/test/ScratchCompatibilityTest.test.ts + +# In scratch-for-java: read-only freshness check. +python3 scripts/browser-compatibility.py --check --online-ide /path/to/online-ide +``` + +When changing the desktop version, review the policy and advance the browser +revision explicitly. For a browser behavioral change, advance its revision even +if declarations stay the same. Remove resolved policy overrides and diagnostic +exceptions after the corresponding behavior is implemented and tested. + +`browser-reference-diagnostics.json` contains the 13 known unsupported examples' +exact diagnostic IDs and ranges. It is reviewed input, not an automatically +updated failure baseline. All examples are compiled. Unexpected failures and +unexpected fixes both fail: a fix should remove its exception and update its +availability. Compiling clone examples remain read-only until lifecycle behavior +is implemented. Supported overload examples can remain runnable on a page that +also documents missing overloads. + +## CI and publishing + +The browser suite validates its own snapshot and fixtures without a library +checkout. Library tests and documentation publishing additionally require an +explicit browser checkout, artifact freshness and strict parity checks. The +shared CI action uses `openpatch/online-ide`'s default branch. Coordinate changes +across repositories: merge a synchronized browser consumer before library CI +expects it, or test both working copies locally while preparing the changes. + +`build.sh` generates availability annotations and publishes `/compatibility.json`. +Browser builds publish `/scratch-compatibility.json`; `Window.getLibraryVersion()` +reports its browser revision, currently `5.7.0-browser.1`. diff --git a/compatibility/behavioral-checks.md b/compatibility/behavioral-checks.md new file mode 100644 index 00000000..4c70e29e --- /dev/null +++ b/compatibility/behavioral-checks.md @@ -0,0 +1,49 @@ +# Portable behavioral checks, schema 1 + +Keep checks as ordinary Java alongside the project. Separate logic from the +window: use explicit frame calls, real headless costume hitboxes and +`org.openpatch.scratch.Random.randomSeed(seed)`. A seed makes a run reproducible +within a runtime; random algorithms need not produce identical numbers across runtimes. + +Shared check bodies use normal Java and throw when a condition is false. The +canonical `checks/PortableBehaviorChecks.java` runs unchanged in desktop JUnit +and Chromium. Desktop needs no window; the browser wrapper creates a Stage for +WebGL, runs the same body and pauses. Clock/lifecycle probes separately exercise +actual stepping and asynchronous rendering. + +Students can keep the browser teaching test format: + +```java +@Test +class ScoreTest { + @Test + void startsAtZero() { + assertEquals(0, new Score().getPoints(), "Initial score"); + } +} +``` + +Studio and the curriculum desktop checker remove only the class annotation in +memory and inject JUnit Test/assertion imports. Line breaks and original source +files are preserved. Test methods retain their annotations. JUnit 5.11.4 / +console 1.11.4 is bundled in Studio; the curriculum checker downloads that exact +console artifact once and verifies its SHA-256, or uses its matching local cache. +Other Java IDEs need explicit JUnit imports and no class annotation. + +Optional `.scratch4j/checks.json` selects tests: + +```json +{"schemaVersion":1,"mode":"logic","classes":["ScoreTest"]} +``` + +`logic` runs in a headless child JVM. `graphics` permits a window and needs a +display. Studio/CLI applies a 30-second limit. Without a manifest, Studio discovers +Java files containing `@Test`. Compilation errors, assertion failures, zero tests +and timeouts fail the run. The browser uses its Testrunner. ZIP/JSON adapters +preserve sources and the check manifest, excluding caches. + +Run using Studio's Run > Run behavior checks command, or the +`org.openpatch.scratch4j.runner.TeachingTestRunner ` CLI. +The curriculum gate compiles all archives, including test classes, and runs +PunkteregelTest on desktop. Interactive curriculum checks compile it in the browser. +Canonical behavioral checks run in both runtime CI gates. diff --git a/compatibility/browser-api.json b/compatibility/browser-api.json new file mode 100644 index 00000000..a05615ec --- /dev/null +++ b/compatibility/browser-api.json @@ -0,0 +1,21050 @@ +{ + "standard": { + "org.openpatch.scratch.AnimatedSprite": [ + { + "name": "AnimatedSprite", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.AnimatedSprite" + ], + "returns": "org.openpatch.scratch.AnimatedSprite" + }, + { + "name": "AnimatedSprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.AnimatedSprite" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "Function", + "int" + ], + "returns": "void" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int", + "int", + "boolean" + ], + "returns": "void" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "addCostumes", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.AnimatedSprite" + }, + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "Object[]" + ], + "returns": "void" + }, + { + "name": "deleteThisClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "destroy", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "disableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "distanceToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "distanceToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "double" + }, + { + "name": "enableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getAnimationFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getAnimationInterval", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getCurrentCostumeIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentCostumeName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getDirection", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getGamepadAxisValue", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "double" + }, + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Hitbox" + }, + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getPen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "getText", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTint", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "getTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "T@194 extends org.openpatch.scratch.Sprite" + }, + { + "name": "getTouchingSprites", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "List" + }, + { + "name": "getTransparency", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "glide", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "hide", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ifOnEdgeBounce", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "isActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isAnimationPlayed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isColorTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isDestroyed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isGamepadButtonDown", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean" + }, + { + "name": "isGamepadConnected", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "isGliding", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean" + }, + { + "name": "isKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isTouchingEdge", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "boolean" + }, + { + "name": "isVisible", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "nextCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "onKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyTyped", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "playAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "boolean" + ], + "returns": "void" + }, + { + "name": "playAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "pointTowardsMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "pointTowardsSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "previousCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "resetAnimation", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "restartActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "setActFrequency", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setAnimationFrame", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setAnimationInterval", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "double[]" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setRotationCenter", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setRotationStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.RotationStyle" + ], + "returns": "void" + }, + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "show", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "String", + "java.util.function.Supplier" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Layer" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "turnLeft", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "turnRight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenClicked", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void" + }, + { + "name": "whenMouseMoved", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenStartsAsClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Bounds": [ + { + "name": "Bounds", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "height", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Bounds" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "width", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "x", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "y", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + } + ], + "org.openpatch.scratch.Circle": [ + { + "name": "Circle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Circle" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Clock": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getDay", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getDayOfWeek", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getDaysSince2000", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getHour", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getMillisecond", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getMinute", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getMonth", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getSecond", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getYear", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Color": [ + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "get", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getBlue", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getGreen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getH", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getHSB", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getL", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getRed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getS", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "hashCode", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "setHSB", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setHSB", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setRGB", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Ellipse": [ + { + "name": "Ellipse", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Ellipse" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Hitbox": [ + { + "name": "Hitbox", + "constructor": true, + "static": false, + "parameters": [ + "double[]", + "double[]" + ], + "returns": "org.openpatch.scratch.Hitbox" + }, + { + "name": "Hitbox", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "org.openpatch.scratch.Hitbox" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "drawDebug", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "drawShape", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getShape", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Hitbox" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translateAndRotateAndResize", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.HtmlColor": [ + { + "name": "HtmlColor", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.HtmlColor" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getRandom", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.KeyCode": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.KeyCode" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.KeyCode[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Layer": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Layer" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Layer[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.MouseCode": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.MouseCode" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.MouseCode[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Operators": [ + { + "name": "absOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "absOf", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "int" + }, + { + "name": "acosOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "asinOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "atanOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "ceilingOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "constrain", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double" + }, + { + "name": "constrain", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "int" + }, + { + "name": "cosOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "eToThePowerOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "floorOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "lerp", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double" + }, + { + "name": "lnOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "logOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "map", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double", + "double", + "double" + ], + "returns": "double" + }, + { + "name": "max", + "constructor": false, + "static": true, + "parameters": [ + "double[]" + ], + "returns": "double" + }, + { + "name": "max", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "int" + }, + { + "name": "min", + "constructor": false, + "static": true, + "parameters": [ + "double[]" + ], + "returns": "double" + }, + { + "name": "min", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "int" + }, + { + "name": "mod", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double" + }, + { + "name": "mod", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "round", + "constructor": false, + "static": true, + "parameters": [ + "double", + "int" + ], + "returns": "double" + }, + { + "name": "round", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "int" + }, + { + "name": "sinOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "sqrtOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "tanOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "tenToThePowerOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Pen": [ + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "addedToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "down", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "eraseAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getColor", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "goToBackground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToForeground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "isInBackground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "removedFromStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "up", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Polygon": [ + { + "name": "Polygon", + "constructor": true, + "static": false, + "parameters": [ + "double[]", + "double[]" + ], + "returns": "org.openpatch.scratch.Polygon" + }, + { + "name": "Polygon", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Polygon" + }, + { + "name": "addPoint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Random": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double" + }, + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double" + }, + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "noiseSeed", + "constructor": false, + "static": true, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double" + }, + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double" + }, + { + "name": "randomInt", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "randomInt", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "int" + }, + { + "name": "randomPosition", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "randomSeed", + "constructor": false, + "static": true, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "randomVector2", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "randomX", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double" + }, + { + "name": "randomY", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Rectangle": [ + { + "name": "Rectangle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Rectangle" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.RotationStyle": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.RotationStyle" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.RotationStyle[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.ScratchException": [ + { + "name": "ScratchException", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.ScratchException" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getMessage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Shape": [ + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Sprite": [ + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "addCostumes", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "Object[]" + ], + "returns": "void" + }, + { + "name": "deleteThisClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "destroy", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "disableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "distanceToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "distanceToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "double" + }, + { + "name": "enableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getCurrentCostumeIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentCostumeName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getDirection", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getGamepadAxisValue", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "double" + }, + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Hitbox" + }, + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getPen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "getText", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTint", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "getTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "T@194 extends org.openpatch.scratch.Sprite" + }, + { + "name": "getTouchingSprites", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "List" + }, + { + "name": "getTransparency", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "glide", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "hide", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ifOnEdgeBounce", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "isActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isColorTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isDestroyed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isGamepadButtonDown", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean" + }, + { + "name": "isGamepadConnected", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "isGliding", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean" + }, + { + "name": "isKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isTouchingEdge", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "boolean" + }, + { + "name": "isVisible", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "nextCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "onKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyTyped", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "pointTowardsMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "pointTowardsSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "previousCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "restartActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "setActFrequency", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "double[]" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setRotationCenter", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setRotationStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.RotationStyle" + ], + "returns": "void" + }, + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "show", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "String", + "java.util.function.Supplier" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Layer" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "turnLeft", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "turnRight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenClicked", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void" + }, + { + "name": "whenMouseMoved", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenStartsAsClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Stage": [ + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int", + "String" + ], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "void" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "void" + }, + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "boolean" + ], + "returns": "void" + }, + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "count", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "int" + }, + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "Object[]" + ], + "returns": "void" + }, + { + "name": "destroy", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "display", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "display", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "eraseAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "exit", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "find", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "List" + }, + { + "name": "getAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "List" + }, + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getCamera", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.camera.Camera" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getColor", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "getCurrentBackdropIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentBackdropName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getFrameRate", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getGamepadAxisValue", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "double" + }, + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getPixels", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.pixels.Pixels" + }, + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "getSorting", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.sorting.Sorting" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "isActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isDebug", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isDestroyed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isGamepadButtonDown", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean" + }, + { + "name": "isGamepadConnected", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "isKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean" + }, + { + "name": "isKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "nextBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "onKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyTyped", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "previousBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "randomBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "void" + }, + { + "name": "removeAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "restartActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "setActFrequency", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setCursor", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "setCursor", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "setDebug", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "String", + "java.util.function.Supplier" + ], + "returns": "void" + }, + { + "name": "stopActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "waitUntil", + "constructor": false, + "static": false, + "parameters": [ + "java.util.function.BooleanSupplier" + ], + "returns": "void" + }, + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void" + }, + { + "name": "whenMouseMoved", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "whenMouseWheelMoved", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + } + ], + "org.openpatch.scratch.Text": [ + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "String", + "double", + "double", + "double", + "org.openpatch.scratch.TextStyle" + ], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "String", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "addFont", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addedToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getAlign", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.TextAlign" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getCurrentFontIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentFontName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getDefaultFont", + "constructor": false, + "static": true, + "parameters": [], + "returns": "String" + }, + { + "name": "getDefaultFontSize", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getDefaultFontSizes", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int[]" + }, + { + "name": "getFont", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "getStyle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.TextStyle" + }, + { + "name": "getTextSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "isSmoothing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isUI", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "nextFont", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "removedFromStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "setAlign", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.TextAlign" + ], + "returns": "void" + }, + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setFont", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "setIsUI", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.TextStyle" + ], + "returns": "void" + }, + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setTextSize", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "showText", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "showText", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchFont", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "useFont", + "constructor": false, + "static": true, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "useFont", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "useFontSizes", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "void" + }, + { + "name": "useSmoothing", + "constructor": false, + "static": true, + "parameters": [ + "boolean" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.TextAlign": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.TextAlign" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.TextAlign[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.TextStyle": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.TextStyle" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.TextStyle[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.TextureSampling": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getMode", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.TextureSampling" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.TextureSampling[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Timer": [ + { + "name": "Timer", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "afterMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "everyMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "forMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "boolean" + ], + "returns": "boolean" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "boolean" + ], + "returns": "boolean" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "millis", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "reset", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Triangle": [ + { + "name": "Triangle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Triangle" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.UISprite": [ + { + "name": "UISprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.UISprite" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "addCostumes", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "changeHeight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "Object[]" + ], + "returns": "void" + }, + { + "name": "deleteThisClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "destroy", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "disableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "disableNineSlice", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "distanceToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "distanceToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "double" + }, + { + "name": "enableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getCurrentCostumeIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentCostumeName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getDirection", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getGamepadAxisValue", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "double" + }, + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Hitbox" + }, + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getPen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "getText", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTint", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "getTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "T@194 extends org.openpatch.scratch.Sprite" + }, + { + "name": "getTouchingSprites", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "List" + }, + { + "name": "getTransparency", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "glide", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "hide", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ifOnEdgeBounce", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "isActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isColorTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isDestroyed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isGamepadButtonDown", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean" + }, + { + "name": "isGamepadConnected", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "isGliding", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean" + }, + { + "name": "isKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isTouchingEdge", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "boolean" + }, + { + "name": "isVisible", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "nextCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "onKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyTyped", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "pointTowardsMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "pointTowardsSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "previousCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "restartActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "setActFrequency", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setHeight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "double[]" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "void" + }, + { + "name": "setNineSlice", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setRotationCenter", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setRotationStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.RotationStyle" + ], + "returns": "void" + }, + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "show", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "String", + "java.util.function.Supplier" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Layer" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "turnLeft", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "turnRight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenClicked", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void" + }, + { + "name": "whenMouseMoved", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenStartsAsClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Vector2": [ + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "angle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "distance", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double" + }, + { + "name": "distanceSq", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double" + }, + { + "name": "dot", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "fromPolar", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "hashCode", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "length", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "lengthSq", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "multiply", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "normalVector", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "reverse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "rotateBy", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "rotateTo", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "sub", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "unitVector", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Window": [ + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Window" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int", + "String" + ], + "returns": "org.openpatch.scratch.Window" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "org.openpatch.scratch.Window" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Window" + }, + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "Object[]" + ], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "exit", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getGameSpeed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getInstance", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Window" + }, + { + "name": "getLibraryTitle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getLibraryVersion", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getSplashLogo", + "constructor": false, + "static": true, + "parameters": [], + "returns": "String" + }, + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "getTextureSampling", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.TextureSampling" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "isDebug", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isPaused", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "pause", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "resume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "setDebug", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void" + }, + { + "name": "setGameSpeed", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "step", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "transitionToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage", + "int" + ], + "returns": "void" + }, + { + "name": "useFullScreen", + "constructor": false, + "static": true, + "parameters": [], + "returns": "void" + }, + { + "name": "useSplashLogo", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "useTextureSampling", + "constructor": false, + "static": true, + "parameters": [ + "org.openpatch.scratch.TextureSampling" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenExits", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.camera.Camera": [ + { + "name": "Camera", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.camera.Camera" + }, + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeZoom", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getZoom", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "resetZoom", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setZoom", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setZoomLimit", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "toGlobalPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "toGlobalX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "toGlobalY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "toLocalPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "toLocalX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "toLocalY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.fs.File": [ + { + "name": "File", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.fs.File" + }, + { + "name": "append", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "delete", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "exists", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "read", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "write", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.pixels.Pixels": [ + { + "name": "background", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "foreground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "main", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.recorder.FFmpegRecorder": [ + { + "name": "FFmpegRecorder", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "isRecording", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.recorder.FrameRecorder": [ + { + "name": "FrameRecorder", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.FrameRecorder" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "isRecording", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.recorder.GifRecorder": [ + { + "name": "GifRecorder", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.GifRecorder" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "isRecording", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.recorder.Recorder": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "isRecording", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.shader.Shader": [ + { + "name": "Shader", + "constructor": true, + "static": false, + "parameters": [ + "String", + "String", + "String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader" + }, + { + "name": "Shader", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.extensions.shader.Shader" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "boolean", + "boolean" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "boolean" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "double" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "double[]", + "int" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int[]", + "int" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setName", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.shader.Shaders": [ + { + "name": "Shaders", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "Shaders", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.extensions.shader.Shaders" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "get", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getCurrent", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shader" + }, + { + "name": "getCurrentIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "next", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "reset", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "switchTo", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchTo", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.sorting.Sorting": [ + { + "name": "Sorting", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.sorting.Sorting" + }, + { + "name": "byY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "isOn", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "off", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.tiled.MapObject": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getProperty", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "String" + }, + { + "name": "getPropertyBoolean", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "getPropertyFloat", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "float" + }, + { + "name": "getPropertyInt", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "int" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.tiled.Property": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.tiled.TiledMap": [ + { + "name": "TiledMap", + "constructor": true, + "static": false, + "parameters": [ + "String", + "org.openpatch.scratch.Stage" + ], + "returns": "org.openpatch.scratch.extensions.tiled.TiledMap" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getObjectsFromLayer", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.tiled.MapObject[]" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stampLayerToBackground", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "stampLayerToForeground", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.tiled.TilesetImage": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ] + }, + "nrw": { + "org.openpatch.scratch.AnimatedSprite": [ + { + "name": "AnimatedSprite", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.AnimatedSprite" + ], + "returns": "org.openpatch.scratch.AnimatedSprite" + }, + { + "name": "AnimatedSprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.AnimatedSprite" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "Function", + "int" + ], + "returns": "void" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int", + "int", + "boolean" + ], + "returns": "void" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "addCostumes", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.AnimatedSprite" + }, + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "Object[]" + ], + "returns": "void" + }, + { + "name": "deleteThisClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "destroy", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "disableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "distanceToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "distanceToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "double" + }, + { + "name": "enableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getAnimationFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getAnimationInterval", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getCurrentCostumeIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentCostumeName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getDirection", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getGamepadAxisValue", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "double" + }, + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Hitbox" + }, + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getPen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "getText", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTint", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "getTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "T@401 extends org.openpatch.scratch.Sprite" + }, + { + "name": "getTouchingSprites", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "nrw.List" + }, + { + "name": "getTransparency", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "glide", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "hide", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ifOnEdgeBounce", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "isActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isAnimationPlayed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isColorTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isDestroyed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isGamepadButtonDown", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean" + }, + { + "name": "isGamepadConnected", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "isGliding", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean" + }, + { + "name": "isKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isTouchingEdge", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "boolean" + }, + { + "name": "isVisible", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "nextCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "onKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyTyped", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "playAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String", + "boolean" + ], + "returns": "void" + }, + { + "name": "playAnimation", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "pointTowardsMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "pointTowardsSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "previousCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "resetAnimation", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "restartActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "setActFrequency", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setAnimationFrame", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setAnimationInterval", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "double[]" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setRotationCenter", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setRotationStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.RotationStyle" + ], + "returns": "void" + }, + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "show", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "String", + "java.util.function.Supplier" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Layer" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "turnLeft", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "turnRight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenClicked", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void" + }, + { + "name": "whenMouseMoved", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenStartsAsClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Bounds": [ + { + "name": "Bounds", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "height", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Bounds" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "width", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "x", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "y", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + } + ], + "org.openpatch.scratch.Circle": [ + { + "name": "Circle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Circle" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Clock": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getDay", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getDayOfWeek", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getDaysSince2000", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getHour", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getMillisecond", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getMinute", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getMonth", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getSecond", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getYear", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Color": [ + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "get", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getBlue", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getGreen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getH", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getHSB", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getL", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getRed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getS", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "hashCode", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "setHSB", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setHSB", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setRGB", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Ellipse": [ + { + "name": "Ellipse", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Ellipse" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Hitbox": [ + { + "name": "Hitbox", + "constructor": true, + "static": false, + "parameters": [ + "double[]", + "double[]" + ], + "returns": "org.openpatch.scratch.Hitbox" + }, + { + "name": "Hitbox", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "org.openpatch.scratch.Hitbox" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "drawDebug", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "drawShape", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getShape", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Hitbox" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translateAndRotateAndResize", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.HtmlColor": [ + { + "name": "HtmlColor", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.HtmlColor" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getRandom", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.KeyCode": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.KeyCode" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.KeyCode[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Layer": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Layer" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Layer[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.MouseCode": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.MouseCode" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.MouseCode[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Operators": [ + { + "name": "absOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "absOf", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "int" + }, + { + "name": "acosOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "asinOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "atanOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "ceilingOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "constrain", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double" + }, + { + "name": "constrain", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "int" + }, + { + "name": "cosOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "eToThePowerOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "floorOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "lerp", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double" + }, + { + "name": "lnOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "logOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "map", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double", + "double", + "double" + ], + "returns": "double" + }, + { + "name": "max", + "constructor": false, + "static": true, + "parameters": [ + "double[]" + ], + "returns": "double" + }, + { + "name": "max", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "int" + }, + { + "name": "min", + "constructor": false, + "static": true, + "parameters": [ + "double[]" + ], + "returns": "double" + }, + { + "name": "min", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "int" + }, + { + "name": "mod", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double" + }, + { + "name": "mod", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "round", + "constructor": false, + "static": true, + "parameters": [ + "double", + "int" + ], + "returns": "double" + }, + { + "name": "round", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "int" + }, + { + "name": "sinOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "sqrtOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "tanOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "tenToThePowerOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Pen": [ + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "addedToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "down", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "eraseAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getColor", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "goToBackground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToForeground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "isInBackground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "removedFromStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "up", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Polygon": [ + { + "name": "Polygon", + "constructor": true, + "static": false, + "parameters": [ + "double[]", + "double[]" + ], + "returns": "org.openpatch.scratch.Polygon" + }, + { + "name": "Polygon", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Polygon" + }, + { + "name": "addPoint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Random": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double" + }, + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double" + }, + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "noiseSeed", + "constructor": false, + "static": true, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double" + }, + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double" + }, + { + "name": "randomInt", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "randomInt", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "int" + }, + { + "name": "randomPosition", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "randomSeed", + "constructor": false, + "static": true, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "randomVector2", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "randomX", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double" + }, + { + "name": "randomY", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Rectangle": [ + { + "name": "Rectangle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Rectangle" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.RotationStyle": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.RotationStyle" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.RotationStyle[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.ScratchException": [ + { + "name": "ScratchException", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.ScratchException" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getMessage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Shape": [ + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Sprite": [ + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "addCostumes", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "Object[]" + ], + "returns": "void" + }, + { + "name": "deleteThisClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "destroy", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "disableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "distanceToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "distanceToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "double" + }, + { + "name": "enableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getCurrentCostumeIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentCostumeName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getDirection", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getGamepadAxisValue", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "double" + }, + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Hitbox" + }, + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getPen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "getText", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTint", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "getTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "T@401 extends org.openpatch.scratch.Sprite" + }, + { + "name": "getTouchingSprites", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "nrw.List" + }, + { + "name": "getTransparency", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "glide", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "hide", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ifOnEdgeBounce", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "isActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isColorTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isDestroyed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isGamepadButtonDown", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean" + }, + { + "name": "isGamepadConnected", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "isGliding", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean" + }, + { + "name": "isKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isTouchingEdge", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "boolean" + }, + { + "name": "isVisible", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "nextCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "onKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyTyped", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "pointTowardsMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "pointTowardsSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "previousCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "restartActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "setActFrequency", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "double[]" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setRotationCenter", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setRotationStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.RotationStyle" + ], + "returns": "void" + }, + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "show", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "String", + "java.util.function.Supplier" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Layer" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "turnLeft", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "turnRight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenClicked", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void" + }, + { + "name": "whenMouseMoved", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenStartsAsClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Stage": [ + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int", + "String" + ], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "void" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "void" + }, + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "boolean" + ], + "returns": "void" + }, + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "count", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "int" + }, + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "Object[]" + ], + "returns": "void" + }, + { + "name": "destroy", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "display", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "display", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "eraseAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "exit", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "find", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "nrw.List" + }, + { + "name": "getAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "nrw.List" + }, + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getCamera", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.camera.Camera" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getColor", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "getCurrentBackdropIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentBackdropName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getFrameRate", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getGamepadAxisValue", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "double" + }, + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getPixels", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.pixels.Pixels" + }, + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "getSorting", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.sorting.Sorting" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "isActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isDebug", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isDestroyed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isGamepadButtonDown", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean" + }, + { + "name": "isGamepadConnected", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "isKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean" + }, + { + "name": "isKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "nextBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "onKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyTyped", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "previousBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "randomBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "void" + }, + { + "name": "removeAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "restartActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "setActFrequency", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setCursor", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "setCursor", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "setDebug", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "String", + "java.util.function.Supplier" + ], + "returns": "void" + }, + { + "name": "stopActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "waitUntil", + "constructor": false, + "static": false, + "parameters": [ + "java.util.function.BooleanSupplier" + ], + "returns": "void" + }, + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void" + }, + { + "name": "whenMouseMoved", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "whenMouseWheelMoved", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + } + ], + "org.openpatch.scratch.Text": [ + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "String", + "double", + "double", + "double", + "org.openpatch.scratch.TextStyle" + ], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "String", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "addFont", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addedToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getAlign", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.TextAlign" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getCurrentFontIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentFontName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getDefaultFont", + "constructor": false, + "static": true, + "parameters": [], + "returns": "String" + }, + { + "name": "getDefaultFontSize", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "getDefaultFontSizes", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int[]" + }, + { + "name": "getFont", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "getStyle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.TextStyle" + }, + { + "name": "getTextSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "isSmoothing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isUI", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "nextFont", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "removedFromStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "setAlign", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.TextAlign" + ], + "returns": "void" + }, + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setFont", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "setIsUI", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.TextStyle" + ], + "returns": "void" + }, + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setTextSize", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "showText", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "showText", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchFont", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "useFont", + "constructor": false, + "static": true, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "useFont", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "useFontSizes", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "void" + }, + { + "name": "useSmoothing", + "constructor": false, + "static": true, + "parameters": [ + "boolean" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.TextAlign": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.TextAlign" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.TextAlign[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.TextStyle": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.TextStyle" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.TextStyle[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.TextureSampling": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getMode", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "name", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "ordinal", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "valueOf", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.TextureSampling" + }, + { + "name": "values", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.TextureSampling[]" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Timer": [ + { + "name": "Timer", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "afterMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "everyMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "forMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "boolean" + ], + "returns": "boolean" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "boolean" + ], + "returns": "boolean" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "millis", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "reset", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Triangle": [ + { + "name": "Triangle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Triangle" + }, + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "draw", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.UISprite": [ + { + "name": "UISprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.UISprite" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "act", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "addCostumes", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String" + ], + "returns": "void" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "changeHeight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite" + }, + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "Object[]" + ], + "returns": "void" + }, + { + "name": "deleteThisClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "destroy", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "disableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "disableNineSlice", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "distanceToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "distanceToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "double" + }, + { + "name": "enableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getCurrentCostumeIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentCostumeName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getDirection", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getGamepadAxisValue", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "double" + }, + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Hitbox" + }, + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getPen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen" + }, + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "getText", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer" + }, + { + "name": "getTint", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color" + }, + { + "name": "getTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "T@401 extends org.openpatch.scratch.Sprite" + }, + { + "name": "getTouchingSprites", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "nrw.List" + }, + { + "name": "getTransparency", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "glide", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "goToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "hide", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "ifOnEdgeBounce", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "isActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isColorTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isDestroyed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isGamepadButtonDown", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean" + }, + { + "name": "isGamepadConnected", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean" + }, + { + "name": "isGliding", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean" + }, + { + "name": "isKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "boolean" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "boolean" + }, + { + "name": "isTouchingEdge", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "Class" + ], + "returns": "boolean" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "boolean" + }, + { + "name": "isVisible", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "nextCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "onKeyDown", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyTyped", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "onKeyUp", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int" + }, + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "pointTowardsMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "pointTowardsSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void" + }, + { + "name": "previousCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "restartActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "setActFrequency", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setHeight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "double[]" + ], + "returns": "void" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "void" + }, + { + "name": "setNineSlice", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setRotationCenter", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setRotationStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.RotationStyle" + ], + "returns": "void" + }, + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "show", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "String", + "java.util.function.Supplier" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Layer" + ], + "returns": "void" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopActing", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "turnLeft", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "turnRight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenClicked", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void" + }, + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void" + }, + { + "name": "whenMouseMoved", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenStartsAsClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Vector2": [ + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "angle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "distance", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double" + }, + { + "name": "distanceSq", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double" + }, + { + "name": "dot", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "fromPolar", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "hashCode", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "length", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "lengthSq", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "multiply", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "normalVector", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "reverse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "rotateBy", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "rotateTo", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "sub", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "unitVector", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.Window": [ + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.Window" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int", + "String" + ], + "returns": "org.openpatch.scratch.Window" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "org.openpatch.scratch.Window" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Window" + }, + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "Object[]" + ], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "exit", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getGameSpeed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getInstance", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Window" + }, + { + "name": "getLibraryTitle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getLibraryVersion", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "getSplashLogo", + "constructor": false, + "static": true, + "parameters": [], + "returns": "String" + }, + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage" + }, + { + "name": "getTextureSampling", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.TextureSampling" + }, + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "isDebug", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "isPaused", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "pause", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "resume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "setDebug", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void" + }, + { + "name": "setGameSpeed", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void" + }, + { + "name": "step", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "transitionToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage", + "int" + ], + "returns": "void" + }, + { + "name": "useFullScreen", + "constructor": false, + "static": true, + "parameters": [], + "returns": "void" + }, + { + "name": "useSplashLogo", + "constructor": false, + "static": true, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "useTextureSampling", + "constructor": false, + "static": true, + "parameters": [ + "org.openpatch.scratch.TextureSampling" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "whenExits", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.camera.Camera": [ + { + "name": "Camera", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.camera.Camera" + }, + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "changeZoom", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "getZoom", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "resetZoom", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setZoom", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "setZoomLimit", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void" + }, + { + "name": "toGlobalPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "toGlobalX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "toGlobalY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "toLocalPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2" + }, + { + "name": "toLocalX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "toLocalY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.fs.File": [ + { + "name": "File", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.fs.File" + }, + { + "name": "append", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "delete", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "exists", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "read", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "write", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.pixels.Pixels": [ + { + "name": "background", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "foreground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "main", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.recorder.FFmpegRecorder": [ + { + "name": "FFmpegRecorder", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "isRecording", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.recorder.FrameRecorder": [ + { + "name": "FrameRecorder", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.FrameRecorder" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "isRecording", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.recorder.GifRecorder": [ + { + "name": "GifRecorder", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.GifRecorder" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "isRecording", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.recorder.Recorder": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "isRecording", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.shader.Shader": [ + { + "name": "Shader", + "constructor": true, + "static": false, + "parameters": [ + "String", + "String", + "String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader" + }, + { + "name": "Shader", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.extensions.shader.Shader" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "boolean", + "boolean" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "boolean" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "double", + "double" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "double" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "double[]", + "int" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int", + "int" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "int[]", + "int" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "org.openpatch.scratch.Color" + ], + "returns": "void" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "String", + "org.openpatch.scratch.Vector2" + ], + "returns": "void" + }, + { + "name": "setName", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.shader.Shaders": [ + { + "name": "Shaders", + "constructor": true, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "Shaders", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.extensions.shader.Shaders" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shaders" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "String", + "String", + "String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "get", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getCurrent", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shader" + }, + { + "name": "getCurrentIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int" + }, + { + "name": "getCurrentName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "next", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "reset", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "switchTo", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "switchTo", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.sorting.Sorting": [ + { + "name": "Sorting", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.sorting.Sorting" + }, + { + "name": "byY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "isOn", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "off", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.tiled.MapObject": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getProperty", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "String" + }, + { + "name": "getPropertyBoolean", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "boolean" + }, + { + "name": "getPropertyFloat", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "float" + }, + { + "name": "getPropertyInt", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "int" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.tiled.Property": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.tiled.TiledMap": [ + { + "name": "TiledMap", + "constructor": true, + "static": false, + "parameters": [ + "String", + "org.openpatch.scratch.Stage" + ], + "returns": "org.openpatch.scratch.extensions.tiled.TiledMap" + }, + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "getObjectsFromLayer", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "org.openpatch.scratch.extensions.tiled.MapObject[]" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "stampLayerToBackground", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "stampLayerToForeground", + "constructor": false, + "static": false, + "parameters": [ + "String" + ], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ], + "org.openpatch.scratch.extensions.tiled.TilesetImage": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "Object" + ], + "returns": "boolean" + }, + { + "name": "getClass", + "constructor": false, + "static": false, + "parameters": [], + "returns": "Class" + }, + { + "name": "notify", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "notifyAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + }, + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "String" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "long" + ], + "returns": "void" + }, + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void" + } + ] + } +} diff --git a/compatibility/browser-policy.json b/compatibility/browser-policy.json new file mode 100644 index 00000000..bb363bd2 --- /dev/null +++ b/compatibility/browser-policy.json @@ -0,0 +1,45 @@ +{ + "schemaVersion": 1, + "desktopVersion": "5.7.0", + "browserVersion": "5.7.0-browser.2", + "flavors": { + "standard": { + "libraries": [ + "scratch" + ], + "listType": "java.util.List" + }, + "nrw": { + "libraries": [ + "scratch", + "nrw" + ], + "listType": "nrw.List" + } + }, + "limitations": [ + "Availability describes documented member groups and browser declarations. Compilation tests do not prove rendering, timing or complete behavioral parity.", + "Fragment shaders use WebGL. Custom vertex shaders are desktop-only; the browser substitutes its default vertex shader.", + "File-system, pixel-buffer, recorder and Tiled APIs are desktop-only. Browser declarations can be stubs that report the limitation.", + "Reference examples are compiled with the standard flavor. Existing NRW runtime fixtures and a separate declaration inventory cover the NRW flavor.", + "Java compiler dialect differences also apply, including Java package access and unsupported standard-library methods." + ], + "overrides": { + "Stage/getPixels": { + "status": "desktop-only", + "reason": "The desktop pixel buffer is not exposed by the browser renderer." + }, + "Window/useFullScreen": { + "status": "desktop-only", + "reason": "The embedded browser output uses its enclosing page; this desktop window option only reports a limitation." + }, + "Window/useSplashLogo": { + "status": "desktop-only", + "reason": "The browser has no desktop splash window. This option only reports a limitation." + }, + "extensions/shader/Shader/getPShader": { + "status": "desktop-only", + "reason": "Processing's PShader object belongs to the desktop renderer. The browser uses WebGL filters." + } + } +} diff --git a/compatibility/browser-reference-diagnostics.json b/compatibility/browser-reference-diagnostics.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/compatibility/browser-reference-diagnostics.json @@ -0,0 +1 @@ +{} diff --git a/compatibility/checks/PortableBehaviorChecks.java b/compatibility/checks/PortableBehaviorChecks.java new file mode 100644 index 00000000..8b4ad7fb --- /dev/null +++ b/compatibility/checks/PortableBehaviorChecks.java @@ -0,0 +1,38 @@ +import org.openpatch.scratch.*; + +/** Shared logic: desktop JUnit and the browser runner invoke this unchanged. */ +public class PortableBehaviorChecks { + public static void run() { + CheckWalker player = new CheckWalker(); + player.setPosition(0, 0); + for (int frame = 0; frame < 10; frame++) player.run(); + require(player.getX() == 30, "ten movement frames"); + Sprite coin = new Sprite("slime", "slimeGreen"); + coin.setPosition(30, 0); + require(player.getHitbox().intersects(coin.getHitbox()), "collision"); + if (player.getHitbox().intersects(coin.getHitbox())) player.score++; + require(player.score == 8, "score after collecting"); + coin.setX(1000); + require(!player.getHitbox().intersects(coin.getHitbox()), "separated sprites"); + CheckWalker copy = (CheckWalker) player.clone(); + require(copy.score == 8 && copy.isClone(), "clone fields"); + copy.score = 9; + require(player.score == 8, "independent score"); + require(player.getTimer("check") != copy.getTimer("check"), "independent timers"); + Random.randomSeed(2026); + int first = Random.randomInt(100); + int second = Random.randomInt(100); + Random.randomSeed(2026); + require(first == Random.randomInt(100) && second == Random.randomInt(100), "seeded randomness"); + require(first >= 0 && first <= 100, "random range"); + } + private static void require(boolean value, String message) { + if (!value) throw new RuntimeException(message); + } +} + +class CheckWalker extends Sprite { + int score = 7; + CheckWalker() { super("slime", "slimeGreen"); } + public void run() { changeX(3); } +} diff --git a/compatibility/contract.json b/compatibility/contract.json new file mode 100644 index 00000000..d86db44e --- /dev/null +++ b/compatibility/contract.json @@ -0,0 +1,14564 @@ +{ + "schemaVersion": 1, + "desktopVersion": "5.7.0", + "browser": { + "version": "5.7.0-browser.2", + "flavors": { + "standard": { + "libraries": [ + "scratch" + ], + "listType": "java.util.List" + }, + "nrw": { + "libraries": [ + "scratch", + "nrw" + ], + "listType": "nrw.List" + } + } + }, + "scope": "Public constructors and method groups documented by the Javadoc doclet. Overload matching uses simple erased parameter names, constructor kind and static/instance kind; qualified parameter and return types are recorded. This is a source compatibility inventory, not a binary compatibility guarantee.", + "limitations": [ + "Availability describes documented member groups and browser declarations. Compilation tests do not prove rendering, timing or complete behavioral parity.", + "Fragment shaders use WebGL. Custom vertex shaders are desktop-only; the browser substitutes its default vertex shader.", + "File-system, pixel-buffer, recorder and Tiled APIs are desktop-only. Browser declarations can be stubs that report the limitation.", + "Reference examples are compiled with the standard flavor. Existing NRW runtime fixtures and a separate declaration inventory cover the NRW flavor.", + "Java compiler dialect differences also apply, including Java package access and unsupported standard-library methods." + ], + "referenceValidation": { + "flavor": "standard", + "examples": 408, + "knownUnsupportedExamples": 0 + }, + "members": [ + { + "id": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "pattern", + "frames" + ], + "parameterDescriptions": [ + "the name of the animation", + "the pattern (@see String#format) of the file names. The frame\n starts from 1.", + "the number of frames in the animation" + ], + "description": "Adds an animation to the sprite.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.util.function.Function", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "builder", + "frame" + ], + "parameterDescriptions": [ + "the name of the animation", + "a function that builds the file names for the animation frames", + "the number of frames in the animation. The frame starts from\n 1." + ], + "description": "Adds an animation to the sprite.\n\nTo add an animation with file names \"walk_1.png\", \"walk_2.png\",\n\"walk_3.png\", you can use the following code:\n\n```java\nsprite.addAnimation(\"walk\", i -> \"walk_\" + i + \".png\", 3);\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height" + ], + "parameterDescriptions": [ + "the name of the animation", + "the path to the animation frames", + "the number of frames in the animation", + "the width of each frame", + "the height of each frame" + ], + "description": "Adds an animation to the sprite.\n\nFor an animation sprite sheet, where each frame is of equal width and height,\nyou can use this method to add an animation by specifying the path to the\nsprite sheet, the number of frames, and the dimensions of each frame.\nFor example, for a four-frame animation arranged in a single row, each frame\nbeing 64x64 pixels, you can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64);\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height", + "row" + ], + "parameterDescriptions": [ + "the name of the animation", + "the path to the animation frames", + "the number of frames in the animation", + "the width of each frame", + "the height of each frame", + "the row of the animation frames" + ], + "description": "Adds an animation to the sprite.\n\nIf the animation frames are arranged in rows in a sprite sheet, you can use\nthis method to specify which row to use for the animation.\n\nFor example, for a four-frame animation arranged in a single row, you want the second, each frame\nbeing 64x64 pixels, you can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64, 2);\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int", + "boolean" + ], + "returns": "void", + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height", + "column", + "useColumns" + ], + "parameterDescriptions": [ + "the name of the animation", + "the path to the animation frames", + "the number of frames in the animation", + "the width of each frame", + "the height of each frame", + "the column of the animation frames", + "whether to use columns or rows" + ], + "description": "Adds an animation to the sprite.\n\nIf the animation frames are arranged in either rows or columns in a sprite\nsheet, you can use this method to specify which column or row to use for the\nanimation. Take four frame animation arranged in a single column. Each frame is\n64x64 pixels. You can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64, 1, true); // use column 1\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/clone", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.AnimatedSprite", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Creates a clone of this sprite with the same animations, playing the same\none, and puts it on the stage right behind this sprite. See\n[Sprite.clone()](../Sprite/clone).", + "returnDescription": "the clone, of the same class as this sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/constructor", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "AnimatedSprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.AnimatedSprite", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "AnimatedSprite", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.AnimatedSprite" + ], + "returns": "org.openpatch.scratch.AnimatedSprite", + "parameterNames": [ + "animatedSprite" + ], + "parameterDescriptions": [ + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/getAnimationFrame", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "getAnimationFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the current animation frame.", + "returnDescription": "the current animation frame", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/getAnimationInterval", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "getAnimationInterval", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the interval between animation frames.", + "returnDescription": "the interval between animation frames", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/isAnimationPlayed", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "isAnimationPlayed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks if the animation is played.", + "returnDescription": "true if the animation is played, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/playAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "playAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the animation to play" + ], + "description": "Plays the animation with the specified name.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "playAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "boolean" + ], + "returns": "void", + "parameterNames": [ + "name", + "once" + ], + "parameterDescriptions": [ + "the name of the animation to play", + "whether to play the animation once" + ], + "description": "Plays the animation with the specified name.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/resetAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "resetAnimation", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Resets the animation. The animation will start from the first frame.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/setAnimationFrame", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "setAnimationFrame", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "frame" + ], + "parameterDescriptions": [ + "the current animation frame" + ], + "description": "Sets the current animation frame.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/setAnimationInterval", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "setAnimationInterval", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "interval" + ], + "parameterDescriptions": [ + "the interval between animation frames" + ], + "description": "Sets the interval between animation frames.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/toString", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns which animation is playing and how far into it.", + "returnDescription": "the sprite as a text", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Circle/constructor", + "owner": "org.openpatch.scratch.Circle", + "signatures": [ + { + "name": "Circle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Circle", + "parameterNames": [ + "x", + "y", + "radius" + ], + "parameterDescriptions": [ + "the x-coordinate of the circle's center", + "the y-coordinate of the circle's center", + "the radius of the circle" + ], + "description": "Creates a circle with no specified position or size.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/constructor", + "owner": "org.openpatch.scratch.Clock", + "signatures": [], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getDay", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getDay", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current day of the month, from 1 to 31.", + "returnDescription": "the day of the month", + "scratchblock": "(current [date v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getDayOfWeek", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getDayOfWeek", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current day of the week, from 1 for Monday to 7 for Sunday.", + "returnDescription": "the day of the week", + "scratchblock": "(current [day of week v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getDaysSince2000", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getDaysSince2000", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the number of days that have passed since the first of January\n2000.", + "returnDescription": "the days since 2000", + "scratchblock": "(days since 2000)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getHour", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getHour", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current hour, from 0 to 23.", + "returnDescription": "the hour", + "scratchblock": "(current [hour v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getMillisecond", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getMillisecond", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the milliseconds of the current second, from 0 to 999.", + "returnDescription": "the millisecond", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getMinute", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getMinute", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current minute, from 0 to 59.", + "returnDescription": "the minute", + "scratchblock": "(current [minute v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getMonth", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getMonth", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current month, from 1 for January to 12 for December.", + "returnDescription": "the month", + "scratchblock": "(current [month v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getSecond", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getSecond", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current second, from 0 to 59.", + "returnDescription": "the second", + "scratchblock": "(current [second v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getYear", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getYear", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current year, for example 2026.", + "returnDescription": "the year", + "scratchblock": "(current [year v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/changeColor", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "A hue value. Could be any positive or negative number." + ], + "description": "Changes the color accordining to a hue value, which is added to the current hue value. When the\nresulting value is greater than 255 it will be reset. For example: 285 => 30.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Color object with default values.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [ + "hexCode" + ], + "parameterDescriptions": [ + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "the hue value" + ], + "description": "Constructs a new Color object with the specified hue value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "the red value", + "the green value", + "the blue value" + ], + "description": "Constructs a new Color object with the specified rgb values.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "ScratchColor object to copy" + ], + "description": "Copies the received ScratchColor object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/equals", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Object" + ], + "returns": "boolean", + "parameterNames": [ + "other" + ], + "parameterDescriptions": [ + "the object to compare with" + ], + "description": "Two colours are the same when they are the same colour.", + "returnDescription": "whether both are colours with the same red, green and blue", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/get", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "get", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the color value as a hex code. This is useful for comparing pixels.", + "returnDescription": "hex code", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getBlue", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getBlue", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the blue value.", + "returnDescription": "blue value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getGreen", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getGreen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the green value.", + "returnDescription": "green value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getH", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getH", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the hue value.", + "returnDescription": "hue value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getHSB", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getHSB", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the color value on the HSB spectrum.", + "returnDescription": "hue value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getL", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getL", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the luminosity value.", + "returnDescription": "luminosity value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getRed", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getRed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the red value.", + "returnDescription": "red value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getS", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getS", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the saturation value.", + "returnDescription": "saturation value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/hashCode", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "hashCode", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "a hash consistent with [equals(Object)](equals)", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/setHSB", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "setHSB", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "A hue value [0...255]" + ], + "description": "Setting the color value after the HSB spectrum. Saturation and Luminosity are fixed at 255.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setHSB", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "h", + "s", + "l" + ], + "parameterDescriptions": [ + "A hue value [0...255]", + "A saturation value [0...255]", + "A luminosity value [0...255]" + ], + "description": "Setting the color value after the HSB spectrum.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/setRGB", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "setRGB", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "A red value [0...255]", + "A green value [0...255]", + "A blue value [0...255]" + ], + "description": "Setting the color value after the RGB spectrum", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/toString", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "The colour written out, so that printing one says something.\n\nWithout this a `System.out.println(mySprite.getTint())` printed\n`org.openpatch.scratch.Color@35432107`, which tells you nothing about\nthe colour and is the first thing anyone tries when a tint looks wrong.", + "returnDescription": "the colour as `Color[r=255.0, g=128.0, b=0.0]`", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Ellipse/constructor", + "owner": "org.openpatch.scratch.Ellipse", + "signatures": [ + { + "name": "Ellipse", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Ellipse", + "parameterNames": [ + "x", + "y", + "width", + "height" + ], + "parameterDescriptions": [ + "", + "", + "", + "" + ], + "description": "Creates an ellipse with no specified position or size.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/constructor", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "Hitbox", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "org.openpatch.scratch.Hitbox", + "parameterNames": [ + "shape" + ], + "parameterDescriptions": [ + "The shape of the hitbox." + ], + "description": "Constructs a hitbox with the specified shape.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Hitbox", + "constructor": true, + "static": false, + "parameters": [ + "double[]", + "double[]" + ], + "returns": "org.openpatch.scratch.Hitbox", + "parameterNames": [ + "xPoints", + "yPoints" + ], + "parameterDescriptions": [ + "The x-coordinates of the points.", + "The y-coordinates of the points." + ], + "description": "Constructs a hitbox with the specified x and y points.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/contains", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "The x-coordinate of the point.", + "The y-coordinate of the point." + ], + "description": "Checks if the hitbox contains a point.", + "returnDescription": "`true` if the hitbox contains the point, `false`\n otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/getBounds", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the smallest upright rectangle the hitbox fits into.", + "returnDescription": "the bounding box of the hitbox", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/getShape", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "getShape", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shape of the hitbox.", + "returnDescription": "The shape of the hitbox.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/intersects", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Hitbox" + ], + "returns": "boolean", + "parameterNames": [ + "hitbox" + ], + "parameterDescriptions": [ + "The hitbox to check for intersection." + ], + "description": "Checks if the hitbox intersects with another hitbox.", + "returnDescription": "`true` if the hitboxes intersect, `false` otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/translateAndRotateAndResize", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "translateAndRotateAndResize", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "degrees", + "originX", + "originY", + "translateX", + "translateY", + "size" + ], + "parameterDescriptions": [ + "The angle in degrees to rotate the shape.", + "The x-coordinate of the rotation origin.", + "The y-coordinate of the rotation origin.", + "The x-coordinate to translate the shape.", + "The y-coordinate to translate the shape.", + "The size to scale the shape, where 100.0 represents the\n original size." + ], + "description": "Transforms the shape by scaling, translating, and rotating it.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "HtmlColor/constructor", + "owner": "org.openpatch.scratch.HtmlColor", + "signatures": [ + { + "name": "HtmlColor", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.HtmlColor", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "HtmlColor/getRandom", + "owner": "org.openpatch.scratch.HtmlColor", + "signatures": [ + { + "name": "getRandom", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a random HTML color.", + "returnDescription": "a random Color from the predefined HTML colors", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/absOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "absOf", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "int", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "returnDescription": "the absolute value", + "scratchblock": "", + "since": "" + }, + { + "name": "absOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "returnDescription": "the absolute value", + "scratchblock": "([abs v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/acosOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "acosOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"acos\" is the abbreviation for \"arccosine\" and is also sometimes written as cos\\u22121. When given\nthe ratio (in decimal form) of the length of the adjacent side and hypotenuse of a right\ntriangle, it finds the angle.", + "returnDescription": "the angle of that value", + "scratchblock": "([acos v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/asinOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "asinOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"asin\" is the abbreviation for \"arcsine\" and is also sometimes written as sin\\u22121. When given the\nratio (in decimal form) of the length of the opposite side and hypotenuse of a right triangle,\nit finds the angle.", + "returnDescription": "the angle of that value", + "scratchblock": "([asin v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/atanOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "atanOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"atan\" is the abbreviation for \"arctangent\" and is also sometimes written as tan\\u22121. When given\nthe ratio (in decimal form) of the length of the opposite side and adjacent side of a right\ntriangle, it finds the angle.", + "returnDescription": "the angle of that value", + "scratchblock": "([atan v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/ceilingOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "ceilingOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "This always rounds the number up to the least whole number greater than or equal to the number.\nFor example, ceiling(3.14) = 4 and ceiling(7.68) = 8.", + "returnDescription": "the ceiling of that value", + "scratchblock": "([ceiling v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/constrain", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "constrain", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "amt", + "low", + "high" + ], + "parameterDescriptions": [ + "the value to constrain", + "minimum limit", + "maximum limit" + ], + "description": "Constrains a value to not exceed a maximum and minimum value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "constrain", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "int", + "parameterNames": [ + "amt", + "low", + "high" + ], + "parameterDescriptions": [ + "the value to constrain", + "minimum limit", + "maximum limit" + ], + "description": "Constrains a value to not exceed a maximum and minimum value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/constructor", + "owner": "org.openpatch.scratch.Operators", + "signatures": [], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/cosOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "cosOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "an angle between [0, ..., 360]" + ], + "description": "\"cos\" is the abbreviation for \"cosine.\" The cosine of an angle is the ratio between the length\nof the side adjacent (next to) it on the triangle and the length of the hypotenuse. In the\npicture above, the cosine of angle A is equal to side \"adjacent\" divided by side \"hypotenuse\".", + "returnDescription": "the cos of the angle", + "scratchblock": "([cos v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/eToThePowerOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "eToThePowerOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"e\" is an abbreviation for \"Euler's number\", which is about 2.718. With the e^ function, e is\nmultiplied by itself the value number of times. For example, if the value is 3, the answer\nwould be e3, or e×e×e, which is about 20.086.", + "returnDescription": "e to the power of that value", + "scratchblock": "([e ^ v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/floorOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "floorOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "This always rounds the number down to the greatest whole number less than or equal to the\nnumber. For example, floor(1.73) = 1 and floor(-2.74) = -3.", + "returnDescription": "the floor of that value", + "scratchblock": "([floor v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/lerp", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "lerp", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "start", + "stop", + "amt" + ], + "parameterDescriptions": [ + "first value", + "second value", + "double between 0.0 and 1.0" + ], + "description": "Calculates a number between two numbers at a specific increment. The amt parameter is\nthe amount to interpolate between the two values where 0.0 equal to the first point, 0.1 is\nvery near the first point, 0.5 is half-way in between, etc. The lerp function is convenient for\ncreating motion along a straight path and for drawing dotted lines.", + "returnDescription": "the interpolated value", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/lnOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "lnOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "ln is \"natural log.\" It figures out how many times e would have to be multiplied by itself to\nget the value. For example, if the value was 148.4, the answer would be about 5 because e5\n(e×e×e×e×e) is around 148.4.", + "returnDescription": "the ln of that value", + "scratchblock": "([ln v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/logOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "logOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"Log\" is short for \"logarithm.\" The log function figures out how many times 10 must be\nmultiplied by itself to get the value. For example, if the value is 100, the answer is 2\nbecause 10×10 is 100.", + "returnDescription": "the log to base 10 of that value", + "scratchblock": "([log v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/map", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "map", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double", + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "value", + "start1", + "stop1", + "start2", + "stop2" + ], + "parameterDescriptions": [ + "the incoming value to be converted", + "lower bound of the value's current range", + "upper bound of the value's current range", + "lower bound of the value's target range", + "upper bound of the value's target range" + ], + "description": "Re-maps a number from one range to another.
\n
\nIn the first example above, the number 25 is converted from a value in the range of 0 to 100\ninto a value that ranges from the left edge of the window (0) to the right edge (width).
\n
\nAs shown in the second example, numbers outside the range are not clamped to the minimum and\nmaximum parameters values, because out-of-range values are often intentional and useful.", + "returnDescription": "the value mapped to the new range", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/max", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "max", + "constructor": false, + "static": true, + "parameters": [ + "double[]" + ], + "returns": "double", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "values" + ], + "description": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "returnDescription": "the maximum", + "scratchblock": "", + "since": "" + }, + { + "name": "max", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "int", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "values" + ], + "description": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "returnDescription": "the maximum", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/min", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "min", + "constructor": false, + "static": true, + "parameters": [ + "double[]" + ], + "returns": "double", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "values" + ], + "description": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "returnDescription": "the minimum", + "scratchblock": "", + "since": "" + }, + { + "name": "min", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "int", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "values" + ], + "description": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "returnDescription": "the minimum", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/mod", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "mod", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "first value", + "second value" + ], + "description": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second.\n\nThe answer takes the sign of the second input, as the Scratch block does, so\n`mod(-7, 3)` is 2 rather than the -1 Java's own `%` would give.\nThat is what makes it useful for wrapping a value into a range: a sprite\nwhose x has gone negative still lands somewhere sensible.", + "returnDescription": "what is left of the first value after dividing by the second", + "scratchblock": "((x) mod (y))", + "since": "" + }, + { + "name": "mod", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int" + ], + "returns": "int", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "first value", + "second value" + ], + "description": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second, with the sign of the second input,\nas the Scratch block does.", + "returnDescription": "what is left of the first value after dividing by the second", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/round", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "round", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "int", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "The standard rules of rounding are followed; decimals that are .5 or higher are rounded up,\nwhereas decimals less than .5 are rounded down.", + "returnDescription": "the rounded value", + "scratchblock": "(round (x))", + "since": "" + }, + { + "name": "round", + "constructor": false, + "static": true, + "parameters": [ + "double", + "int" + ], + "returns": "double", + "parameterNames": [ + "x", + "precision" + ], + "parameterDescriptions": [ + "a value", + "the number of decimal places to round to" + ], + "description": "Rounds a number to a specified number of decimal places.", + "returnDescription": "the rounded value", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/sinOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "sinOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "an angle between [0,...,360]" + ], + "description": "\"sin\" is an abbreviation for \"sine.\" The sine of an angle is the ratio between the length of\nthe side that is opposite (across) the triangle from it and the length of the hypotenuse (the\nside that is across from the right angle). In the picture above, the sine of angle A is equal\nto side \"opposite\" divided by side \"hypotenuse\".", + "returnDescription": "the sin of the angle", + "scratchblock": "([sin v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/sqrtOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "sqrtOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"sqrt\" is an abbreviation for \"square root.\" A number that is squared is multiplied by itself.\nFor example, when 2 is squared, the answer is 2×2, which is 4. When a number is square rooted,\nthe answer is the number that was squared to get it. So, the square root of 4 is 2. Similarly,\nthe square root of 2 is about 1.414213562373095 because 1.4142135623730952\n(1.414213562373095\\u202f×\\u202f1.414213562373095) is close to 2.", + "returnDescription": "the square root of the value", + "scratchblock": "([sqrt v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/tanOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "tanOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "an angle between [0, ..., 360]" + ], + "description": "\"tan\" is the abbreviation for \"tangent.\" The tangent of an angle is the ratio between the\nlength of the side adjacent to it and the side opposite of it. In the picture above, the\ntangent of angle A is equal to side \"opposite\" divided by side \"adjacent\".", + "returnDescription": "the tan of the angle", + "scratchblock": "([tan v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/tenToThePowerOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "tenToThePowerOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "The 10^ function multiplies 10 times itself the value number of times. For example, if the\nvalue was 6, the answer would be 106 (that is 10×10×10×10×10×10), which is 1,000,000.", + "returnDescription": "10 to the power of that value", + "scratchblock": "([10 ^ v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/changeColor", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "a hue value [0...255]" + ], + "description": "Change color via a hue value, which is added to the current hue value", + "returnDescription": "", + "scratchblock": "change pen [color v] by (c)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/changeSize", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "size" + ], + "parameterDescriptions": [ + "size to change" + ], + "description": "Change the size of the pen", + "returnDescription": "", + "scratchblock": "change pen size by (size)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/changeTransparency", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "the step to change the transparency by" + ], + "description": "Change the transparency by a step", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Pen object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Pen", + "parameterNames": [ + "s" + ], + "parameterDescriptions": [ + "the Sprite object to associate with this Pen" + ], + "description": "Constructs a new Pen object associated with the given Sprite.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "org.openpatch.scratch.Pen", + "parameterNames": [ + "p" + ], + "parameterDescriptions": [ + "Pen object to copy" + ], + "description": "Copies a Pen object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/down", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "down", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Set the pen down.", + "returnDescription": "", + "scratchblock": "pen down", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/eraseAll", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "eraseAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Erases all.", + "returnDescription": "", + "scratchblock": "erase all", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/getColor", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "getColor", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current color of the pen.", + "returnDescription": "the color of the pen", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/getSize", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the size of the pen", + "returnDescription": "the size of the pen", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/goToBackground", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "goToBackground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Sets the pen to the background. This method changes the state of the pen to\nindicate that it is\nno longer in the foreground.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/goToForeground", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "goToForeground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the pen to the foreground. This method sets the pen's state to indicate\nthat it is in the\nforeground.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/goToMousePointer", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the object to the current position of the mouse pointer.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/goToRandomPosition", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the object to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/isInBackground", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "isInBackground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns true if the pen is in the background.", + "returnDescription": "true if the pen is in the background", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "color of the pen" + ], + "description": "Set the color of the pen", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "a hue value [0...255]" + ], + "description": "Set color via hue value", + "returnDescription": "", + "scratchblock": "set pen [color v] to (h)", + "since": "" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "a red value [0...255]", + "a green value [0...255]", + "a blue value [0...255]" + ], + "description": "Set color via rgb values", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/setPosition", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "x coordinate", + "y coordinate" + ], + "description": "Set the position if the pen is down.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "the Vector2 object containing the new x and y coordinates" + ], + "description": "Sets the position of the pen using a Vector2 object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/setSize", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "size" + ], + "parameterDescriptions": [ + "size of the pen" + ], + "description": "Set the size of the pen", + "returnDescription": "", + "scratchblock": "set pen size to (size)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/setTransparency", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "transparency" + ], + "parameterDescriptions": [ + "transparency of the pen" + ], + "description": "Set the transparency", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/stamp", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stamps the current sprite onto the canvas. If the sprite is not null, it will\nstamp either to\nthe foreground or the background based on the value of the isForeground flag.", + "returnDescription": "", + "scratchblock": "stamp", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/up", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "up", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Move the pen up.", + "returnDescription": "", + "scratchblock": "pen up", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Polygon/addPoint", + "owner": "org.openpatch.scratch.Polygon", + "signatures": [ + { + "name": "addPoint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "the x-coordinate", + "the y-coordinate" + ], + "description": "Adds a point to the polygon.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Polygon/constructor", + "owner": "org.openpatch.scratch.Polygon", + "signatures": [ + { + "name": "Polygon", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Polygon", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Creates an empty polygon.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Polygon", + "constructor": true, + "static": false, + "parameters": [ + "double[]", + "double[]" + ], + "returns": "org.openpatch.scratch.Polygon", + "parameterNames": [ + "xPoints", + "yPoints" + ], + "parameterDescriptions": [ + "an array of x-coordinates", + "an array of y-coordinates" + ], + "description": "Creates a polygon with the specified vertices.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/constructor", + "owner": "org.openpatch.scratch.Random", + "signatures": [], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "x-coordinate" + ], + "description": "Returns the Open Simplex noise value at specified coordinates", + "returnDescription": "the noise value between 0 and 1", + "scratchblock": "", + "since": "" + }, + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "x-coordinate", + "y-coordinate" + ], + "description": "Returns the Open Simplex noise value at specified coordinates", + "returnDescription": "the noise value", + "scratchblock": "", + "since": "" + }, + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "x", + "y", + "z" + ], + "parameterDescriptions": [ + "x-coordinate", + "y-coordinate", + "z-coordinate" + ], + "description": "Returns the Open Simplex noise value at specified coordinates", + "returnDescription": "the noise value", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/noiseSeed", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "noiseSeed", + "constructor": false, + "static": true, + "parameters": [ + "long" + ], + "returns": "void", + "parameterNames": [ + "noiseSeed" + ], + "parameterDescriptions": [ + "the seed" + ], + "description": "Sets the seed for the noise method.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/random", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a random double between 0 and 1.", + "returnDescription": "a random double", + "scratchblock": "", + "since": "" + }, + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "max" + ], + "parameterDescriptions": [ + "the maximum double" + ], + "description": "Returns a random double between 0 and max.", + "returnDescription": "a random double", + "scratchblock": "", + "since": "" + }, + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "min", + "max" + ], + "parameterDescriptions": [ + "the minimum double", + "the maximum double" + ], + "description": "Returns a random double between min and max.", + "returnDescription": "a random double", + "scratchblock": "(pick random (min) to (max))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomInt", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomInt", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "int", + "parameterNames": [ + "max" + ], + "parameterDescriptions": [ + "the maximum integer" + ], + "description": "Returns a random integer between 0 and max.", + "returnDescription": "a random integer", + "scratchblock": "", + "since": "" + }, + { + "name": "randomInt", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int" + ], + "returns": "int", + "parameterNames": [ + "min", + "max" + ], + "parameterDescriptions": [ + "the minimum integer", + "the maximum integer" + ], + "description": "Returns a random integer between min and max.", + "returnDescription": "a random integer", + "scratchblock": "(pick random (min) to (max))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomPosition", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomPosition", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a random position with respect to the width of the window.", + "returnDescription": "a random position vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomSeed", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomSeed", + "constructor": false, + "static": true, + "parameters": [ + "long" + ], + "returns": "void", + "parameterNames": [ + "seed" + ], + "parameterDescriptions": [ + "the seed" + ], + "description": "Sets the seed for the random method.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomVector2", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomVector2", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a random unit vector", + "returnDescription": "a random unit vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomX", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomX", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return a random x coordinate with respect to the width of the window.", + "returnDescription": "a random x coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomY", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomY", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return a random y coordinate with respect to the width of the window.", + "returnDescription": "a random y coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Rectangle/constructor", + "owner": "org.openpatch.scratch.Rectangle", + "signatures": [ + { + "name": "Rectangle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Rectangle", + "parameterNames": [ + "x", + "y", + "width", + "height" + ], + "parameterDescriptions": [ + "the x-coordinate of the rectangle's top-left corner", + "the y-coordinate of the rectangle's top-left corner", + "the width of the rectangle", + "the height of the rectangle" + ], + "description": "Creates a rectangle with the specified position and size.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/constructor", + "owner": "org.openpatch.scratch.Shape", + "signatures": [], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/contains", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "the x-coordinate of the point", + "the y-coordinate of the point" + ], + "description": "Check if the shape contains a point defined by its x and y coordinates.", + "returnDescription": "true if the shape contains the point, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/getBounds", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the bounds of the shape.", + "returnDescription": "a Bounds object representing the bounding box of the shape", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/intersects", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean", + "parameterNames": [ + "other" + ], + "parameterDescriptions": [ + "the other shape to check intersection with" + ], + "description": "Check if the shape intersects with another shape.", + "returnDescription": "true if the shapes intersect, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/rotate", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [ + "theta", + "anchorX", + "anchorY" + ], + "parameterDescriptions": [ + "the angle in degrees to rotate", + "the x-coordinate of the anchor point", + "the y-coordinate of the anchor point" + ], + "description": "Rotate the shape by the specified angle around a given anchor point.", + "returnDescription": "a new Shape object that is rotated", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/scale", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [ + "scaleX", + "scaleY" + ], + "parameterDescriptions": [ + "", + "" + ], + "description": "Check if the shape is empty.", + "returnDescription": "true if the shape is empty, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/translate", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [ + "dx", + "dy" + ], + "parameterDescriptions": [ + "the distance to translate in the x direction", + "the distance to translate in the y direction" + ], + "description": "Translate the shape by the specified distances in the x and y directions.", + "returnDescription": "a new Shape object that is translated", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a built-in sprite, for example \"bunny1_jump\". Add\n the sheet in front of the name, for example\n \"platformer/grass\", if the same name exists on several sheets." + ], + "description": "Add one of the costumes that ship with Scratch for Java to the sprite. The\ncostume gets the same name as the built-in sprite. If a costume with that\nname already exists do nothing.\n\nExample usage:\n\n```java\nthis.addCostume(\"bunny1_jump\");\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name", + "imagePath" + ], + "parameterDescriptions": [ + "a unique name", + "a image path, or the name of a built-in sprite such as\n \"bunny1_jump\"" + ], + "description": "Add a costume to the sprite. If a costume with the received name already\nexists do nothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "spriteSheetPath", + "x", + "y", + "width", + "height" + ], + "parameterDescriptions": [ + "The name of the costume.", + "The path to the sprite sheet image file.", + "The x-coordinate of the top-left corner of the costume\n in the sprite sheet.", + "The y-coordinate of the top-left corner of the costume\n in the sprite sheet.", + "The width of the costume in the sprite sheet.", + "The height of the costume in the sprite sheet." + ], + "description": "Adds a new costume to the sprite if a costume with the same name does not\nalready exist.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/addCostumes", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "addCostumes", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "prefix", + "spriteSheet", + "tileWidth", + "tileHeight" + ], + "parameterDescriptions": [ + "a prefix for all generated costumes", + "a path to a sprite sheet, or the name of a built-in sprite", + "the width of a single tile", + "the height of a single tile" + ], + "description": "Adds all tiles from a spritesheet as costumes. The costumes will be name by\nthe prefix and the\nindex in the spritesheet. For example if the prefix is \"tile\" and the\nspritesheet contains 4\ntiles, the costumes will be named \"tile0\", \"tile1\", \"tile2\", and \"tile3\".", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/addSound", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name", + "soundPath" + ], + "parameterDescriptions": [ + "a unique name", + "a sound path, or the name of a built-in sound such as\n \"footstep_carpet_000\"" + ], + "description": "Add a sound to the sprite. If a sound with the received name already exists\ndo nothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a built-in sound, for example \"footstep_carpet_000\"" + ], + "description": "Add one of the sounds that ship with Scratch for Java to the sprite. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.\n\nExample usage:\n\n```java\nthis.addSound(\"footstep_carpet_000\");\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/ask", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "question" + ], + "parameterDescriptions": [ + "the question to show" + ], + "description": "Asks a question and waits for an answer to be typed in. The question appears\nat the top of the stage.\n\nUnlike Scratch, this does not pause the sprite. `run()` keeps being called\nwhile the question is on screen, so check [isAsking()](isAsking) or wait for\n[getAnswer()](getAnswer) to change.", + "returnDescription": "", + "scratchblock": "ask [question] and wait", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/broadcast", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "message" + ], + "parameterDescriptions": [ + "The message to broadcast." + ], + "description": "Broadcasts a message to every sprite on the stage, this one included, and\nto the stage itself, as in Scratch. If the sprite is not on a stage, nothing\nhappens.", + "returnDescription": "", + "scratchblock": "broadcast [message v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changePosition", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector representing the change in position" + ], + "description": "Changes the position of the sprite by a given vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "how far to move along the x-axis", + "how far to move along the y-axis" + ], + "description": "Changes the position of the sprite by the given amounts.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeSize", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "amount" + ], + "parameterDescriptions": [ + "a percentage [0...100]" + ], + "description": "Changes the size of the sprite by a given percentage.", + "returnDescription": "", + "scratchblock": "change size by (amount)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeTint", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "a step value" + ], + "description": "Changes the tint for the sprite by a step.", + "returnDescription": "", + "scratchblock": "change [color v] effect by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeTransparency", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "a step value" + ], + "description": "Changes how see-through the sprite is by a step. A positive step fades it\nout, a negative one brings it back.", + "returnDescription": "", + "scratchblock": "change [ghost v] effect by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeVolume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "how much to add to the volume, in percent" + ], + "description": "Makes every sound of this sprite louder or quieter.", + "returnDescription": "", + "scratchblock": "change volume by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeX", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "number in pixels" + ], + "description": "Changes x by a certain amount", + "returnDescription": "", + "scratchblock": "change x by (x)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeY", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "number in pixels" + ], + "description": "Changes y by a certain amount", + "returnDescription": "", + "scratchblock": "change y by (y)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/clone", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Creates a clone of this sprite, like Scratch's \"create clone of myself\": a\nnew sprite of the same class (a clone of a `Cat` is a `Cat`),\nwith the same costume, position, direction, size and pen, and a copy of\nthe variables of your class. It is put on the stage right behind this\nsprite, and its [whenStartsAsClone()](whenStartsAsClone) runs; the constructor does\nnot run again.\n\nNumbers, text and booleans in your variables are the clone's own. A list\nor another object is shared with the original: give the clone its own in\n[whenStartsAsClone()](whenStartsAsClone) if it needs one.\n\n```java\nBullet bullet = (Bullet) this.clone();\n```", + "returnDescription": "the clone, of the same class as this sprite", + "scratchblock": "create clone of [myself v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Sprite object with default settings.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Sprite", + "parameterNames": [ + "name", + "imagePath" + ], + "parameterDescriptions": [ + "a unique name for the costume", + "a path to an image file, or the name of a built-in sprite\n such as \"slimeGreen\"" + ], + "description": "Constructs a new Sprite object with a specified costume.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Sprite", + "parameterNames": [ + "s" + ], + "parameterDescriptions": [ + "a Sprite object to copy" + ], + "description": "Copies a Sprite object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/debug", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Object[]" + ], + "returns": "void", + "parameterNames": [ + "values" + ], + "parameterDescriptions": [ + "one or more values to print" + ], + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the sprite's class name so you can tell\nwhich sprite it came from.\n\nExample:\n\n```java\nthis.debug(\"x =\", getX(), \"y =\", getY());\n// prints: [CatSprite] x = 100.0 y = 200.0\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/deleteThisClone", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "deleteThisClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Removes this sprite from the stage if it is a clone, like Scratch's\n\"delete this clone\". The original stays.", + "returnDescription": "", + "scratchblock": "delete this clone", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/disableHitbox", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "disableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Disables the hitbox for the sprite. Once the hitbox is disabled, the sprite\nwill no longer\ndetect collisions with other objects.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/distanceToMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "distanceToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Calculates the distance from the current sprite to the mouse pointer.", + "returnDescription": "the distance to the mouse pointer as a double.", + "scratchblock": "(distance to [mouse-pointer v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/distanceToSprite", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "distanceToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "double", + "parameterNames": [ + "sprite" + ], + "parameterDescriptions": [ + "the other sprite to which the distance is calculated" + ], + "description": "Calculates the Euclidean distance between this sprite and another sprite.", + "returnDescription": "the distance between this sprite and the specified sprite", + "scratchblock": "(distance to [sprite v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/enableHitbox", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "enableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Enables the hitbox for the sprite. This method sets the hitboxDisabled flag\nto false, allowing\nthe sprite to interact with other objects.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getAnswer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the last answer that was typed in.", + "returnDescription": "the answer, or an empty string if nothing has been answered yet", + "scratchblock": "(answer)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getCurrentCostumeIndex", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getCurrentCostumeIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current costume index", + "returnDescription": "a costume index", + "scratchblock": "(costume [number v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getCurrentCostumeName", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getCurrentCostumeName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current costume name", + "returnDescription": "a costume name", + "scratchblock": "(costume [name v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getDeltaTime", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the seconds passed since the last frame.", + "returnDescription": "seconds since last frame", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getDirection", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getDirection", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the direction of the sprite.", + "returnDescription": "the direction [0...360]", + "scratchblock": "(direction)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getHeight", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "returnDescription": "the height of the sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getHitbox", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Hitbox", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the hitbox of the sprite based on its current costume, position, and\nrotation. If the\nsprite has a hitbox already defined, it updates and returns it. Otherwise, it\ncalculates a new\nhitbox based on the sprite's dimensions and rotation.", + "returnDescription": "the hitbox of the sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getMouse", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current position of the mouse cursor.", + "returnDescription": "a Vector2 object representing the current mouse cursor position, with\n the x-coordinate\n obtained from getMouseX() and the y-coordinate obtained from\n getMouseY().", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getMouseX", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current x-position of the mouse cursor", + "returnDescription": "x-position", + "scratchblock": "(mouse x)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getMouseY", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current y-position of the mouse cursor", + "returnDescription": "y-position", + "scratchblock": "(mouse y)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getPen", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getPen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the pen of the sprite.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getPosition", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current position of the sprite.", + "returnDescription": "A [Vector2](../Vector2/index) object representing the x and y coordinates of the\n sprite.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getShaders", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shaders of this sprite. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.\n\nExample usage:\n\n```java\nthis.getShaders().add(\"blur\", \"blur.frag\", null);\nthis.getShaders().switchTo(\"blur\");\n```", + "returnDescription": "the shaders", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getSize", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the size of the sprite.", + "returnDescription": "size in percentage", + "scratchblock": "(size)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getStage", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current stage associated with this sprite.", + "returnDescription": "the stage associated with this sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getText", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getText", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the text associated with this sprite.", + "returnDescription": "the text associated with this sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getTimer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return the default timer", + "returnDescription": "the default timer", + "scratchblock": "(timer)", + "since": "" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Timer", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "" + ], + "description": "Return a timer by name", + "returnDescription": "a timer", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getTint", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getTint", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the tint value of the current costume.", + "returnDescription": "the tint value of the current costume, or null if there are no\n costumes.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the class object of the type of sprite to check for" + ], + "description": "Returns the first sprite of the specified type that is currently touching\nthis sprite.", + "returnDescription": "the first sprite of the specified type that is touching this sprite,\n or null if no such\n sprite is found", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getTouchingSprites", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getTouchingSprites", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "java.util.List", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the class of the type of sprites to return" + ], + "description": "Returns a list of sprites of the specified type that are currently touching\nthis sprite.", + "returnDescription": "a list of sprites of the specified type that are touching this\n sprite, or null if the\n stage is not set", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getTransparency", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getTransparency", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the transparency of the current costume.", + "returnDescription": "how see-through the sprite is, 0 solid and 100 invisible", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getVolume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns how loud the sounds of this sprite play.", + "returnDescription": "the volume, from 0 to 100", + "scratchblock": "(volume)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getWidth", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "returnDescription": "the width of the sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getX", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the x coordinate of the sprite", + "returnDescription": "a x coordinate", + "scratchblock": "(x position)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getY", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the y coordinate of the sprite", + "returnDescription": "a y coordinate", + "scratchblock": "(y position)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/glide", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "glide", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "seconds", + "x", + "y" + ], + "parameterDescriptions": [ + "how long the trip should take", + "where to end up", + "where to end up" + ], + "description": "Slides the sprite to a place over the given time, instead of jumping there.\n\nUnlike Scratch this does not hold up the sprite: `run()` keeps being called\nwhile the sprite is on its way. Use [isGliding()](isGliding) to tell whether it\nhas arrived.", + "returnDescription": "", + "scratchblock": "glide (seconds) secs to x: (x) y: (y)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goLayersBackwards", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "number" + ], + "parameterDescriptions": [ + "the number of layers to move the sprite backwards" + ], + "description": "Moves the sprite backwards by a specified number of layers in the stage. If\nthe sprite is not\npart of a stage, the method does nothing.", + "returnDescription": "", + "scratchblock": "go [backward v] (number) layers", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goLayersForwards", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "number" + ], + "parameterDescriptions": [ + "the number of layers to move the sprite forward" + ], + "description": "Moves the sprite forward by a specified number of layers within its stage.", + "returnDescription": "", + "scratchblock": "go [forward v] (number) layers", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goToBackLayer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the sprite to the back layer of the stage. If the sprite is not\nassociated with any\nstage, the method returns without performing any action.", + "returnDescription": "", + "scratchblock": "go to [back v] layer", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goToFrontLayer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves this sprite to the front layer of the stage. If the sprite is not part\nof any stage, the\nmethod does nothing.", + "returnDescription": "", + "scratchblock": "go to [front v] layer", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goToMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the sprite to the current position of the mouse pointer. This method\nupdates the sprite's\nposition to the coordinates of the mouse cursor.", + "returnDescription": "", + "scratchblock": "go to [mouse-pointer v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goToRandomPosition", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the sprite to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "returnDescription": "", + "scratchblock": "go to [random position v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goToSprite", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void", + "parameterNames": [ + "sprite" + ], + "parameterDescriptions": [ + "the sprite to move to" + ], + "description": "Moves this sprite to the position of the specified sprite.", + "returnDescription": "", + "scratchblock": "go to [sprite v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/hide", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "hide", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Hides the sprite. The pen is not effected.", + "returnDescription": "", + "scratchblock": "hide", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/hideVariable", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name the monitor was shown with" + ], + "description": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "returnDescription": "", + "scratchblock": "hide variable [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/ifOnEdgeBounce", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "ifOnEdgeBounce", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks if the sprite is on the edge of the stage and bounces it back if it\nis. The sprite's\ndirection is reversed when it hits the left or right border, and it is\nreversed and rotated by\n180 degrees when it hits the top or bottom border. The method does nothing if\nthe hitbox is\ndisabled or if the sprite is a UI element. It also does nothing if the\nsprite has not been added to a stage yet.", + "returnDescription": "", + "scratchblock": "if on edge, bounce", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isAsking", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks whether a question is on screen and still waiting for an answer.", + "returnDescription": "true while a question is waiting", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isClone", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Whether this sprite is a clone, made by [clone()](clone).", + "returnDescription": "true for a clone, false for the original", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isColorTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isColorTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "returns": "boolean", + "parameterNames": [ + "color", + "other" + ], + "parameterDescriptions": [ + "a colour of this sprite's costume", + "the colour to look for under it" + ], + "description": "Checks whether a colour of the sprite is touching a colour on the stage:\nonly the parts of the costume painted in `color` count. A car whose\nfront bumper is red can ask whether the bumper touches the grass.\n\n```java\nif (this.isColorTouchingColor(HtmlColor.RED, HtmlColor.GREEN)) {\n this.say(\"Off the road!\");\n}\n```", + "returnDescription": "true if the colour touches the other colour", + "scratchblock": "<color [#ff0000] is touching [#00ff00]?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isGliding", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isGliding", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks whether the sprite is still on its way to a place it was told to\nglide to.", + "returnDescription": "true while it is still moving", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isKeyPressed", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "a key" + ], + "description": "Returns true if the key is pressed", + "returnDescription": "key pressed", + "scratchblock": "<key [space v] pressed?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isMouseDown", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns true is the mouse button is down", + "returnDescription": "mouse button down", + "scratchblock": "<mouse down?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isSoundPlaying", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "boolean", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "Name of the sound" + ], + "description": "Returns true if the sound if playing", + "returnDescription": "playing", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "boolean", + "parameterNames": [ + "color" + ], + "parameterDescriptions": [ + "the colour to look for" + ], + "description": "Checks whether the sprite is touching a colour: whether anything it paints\nlies over that colour on the stage - on the backdrop, on what the pen drew,\nor on another sprite.\n\nAs in Scratch, colours that are nearly the same count, so anti-aliased\nedges still match. Only what is under the painted part of the costume\ncounts, not the empty space around it, and not the hitbox.\n\n```java\nif (this.isTouchingColor(HtmlColor.RED)) {\n this.say(\"Ouch!\");\n}\n```\n\nThe time it takes grows with the size of the sprite, not of the stage.", + "returnDescription": "true if the sprite is touching the colour", + "scratchblock": "<touching color [#ff0000]?>", + "since": "" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "boolean", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "the red part [0...255]", + "the green part [0...255]", + "the blue part [0...255]" + ], + "description": "Checks whether the sprite is touching a colour given by its red, green and\nblue parts.", + "returnDescription": "true if the sprite is touching the colour", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isTouchingEdge", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isTouchingEdge", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns true if the rectangle which contains the image is outside of the\nstage", + "returnDescription": "true if outside", + "scratchblock": "<touching [edge v]?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isTouchingMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isTouchingMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns true is the mouse pointer is touching the hitbox of the sprite.", + "returnDescription": "true if touching", + "scratchblock": "<touching [mouse-pointer v]?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "boolean", + "parameterNames": [ + "sprite" + ], + "parameterDescriptions": [ + "The sprite to check for collision with." + ], + "description": "Checks if this sprite is touching another sprite.", + "returnDescription": "true if this sprite is touching the specified sprite, false\n otherwise. Returns false if\n the specified sprite is the same as this sprite, if the stage is\n null, if the specified\n sprite is null, not shown, or has its hitbox disabled.", + "scratchblock": "<touching [sprite v]?>", + "since": "" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "boolean", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the class type of the sprite to check for collision" + ], + "description": "Checks if this sprite is touching any sprite of the specified class type.", + "returnDescription": "true if this sprite is touching any sprite of the specified class\n type, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isVisible", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isVisible", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns if the sprite is visible", + "returnDescription": "is visible", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/move", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "steps" + ], + "parameterDescriptions": [ + "a number of pixels" + ], + "description": "Moves the sprite towards the current rotation by the received steps.", + "returnDescription": "", + "scratchblock": "move (steps) steps", + "since": "" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Moves the sprite in the direction of the given vector. The length of the\nvector determines how\nmove the sprite will move in this direction.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/nextCostume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "nextCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switch to the next costume.", + "returnDescription": "", + "scratchblock": "next costume", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/pickRandom", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int", + "parameterNames": [ + "from", + "to" + ], + "parameterDescriptions": [ + "the lower bound of the range (inclusive)", + "the upper bound of the range (exclusive)" + ], + "description": "Returns a random integer between the specified range.", + "returnDescription": "a random integer between the specified range", + "scratchblock": "(pick random (from) to (to))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/playSound", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the sound name" + ], + "description": "Plays a sound.\n\nEvery sprite plays its own copy, so ten sprites playing the same sound are\nheard ten times at once. One sprite only plays a sound once at a time:\nplaying it again while it is still going does nothing.", + "returnDescription": "", + "scratchblock": "start sound [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/pointInDirection", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "degrees" + ], + "parameterDescriptions": [ + "The direction in degrees to point the sprite. 0 degrees is up,\n 90 degrees is to the right, 180 degrees is down, and 270\n degrees is to the left." + ], + "description": "Points the sprite in the specified direction.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "the target vector to point towards" + ], + "description": "Points the sprite in the direction of the given vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/pointTowardsMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "pointTowardsMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Points the sprite towards the current position of the mouse pointer. This\nmethod calculates the\nangle between the sprite's current position and the mouse pointer's position,\nthen sets the\nsprite's direction accordingly.", + "returnDescription": "", + "scratchblock": "point towards [mouse-pointer v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/pointTowardsSprite", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "pointTowardsSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void", + "parameterNames": [ + "s" + ], + "parameterDescriptions": [ + "the sprite to point towards" + ], + "description": "Points the current sprite towards the specified sprite.", + "returnDescription": "", + "scratchblock": "point towards [sprite v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/previousCostume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "previousCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switch to the previous costume.", + "returnDescription": "", + "scratchblock": "switch costume to (previous costume)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/remove", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Removes this sprite from its current stage. For \"delete this clone\", see\n[deleteThisClone()](deleteThisClone).", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/run", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is intended to be overridden by subclasses to define the behavior\nof the sprite\nwhen it is run. By default, this method does nothing.\n\nIt is called every frame.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/say", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "The text to be displayed in the speech bubble." + ], + "description": "Makes the sprite display a speech bubble with the specified text.", + "returnDescription": "", + "scratchblock": "say [text]", + "since": "" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "text", + "millis" + ], + "parameterDescriptions": [ + "The message to be displayed.", + "The duration in milliseconds for which the message will be\n displayed." + ], + "description": "Displays a text message for a specified duration.", + "returnDescription": "", + "scratchblock": "say [text] for (millis) seconds", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setDirection", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "degrees" + ], + "parameterDescriptions": [ + "between 0 and 360" + ], + "description": "Sets the direction of the sprite to a given degrees. When this value is 0 the\nsprite moves\nup, when it is 180 it moves down.", + "returnDescription": "", + "scratchblock": "point in direction (degrees)", + "since": "" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Sets the direction of the sprite to the direction of a given vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setHitbox", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "double[]" + ], + "returns": "void", + "parameterNames": [ + "points" + ], + "parameterDescriptions": [ + "an array of integers representing the x and y coordinates of\n the hitbox vertices.\n The length of the array should be even, with each pair of\n integers representing a point (x,\n y)." + ], + "description": "Sets the hitbox for the sprite using the provided points. The points should\nbe provided in\npairs representing the x and y coordinates.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "void", + "parameterNames": [ + "shape" + ], + "parameterDescriptions": [ + "the shape to be used for the hitbox" + ], + "description": "Sets the hitbox for the sprite using the specified shape.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setPosition", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "a x coordinate", + "a y coordinate" + ], + "description": "Sets the position of the sprite", + "returnDescription": "", + "scratchblock": "go to x: (x) y: (y)", + "since": "" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Sets the position of the sprite based on the coordinates of a given vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setRotationCenter", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setRotationCenter", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "the x-coordinate in the costume, from its left edge", + "the y-coordinate in the costume, from its top edge" + ], + "description": "Sets the point of the costume the sprite turns around - Scratch's rotation\ncenter. It is also the point that sits at the sprite's position, so it is\nwhere the pen draws from and what `goTo` puts in place.\n\nThe point is given in the costume's own pixels, counted from its top left\ncorner, the same way as [setHitbox(double...)](setHitbox): a sword whose hilt\nis 12 pixels from the left and 60 from the top swings around the hilt with\n`setRotationCenter(12, 60)`. It grows and shrinks with the sprite's\nsize and holds for every costume of the sprite. Without it, a sprite turns\naround the middle of its costume.\n\n```java\nthis.addCostume(\"hand\", \"assets/clock-hand.png\");\nthis.setRotationCenter(8, 100); // the end of the hand\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setRotationStyle", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setRotationStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.RotationStyle" + ], + "returns": "void", + "parameterNames": [ + "style" + ], + "parameterDescriptions": [ + "the rotation style to be set" + ], + "description": "Sets the rotation style for the sprite.", + "returnDescription": "", + "scratchblock": "set rotation style [left-right v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setSize", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "percentage" + ], + "parameterDescriptions": [ + "a percentage [0...100]" + ], + "description": "Sets the size of the sprite.", + "returnDescription": "", + "scratchblock": "set size to (percentage) %", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "a color object" + ], + "description": "Sets the tint for the sprite with an color object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "a red value [0...255]", + "a green value [0...255]", + "a blue value [0...255]" + ], + "description": "Sets the tint for the sprite with rgb.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "a hue value [0...255]" + ], + "description": "Sets the tint for the sprite with a hue.", + "returnDescription": "", + "scratchblock": "set [color v] effect to (h)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setTransparency", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "transparency" + ], + "parameterDescriptions": [ + "[0...100], 0 solid and 100 invisible" + ], + "description": "Sets how see-through the sprite is, as Scratch's ghost effect does: 0 is the\nsolid sprite you start with and 100 is invisible. Anything outside that is\npinned to it.", + "returnDescription": "", + "scratchblock": "set [ghost v] effect to (transparency)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setVolume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "percent" + ], + "parameterDescriptions": [ + "0 for silent, 100 for full volume" + ], + "description": "Sets how loud every sound of this sprite plays.", + "returnDescription": "", + "scratchblock": "set volume to (percent) %", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setX", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a x coordinate" + ], + "description": "Sets the x coordinate", + "returnDescription": "", + "scratchblock": "set x to (x)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setY", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "a y coordinate" + ], + "description": "Sets the y coordinate", + "returnDescription": "", + "scratchblock": "set y to (y)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/show", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "show", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Shows the sprite.", + "returnDescription": "", + "scratchblock": "show", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/showVariable", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.util.function.Supplier" + ], + "returns": "void", + "parameterNames": [ + "name", + "value" + ], + "parameterDescriptions": [ + "the variable's name, shown after the sprite's", + "gives the value to show; asked for it every frame" + ], + "description": "Shows a monitor for one of this sprite's variables in the top left corner\nof the stage, like Scratch's variable monitors: \"Cat: score\" and the\ncurrent value, updated every frame. Showing the same name again replaces\nthe monitor; it goes away with the sprite.\n\n```java\npublic Cat() {\n this.addCostume(\"cat\", \"bunny1_stand\");\n this.showVariable(\"lives\", () -> lives);\n}\n```", + "returnDescription": "", + "scratchblock": "show variable [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/stamp", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stamps the current sprite to the background. A stamp is a non interactive\nversion of the sprite.", + "returnDescription": "", + "scratchblock": "stamp", + "since": "" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Layer" + ], + "returns": "void", + "parameterNames": [ + "layer" + ], + "parameterDescriptions": [ + "which layer to stamp onto" + ], + "description": "Stamps the sprite onto one of the stage's layers. A stamp is a picture of\nthe sprite that stays where it is put, and is not interactive.\n\nExample usage:\n\n```java\nthis.stamp(Layer.UI);\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/stopAllSounds", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops the playing of all sounds of the sprite.", + "returnDescription": "", + "scratchblock": "stop all sounds", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/stopSound", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "Name of the sound" + ], + "description": "Stops the playing of the sound with the given name", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/switchCostume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a costume" + ], + "description": "Switch to a costume by name.", + "returnDescription": "", + "scratchblock": "switch costume to [name v]", + "since": "" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "index" + ], + "parameterDescriptions": [ + "The index of the costume to switch to." + ], + "description": "Switches the current costume of the sprite to the costume at the specified\nindex.", + "returnDescription": "", + "scratchblock": "switch costume to (index)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/think", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "The text to be displayed in the thought bubble." + ], + "description": "Displays a thought bubble with the specified text.", + "returnDescription": "", + "scratchblock": "think [text]", + "since": "" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "text", + "millis" + ], + "parameterDescriptions": [ + "The text to be displayed in the thought bubble.", + "The duration in milliseconds for which the thought bubble will\n be displayed." + ], + "description": "Displays a thought bubble with the specified text for a given duration.", + "returnDescription": "", + "scratchblock": "think [text] for (millis) seconds", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/turnLeft", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "turnLeft", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "degrees" + ], + "parameterDescriptions": [ + "between 0 and 360" + ], + "description": "Rotates the sprite by a certain degrees to the left.", + "returnDescription": "", + "scratchblock": "turn left (degrees) degrees", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/turnRight", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "turnRight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "degrees" + ], + "parameterDescriptions": [ + "between 0 and 360" + ], + "description": "Rotates the sprite by a certain degrees to the right.", + "returnDescription": "", + "scratchblock": "turn right (degrees) degrees", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenAddedToStage", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the sprite is added to the stage. Override this\nmethod to define\ncustom behavior when the sprite is added to the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenBackdropSwitches", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the backdrop to switch to" + ], + "description": "This method is called when the backdrop switches to the specified name.\nOverride this method to\ndefine custom behavior.", + "returnDescription": "", + "scratchblock": "when backdrop switches to [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenClicked", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenClicked", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the sprite is clicked. Override this method to\ndefine custom\nbehavior for the sprite when it is clicked.", + "returnDescription": "", + "scratchblock": "when this sprite clicked", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenIReceive", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "message" + ], + "parameterDescriptions": [ + "The message that is received." + ], + "description": "This method is called when a message is received. Override this method to\ndefine custom\nbehavior.", + "returnDescription": "", + "scratchblock": "when I receive [message v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenKeyPressed", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "the key that was pressed" + ], + "description": "This method is called when a key is pressed. Override this method to define\ncustom behavior.", + "returnDescription": "", + "scratchblock": "when [space v] key pressed", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenKeyReleased", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "the key that was released" + ], + "description": "This method is called when a key is released. Override this method to define\ncustom behavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenMouseClicked", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void", + "parameterNames": [ + "mouseCode" + ], + "parameterDescriptions": [ + "The code representing the mouse button that was clicked." + ], + "description": "This method is called when a mouse click event occurs. Override this method\nto define custom\nbehavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenMouseMoved", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenMouseMoved", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "The x-coordinate of the mouse pointer.", + "The y-coordinate of the mouse pointer." + ], + "description": "This method is called when the mouse is moved. Override this method to define\ncustom behavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the sprite is removed from the stage. Override\nthis method to define\ncustom behavior when the sprite is removed.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenStartsAsClone", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenStartsAsClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Runs when this sprite was just made as a clone, like Scratch's \"when I\nstart as a clone\". Override it to give clones their own behaviour, for\nexample to send a bullet on its way.\n\n```java\npublic void whenStartsAsClone() {\n this.show();\n this.goToRandomPosition();\n}\n```", + "returnDescription": "", + "scratchblock": "when I start as a clone", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void", + "parameterNames": [ + "sprite" + ], + "parameterDescriptions": [ + "the sprite to add" + ], + "description": "Adds a sprite to the stage. Sprites are drawn in the order they were added, so a sprite added\nlater is drawn on top of one added earlier.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "a text" + ], + "description": "Add a text object to the stage", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "void", + "parameterNames": [ + "pen" + ], + "parameterDescriptions": [ + "the Pen object to be added to the stage" + ], + "description": "Adds a Pen object to the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "boolean" + ], + "returns": "void", + "parameterNames": [ + "name", + "imagePath", + "stretch" + ], + "parameterDescriptions": [ + "a unique name", + "a image path, or the name of a built-in sprite such as\n \"bg_castle\"", + "stretch image to window size" + ], + "description": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name", + "imagePath" + ], + "parameterDescriptions": [ + "a unique name", + "a image path, or the name of a built-in sprite such as\n \"bg_castle\"" + ], + "description": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a built-in sprite, for example \"bg_castle\". Add the\n sheet in front of the name, for example \"platformer/grass\", if\n the same name exists on several sheets." + ], + "description": "Add one of the backdrops that ship with Scratch for Java to the stage. The\nbackdrop gets the same name as the built-in sprite. If a backdrop with that\nname already exists do nothing.\n\nExample usage:\n\n```java\nthis.addBackdrop(\"bg_castle\");\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/addSound", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name", + "soundPath" + ], + "parameterDescriptions": [ + "a unique name", + "a sound path, or the name of a built-in sound such as\n \"footstep_carpet_000\"" + ], + "description": "Add a sound to the stage. If a sound with the received name already exists do\nnothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a built-in sound, for example \"footstep_carpet_000\"" + ], + "description": "Add one of the sounds that ship with Scratch for Java to the stage. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.\n\nExample usage:\n\n```java\nthis.addSound(\"footstep_carpet_000\");\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/ask", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "question" + ], + "parameterDescriptions": [ + "the question to show" + ], + "description": "Asks a question and waits for an answer to be typed in. A box appears at the\nbottom of the stage; whatever is typed goes into it until Enter is pressed.\n\nUnlike Scratch, this does not pause anything. Your `run()` keeps being\ncalled while the question is on screen, so check [isAsking()](isAsking) or wait\nfor [getAnswer()](getAnswer) to change:\n\n```java\npublic void run() {\n if (!this.isAsking() && this.getAnswer().isEmpty()) {\n this.ask(\"What is your name?\");\n }\n if (!this.getAnswer().isEmpty()) {\n this.display(\"Hello \" + this.getAnswer() + \"!\");\n }\n}\n```", + "returnDescription": "", + "scratchblock": "ask [question] and wait", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/broadcast", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "message" + ], + "parameterDescriptions": [ + "The message to broadcast." + ], + "description": "Broadcasts a message to every sprite on the stage and to the stage itself,\nas in Scratch. Each of them runs its `whenIReceive` method with the\nmessage.", + "returnDescription": "", + "scratchblock": "broadcast [message v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/changeColor", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "a step value" + ], + "description": "Changes the background color by adding a step to the hue value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/changeTint", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "a step value" + ], + "description": "Changes the colour the backdrop is tinted with by a step.", + "returnDescription": "", + "scratchblock": "change [color v] effect by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/changeTransparency", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "a step value" + ], + "description": "Changes how see-through the backdrop is by a step. A positive step fades it\nout, a negative one brings it back.", + "returnDescription": "", + "scratchblock": "change [ghost v] effect by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/changeVolume", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "how much to add to the volume, in percent" + ], + "description": "Makes every sound of this stage louder or quieter.", + "returnDescription": "", + "scratchblock": "change volume by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Stage with default dimensions. The default width is 480\npixels and the default\nheight is 360 pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [ + "width", + "height" + ], + "parameterDescriptions": [ + "the width of the stage", + "the height of the stage" + ], + "description": "Constructs a new Stage with the specified width and height.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [ + "width", + "height", + "assets" + ], + "parameterDescriptions": [ + "the width of the stage", + "the height of the stage", + "the path to the assets directory" + ], + "description": "Constructs a new Stage with the specified width, height, and assets path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/count", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "count", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "int", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the class of the sprites to count" + ], + "description": "Returns the number of sprites of the specified class.", + "returnDescription": "the number of sprites of the specified class", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/debug", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Object[]" + ], + "returns": "void", + "parameterNames": [ + "values" + ], + "parameterDescriptions": [ + "one or more values to print" + ], + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the stage's class name so you can tell\nwhich stage it came from.\n\nExample:\n\n```java\nthis.debug(\"score =\", score, \"lives =\", lives);\n// prints: [MyStage] score = 5 lives = 3\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/display", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "display", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "the text to be displayed" + ], + "description": "Displays the given text on the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "display", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "text", + "millis" + ], + "parameterDescriptions": [ + "The text to be displayed.", + "The duration in milliseconds for which the text will be\n displayed." + ], + "description": "Displays the given text on the screen for a specified duration.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/eraseAll", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "eraseAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Erases all lines on the pen layer.", + "returnDescription": "", + "scratchblock": "erase all", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/exit", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "exit", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Close the window and therefore the whole application.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/find", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "find", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "java.util.List", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "Class" + ], + "description": "Find sprites of a given class.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getAll", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.util.List", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves a list of all sprites in the current stage.", + "returnDescription": "a list containing all sp", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getAnswer", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the last answer that was typed in.", + "returnDescription": "the answer, or an empty string if nothing has been answered yet", + "scratchblock": "(answer)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getCamera", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getCamera", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.camera.Camera", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current camera instance associated with this stage.", + "returnDescription": "the current Camera object.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getColor", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getColor", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current color of the stage.", + "returnDescription": "the current color", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getCurrentBackdropIndex", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getCurrentBackdropIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current backdrop index", + "returnDescription": "a backdrop index", + "scratchblock": "(backdrop [number v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getCurrentBackdropName", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getCurrentBackdropName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current backdrop name", + "returnDescription": "a backdrop name", + "scratchblock": "(backdrop [name v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getDeltaTime", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the seconds passed since the last frame.", + "returnDescription": "secons since last frame", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getFrameRate", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getFrameRate", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the frame rate of the application.", + "returnDescription": "the frame rate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getHeight", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "returnDescription": "the height of the sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getMouse", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current position of the mouse cursor as a Vector2", + "returnDescription": "mouse position", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getMouseX", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current x-position of the mouse cursor", + "returnDescription": "x-position", + "scratchblock": "(mouse x)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getMouseY", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current y-position of the mouse cursor", + "returnDescription": "y-position", + "scratchblock": "(mouse y)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getPixels", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getPixels", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.pixels.Pixels", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the colours of everything this stage has drawn.\n\nExample usage:\n\n```java\nint[] colours = this.getPixels().main();\n```", + "returnDescription": "the pixels", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "The desktop pixel buffer is not exposed by the browser renderer.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getShaders", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shaders of this stage. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.\n\nExample usage:\n\n```java\nthis.getShaders().add(\"blur\", \"blur.frag\", null);\nthis.getShaders().switchTo(\"blur\");\n```", + "returnDescription": "the shaders", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getSorting", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getSorting", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.sorting.Sorting", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the order in which the sprites of this stage are drawn.\n\nExample usage:\n\n```java\nthis.getSorting().byY();\n```", + "returnDescription": "the sorting", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getTimer", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the timer", + "returnDescription": "the timer", + "scratchblock": "(timer)", + "since": "" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Timer", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "a name" + ], + "description": "Returns a timer by name", + "returnDescription": "the timer", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getVolume", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns how loud the sounds of this stage play.", + "returnDescription": "the volume, from 0 to 100", + "scratchblock": "(volume)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getWidth", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "returnDescription": "the width of the sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/hideVariable", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name the monitor was shown with" + ], + "description": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "returnDescription": "", + "scratchblock": "hide variable [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/isAsking", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks whether a question is on screen and still waiting for an answer.", + "returnDescription": "true while a question is waiting", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/isDebug", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "isDebug", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks if the application is in debug mode.", + "returnDescription": "true if the application is in debug mode, false otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/isKeyPressed", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "a key" + ], + "description": "Returns true if the key is pressed", + "returnDescription": "key pressed", + "scratchblock": "<key [space v] pressed?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/isMouseDown", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns true is the mouse button is down", + "returnDescription": "mouse button down", + "scratchblock": "<mouse down?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/isSoundPlaying", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "boolean", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "" + ], + "description": "Returns true if the sound if playing", + "returnDescription": "playing", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/nextBackdrop", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "nextBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switch to the next backdrop.", + "returnDescription": "", + "scratchblock": "next backdrop", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/pickRandom", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int", + "parameterNames": [ + "from", + "to" + ], + "parameterDescriptions": [ + "the lower bound of the range (inclusive)", + "the upper bound of the range (inclusive)" + ], + "description": "Returns a random integer between the specified range (inclusive).", + "returnDescription": "a random integer between `from` and `to` (inclusive)", + "scratchblock": "(pick random (from) to (to))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/playSound", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the sound name" + ], + "description": "Plays a sound.", + "returnDescription": "", + "scratchblock": "start sound [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/previousBackdrop", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "previousBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switch to the previous backdrop.", + "returnDescription": "", + "scratchblock": "switch backdrop to [previous backdrop v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/randomBackdrop", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "randomBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switch to a random backdrop.", + "returnDescription": "", + "scratchblock": "switch backdrop to [random backdrop v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void", + "parameterNames": [ + "sprite" + ], + "parameterDescriptions": [ + "the sprite to be removed" + ], + "description": "Removes the specified sprite from the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "void", + "parameterNames": [ + "pen" + ], + "parameterDescriptions": [ + "the pen to be removed" + ], + "description": "Removes the specified pen from the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "the text to be removed" + ], + "description": "Removes the specified text from the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the class of the sprites to remove" + ], + "description": "Removes all sprites of the specified class from the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/removeAll", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "removeAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Removes all elements from the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/run", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Executes the main logic of the stage. This method should be overridden by\nsubclasses to define\nthe specific behavior of the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "a hue value [0...255]" + ], + "description": "Sets the background color via a hue value", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "a red value [0...255]", + "a green value [0...255]", + "a blue value [0...255]" + ], + "description": "Sets the background color via a rgb value", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the new color to be set" + ], + "description": "Sets the color of the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setCursor", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setCursor", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "path" + ], + "parameterDescriptions": [ + "a path to an image file, or the name of a built-in sprite" + ], + "description": "Sets the cursor image for the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setCursor", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "path", + "x", + "y" + ], + "parameterDescriptions": [ + "a path to an image file, or the name of a built-in sprite", + "the x-coordinate of the cursor's active spot", + "the y-coordinate of the cursor's active spot" + ], + "description": "Sets the cursor image and its active spot coordinates.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setDebug", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setDebug", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void", + "parameterNames": [ + "debug" + ], + "parameterDescriptions": [ + "a boolean value where `true` enables debug mode and\n `false` disables\n it." + ], + "description": "Enables or disables the debug mode for the application.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setTint", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "a red value [0...255]", + "a green value [0...255]", + "a blue value [0...255]" + ], + "description": "Sets the colour the backdrop is tinted with.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "" + ], + "description": "Sets the colour the backdrop is tinted with, as a hue.", + "returnDescription": "", + "scratchblock": "set [color v] effect to (h)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setTransparency", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "transparency" + ], + "parameterDescriptions": [ + "[0...100], 0 solid and 100 invisible" + ], + "description": "Sets how see-through the backdrop is, as Scratch's ghost effect does: 0 is\nthe solid backdrop you start with and 100 is invisible.", + "returnDescription": "", + "scratchblock": "set [ghost v] effect to (transparency)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setVolume", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "percent" + ], + "parameterDescriptions": [ + "0 for silent, 100 for full volume" + ], + "description": "Sets how loud every sound of this stage plays.", + "returnDescription": "", + "scratchblock": "set volume to (percent) %", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/showVariable", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.util.function.Supplier" + ], + "returns": "void", + "parameterNames": [ + "name", + "value" + ], + "parameterDescriptions": [ + "what the monitor says", + "gives the value to show; asked for it every frame" + ], + "description": "Shows a monitor for a variable in the top left corner of the stage, like\nScratch's variable monitors: the name and the current value, updated every\nframe. Showing the same name again replaces the monitor.\n\n```java\nthis.showVariable(\"score\", () -> score);\n```", + "returnDescription": "", + "scratchblock": "show variable [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/stopAllSounds", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops the playing of all sounds of the stage.", + "returnDescription": "", + "scratchblock": "stop all sounds", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/stopSound", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "Name of the sound" + ], + "description": "Stops the playing of the sound with the given name", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/switchBackdrop", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "switchBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a backdrop" + ], + "description": "Switch to a backdrop by name.", + "returnDescription": "", + "scratchblock": "switch backdrop to [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/wait", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "millis" + ], + "parameterDescriptions": [ + "Milliseconds" + ], + "description": "Stop the execution of the whole applications for the given milliseconds.", + "returnDescription": "", + "scratchblock": "wait (millis) seconds", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/waitUntil", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "waitUntil", + "constructor": false, + "static": false, + "parameters": [ + "java.util.function.BooleanSupplier" + ], + "returns": "void", + "parameterNames": [ + "condition" + ], + "parameterDescriptions": [ + "checked over and over until it is true" + ], + "description": "Waits until something becomes true, then carries on.\n\nLike [wait(int)](wait) this holds up the code that calls it, not the whole\nprogram: sprites keep running and the stage keeps drawing while it waits.\nThat makes it useful for setting a scene up in a constructor, and a bad idea\ninside `run()`, which is called once per frame and should return quickly.\n\n```java\nthis.ask(\"What is your name?\");\nthis.waitUntil(() -> !this.isAsking());\nthis.display(\"Hello \" + this.getAnswer() + \"!\");\n```", + "returnDescription": "", + "scratchblock": "wait until <condition>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenBackdropSwitches", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the backdrop to switch to" + ], + "description": "This method is called when the backdrop switches to the specified name.\nOverride this method to\nadd custom behavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenIReceive", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "message" + ], + "parameterDescriptions": [ + "The message that triggers this method." + ], + "description": "This method is called when a specific message is received. Override this\nmethod to add custom\nbehavior.", + "returnDescription": "", + "scratchblock": "when I receive [message v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenKeyPressed", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "the key that was pressed" + ], + "description": "This method is called when a key is pressed. Override this method to add\ncustom behavior.", + "returnDescription": "", + "scratchblock": "when [space v] key pressed", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenKeyReleased", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "the key that was released" + ], + "description": "This method is called when a key is released. Override this method to add\ncustom behavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenMouseClicked", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void", + "parameterNames": [ + "mouseEvent" + ], + "parameterDescriptions": [ + "The mouse event that triggered this method." + ], + "description": "This method is called when a mouse click event occurs. Overwrite this method\nto add custom\nbehavior.", + "returnDescription": "", + "scratchblock": "when stage clicked", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenMouseWheelMoved", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenMouseWheelMoved", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "steps" + ], + "parameterDescriptions": [ + "the number of steps the mouse wheel has moved. Positive values\n indicate movement\n away from the user, while negative values indicate movement\n towards the user." + ], + "description": "This method is called when the mouse wheel is moved. Overwrite this method to\nadd custom\nbehavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/addFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "addFont", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name", + "path" + ], + "parameterDescriptions": [ + "the name of the font to be added", + "the path to the font file" + ], + "description": "Adds a new font to the list of fonts if it does not already exist.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Text object with default values. The text is initialized to an empty string,\npositioned at (0, 0), with a default size of 0. The text style is set to plain and the text\nis centred on its position, as every text is. Call [setAlign(TextAlign)](setAlign) for anything\nelse.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [ + "s" + ], + "parameterDescriptions": [ + "the Sprite to associate with this Text object" + ], + "description": "Constructs a new Text object associated with a given Sprite.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [ + "text", + "x", + "y", + "width" + ], + "parameterDescriptions": [ + "the text to be displayed", + "the x-coordinate of the text's position", + "the y-coordinate of the text's position", + "the width of the text" + ], + "description": "Constructs a new Text object with the specified text, position, and width.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "double", + "double", + "double", + "org.openpatch.scratch.TextStyle" + ], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [ + "text", + "x", + "y", + "width", + "style" + ], + "parameterDescriptions": [ + "the text content to be displayed", + "the x-coordinate of the text's position", + "the y-coordinate of the text's position", + "the width of the text area", + "the style to be applied to the text" + ], + "description": "Constructs a new Text object with the specified text, position, width, and style.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [ + "t" + ], + "parameterDescriptions": [ + "the Text object to copy" + ], + "description": "Copy constructor for the Text class. Creates a new Text object by copying the properties of the\ngiven Text object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getAlign", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getAlign", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.TextAlign", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns where the text sits relative to its position.", + "returnDescription": "the alignment", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getCurrentFontIndex", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getCurrentFontIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the index of the current font.", + "returnDescription": "the index of the current font", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getCurrentFontName", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getCurrentFontName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the name of the current font.", + "returnDescription": "the name of the current font, or `null` if no fonts are available.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getDefaultFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getDefaultFont", + "constructor": false, + "static": true, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the font that text is written in by default.", + "returnDescription": "the path to the font file", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getDefaultFontSize", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getDefaultFontSize", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the size text is written in by default.", + "returnDescription": "the font size", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getFont", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the name of the font.", + "returnDescription": "the name of the font as a String.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getPosition", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current position as a Vector2 object.", + "returnDescription": "a Vector2 object representing the current x and y coordinates.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getStage", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current stage associated with this object.", + "returnDescription": "the current stage", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getStyle", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getStyle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.TextStyle", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the style the text is drawn in.", + "returnDescription": "the style, never null", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getTextSize", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getTextSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the size of the text.", + "returnDescription": "the size of the text as an integer", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getWidth", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the width of the text.", + "returnDescription": "the width of the text as a double", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getX", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the x-coordinate of this object.", + "returnDescription": "the x-coordinate as a double", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getY", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the y-coordinate of this object.", + "returnDescription": "the y-coordinate as a double", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/goLayersBackwards", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "number" + ], + "parameterDescriptions": [ + "the number of layers to move the text backwards" + ], + "description": "Moves the text backwards by a specified number of layers in the stage. If\nthe text is not on a stage, the method does nothing.", + "returnDescription": "", + "scratchblock": "go [backward v] (number) layers", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/goLayersForwards", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "number" + ], + "parameterDescriptions": [ + "the number of layers to move the text forward" + ], + "description": "Moves the text forward by a specified number of layers within its stage. If\nthe text is not on a stage, the method does nothing.", + "returnDescription": "", + "scratchblock": "go [forward v] (number) layers", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/goToBackLayer", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves this text to the back layer of the stage, behind every other text on\nit. If the text is not on a stage, the method does nothing.\n\nTexts are drawn on top of the sprites, so this orders a text against the\nother texts rather than against the sprites.", + "returnDescription": "", + "scratchblock": "go to [back v] layer", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/goToFrontLayer", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves this text to the front layer of the stage, in front of every other\ntext on it. If the text is not on a stage, the method does nothing.\n\nTexts are drawn on top of the sprites, so this orders a text against the\nother texts rather than against the sprites.", + "returnDescription": "", + "scratchblock": "go to [front v] layer", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/isUI", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "isUI", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks if the current instance is a UI element.", + "returnDescription": "`true` if this instance is a UI element, `false` otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/nextFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "nextFont", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Advances to the next font in the list of available fonts. The current font index is incremented\nby one and wraps around to the beginning of the list if it exceeds the number of available\nfonts.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/remove", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Removes this object from its current stage if it is associated with one. If the object is not\nassociated with any stage, this method does nothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setAlign", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setAlign", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.TextAlign" + ], + "returns": "void", + "parameterNames": [ + "align" + ], + "parameterDescriptions": [ + "where the text should sit relative to its position" + ], + "description": "Sets the alignment of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "the red component of the color (0-255)", + "the green component of the color (0-255)", + "the blue component of the color (0-255)" + ], + "description": "Sets the background color using the specified RGB values.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "the hue value for the background color" + ], + "description": "Sets the background color using the specified hue value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the new background color to be set" + ], + "description": "Sets the background color of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setFont", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the font to be set" + ], + "description": "Sets the font name for the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setIsUI", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setIsUI", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void", + "parameterNames": [ + "isUI" + ], + "parameterDescriptions": [ + "a boolean indicating whether this object is part of the UI" + ], + "description": "Sets the UI status of this object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setPosition", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "a x coordinate", + "a y coordinate" + ], + "description": "Sets the position of the text", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "the Vector2 object containing the x and y coordinates" + ], + "description": "Sets the position of the text object using a Vector2 object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "the red component of the color (0-255)", + "the green component of the color (0-255)", + "the blue component of the color (0-255)" + ], + "description": "Sets the stroke color using the specified RGB values.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "the hue value for the stroke color" + ], + "description": "Sets the stroke color using the specified hue value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the color to set as the stroke color" + ], + "description": "Sets the stroke color for the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setStyle", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.TextStyle" + ], + "returns": "void", + "parameterNames": [ + "style" + ], + "parameterDescriptions": [ + "the TextStyle to be applied to the text" + ], + "description": "Sets the style of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "the red component of the color (0-255)", + "the green component of the color (0-255)", + "the blue component of the color (0-255)" + ], + "description": "Sets the text color using RGB values.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "the hue value for the text color" + ], + "description": "Sets the text color using the specified hue value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the new color to be set for the text" + ], + "description": "Sets the color of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setTextSize", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setTextSize", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "size" + ], + "parameterDescriptions": [ + "the new size of the text" + ], + "description": "Sets the size of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setWidth", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "width" + ], + "parameterDescriptions": [ + "the new width to set" + ], + "description": "Sets the width of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setX", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "the new x-coordinate value" + ], + "description": "Sets the x-coordinate for this object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setY", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "the new Y coordinate value" + ], + "description": "Sets the Y coordinate of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/showText", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "showText", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "The text to be displayed. If the text is null or empty, the text will be set to\n null." + ], + "description": "Displays the specified text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "showText", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "text", + "millis" + ], + "parameterDescriptions": [ + "The text to be displayed.", + "The duration in milliseconds for which the text should be displayed." + ], + "description": "Displays the specified text for a given duration.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/switchFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "switchFont", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the font to switch to" + ], + "description": "Switches the current font to the font with the specified name.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/useFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "useFont", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "path", + "size" + ], + "parameterDescriptions": [ + "the path to a .ttf or .otf file", + "the size to write in" + ], + "description": "Chooses the font all text is written in, and how big it is.\n\nCall it before the first stage is created. The font is loaded while the\nwindow starts up, so choosing one later is not reliable.\n\n```java\npublic static void main(String[] args) {\n Text.useFont(\"assets/Retro Gaming.ttf\", 11);\n new MyStage();\n}\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "useFont", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "path" + ], + "parameterDescriptions": [ + "the path to a .ttf or .otf file" + ], + "description": "Chooses the font all text is written in, keeping the current size.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/useFontSizes", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "useFontSizes", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "void", + "parameterNames": [ + "sizes" + ], + "parameterDescriptions": [ + "the sizes to prepare" + ], + "description": "Prepares several sizes of the font in advance. Only needed when text is\nshown at more than one size, so that every size looks sharp.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/useSmoothing", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "useSmoothing", + "constructor": false, + "static": true, + "parameters": [ + "boolean" + ], + "returns": "void", + "parameterNames": [ + "smooth" + ], + "parameterDescriptions": [ + "true to smooth the letters" + ], + "description": "Chooses whether letters are smoothed. Turn it off for pixel fonts.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/whenAddedToStage", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the object is added to the stage. Override this method to define\ncustom behavior when the object is added to the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void", + "parameterNames": [ + "stage" + ], + "parameterDescriptions": [ + "The stage to which the text is added." + ], + "description": "This method is called when the text is added to the stage. Override this method to define\ncustom behavior when the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the object is removed from the stage. Override this method to define\ncustom behavior that should occur when the object is no longer part of the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void", + "parameterNames": [ + "stage" + ], + "parameterDescriptions": [ + "The stage from which the text is removed." + ], + "description": "This method is called when the text is removed from the stage. Override this method to define\ncustom behavior that should occur.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/afterMillis", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "afterMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean", + "parameterNames": [ + "millis" + ], + "parameterDescriptions": [ + "the number of milliseconds to check against" + ], + "description": "Checks if the specified number of milliseconds has passed since the method was first called.", + "returnDescription": "true if the specified number of milliseconds has passed since the method was first\n called, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/constructor", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "Timer", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Timer object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/everyMillis", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "everyMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean", + "parameterNames": [ + "millis" + ], + "parameterDescriptions": [ + "The number of milliseconds to wait before returning true." + ], + "description": "Checks if the specified number of milliseconds has passed since the last time this method\nreturned true.", + "returnDescription": "true if the specified number of milliseconds has passed since the last call that\n returned true, false otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/forMillis", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "forMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean", + "parameterNames": [ + "millis" + ], + "parameterDescriptions": [ + "the number of milliseconds to check against" + ], + "description": "Checks if the specified amount of milliseconds has passed since the method was first called. If\nthe method is called for the first time, it initializes the start time.", + "returnDescription": "true if the current time is less than the start time plus the specified milliseconds,\n false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean", + "parameterNames": [ + "millis" + ], + "parameterDescriptions": [ + "the interval in milliseconds to check" + ], + "description": "Checks if the specified interval in milliseconds has passed.", + "returnDescription": "true if the interval has passed, false otherwise", + "scratchblock": "", + "since": "" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "boolean" + ], + "returns": "boolean", + "parameterNames": [ + "millis", + "skipFirst" + ], + "parameterDescriptions": [ + "the interval in milliseconds to check", + "if true, the first interval will be skipped" + ], + "description": "Checks if the specified interval in milliseconds has passed.", + "returnDescription": "true if the interval has passed, false otherwise", + "scratchblock": "", + "since": "" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean", + "parameterNames": [ + "millis1", + "millis2" + ], + "parameterDescriptions": [ + "the first interval in milliseconds to check", + "the second interval in milliseconds to check" + ], + "description": "Checks if the specified interval in milliseconds has passed.", + "returnDescription": "true if the interval has passed, false otherwise", + "scratchblock": "", + "since": "" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "boolean" + ], + "returns": "boolean", + "parameterNames": [ + "millis1", + "millis2", + "skipFirst" + ], + "parameterDescriptions": [ + "the first interval in milliseconds to check", + "the second interval in milliseconds to check", + "if true, the first interval will be skipped" + ], + "description": "Checks if the specified interval in milliseconds has passed.", + "returnDescription": "true if the interval has passed, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/millis", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "millis", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the number of milliseconds of game time since the program started.\nGame time stands still while the game is paused and runs slower or faster\nwith the game speed (see [Window.pause()](../Window/pause) and\n[Window.setGameSpeed(double)](../Window/setGameSpeed)); without either, it is the real time.", + "returnDescription": "the milliseconds of game time since the program started", + "scratchblock": "(timer)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/reset", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "reset", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Resets the timer.", + "returnDescription": "", + "scratchblock": "reset timer", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Triangle/constructor", + "owner": "org.openpatch.scratch.Triangle", + "signatures": [ + { + "name": "Triangle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Triangle", + "parameterNames": [ + "x1", + "y1", + "x2", + "y2", + "x3", + "y3" + ], + "parameterDescriptions": [ + "the x-coordinate of the first vertex", + "the y-coordinate of the first vertex", + "the x-coordinate of the second vertex", + "the y-coordinate of the second vertex", + "the x-coordinate of the third vertex", + "the y-coordinate of the third vertex" + ], + "description": "Creates a triangle with the specified vertices.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/changeHeight", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "changeHeight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "amount" + ], + "parameterDescriptions": [ + "how many pixels to add to the height" + ], + "description": "Changes the height of the sprite by the given number of pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/changeWidth", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "changeWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "amount" + ], + "parameterDescriptions": [ + "how many pixels to add to the width" + ], + "description": "Changes the width of the sprite by the given number of pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/constructor", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "UISprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.UISprite", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Creates a sprite that is drawn as part of the user interface.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/disableNineSlice", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "disableNineSlice", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Lets the whole costume stretch again.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/setHeight", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "setHeight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "height" + ], + "parameterDescriptions": [ + "the height in pixels" + ], + "description": "Sets the height of the sprite in pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/setNineSlice", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "setNineSlice", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "top", + "right", + "bottom", + "left" + ], + "parameterDescriptions": [ + "how many pixels of the costume belong to the top edge", + "how many pixels of the costume belong to the right edge", + "how many pixels of the costume belong to the bottom edge", + "how many pixels of the costume belong to the left edge" + ], + "description": "Keeps the corners and edges of the costume from stretching when the sprite\nis resized, so that a button costume can be made any size.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/setWidth", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "setWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "width" + ], + "parameterDescriptions": [ + "the width in pixels" + ], + "description": "Sets the width of the sprite in pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/add", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "" + ], + "description": "Adds another vector and returns the result", + "returnDescription": "the sum", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/angle", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "angle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the angle of the vector.", + "returnDescription": "the angle", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/clone", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Creates a clone of the vector", + "returnDescription": "the cloned vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructor for the null vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "x-coordinate", + "y-coordinate" + ], + "description": "Constructor for a 2D vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Copy constructor for copying a vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/distance", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "distance", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Calculates the distance to another vector.", + "returnDescription": "the distance", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/distanceSq", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "distanceSq", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Calculates the squared distance to another vector.", + "returnDescription": "the squared distance", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/dot", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "dot", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Calculates the dot product.", + "returnDescription": "the dot product", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/equals", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Object" + ], + "returns": "boolean", + "parameterNames": [ + "obj" + ], + "parameterDescriptions": [ + "the object to compare with" + ], + "description": "Compares this vector with another object.", + "returnDescription": "true if the other object is a vector with the same x- and y-coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/fromPolar", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "fromPolar", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "magnitude", + "angle" + ], + "parameterDescriptions": [ + "of the vector", + "of the vector" + ], + "description": "Constructor method for constructing a vector based on polar coordinates.", + "returnDescription": "a vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/getX", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the x coordinate of the vector", + "returnDescription": "the x coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/getY", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the y coordinate of the vector", + "returnDescription": "the y coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/hashCode", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "hashCode", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the hash code of the vector. Vectors that are equal have the same hash code, which is\nwhat lets them be used as keys in a `HashMap`.", + "returnDescription": "the hash code of the vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/length", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "length", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Calculates the length of the vector.", + "returnDescription": "the length of the vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/lengthSq", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "lengthSq", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Calculates the squared length of the vector.", + "returnDescription": "the squared length of the vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/multiply", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "multiply", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "scalar" + ], + "parameterDescriptions": [ + "a scalar" + ], + "description": "Multiplies a scalar and return the result.", + "returnDescription": "the vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/normalVector", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "normalVector", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the normal vector, which is perpendicular to the vector.", + "returnDescription": "a normal vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/reverse", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "reverse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Reverses a vector and returns the result.", + "returnDescription": "the reversed vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/rotateBy", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "rotateBy", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "angle" + ], + "parameterDescriptions": [ + "an angle between [0, ..., 360]" + ], + "description": "Rotates the vector by an angle and returns the result.", + "returnDescription": "the rotated vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/rotateTo", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "rotateTo", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "angle" + ], + "parameterDescriptions": [ + "an angle between [0,...,360]" + ], + "description": "Rotates the vector to a given angle and returns the result.", + "returnDescription": "the rotated vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/sub", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "sub", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "" + ], + "description": "Substracts another vector and returns the result", + "returnDescription": "the difference", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/toString", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the vector as a text, for example `Vector2[60.0, 80.0]`.", + "returnDescription": "the vector as a text", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/unitVector", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "unitVector", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the unit vector.", + "returnDescription": "a unit vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Window", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Window with default dimensions. The default width is 480\npixels and the\ndefault height is 360 pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Window", + "parameterNames": [ + "assets" + ], + "parameterDescriptions": [ + "the path to the assets to be used in the window" + ], + "description": "Constructs a new Window with the specified assets. The window will have a\ndefault width of 480\npixels and a height of 360 pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "org.openpatch.scratch.Window", + "parameterNames": [ + "width", + "height" + ], + "parameterDescriptions": [ + "the width of the window", + "the height of the window" + ], + "description": "Constructs a new Window with the specified width and height.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Window", + "parameterNames": [ + "width", + "height", + "assets" + ], + "parameterDescriptions": [ + "the width of the window", + "the height of the window", + "the path to the assets" + ], + "description": "Constructs a new Window with the specified width, height, and assets path.\nEnsures that only\none instance of Window can be created.\n\nThe single exception is the window Java builds by itself: a class that\nextends Window and has a `main` method which is not static is\ninstantiated by the JVM before `main` is called, so the\n`new MyWindow()` in that `main` would be the second window. That\none reuses the first instead of failing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/debug", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Object[]" + ], + "returns": "void", + "parameterNames": [ + "values" + ], + "parameterDescriptions": [ + "one or more values to print" + ], + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the window's class name.\n\nExample:\n\n```java\nthis.debug(\"fps =\", getFps());\n// prints: [MyWindow] fps = 60\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/exit", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "exit", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Exits the application by invoking the `whenExits` method and then calling the\n`exit` method on\nthe `Applet` instance.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getDeltaTime", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the seconds of game time passed since the last frame. While the game\nis paused this is 0, and at half speed half the real time.", + "returnDescription": "seconds since last frame", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getGameSpeed", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getGameSpeed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "The game speed set with [setGameSpeed(double)](setGameSpeed).", + "returnDescription": "1 for normal speed", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getHeight", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the height of the current window.", + "returnDescription": "the height of the window in pixels", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getInstance", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getInstance", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Window", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the singleton instance of the Window class.", + "returnDescription": "the singleton instance of Window", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getLibraryTitle", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getLibraryTitle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the title of the library.", + "returnDescription": "the title of the library as a String", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getLibraryVersion", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getLibraryVersion", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the version of the library.", + "returnDescription": "the version of the library as a String", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getStage", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current stage from the Applet instance.", + "returnDescription": "the current Stage object", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getTextureSampling", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getTextureSampling", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.TextureSampling", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns how pictures are being smoothed.", + "returnDescription": "the current setting", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getWidth", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the width of the current window.", + "returnDescription": "the width of the window in pixels", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/isDebug", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "isDebug", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks if the application is in debug mode.\n\nDebug mode can be toggled at runtime by pressing F12.", + "returnDescription": "true if the application is in debug mode, false otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/isPaused", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "isPaused", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Whether the game is paused.", + "returnDescription": "true while paused", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/pause", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "pause", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Pauses the game: `run()` is no longer called, and timers, gliding\nand animations stand still. The window keeps drawing, so the paused\npicture stays visible, and keys and clicks still reach methods like\n`whenKeyPressed`, so a key can [resume()](resume) the game.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/resume", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "resume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Lets a paused game go on where it stopped.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/setDebug", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "setDebug", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void", + "parameterNames": [ + "debug" + ], + "parameterDescriptions": [ + "a boolean value where `true` enables debug mode and\n `false` disables\n it." + ], + "description": "Enables or disables the debug mode for the application.\n\nDebug mode shows sprite positions, hitboxes, and other debug information.\nIt can also be toggled at runtime by pressing F12.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/setGameSpeed", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "setGameSpeed", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "speed" + ], + "parameterDescriptions": [ + "1 for normal speed, smaller for slower, larger for faster" + ], + "description": "Makes the game run slower or faster: 1 is normal, 0.5 half as fast, 2\ntwice as fast. `run()`, timers, gliding and animations all follow,\nso the whole game looks like slow motion; the window keeps drawing\nsmoothly.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/setStage", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "setStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void", + "parameterNames": [ + "stage" + ], + "parameterDescriptions": [ + "the new stage to be set" + ], + "description": "Sets the current stage of the application.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/step", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "step", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "While the game is paused: runs it for exactly one frame (every\n`run()` once) and pauses again. Useful to watch closely what\nhappens, for example when two sprites touch.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/transitionToStage", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "transitionToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage", + "int" + ], + "returns": "void", + "parameterNames": [ + "stage", + "duration" + ], + "parameterDescriptions": [ + "the new stage to transition to", + "the duration of the transition in milliseconds" + ], + "description": "Transitions to a new stage with a specified duration.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/useFullScreen", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "useFullScreen", + "constructor": false, + "static": true, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Makes the window fill the whole screen.\n\nCall it before the first stage is created, because the size of the window is\nsettled the moment it opens:\n\n```java\npublic static void main(String[] args) {\n Window.useFullScreen();\n new MyStage();\n}\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "The embedded browser output uses its enclosing page; this desktop window option only reports a limitation.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/useSplashLogo", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "useSplashLogo", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "path" + ], + "parameterDescriptions": [ + "a path to an image file or the name of a built-in sprite, or\n `null` for the Scratch for Java logo" + ], + "description": "Puts your own picture on the loading screen in place of the Scratch for Java\nlogo. The picture fades in while your project starts and fades out again\nonce it is ready.\n\nIt is shrunk to fit if it is large, and never enlarged, so a picture of\nroughly 300 by 300 looks right in a window of the usual size.\n\nCall it before the first stage is created, because the loading screen is the\nfirst thing the window draws:\n\n```java\npublic static void main(String[] args) {\n Window.useSplashLogo(\"assets/logo.png\");\n new MyStage();\n}\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "The browser has no desktop splash window. This option only reports a limitation.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/useTextureSampling", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "useTextureSampling", + "constructor": false, + "static": true, + "parameters": [ + "org.openpatch.scratch.TextureSampling" + ], + "returns": "void", + "parameterNames": [ + "sampling" + ], + "parameterDescriptions": [ + "how to smooth pictures" + ], + "description": "Chooses how pictures are smoothed when they are drawn larger or smaller than\nthey really are. Pixel art usually wants [TextureSampling.POINT](../TextureSampling/POINT).\n\nCall it before the first stage is created.\n\n```java\nWindow.useTextureSampling(TextureSampling.POINT);\nnew MyStage();\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/whenExits", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "whenExits", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the window exits. Override this method to define\ncustom behavior\nwhen the window is closed.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/changeX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "number in pixels" + ], + "description": "Changes x by a certain amount", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/changeY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "number in pixels" + ], + "description": "Changes y by a certain amount", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/changeZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "changeZoom", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "dz" + ], + "parameterDescriptions": [ + "the amount to change the zoom level by" + ], + "description": "Changes the zoom level by a certain amount", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/constructor", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "Camera", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.camera.Camera", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Camera with default values. The default position is (0, 0) and the default\nzoom level is 100.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/getPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the position of the sprite", + "returnDescription": "a vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/getX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the x coordinate of the sprite", + "returnDescription": "a x coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/getY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the y coordinate of the sprite", + "returnDescription": "a y coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/getZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "getZoom", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the zoom level", + "returnDescription": "the zoom level", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/resetZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "resetZoom", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Resets the zoom level to 100", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/setPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "a x coordinate", + "a y coordinate" + ], + "description": "Sets the position of the sprite", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Sets the position of the sprite based on the coordinates of a given vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/setX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a x coordinate" + ], + "description": "Sets the x coordinate", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/setY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "a y coordinate" + ], + "description": "Sets the y coordinate", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/setZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "setZoom", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "zoom" + ], + "parameterDescriptions": [ + "the zoom level" + ], + "description": "Sets the zoom", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/setZoomLimit", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "setZoomLimit", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "low", + "high" + ], + "parameterDescriptions": [ + "the lower limit", + "the upper limit" + ], + "description": "Sets the zoom limits", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toGlobalPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toGlobalPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "local camera coordinates" + ], + "description": "Converts local camera coordinates to screen coordinates", + "returnDescription": "screen coordinates", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toGlobalX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toGlobalX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "local camera x coordinate" + ], + "description": "Converts local camera x coordinate to screen x coordinate", + "returnDescription": "screen x coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toGlobalY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toGlobalY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "local camera y coordinate" + ], + "description": "Converts local camera y coordinate to screen y coordinate", + "returnDescription": "screen y coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toLocalPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toLocalPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "screen coordinates" + ], + "description": "Converts screen coordinates to local camera coordinates", + "returnDescription": "local coordinates", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toLocalX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toLocalX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "screen x coordinate" + ], + "description": "Converts screen x coordinate to local camera x coordinate", + "returnDescription": "local x coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toLocalY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toLocalY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "screen y coordinate" + ], + "description": "Converts screen y coordinate to local camera y coordinate", + "returnDescription": "local y coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/fs/File/constructor", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "File", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.fs.File", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "File", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.fs.File", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/load", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "load", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the file from which the object is to be loaded", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from a file at the given path.", + "returnDescription": "the loaded object of the specified class", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "load", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the file from which the object is to be loaded", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from a file at the given path.", + "returnDescription": "the loaded object of the specified class", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/loadOrCreate", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "loadOrCreate", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the file from which the object is to be loaded", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from a file at the given path, or\ncreates a new one if the file does not exist.", + "returnDescription": "the loaded object of the specified class, or a new instance if the\n file does not exist", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "loadOrCreate", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the file from which the object is to be loaded", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from a file at the given path, or\ncreates a new one if the file does not exist.", + "returnDescription": "the loaded object of the specified class, or a new instance if the\n file does not exist", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/loadXML", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "loadXML", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the XML file", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from an XML file at the given path.", + "returnDescription": "the object loaded from the XML file", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "loadXML", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the XML file", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from an XML file at the given path.", + "returnDescription": "the object loaded from the XML file", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/loadXMLOrCreate", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "loadXMLOrCreate", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the XML file", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from an XML file at the given path,\nor creates a new one if the file does not exist.", + "returnDescription": "the object loaded from the XML file, or a new instance if the file\n does not exist", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "loadXMLOrCreate", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the XML file", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from an XML file at the given path,\nor creates a new one if the file does not exist.", + "returnDescription": "the object loaded from the XML file, or a new instance if the file\n does not exist", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/save", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "save", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "T" + ], + "returns": "void", + "parameterNames": [ + "path", + "obj" + ], + "parameterDescriptions": [ + "the path where the object should be saved", + "the object to be saved" + ], + "description": "Saves the given object to the specified path in the default file type (JSON).", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "save", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "T" + ], + "returns": "void", + "parameterNames": [ + "path", + "obj" + ], + "parameterDescriptions": [ + "the path where the object should be saved", + "the object to be saved" + ], + "description": "Saves the given object to the specified path in the default file type (JSON).", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/saveXML", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "saveXML", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "T" + ], + "returns": "void", + "parameterNames": [ + "path", + "obj" + ], + "parameterDescriptions": [ + "the path where the XML file will be saved", + "the object to be saved as XML" + ], + "description": "Saves the given object as an XML file at the specified path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "saveXML", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "T" + ], + "returns": "void", + "parameterNames": [ + "path", + "obj" + ], + "parameterDescriptions": [ + "the path where the XML file will be saved", + "the object to be saved as XML" + ], + "description": "Saves the given object as an XML file at the specified path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/pixels/Pixels/background", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "signatures": [ + { + "name": "background", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the pixels of the background layer, where the pen and stamps draw.", + "returnDescription": "one colour per pixel", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/pixels/Pixels/constructor", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "signatures": [ + { + "name": "Pixels", + "constructor": true, + "static": false, + "parameters": [ + "processing.core.PGraphics", + "processing.core.PGraphics", + "processing.core.PGraphics" + ], + "returns": "org.openpatch.scratch.extensions.pixels.Pixels", + "parameterNames": [ + "mainBuffer", + "backgroundBuffer", + "foregroundBuffer" + ], + "parameterDescriptions": [ + "where the sprites are drawn", + "where the background is drawn", + "where the foreground is drawn" + ], + "description": "Creates the pixel access for a stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "Pixels", + "constructor": true, + "static": false, + "parameters": [ + "processing.core.PGraphics", + "processing.core.PGraphics", + "processing.core.PGraphics" + ], + "returns": "org.openpatch.scratch.extensions.pixels.Pixels", + "parameterNames": [ + "mainBuffer", + "backgroundBuffer", + "foregroundBuffer" + ], + "parameterDescriptions": [ + "where the sprites are drawn", + "where the background is drawn", + "where the foreground is drawn" + ], + "description": "Creates the pixel access for a stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/pixels/Pixels/foreground", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "signatures": [ + { + "name": "foreground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the pixels of the foreground layer.", + "returnDescription": "one colour per pixel", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/pixels/Pixels/main", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "signatures": [ + { + "name": "main", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the pixels of the layer the sprites are drawn on.", + "returnDescription": "one colour per pixel", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/FFmpegRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "signatures": [ + { + "name": "FFmpegRecorder", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "parameterNames": [ + "path" + ], + "parameterDescriptions": [ + "the path where the recording will be saved\n \n\nThis constructor initializes the FFmpegRecorder by creating a temporary directory and\n setting up a pattern for temporary PNG files. If the temporary directory cannot be created,\n an error message is printed to the console." + ], + "description": "Constructs an FFmpegRecorder object with the specified path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/FFmpegRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "signatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame using the specified pattern.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame using the specified pattern.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/FFmpegRecorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "signatures": [ + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops the recording process and converts the recorded frames into a video file using FFmpeg.\n\nThis method overrides the `stop` method from the superclass. It first calls the superclass's\n`stop` method, then checks if the temporary directory (`tmpDir`) is not null. If it is not\nnull, it constructs a command to run FFmpeg, which converts the recorded frames (stored as PNG\nfiles) into a video file with the specified frame rate and codec.\n\nThe FFmpeg command is executed, and a message is printed to the console indicating that the\nvideo conversion is in progress. If there is an error during the execution of the command, the\nerror message is printed to the console.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/FrameRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "signatures": [ + { + "name": "FrameRecorder", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "parameterNames": [ + "outputFolder" + ], + "parameterDescriptions": [ + "the folder where the recorded frames will be saved" + ], + "description": "Constructs a new FrameRecorder with the specified output folder.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/FrameRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "signatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame of the applet to the specified output folder. The frame is saved as a\nPNG file with a filename pattern \"#######.png\". The exact filename will be generated based on\nthe current frame number.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame of the applet to the specified output folder. The frame is saved as a\nPNG file with a filename pattern \"#######.png\". The exact filename will be generated based on\nthe current frame number.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/FrameRecorder/snapshot", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "signatures": [ + { + "name": "snapshot", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "filename" + ], + "parameterDescriptions": [ + "the name of the file to save the snapshot to" + ], + "description": "Takes a snapshot of the current frame and saves it to the specified filename.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "snapshot", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "filename" + ], + "parameterDescriptions": [ + "the name of the file to save the snapshot to" + ], + "description": "Takes a snapshot of the current frame and saves it to the specified filename.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/GifRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "signatures": [ + { + "name": "GifRecorder", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "parameterNames": [ + "filePath" + ], + "parameterDescriptions": [ + "the path where the GIF file will be saved" + ], + "description": "Constructs a new GifRecorder object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/GifRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "signatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame of the applet as a GIF image.\n\nThis method captures the current frame from the applet, sets the frame rate, and adds the\nframe to the GIF encoder. If the applet's pixels are null, the frame is not saved.\n\nNote: This method catches and ignores any NullPointerException that may occur.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame of the applet as a GIF image.\n\nThis method captures the current frame from the applet, sets the frame rate, and adds the\nframe to the GIF encoder. If the applet's pixels are null, the frame is not saved.\n\nNote: This method catches and ignores any NullPointerException that may occur.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/GifRecorder/snapshot", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "signatures": [ + { + "name": "snapshot", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Captures a snapshot and saves it as a GIF. This method starts the GIF encoder, saves the\ncurrent frame, and then finishes the encoding process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "snapshot", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Captures a snapshot and saves it as a GIF. This method starts the GIF encoder, saves the\ncurrent frame, and then finishes the encoding process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/GifRecorder/start", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "signatures": [ + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Starts the GIF recording process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/GifRecorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "signatures": [ + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops the GIF recording process and finalizes the GIF file.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/Recorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "signatures": [ + { + "name": "Recorder", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.Recorder", + "parameterNames": [ + "path", + "ext" + ], + "parameterDescriptions": [ + "the file path where the recording will be saved", + "the file extension to be used for the recording" + ], + "description": "Constructs a new Recorder object with the specified file path and extension. If the provided\npath does not end with the specified extension, the extension is appended to the path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "Recorder", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.Recorder", + "parameterNames": [ + "path", + "ext" + ], + "parameterDescriptions": [ + "the file path where the recording will be saved", + "the file extension to be used for the recording" + ], + "description": "Constructs a new Recorder object with the specified file path and extension. If the provided\npath does not end with the specified extension, the extension is appended to the path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/Recorder/post", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "signatures": [ + { + "name": "post", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Called after each frame is drawn. This method is registered with the Applet class to ensure\nthat frames are saved at the appropriate time during the recording process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "post", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Called after each frame is drawn. This method is registered with the Applet class to ensure\nthat frames are saved at the appropriate time during the recording process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/Recorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "signatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame. This method should be implemented by subclasses to define the specific\nbehavior for saving a frame.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame. This method should be implemented by subclasses to define the specific\nbehavior for saving a frame.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/Recorder/start", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "signatures": [ + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Starts the recording process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/Recorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "signatures": [ + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops the recording process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shader/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "signatures": [ + { + "name": "Shader", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader", + "parameterNames": [ + "name", + "fragmentShaderPath", + "vertexShaderPath" + ], + "parameterDescriptions": [ + "unique name", + "path to the fragment shader file", + "path to the vertex shader file, or null for Processing's default one" + ], + "description": "Constructor", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Shader", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.extensions.shader.Shader" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader", + "parameterNames": [ + "shader" + ], + "parameterDescriptions": [ + "shader" + ], + "description": "Copy constructor", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shader/getName", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "signatures": [ + { + "name": "getName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the name", + "returnDescription": "the name", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shader/getPShader", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "signatures": [ + { + "name": "getPShader", + "constructor": false, + "static": false, + "parameters": [], + "returns": "processing.opengl.PShader", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shader", + "returnDescription": "the shader", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "Processing's PShader object belongs to the desktop renderer. The browser uses WebGL filters.", + "missingBrowserSignatures": [ + { + "name": "getPShader", + "constructor": false, + "static": false, + "parameters": [], + "returns": "processing.opengl.PShader", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shader", + "returnDescription": "the shader", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "signatures": [ + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "x" + ], + "parameterDescriptions": [ + "the name of the uniform in the shader file", + "the value" + ], + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "boolean" + ], + "returns": "void", + "parameterNames": [ + "name", + "x" + ], + "parameterDescriptions": [ + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "double" + ], + "returns": "void", + "parameterNames": [ + "name", + "x" + ], + "parameterDescriptions": [ + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "x", + "y" + ], + "parameterDescriptions": [ + "", + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "boolean", + "boolean" + ], + "returns": "void", + "parameterNames": [ + "name", + "x", + "y" + ], + "parameterDescriptions": [ + "", + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "name", + "x", + "y" + ], + "parameterDescriptions": [ + "", + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "name", + "vec" + ], + "parameterDescriptions": [ + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int[]", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "values", + "ncoords" + ], + "parameterDescriptions": [ + "", + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "double[]", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "values", + "ncoords" + ], + "parameterDescriptions": [ + "", + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "name", + "c" + ], + "parameterDescriptions": [ + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shader/setName", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "signatures": [ + { + "name": "setName", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "unique name" + ], + "description": "Sets the name", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/add", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader", + "parameterNames": [ + "name", + "fragmentShaderPath", + "vertexShaderPath" + ], + "parameterDescriptions": [ + "a unique name", + "the path to the fragment shader", + "the path to the vertex shader, may be null" + ], + "description": "Adds a shader. If a shader with the given name already exists, that one is\nreturned instead.\n\nThe first shader added is drawn with right away; the ones after it wait\nuntil [switchTo(String)](switchTo) or [next()](next) picks them.\n\nThe vertex shader is usually `null`, which uses Processing's default\none. In the browser any other vertex shader is ignored.", + "returnDescription": "the shader", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "Shaders", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shaders", + "parameterNames": [ + "owner" + ], + "parameterDescriptions": [ + "what the shaders belong to, used in error messages: \"sprite\" or\n \"stage\"" + ], + "description": "Creates an empty set of shaders.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Shaders", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.extensions.shader.Shaders" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shaders", + "parameterNames": [ + "s" + ], + "parameterDescriptions": [ + "the shaders to copy" + ], + "description": "Copies a set of shaders.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/get", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "get", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the shader" + ], + "description": "Returns a shader by name.", + "returnDescription": "the shader, or null if there is none with that name", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/getCurrent", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "getCurrent", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shader", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shader currently drawn with.", + "returnDescription": "the current shader, or null if there is none", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/getCurrentIndex", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "getCurrentIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the position of the current shader.", + "returnDescription": "the position, or -1 if no shader is in use", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/getCurrentName", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "getCurrentName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the name of the current shader.", + "returnDescription": "the name, or null if no shader is in use", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/next", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "next", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switches to the next shader, in the order they were added. After the last\none comes the first one again.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/reset", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "reset", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops drawing with a shader, so the sprite or stage looks as it does\nwithout one. The shaders are kept: [switchTo(String)](switchTo) or\n[next()](next) brings one back.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/switchTo", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "switchTo", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the shader" + ], + "description": "Switches to the shader with the given name, or with the given position in\nthe order the shaders were added. A name that is not there leaves the\ncurrent shader and prints which ones there are.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "switchTo", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "index" + ], + "parameterDescriptions": [ + "the position of the shader" + ], + "description": "Switches to the shader at the given position.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/sorting/Sorting/by", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "by", + "constructor": false, + "static": false, + "parameters": [ + "java.util.Comparator" + ], + "returns": "void", + "parameterNames": [ + "comparator" + ], + "parameterDescriptions": [ + "decides which of two sprites is drawn first" + ], + "description": "Draws sprites in an order of your own.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "by", + "constructor": false, + "static": false, + "parameters": [ + "java.util.Comparator" + ], + "returns": "void", + "parameterNames": [ + "comparator" + ], + "parameterDescriptions": [ + "decides which of two sprites is drawn first" + ], + "description": "Draws sprites in an order of your own.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/sorting/Sorting/byY", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "byY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Draws sprites that are further down the stage in front of sprites that are\nfurther up, which is what a view from above usually wants.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/sorting/Sorting/constructor", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "Sorting", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.sorting.Sorting", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/sorting/Sorting/getComparator", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "getComparator", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.util.Comparator", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the order currently used.", + "returnDescription": "the comparator, or null if the sprites are not sorted", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "getComparator", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.util.Comparator", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the order currently used.", + "returnDescription": "the comparator, or null if the sprites are not sorted", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/sorting/Sorting/isOn", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "isOn", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks whether the sprites are being sorted.", + "returnDescription": "true if an order is set", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/sorting/Sorting/off", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "off", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Draws sprites in the order they were added, which is the default.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/MapObject/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "MapObject", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.MapObject", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "MapObject", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.MapObject", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/tiled/MapObject/getProperty", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "getProperty", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "java.lang.String", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the property to retrieve" + ], + "description": "Retrieves the value of a property with the specified name from the properties\nlist.", + "returnDescription": "the value of the property with the specified name", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/MapObject/getPropertyBoolean", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "getPropertyBoolean", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "boolean", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the property to retrieve" + ], + "description": "Retrieves the value of the specified property as a boolean.", + "returnDescription": "the boolean value of the property, or false if the property is not\n found or cannot be\n parsed as a boolean", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/MapObject/getPropertyFloat", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "getPropertyFloat", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "float", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the property to retrieve" + ], + "description": "Retrieves the value of a specified property as a float.", + "returnDescription": "the float value of the specified property", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/MapObject/getPropertyInt", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "getPropertyInt", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "int", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the property to retrieve" + ], + "description": "Retrieves the value of a property with the specified name and converts it to\nan integer.", + "returnDescription": "the integer value of the property", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/MapObject/getShape", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "getShape", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a Shape object representing the current map object. The type of Shape\nreturned depends\non the properties of the map object: - If the object is a point, a 1x1\nrectangle is returned. -\nIf the object is an ellipse, an Ellipse2D object with the specified width and\nheight is\nreturned. - If the object is a polygon, a Polygon object with the specified\npoints is returned.\n- If none of the above conditions are met, a rectangle with the specified\nwidth and height is\nreturned.", + "returnDescription": "a Shape object representing the current map object.", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "getShape", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a Shape object representing the current map object. The type of Shape\nreturned depends\non the properties of the map object: - If the object is a point, a 1x1\nrectangle is returned. -\nIf the object is an ellipse, an Ellipse2D object with the specified width and\nheight is\nreturned. - If the object is a polygon, a Polygon object with the specified\npoints is returned.\n- If none of the above conditions are met, a rectangle with the specified\nwidth and height is\nreturned.", + "returnDescription": "a Shape object representing the current map object.", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/tiled/MapObject/setClassName", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "setClassName", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "className" + ], + "parameterDescriptions": [ + "" + ], + "description": "Tiled 1.9 renamed an object's type to class; both end up in [type](type)\n(an explicit type wins).", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "setClassName", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "className" + ], + "parameterDescriptions": [ + "" + ], + "description": "Tiled 1.9 renamed an object's type to class; both end up in [type](type)\n(an explicit type wins).", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/tiled/Property/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.Property", + "signatures": [ + { + "name": "Property", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.Property", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "Property", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.Property", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/tiled/Property/setText", + "owner": "org.openpatch.scratch.extensions.tiled.Property", + "signatures": [ + { + "name": "setText", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "the element text" + ], + "description": "Multi-line strings are written as the element's text instead of a value\nattribute.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "setText", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "the element text" + ], + "description": "Multi-line strings are written as the element's text instead of a value\nattribute.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/tiled/TiledMap/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "signatures": [ + { + "name": "TiledMap", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "org.openpatch.scratch.Stage" + ], + "returns": "org.openpatch.scratch.extensions.tiled.TiledMap", + "parameterNames": [ + "path", + "stage" + ], + "parameterDescriptions": [ + "the file path to the Tiled map XML file", + "the stage to which this Tiled map belongs" + ], + "description": "Constructs a new TiledMap object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/TiledMap/getObjectsFromLayer", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "signatures": [ + { + "name": "getObjectsFromLayer", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.tiled.MapObject[]", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the layer from which to retrieve objects" + ], + "description": "Retrieves the objects from a specified layer in the tiled map.", + "returnDescription": "an array of MapObject from the specified layer, or null if the layer\n does not exist", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/TiledMap/stampLayerToBackground", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "signatures": [ + { + "name": "stampLayerToBackground", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the layer to be stamped onto the background" + ], + "description": "Stamps a specified layer onto the background.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/TiledMap/stampLayerToForeground", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "signatures": [ + { + "name": "stampLayerToForeground", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the layer to be stamped to the foreground" + ], + "description": "Stamps the specified layer to the foreground.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/TiledMap/toString", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "signatures": [ + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/TilesetImage/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.TilesetImage", + "signatures": [ + { + "name": "TilesetImage", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.TilesetImage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "TilesetImage", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.TilesetImage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + } + ] +} diff --git a/compatibility/portable-project.md b/compatibility/portable-project.md new file mode 100644 index 00000000..fdb62232 --- /dev/null +++ b/compatibility/portable-project.md @@ -0,0 +1,58 @@ +# Portable Scratch for Java project, version 1 + +A project ZIP contains ordinary UTF-8 Java source files and real asset files. +Paths use `/`, are relative to the project root, and preserve folders and case. +A single enclosing project folder is accepted. Build output, caches and library +JARs are excluded from browser exports. Binary workspace data URLs are decoded +to files; shaders remain UTF-8 text. No source is rewritten by the ZIP codec. + +Optional metadata reuses Studio's `.scratch4j/project.json`: + +```json +{ + "version": 1, + "portableVersion": 1, + "startStage": "Main", + "startFile": "Main.java", + "flavour": "standard", + "libraryVersion": "5.7.0", + "browserFeatures": ["Sprite/clone"], + "lesson": "spielwerkstatt", + "checkpoint": "ef-02-variablen", + "externalDependencies": [], + "desktopFiles": ["List.java"], + "sourceEnvironment": "browser" +} +``` + +`startStage` names a Stage, Window, or Java main class. `startFile` chooses the +browser's entry file. `flavour` is `standard` or `nrw`; it maps to browser +libraries `["scratch"]` or `["scratch", "nrw"]`. Other Studio settings and +unknown optional metadata are retained by browser round trips. Java runs without +the metadata. NRW desktop projects still need their course's Abiturklassen. + +Browser workspace JSON remains an import adapter. Its module names, folder IDs, +settings, source text and data URLs become the same project files. Compact Java +25 source with `void main()` stays a compact file; Studio's launcher supports +instance and static main methods. Studio adds the browser's implicit imports +when adapting workspace JSON or a ZIP marked `sourceEnvironment: "browser"`, +leaving explicit imports intact. `desktopFiles` lists course-provided Java +classes retained as files while the browser uses its built-in NRW classes. +A Studio project without a main method receives a separate generated browser +entry file; existing source files remain intact. Empty folders retain their IDs. + +Archives with unsafe paths, conflicting names, invalid metadata, unsupported +schema versions, corrupt UTF-8, more than 2,000 files, files over 16 MiB, or total +uncompressed contents over 64 MiB fail before replacing the current workspace. +Studio also accepts older shared ZIPs containing bundled JARs, with a separate +128 MiB per-file / 256 MiB total limit. These legacy ZIPs are larger than the +portable browser limit and should use Studio's browser export before transfer. + +Unsupported browser features, newer library requirements, external dependencies +and legacy spritesheets produce actionable messages. No adapter downloads or +executes dependencies. Legacy spritesheet archives require extraction into real +image files before portable export. + +The ZIP stores source and assets; it does not certify that arbitrary Java code +works in both compilers. Review `/compatibility` and the importing compiler's +diagnostics. Keep a saved copy when moving between environments. diff --git a/compatibility/probes/LifecycleProbe.java b/compatibility/probes/LifecycleProbe.java new file mode 100644 index 00000000..a326b499 --- /dev/null +++ b/compatibility/probes/LifecycleProbe.java @@ -0,0 +1,103 @@ +import org.openpatch.scratch.*; +import org.openpatch.scratch.extensions.shader.Shaders; +import org.openpatch.scratch.extensions.sorting.Sorting; + +public class LifecycleProbe { + public static void main(String[] args) { + new ProbeStage(); + } +} + +class ProbeSprite extends Sprite { + static int constructions = 0; + int score = 7; + int[] shared = { 1 }; + int starts = 0; + int messages = 0; + int removals = 0; + ProbeSprite() { + constructions++; + addCostume("slimeGreen"); + setPosition(30, -20); + getPen().setSize(5); + } + public void whenStartsAsClone() { + if (!isClone() || getStage() == null) throw new RuntimeException("clone hook ordering"); + starts++; + score++; + } + public void whenIReceive(String message) { messages++; } + public void whenRemovedFromStage() { + if (getStage() != null) throw new RuntimeException("removal hook ordering"); + removals++; + } + public void run() { changeX(1); } +} + +class ProbeStage extends Stage { + ProbeSprite original; + ProbeSprite copy; + int frames = 0; + ProbeStage() { + super(600, 240); + Window.getInstance().pause(); + original = new ProbeSprite(); + add(original); + copy = (ProbeSprite) original.clone(); + copy.getPen().setSize(9); + copy.shared[0] = 2; + System.out.println("clone.constructor=" + ProbeSprite.constructions); + System.out.println("clone.score=" + copy.score); + System.out.println("original.score=" + original.score); + System.out.println("clone.starts=" + copy.starts); + System.out.println("clone.shared=" + original.shared[0]); + System.out.println("clone.timer=" + (copy.getTimer() != original.getTimer())); + System.out.println("clone.pen=" + (original.getPen().getSize() == 5)); + System.out.println("clone.x=" + (copy.getX() == 30)); + System.out.println("clone.width=" + (copy.getWidth() == original.getWidth())); + broadcast("first"); + System.out.println("broadcast.original=" + original.messages); + System.out.println("broadcast.clone=" + copy.messages); + copy.deleteThisClone(); + copy.deleteThisClone(); + original.deleteThisClone(); + broadcast("second"); + System.out.println("removed.messages=" + copy.messages); + System.out.println("removed.hook=" + copy.removals); + System.out.println("original.messages=" + original.messages); + add(copy); + broadcast("third"); + System.out.println("readded.messages=" + copy.messages); + remove(copy); + System.out.println("removed.again=" + copy.removals); + Pen pen = new Pen(original); + pen.setColor(255, 0, 0); + Pen copiedPen = new Pen(pen); + copiedPen.changeColor(30); + System.out.println("pen.color=" + (pen.getColor().getRed() == 255)); + Text text = new Text("hello", 20, 30, 100); + Text copiedText = new Text(text); + copiedText.setX(40); + System.out.println("text.copy=" + (text.getX() == 20 && copiedText.getY() == 30)); + new Text(original); + Shaders shaders = new Shaders("probe"); + System.out.println("shaders.copy=" + (new Shaders(shaders).getCurrentIndex() == shaders.getCurrentIndex())); + System.out.println("color.hash=" + (new Color(255, 128, 0).hashCode() == -1348971425)); + System.out.println("sorting=" + !new Sorting().isOn()); + new HtmlColor(); + text.remove(); + copiedText.remove(); + showVariable("frames", () -> frames); + showVariable("decimal", () -> 1.234); + showVariable("array", () -> original.shared); + showVariable("broken", () -> { throw new RuntimeException("supplier failure"); }); + original.showVariable("score", () -> original.score); + showVariable("timer", () -> original.getTimer("elapsed").afterMillis(100)); + showVariable("unused", () -> 99); + hideVariable("unused"); + original.say("timed", 100); + original.glide(0.1, 90, -20); + System.out.println("ready"); + } + public void run() { frames++; } +} diff --git a/compatibility/probes/lifecycle-expected.txt b/compatibility/probes/lifecycle-expected.txt new file mode 100644 index 00000000..c075f2c1 --- /dev/null +++ b/compatibility/probes/lifecycle-expected.txt @@ -0,0 +1,22 @@ +clone.constructor=1 +clone.score=8 +original.score=7 +clone.starts=1 +clone.shared=2 +clone.timer=true +clone.pen=true +clone.x=true +clone.width=true +broadcast.original=1 +broadcast.clone=1 +removed.messages=1 +removed.hook=1 +original.messages=2 +readded.messages=2 +removed.again=2 +pen.color=true +text.copy=true +shaders.copy=true +color.hash=true +sorting=true +ready diff --git a/course/assessment.md b/course/assessment.md new file mode 100644 index 00000000..08949d7e --- /dev/null +++ b/course/assessment.md @@ -0,0 +1,12 @@ +# Evidence and assessment + +| Criterion | Developing | Secure | Extending | +| --- | --- | --- | --- | +| Java model | Can identify a stage and sprite | Explains fields, methods and one frame of run | Explains object identity and shared clone references | +| Sequencing | Uses a working example | Uses timers/state without blocking a frame | Explains event order and compares runtimes | +| Testing | Runs once and watches | Tests boundaries, collisions and scoring with evidence | Adds a deterministic behavioral check | +| Saving and transfer | Saves a file | Reopens a project with its assets and chosen flavor | Explains a compatibility limitation and adapts it | +| Reflection | Describes the change | Gives evidence and reasons in the diary | Compares alternatives and justifies the choice | + +Assess explanations and the student's own modification. Finished checkpoints +are examples, not assessment submissions. Preserve existing reflection questions. diff --git a/course/pilot.md b/course/pilot.md new file mode 100644 index 00000000..95c18548 --- /dev/null +++ b/course/pilot.md @@ -0,0 +1,27 @@ +# Classroom pilot — observations pending + +No student or teacher pilot has been performed as part of repository validation. +Record actual observations here or in a copy; automated tests cannot fill this in. + +| Session/date | OS/device | Studio/library/browser revision | Offline? | Role | +| --- | --- | --- | --- | --- | +| | | | | | + +Observe installation, first start, the rabbit task, saving and reopening, +browser → Studio → browser transfer, and recovery from a deliberately interrupted +save of a disposable project. Ask the teacher to prepare the pack without help. + +For each task record completion, time, the exact confusing wording or action, +and what helped. Use participant codes without collecting student names. + +| Task | Result/time | Observed friction | Evidence | Proposed fix/priority | +| --- | --- | --- | --- | --- | +| Installation and first start | | | | | +| First program | | | | | +| Save and reopen | | | | | +| Transfer with assets | | | | | +| Recovery | | | | | +| Offline teacher preparation | | | | | + +Choose fixes from these observations and repeat the affected task with the same +tested versions. Keep the pilot item open until observations have been collected. diff --git a/course/teacher-notes.md b/course/teacher-notes.md new file mode 100644 index 00000000..b8868d60 --- /dev/null +++ b/course/teacher-notes.md @@ -0,0 +1,27 @@ +# Teacher notes + +Prepare Studio on a school computer, both bundled library flavors, the course +ZIP, and a writable student folder. Import the pack while offline and run a +standard project and an NRW checkpoint before class. NRW projects include the +course-provided Abiturklassen; keep those files with the project. + +The seven tutorials progress through sprites, animation, collisions, messages, +input, custom assets and stage switching. Plan roughly a lesson for each small +chapter and more time for the hedgehog game. Starters build from earlier code; +checkpoints provide a recovery point, not the student's final submission. + +Use the Spielwerkstatt choices for independent mechanics, arrays and score +testing. Retain the Entwicklertagebuch and its questions about changes, testing +and reasons. Ask students to explain a decision before showing a checkpoint. + +At the end of each lesson students save their Java folder or a project ZIP. +Have them reopen it and run one meaningful check. Browser storage stays on that +computer; download JSON or ZIP before switching devices. Studio imports both. + +Transfer during the movement/collision lessons and record flavor, library and +browser revision. A compiling project still needs a behavior check. Avoid desktop +recording, file-system and Tiled APIs in projects intended for the browser. + +Keep offline Markdown lessons and asset license notices. Hyperbook-specific +directives remain in the original lesson files; prepared Java projects and assets +are directly usable without serving the book. diff --git a/docs/book/catalogs.md b/docs/book/catalogs.md new file mode 100644 index 00000000..00d31bdd --- /dev/null +++ b/docs/book/catalogs.md @@ -0,0 +1,52 @@ +--- +name: Release catalogs +--- + +# Release catalogs + +Library 5.7.0; browser 5.7.0-browser.2. + +Generated release metadata is available offline inside the library JAR and Studio. + +- [API signatures, documentation and translations](/catalogs/api.json) +- [Images, atlas geometry and sounds](/catalogs/assets.json) +- [Examples and source checksums](/catalogs/examples.json) + +## Examples + +| Example | Flavor | Library | +| --- | --- | --- | +| demo/cat | standard | 5.7.0 | +| demo/catPlatformer | standard | 5.7.0 | +| demo/clock | standard | 5.7.0 | +| demo/coinCollector | standard | 5.7.0 | +| demo/donutIO | standard | 5.7.0 | +| demo/glide | standard | 5.7.0 | +| demo/pipes | standard | 5.7.0 | +| demo/quiz | standard | 5.7.0 | +| demo/rainbowVine | standard | 5.7.0 | +| demo/randomDot | standard | 5.7.0 | +| demo/robot | standard | 5.7.0 | +| demo/saving | standard | 5.7.0 | +| demo/sensing | standard | 5.7.0 | +| demo/shader | standard | 5.7.0 | +| demo/shakespeare | standard | 5.7.0 | +| demo/smartRocket | standard | 5.7.0 | +| demo/stressTest | standard | 5.7.0 | +| demo/tiled | standard | 5.7.0 | +| demo/timedDot | standard | 5.7.0 | +| demo/timer | standard | 5.7.0 | +| demo/ui | standard | 5.7.0 | +| demo/volume | standard | 5.7.0 | +| tutorial/Halloween | standard | 5.7.0 | +| tutorial/bluej-starter | standard | 5.7.0 | +| tutorial/bouncy-hedgehog | standard | 5.7.0 | +| tutorial/bouncy-hedgehog-100 | standard | 5.7.0 | +| tutorial/cat | standard | 5.7.0 | +| tutorial/catch-the-coins-100 | standard | 5.7.0 | +| tutorial/dodge-the-rocks-100 | standard | 5.7.0 | +| tutorial/getting-started-100 | standard | 5.7.0 | +| tutorial/guess-the-number-100 | standard | 5.7.0 | +| tutorial/make-it-walk-100 | standard | 5.7.0 | +| tutorial/red-light-green-light-100 | standard | 5.7.0 | +| tutorial/vs-code-starter | standard | 5.7.0 | diff --git a/docs/book/changelog.md b/docs/book/changelog.md index f15aa370..82048022 100644 --- a/docs/book/changelog.md +++ b/docs/book/changelog.md @@ -1,9 +1,196 @@ --- name: Changelog -index: 66 +index: 74 lang: en --- +## 5.7.0 + + + +Sprites load their costumes without a window, so sizes, costume switching, +hitboxes and clones can be checked in plain unit tests. Without a window, +timers stand at 0. + + +Variable monitors, like Scratch's "show variable": `showVariable("score", () -> +score)` on a stage or a sprite shows the name and the current value in the top +left corner of the stage, updated every frame, and `hideVariable("score")` +takes it away. A sprite's monitor says whose variable it is, for example "Cat: +lives". + + +The game can be paused, stepped and slowed down: `Window.getInstance().pause()`, +`resume()`, `isPaused()`, `step()` (one frame while paused) and +`setGameSpeed(0.5)` for half speed. `run()`, timers, gliding, animations and +timed speech bubbles all follow, so the whole game stands still or runs in slow +motion while the window keeps drawing; keys and clicks still arrive, so a key +can resume the game. `Timer.millis()` and `getDeltaTime()` count game time, +which is the real time as long as the game is neither paused nor sped up. + + +Clones work like Scratch's. `clone()` makes a clone of the same class (a clone +of a `Cat` is a `Cat`, with a copy of its variables), puts it on the stage right +behind the original and runs its new `whenStartsAsClone()`, "when I start as a +clone". `deleteThisClone()` removes a clone and leaves the original alone, and +`isClone()` tells them apart. + +```java +public void whenStartsAsClone() { + this.goToRandomPosition(); +} +``` + +Before, `clone()` returned a plain `Sprite` that was not on the stage, so it +neither showed up nor ran the class's `run()`. A copy made with `new +Sprite(other)` also drew with the other sprite's pen; it has its own now. + + +## 5.6.0 + + + +Tiled maps now load CSV and Base64 tile layers, including zlib and gzip compression, tile flips, external tilesets, grouped layers, and class properties. Unsupported map formats now give clearer errors. + + +## 5.5.0 + + + +A sprite with rotation style `LEFT_RIGHT` that faces left now has its hitbox +mirrored along with its costume. The costume was drawn flipped but the hitbox +was not, so a costume whose painted part is not in the middle of its canvas +collided with the empty side - and a hitbox set with `setHitbox` to cover, say, +only the front of a sprite stayed at its back after it turned around. Speech +and thought bubbles follow the mirrored costume as well. The Online IDE already +mirrored the hitbox. + + +Sprites can sense colours, like Scratch's `touching color?` and +`color is touching color?` blocks: + +```java +if (this.isTouchingColor(HtmlColor.RED)) { ... } +if (this.isTouchingColor(255, 0, 0)) { ... } +if (this.isColorTouchingColor(HtmlColor.YELLOW, HtmlColor.BLUE)) { ... } +``` + +A sprite touches a colour when anything it paints lies over that colour on the +stage: on the backdrop, on what the pen drew, or on another sprite. Nearly +equal colours count, with the same tolerance as Scratch, so anti-aliased edges +still match. The check only looks at the pixels the sprite covers, so it costs +the same on a 480 x 360 stage as on a 1920 x 1080 one; a 128 x 128 sprite takes +well under a millisecond. + + +A sprite can turn around a point of its own choosing, like Scratch's rotation +center: + +```java +this.setRotationCenter(54, 239); // in the costume's pixels, from its top left corner +``` + +The point sits at the sprite's position, the costume turns and mirrors around +it, and the hitbox, stamps, speech bubbles and colour sensing follow. It is +given like the points of `setHitbox`, grows with the sprite's size and holds +for every costume. Without it, a sprite turns around the middle of its costume +as before. + + +`getShaders().add(name, fragmentShaderPath, null)` works. Leaving out the +vertex shader is what the documentation shows, but it stopped the program with +a `NullPointerException`; Processing's default vertex shader is now used. + + +Every built-in sprite with a front now faces right, the way a sprite with +direction 90 faces in Scratch. The ships, lasers and other parts of the space +shooter sheet were drawn pointing up (the enemies down), and the bee, fly, +fishes, frog, ladybug, mouse, slimes, snail and worms of the platformer sheet +facing left. So a slime walking right with `move` walked backwards, and a ship +told to `pointTowardsMousePointer` pointed its side at the mouse. They are now +turned when they are loaded. A program that showed a ship pointing up at +direction 90 now shows it pointing right; `setDirection(0)` points it up, and +then `move` flies it up as well. + + +A broadcast now reaches every sprite on the stage and the stage itself, as in +Scratch and in the Online IDE. `Sprite.broadcast` left out the sprite that sent +it, and `Stage.broadcast` left out the stage, so a sprite or stage that reacts +to its own message in `whenIReceive` never heard it. A sprite that broadcasts +the same message from its own `whenIReceive` now calls itself again, as the +same script does in Scratch. + + +## 5.4.2 + + + +A speech or thought bubble now hangs off the top right corner of what is +painted on the sprite's costume, not off its hitbox. A sprite whose hitbox was +set to just its feet - so that it can stand in front of a tree without getting +stuck on it - got its bubble at its feet instead of above its head. The Online +IDE already placed the bubble this way. Collisions still use the hitbox. + + +## 5.4.1 + + + +A sprite's size now also applies to costumes added after `setSize(...)`. +`setSize` only resized the costumes the sprite already had, so a sprite that +set its size in the constructor and got its costume later, for example from a +subclass, was drawn at 100 %. `addCostume(...)` and `addCostumes(...)` now give +a new costume the sprite's current size, as the Online IDE already did. + + +## 5.4.0 + + + +Add an NRW version of the library, `scratch--nrw-all.jar`, for courses that use the classes of the NRW Zentralabitur. In it, `Stage.find`, `Stage.getAll` and `Sprite.getTouchingSprites` return the Abitur's `List` instead of `java.util.List`, so students can write `List gegner = find(Gegner.class);`. `List.java` from the Abitur classes has to be in the project's default package. The normal JAR is unchanged. + + +## 5.3.1 + + + +Stamps are visible again. Everything drawn with a stamp — the layers of a +`TiledMap`, and `Sprite.stamp(...)` — passed the ghost effect straight to +Processing as an alpha value, where 0 means "draw nothing" instead of "no ghost +effect". A fully opaque image was therefore stamped fully transparent, which is +why a tile map rendered as an empty stage. + + +## 5.3.0 + + + +Plain text now sits on the position it was given. It used to be drawn eight +pixels down and to the right of it - the padding a framed style needs between +its border and its words, which plain words have no use for - so a centred label +never landed on the thing it labelled: a number put at the middle of a line came +out beside it. The words are now centred on their position, the way a sprite put +there is. + +A width too narrow to hold a single letter no longer wraps the words at all. It +used to turn them into a column of one letter per line: `new Text("42", x, y, 1)` +drew a 4 above a 2. Line breaks written into the text are still kept. + +`Text` can also be layered like a sprite: `goToFrontLayer()`, `goToBackLayer()`, +`goLayersForwards(int)` and `goLayersBackwards(int)` decide which of several +overlapping texts is on top. Texts are drawn above the sprites, so this orders a +text against the other texts. + + +A class that extends `Window` and has a `main` method which is not static no +longer fails with "Cannot create multiple Windows!". Since Java 21 the JVM +builds an instance of such a class before it calls `main`, so the +`new MyWindow()` inside `main` was the second window and the project stopped +before it started. That window is now reused, and a note explains how to be rid +of the extra one by making `main` static. Two windows asked for by the project +itself are still an error. + + ## 5.2.0 diff --git a/docs/book/classroom.md b/docs/book/classroom.md new file mode 100644 index 00000000..67ee5fc9 --- /dev/null +++ b/docs/book/classroom.md @@ -0,0 +1,63 @@ +--- +name: Classroom course +--- + +# Scratch to Java course + +Start with the seven [introductory tutorials](/tutorials), then choose a +[Spielwerkstatt](https://informatik.openpatch.org/projekte/spielwerkstatt) mechanic. +Each tutorial has a starter based on the previous lesson and a finished checkpoint. +Keep the reflection questions and Entwicklertagebuch alongside the code. + +The course pack contains ordinary Java projects, assets, Markdown lessons, +teacher notes, assessment criteria and a classroom pilot form. Studio's +**Project > Import course pack** command copies its bundled library into each +project. Prepare both standard and NRW flavors before disconnecting the school +computer from the internet. + +The implementation targets desktop library **5.7.0**, browser **5.7.0-browser.2**, +Java **17** for named library projects and Java **25** for Studio/compact files. +ZIP transfer, test adaptation and course import require the coordinated IDE +update. Check [compatibility](/compatibility) and the downloaded IDE's release notes; +these capabilities are not present in every older build. + +## Prepare a class + +1. Import the pack into a writable course folder. Each student works on a copy. +2. Run the first rabbit project and an NRW checkpoint while offline. +3. Save and reopen the folder, then export a project ZIP. +4. Try that ZIP in the class's browser revision. Download the edited ZIP or + workspace JSON and reopen it in Studio. +5. In the score checkpoint, select **Run > Run behavior checks** in Studio or + the browser's **Testrunner**. Checks travel with the project. + +Use checkpoints to recover a working starting point. Assess the explanation, +evidence from testing and a student's own change. Keep the reflection activities. + +## Build an offline pack + +From the library repository: + +```sh +python3 scripts/build-course-pack.py --output target/scratch-to-java-course.zip +``` + +Include the four selected Spielwerkstatt checkpoints using an explicit checkout: + +```sh +python3 scripts/build-course-pack.py --curriculum /path/to/hyperbook-informatik \ + --output target/scratch-to-java-course.zip +``` + +[Download the tutorial pack](/scratch-to-java-course.zip) generated with this documentation. +Release automation attaches the complete `scratch-to-java-course.zip` after the coordinated +changes are released. Local documentation builds generate the seven-tutorial pack. +The source teacher material is in `course/`. Markdown copies retain Hyperbook +directives; prepared Java and assets are directly usable offline. + +## Classroom pilot + +The pilot has not yet been carried out with students or teachers. Use `pilot.md` +from the pack to record installation, first run, save/reopen, device transfer and +recovery observations, with OS and IDE/library versions. Feed observed friction +back into the next revision. diff --git a/docs/book/compatibility.md b/docs/book/compatibility.md new file mode 100644 index 00000000..6a87608a --- /dev/null +++ b/docs/book/compatibility.md @@ -0,0 +1,500 @@ +--- +name: Browser compatibility +--- + +# Browser compatibility + +Desktop library: **5.7.0**. Browser implementation: **5.7.0-browser.2**. + +Generated by `scripts/browser-compatibility.py`. [Download the machine-readable contract](/compatibility.json). + +Public constructors and method groups documented by the Javadoc doclet. Overload matching uses simple erased parameter names, constructor kind and static/instance kind; qualified parameter and return types are recorded. This is a source compatibility inventory, not a binary compatibility guarantee. + +## Library flavors + +| Flavor | Embedded libraries | List type | +| --- | --- | --- | +| standard | `scratch` | `java.util.List` | +| nrw | `scratch, nrw` | `nrw.List` | + +## Limits of this revision + +- Availability describes documented member groups and browser declarations. Compilation tests do not prove rendering, timing or complete behavioral parity. +- Fragment shaders use WebGL. Custom vertex shaders are desktop-only; the browser substitutes its default vertex shader. +- File-system, pixel-buffer, recorder and Tiled APIs are desktop-only. Browser declarations can be stubs that report the limitation. +- Reference examples are compiled with the standard flavor. Existing NRW runtime fixtures and a separate declaration inventory cover the NRW flavor. +- Java compiler dialect differences also apply, including Java package access and unsupported standard-library methods. + +## Documented API + +An implemented entry has its documented overloads declared in the browser. The reference compilation gate checks the code examples; rendering and timing need separate runtime tests. + +| API group | Browser availability | Details | +| --- | --- | --- | +| [AnimatedSprite/addAnimation](/reference/AnimatedSprite/addAnimation) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [AnimatedSprite/clone](/reference/AnimatedSprite/clone) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [AnimatedSprite/constructor](/reference/AnimatedSprite/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [AnimatedSprite/getAnimationFrame](/reference/AnimatedSprite/getAnimationFrame) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [AnimatedSprite/getAnimationInterval](/reference/AnimatedSprite/getAnimationInterval) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [AnimatedSprite/isAnimationPlayed](/reference/AnimatedSprite/isAnimationPlayed) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [AnimatedSprite/playAnimation](/reference/AnimatedSprite/playAnimation) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [AnimatedSprite/resetAnimation](/reference/AnimatedSprite/resetAnimation) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [AnimatedSprite/setAnimationFrame](/reference/AnimatedSprite/setAnimationFrame) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [AnimatedSprite/setAnimationInterval](/reference/AnimatedSprite/setAnimationInterval) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [AnimatedSprite/toString](/reference/AnimatedSprite/toString) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Circle/constructor](/reference/Circle/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Clock/constructor](/reference/Clock/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Clock/getDay](/reference/Clock/getDay) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Clock/getDayOfWeek](/reference/Clock/getDayOfWeek) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Clock/getDaysSince2000](/reference/Clock/getDaysSince2000) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Clock/getHour](/reference/Clock/getHour) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Clock/getMillisecond](/reference/Clock/getMillisecond) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Clock/getMinute](/reference/Clock/getMinute) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Clock/getMonth](/reference/Clock/getMonth) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Clock/getSecond](/reference/Clock/getSecond) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Clock/getYear](/reference/Clock/getYear) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/changeColor](/reference/Color/changeColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/constructor](/reference/Color/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/equals](/reference/Color/equals) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/get](/reference/Color/get) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/getBlue](/reference/Color/getBlue) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/getGreen](/reference/Color/getGreen) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/getH](/reference/Color/getH) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/getHSB](/reference/Color/getHSB) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/getL](/reference/Color/getL) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/getRed](/reference/Color/getRed) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/getS](/reference/Color/getS) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/hashCode](/reference/Color/hashCode) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/setHSB](/reference/Color/setHSB) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/setRGB](/reference/Color/setRGB) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Color/toString](/reference/Color/toString) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Ellipse/constructor](/reference/Ellipse/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Hitbox/constructor](/reference/Hitbox/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Hitbox/contains](/reference/Hitbox/contains) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Hitbox/getBounds](/reference/Hitbox/getBounds) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Hitbox/getShape](/reference/Hitbox/getShape) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Hitbox/intersects](/reference/Hitbox/intersects) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Hitbox/translateAndRotateAndResize](/reference/Hitbox/translateAndRotateAndResize) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [HtmlColor/constructor](/reference/HtmlColor/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [HtmlColor/getRandom](/reference/HtmlColor/getRandom) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/absOf](/reference/Operators/absOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/acosOf](/reference/Operators/acosOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/asinOf](/reference/Operators/asinOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/atanOf](/reference/Operators/atanOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/ceilingOf](/reference/Operators/ceilingOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/constrain](/reference/Operators/constrain) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/constructor](/reference/Operators/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/cosOf](/reference/Operators/cosOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/eToThePowerOf](/reference/Operators/eToThePowerOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/floorOf](/reference/Operators/floorOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/lerp](/reference/Operators/lerp) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/lnOf](/reference/Operators/lnOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/logOf](/reference/Operators/logOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/map](/reference/Operators/map) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/max](/reference/Operators/max) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/min](/reference/Operators/min) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/mod](/reference/Operators/mod) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/round](/reference/Operators/round) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/sinOf](/reference/Operators/sinOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/sqrtOf](/reference/Operators/sqrtOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/tanOf](/reference/Operators/tanOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Operators/tenToThePowerOf](/reference/Operators/tenToThePowerOf) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/changeColor](/reference/Pen/changeColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/changeSize](/reference/Pen/changeSize) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/changeTransparency](/reference/Pen/changeTransparency) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/constructor](/reference/Pen/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/down](/reference/Pen/down) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/eraseAll](/reference/Pen/eraseAll) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/getColor](/reference/Pen/getColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/getSize](/reference/Pen/getSize) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/goToBackground](/reference/Pen/goToBackground) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/goToForeground](/reference/Pen/goToForeground) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/goToMousePointer](/reference/Pen/goToMousePointer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/goToRandomPosition](/reference/Pen/goToRandomPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/isInBackground](/reference/Pen/isInBackground) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/setColor](/reference/Pen/setColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/setPosition](/reference/Pen/setPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/setSize](/reference/Pen/setSize) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/setTransparency](/reference/Pen/setTransparency) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/stamp](/reference/Pen/stamp) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Pen/up](/reference/Pen/up) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Polygon/addPoint](/reference/Polygon/addPoint) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Polygon/constructor](/reference/Polygon/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Random/constructor](/reference/Random/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Random/noise](/reference/Random/noise) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Random/noiseSeed](/reference/Random/noiseSeed) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Random/random](/reference/Random/random) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Random/randomInt](/reference/Random/randomInt) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Random/randomPosition](/reference/Random/randomPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Random/randomSeed](/reference/Random/randomSeed) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Random/randomVector2](/reference/Random/randomVector2) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Random/randomX](/reference/Random/randomX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Random/randomY](/reference/Random/randomY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Rectangle/constructor](/reference/Rectangle/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Shape/constructor](/reference/Shape/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Shape/contains](/reference/Shape/contains) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Shape/getBounds](/reference/Shape/getBounds) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Shape/intersects](/reference/Shape/intersects) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Shape/rotate](/reference/Shape/rotate) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Shape/scale](/reference/Shape/scale) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Shape/translate](/reference/Shape/translate) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/addCostume](/reference/Sprite/addCostume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/addCostumes](/reference/Sprite/addCostumes) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/addSound](/reference/Sprite/addSound) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/ask](/reference/Sprite/ask) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/broadcast](/reference/Sprite/broadcast) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/changePosition](/reference/Sprite/changePosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/changeSize](/reference/Sprite/changeSize) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/changeTint](/reference/Sprite/changeTint) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/changeTransparency](/reference/Sprite/changeTransparency) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/changeVolume](/reference/Sprite/changeVolume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/changeX](/reference/Sprite/changeX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/changeY](/reference/Sprite/changeY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/clone](/reference/Sprite/clone) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/constructor](/reference/Sprite/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/debug](/reference/Sprite/debug) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/deleteThisClone](/reference/Sprite/deleteThisClone) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/disableHitbox](/reference/Sprite/disableHitbox) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/distanceToMousePointer](/reference/Sprite/distanceToMousePointer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/distanceToSprite](/reference/Sprite/distanceToSprite) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/enableHitbox](/reference/Sprite/enableHitbox) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getAnswer](/reference/Sprite/getAnswer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getCurrentCostumeIndex](/reference/Sprite/getCurrentCostumeIndex) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getCurrentCostumeName](/reference/Sprite/getCurrentCostumeName) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getDeltaTime](/reference/Sprite/getDeltaTime) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getDirection](/reference/Sprite/getDirection) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getHeight](/reference/Sprite/getHeight) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getHitbox](/reference/Sprite/getHitbox) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getMouse](/reference/Sprite/getMouse) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getMouseX](/reference/Sprite/getMouseX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getMouseY](/reference/Sprite/getMouseY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getPen](/reference/Sprite/getPen) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getPosition](/reference/Sprite/getPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getShaders](/reference/Sprite/getShaders) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getSize](/reference/Sprite/getSize) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getStage](/reference/Sprite/getStage) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getText](/reference/Sprite/getText) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getTimer](/reference/Sprite/getTimer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getTint](/reference/Sprite/getTint) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getTouchingSprite](/reference/Sprite/getTouchingSprite) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getTouchingSprites](/reference/Sprite/getTouchingSprites) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getTransparency](/reference/Sprite/getTransparency) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getVolume](/reference/Sprite/getVolume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getWidth](/reference/Sprite/getWidth) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getX](/reference/Sprite/getX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/getY](/reference/Sprite/getY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/glide](/reference/Sprite/glide) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/goLayersBackwards](/reference/Sprite/goLayersBackwards) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/goLayersForwards](/reference/Sprite/goLayersForwards) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/goToBackLayer](/reference/Sprite/goToBackLayer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/goToFrontLayer](/reference/Sprite/goToFrontLayer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/goToMousePointer](/reference/Sprite/goToMousePointer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/goToRandomPosition](/reference/Sprite/goToRandomPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/goToSprite](/reference/Sprite/goToSprite) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/hide](/reference/Sprite/hide) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/hideVariable](/reference/Sprite/hideVariable) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/ifOnEdgeBounce](/reference/Sprite/ifOnEdgeBounce) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isAsking](/reference/Sprite/isAsking) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isClone](/reference/Sprite/isClone) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isColorTouchingColor](/reference/Sprite/isColorTouchingColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isGliding](/reference/Sprite/isGliding) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isKeyPressed](/reference/Sprite/isKeyPressed) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isMouseDown](/reference/Sprite/isMouseDown) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isSoundPlaying](/reference/Sprite/isSoundPlaying) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isTouchingColor](/reference/Sprite/isTouchingColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isTouchingEdge](/reference/Sprite/isTouchingEdge) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isTouchingMousePointer](/reference/Sprite/isTouchingMousePointer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isTouchingSprite](/reference/Sprite/isTouchingSprite) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/isVisible](/reference/Sprite/isVisible) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/move](/reference/Sprite/move) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/nextCostume](/reference/Sprite/nextCostume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/pickRandom](/reference/Sprite/pickRandom) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/playSound](/reference/Sprite/playSound) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/pointInDirection](/reference/Sprite/pointInDirection) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/pointTowardsMousePointer](/reference/Sprite/pointTowardsMousePointer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/pointTowardsSprite](/reference/Sprite/pointTowardsSprite) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/previousCostume](/reference/Sprite/previousCostume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/remove](/reference/Sprite/remove) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/run](/reference/Sprite/run) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/say](/reference/Sprite/say) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setDirection](/reference/Sprite/setDirection) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setHitbox](/reference/Sprite/setHitbox) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setPosition](/reference/Sprite/setPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setRotationCenter](/reference/Sprite/setRotationCenter) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setRotationStyle](/reference/Sprite/setRotationStyle) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setSize](/reference/Sprite/setSize) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setTint](/reference/Sprite/setTint) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setTransparency](/reference/Sprite/setTransparency) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setVolume](/reference/Sprite/setVolume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setX](/reference/Sprite/setX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/setY](/reference/Sprite/setY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/show](/reference/Sprite/show) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/showVariable](/reference/Sprite/showVariable) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/stamp](/reference/Sprite/stamp) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/stopAllSounds](/reference/Sprite/stopAllSounds) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/stopSound](/reference/Sprite/stopSound) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/switchCostume](/reference/Sprite/switchCostume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/think](/reference/Sprite/think) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/turnLeft](/reference/Sprite/turnLeft) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/turnRight](/reference/Sprite/turnRight) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/whenAddedToStage](/reference/Sprite/whenAddedToStage) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/whenBackdropSwitches](/reference/Sprite/whenBackdropSwitches) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/whenClicked](/reference/Sprite/whenClicked) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/whenIReceive](/reference/Sprite/whenIReceive) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/whenKeyPressed](/reference/Sprite/whenKeyPressed) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/whenKeyReleased](/reference/Sprite/whenKeyReleased) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/whenMouseClicked](/reference/Sprite/whenMouseClicked) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/whenMouseMoved](/reference/Sprite/whenMouseMoved) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/whenRemovedFromStage](/reference/Sprite/whenRemovedFromStage) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Sprite/whenStartsAsClone](/reference/Sprite/whenStartsAsClone) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/add](/reference/Stage/add) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/addBackdrop](/reference/Stage/addBackdrop) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/addSound](/reference/Stage/addSound) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/ask](/reference/Stage/ask) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/broadcast](/reference/Stage/broadcast) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/changeColor](/reference/Stage/changeColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/changeTint](/reference/Stage/changeTint) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/changeTransparency](/reference/Stage/changeTransparency) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/changeVolume](/reference/Stage/changeVolume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/constructor](/reference/Stage/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/count](/reference/Stage/count) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/debug](/reference/Stage/debug) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/display](/reference/Stage/display) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/eraseAll](/reference/Stage/eraseAll) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/exit](/reference/Stage/exit) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/find](/reference/Stage/find) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getAll](/reference/Stage/getAll) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getAnswer](/reference/Stage/getAnswer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getCamera](/reference/Stage/getCamera) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getColor](/reference/Stage/getColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getCurrentBackdropIndex](/reference/Stage/getCurrentBackdropIndex) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getCurrentBackdropName](/reference/Stage/getCurrentBackdropName) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getDeltaTime](/reference/Stage/getDeltaTime) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getFrameRate](/reference/Stage/getFrameRate) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getHeight](/reference/Stage/getHeight) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getMouse](/reference/Stage/getMouse) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getMouseX](/reference/Stage/getMouseX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getMouseY](/reference/Stage/getMouseY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getPixels](/reference/Stage/getPixels) | desktop-only | The desktop pixel buffer is not exposed by the browser renderer. | +| [Stage/getShaders](/reference/Stage/getShaders) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getSorting](/reference/Stage/getSorting) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getTimer](/reference/Stage/getTimer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getVolume](/reference/Stage/getVolume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/getWidth](/reference/Stage/getWidth) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/hideVariable](/reference/Stage/hideVariable) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/isAsking](/reference/Stage/isAsking) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/isDebug](/reference/Stage/isDebug) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/isKeyPressed](/reference/Stage/isKeyPressed) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/isMouseDown](/reference/Stage/isMouseDown) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/isSoundPlaying](/reference/Stage/isSoundPlaying) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/nextBackdrop](/reference/Stage/nextBackdrop) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/pickRandom](/reference/Stage/pickRandom) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/playSound](/reference/Stage/playSound) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/previousBackdrop](/reference/Stage/previousBackdrop) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/randomBackdrop](/reference/Stage/randomBackdrop) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/remove](/reference/Stage/remove) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/removeAll](/reference/Stage/removeAll) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/run](/reference/Stage/run) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/setColor](/reference/Stage/setColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/setCursor](/reference/Stage/setCursor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/setDebug](/reference/Stage/setDebug) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/setTint](/reference/Stage/setTint) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/setTransparency](/reference/Stage/setTransparency) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/setVolume](/reference/Stage/setVolume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/showVariable](/reference/Stage/showVariable) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/stopAllSounds](/reference/Stage/stopAllSounds) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/stopSound](/reference/Stage/stopSound) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/switchBackdrop](/reference/Stage/switchBackdrop) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/wait](/reference/Stage/wait) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/waitUntil](/reference/Stage/waitUntil) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/whenBackdropSwitches](/reference/Stage/whenBackdropSwitches) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/whenIReceive](/reference/Stage/whenIReceive) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/whenKeyPressed](/reference/Stage/whenKeyPressed) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/whenKeyReleased](/reference/Stage/whenKeyReleased) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/whenMouseClicked](/reference/Stage/whenMouseClicked) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Stage/whenMouseWheelMoved](/reference/Stage/whenMouseWheelMoved) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/addFont](/reference/Text/addFont) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/constructor](/reference/Text/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getAlign](/reference/Text/getAlign) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getCurrentFontIndex](/reference/Text/getCurrentFontIndex) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getCurrentFontName](/reference/Text/getCurrentFontName) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getDefaultFont](/reference/Text/getDefaultFont) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getDefaultFontSize](/reference/Text/getDefaultFontSize) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getFont](/reference/Text/getFont) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getPosition](/reference/Text/getPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getStage](/reference/Text/getStage) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getStyle](/reference/Text/getStyle) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getTextSize](/reference/Text/getTextSize) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getWidth](/reference/Text/getWidth) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getX](/reference/Text/getX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/getY](/reference/Text/getY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/goLayersBackwards](/reference/Text/goLayersBackwards) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/goLayersForwards](/reference/Text/goLayersForwards) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/goToBackLayer](/reference/Text/goToBackLayer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/goToFrontLayer](/reference/Text/goToFrontLayer) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/isUI](/reference/Text/isUI) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/nextFont](/reference/Text/nextFont) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/remove](/reference/Text/remove) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setAlign](/reference/Text/setAlign) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setBackgroundColor](/reference/Text/setBackgroundColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setFont](/reference/Text/setFont) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setIsUI](/reference/Text/setIsUI) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setPosition](/reference/Text/setPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setStrokeColor](/reference/Text/setStrokeColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setStyle](/reference/Text/setStyle) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setTextColor](/reference/Text/setTextColor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setTextSize](/reference/Text/setTextSize) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setWidth](/reference/Text/setWidth) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setX](/reference/Text/setX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/setY](/reference/Text/setY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/showText](/reference/Text/showText) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/switchFont](/reference/Text/switchFont) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/useFont](/reference/Text/useFont) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/useFontSizes](/reference/Text/useFontSizes) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/useSmoothing](/reference/Text/useSmoothing) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/whenAddedToStage](/reference/Text/whenAddedToStage) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Text/whenRemovedFromStage](/reference/Text/whenRemovedFromStage) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Timer/afterMillis](/reference/Timer/afterMillis) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Timer/constructor](/reference/Timer/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Timer/everyMillis](/reference/Timer/everyMillis) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Timer/forMillis](/reference/Timer/forMillis) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Timer/intervalMillis](/reference/Timer/intervalMillis) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Timer/millis](/reference/Timer/millis) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Timer/reset](/reference/Timer/reset) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Triangle/constructor](/reference/Triangle/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [UISprite/changeHeight](/reference/UISprite/changeHeight) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [UISprite/changeWidth](/reference/UISprite/changeWidth) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [UISprite/constructor](/reference/UISprite/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [UISprite/disableNineSlice](/reference/UISprite/disableNineSlice) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [UISprite/setHeight](/reference/UISprite/setHeight) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [UISprite/setNineSlice](/reference/UISprite/setNineSlice) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [UISprite/setWidth](/reference/UISprite/setWidth) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/add](/reference/Vector2/add) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/angle](/reference/Vector2/angle) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/clone](/reference/Vector2/clone) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/constructor](/reference/Vector2/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/distance](/reference/Vector2/distance) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/distanceSq](/reference/Vector2/distanceSq) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/dot](/reference/Vector2/dot) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/equals](/reference/Vector2/equals) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/fromPolar](/reference/Vector2/fromPolar) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/getX](/reference/Vector2/getX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/getY](/reference/Vector2/getY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/hashCode](/reference/Vector2/hashCode) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/length](/reference/Vector2/length) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/lengthSq](/reference/Vector2/lengthSq) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/multiply](/reference/Vector2/multiply) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/normalVector](/reference/Vector2/normalVector) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/reverse](/reference/Vector2/reverse) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/rotateBy](/reference/Vector2/rotateBy) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/rotateTo](/reference/Vector2/rotateTo) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/sub](/reference/Vector2/sub) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/toString](/reference/Vector2/toString) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Vector2/unitVector](/reference/Vector2/unitVector) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/constructor](/reference/Window/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/debug](/reference/Window/debug) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/exit](/reference/Window/exit) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/getDeltaTime](/reference/Window/getDeltaTime) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/getGameSpeed](/reference/Window/getGameSpeed) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/getHeight](/reference/Window/getHeight) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/getInstance](/reference/Window/getInstance) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/getLibraryTitle](/reference/Window/getLibraryTitle) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/getLibraryVersion](/reference/Window/getLibraryVersion) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/getStage](/reference/Window/getStage) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/getTextureSampling](/reference/Window/getTextureSampling) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/getWidth](/reference/Window/getWidth) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/isDebug](/reference/Window/isDebug) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/isPaused](/reference/Window/isPaused) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/pause](/reference/Window/pause) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/resume](/reference/Window/resume) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/setDebug](/reference/Window/setDebug) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/setGameSpeed](/reference/Window/setGameSpeed) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/setStage](/reference/Window/setStage) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/step](/reference/Window/step) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/transitionToStage](/reference/Window/transitionToStage) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/useFullScreen](/reference/Window/useFullScreen) | desktop-only | The embedded browser output uses its enclosing page; this desktop window option only reports a limitation. | +| [Window/useSplashLogo](/reference/Window/useSplashLogo) | desktop-only | The browser has no desktop splash window. This option only reports a limitation. | +| [Window/useTextureSampling](/reference/Window/useTextureSampling) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [Window/whenExits](/reference/Window/whenExits) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/changeX](/reference/extensions/camera/Camera/changeX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/changeY](/reference/extensions/camera/Camera/changeY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/changeZoom](/reference/extensions/camera/Camera/changeZoom) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/constructor](/reference/extensions/camera/Camera/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/getPosition](/reference/extensions/camera/Camera/getPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/getX](/reference/extensions/camera/Camera/getX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/getY](/reference/extensions/camera/Camera/getY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/getZoom](/reference/extensions/camera/Camera/getZoom) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/resetZoom](/reference/extensions/camera/Camera/resetZoom) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/setPosition](/reference/extensions/camera/Camera/setPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/setX](/reference/extensions/camera/Camera/setX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/setY](/reference/extensions/camera/Camera/setY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/setZoom](/reference/extensions/camera/Camera/setZoom) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/setZoomLimit](/reference/extensions/camera/Camera/setZoomLimit) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/toGlobalPosition](/reference/extensions/camera/Camera/toGlobalPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/toGlobalX](/reference/extensions/camera/Camera/toGlobalX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/toGlobalY](/reference/extensions/camera/Camera/toGlobalY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/toLocalPosition](/reference/extensions/camera/Camera/toLocalPosition) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/toLocalX](/reference/extensions/camera/Camera/toLocalX) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/camera/Camera/toLocalY](/reference/extensions/camera/Camera/toLocalY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/fs/File/constructor](/reference/extensions/fs/File/constructor) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/fs/File/load](/reference/extensions/fs/File/load) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/fs/File/loadOrCreate](/reference/extensions/fs/File/loadOrCreate) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/fs/File/loadXML](/reference/extensions/fs/File/loadXML) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/fs/File/loadXMLOrCreate](/reference/extensions/fs/File/loadXMLOrCreate) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/fs/File/save](/reference/extensions/fs/File/save) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/fs/File/saveXML](/reference/extensions/fs/File/saveXML) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/pixels/Pixels/background](/reference/extensions/pixels/Pixels/background) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/pixels/Pixels/constructor](/reference/extensions/pixels/Pixels/constructor) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/pixels/Pixels/foreground](/reference/extensions/pixels/Pixels/foreground) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/pixels/Pixels/main](/reference/extensions/pixels/Pixels/main) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/FFmpegRecorder/constructor](/reference/extensions/recorder/FFmpegRecorder/constructor) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/FFmpegRecorder/saveFrame](/reference/extensions/recorder/FFmpegRecorder/saveFrame) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/FFmpegRecorder/stop](/reference/extensions/recorder/FFmpegRecorder/stop) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/FrameRecorder/constructor](/reference/extensions/recorder/FrameRecorder/constructor) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/FrameRecorder/saveFrame](/reference/extensions/recorder/FrameRecorder/saveFrame) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/FrameRecorder/snapshot](/reference/extensions/recorder/FrameRecorder/snapshot) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/GifRecorder/constructor](/reference/extensions/recorder/GifRecorder/constructor) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/GifRecorder/saveFrame](/reference/extensions/recorder/GifRecorder/saveFrame) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/GifRecorder/snapshot](/reference/extensions/recorder/GifRecorder/snapshot) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/GifRecorder/start](/reference/extensions/recorder/GifRecorder/start) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/GifRecorder/stop](/reference/extensions/recorder/GifRecorder/stop) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/Recorder/constructor](/reference/extensions/recorder/Recorder/constructor) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/Recorder/post](/reference/extensions/recorder/Recorder/post) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/Recorder/saveFrame](/reference/extensions/recorder/Recorder/saveFrame) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/Recorder/start](/reference/extensions/recorder/Recorder/start) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/recorder/Recorder/stop](/reference/extensions/recorder/Recorder/stop) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/shader/Shader/constructor](/reference/extensions/shader/Shader/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shader/getName](/reference/extensions/shader/Shader/getName) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shader/getPShader](/reference/extensions/shader/Shader/getPShader) | desktop-only | Processing's PShader object belongs to the desktop renderer. The browser uses WebGL filters. | +| [extensions/shader/Shader/set](/reference/extensions/shader/Shader/set) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shader/setName](/reference/extensions/shader/Shader/setName) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shaders/add](/reference/extensions/shader/Shaders/add) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shaders/constructor](/reference/extensions/shader/Shaders/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shaders/get](/reference/extensions/shader/Shaders/get) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shaders/getCurrent](/reference/extensions/shader/Shaders/getCurrent) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shaders/getCurrentIndex](/reference/extensions/shader/Shaders/getCurrentIndex) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shaders/getCurrentName](/reference/extensions/shader/Shaders/getCurrentName) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shaders/next](/reference/extensions/shader/Shaders/next) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shaders/reset](/reference/extensions/shader/Shaders/reset) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/shader/Shaders/switchTo](/reference/extensions/shader/Shaders/switchTo) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/sorting/Sorting/by](/reference/extensions/sorting/Sorting/by) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/sorting/Sorting/byY](/reference/extensions/sorting/Sorting/byY) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/sorting/Sorting/constructor](/reference/extensions/sorting/Sorting/constructor) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/sorting/Sorting/getComparator](/reference/extensions/sorting/Sorting/getComparator) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/sorting/Sorting/isOn](/reference/extensions/sorting/Sorting/isOn) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/sorting/Sorting/off](/reference/extensions/sorting/Sorting/off) | implemented | Declared by the browser; behavioral limitations and compiler dialect differences still apply. | +| [extensions/tiled/MapObject/constructor](/reference/extensions/tiled/MapObject/constructor) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/MapObject/getProperty](/reference/extensions/tiled/MapObject/getProperty) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/MapObject/getPropertyBoolean](/reference/extensions/tiled/MapObject/getPropertyBoolean) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/MapObject/getPropertyFloat](/reference/extensions/tiled/MapObject/getPropertyFloat) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/MapObject/getPropertyInt](/reference/extensions/tiled/MapObject/getPropertyInt) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/MapObject/getShape](/reference/extensions/tiled/MapObject/getShape) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/MapObject/setClassName](/reference/extensions/tiled/MapObject/setClassName) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/Property/constructor](/reference/extensions/tiled/Property/constructor) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/Property/setText](/reference/extensions/tiled/Property/setText) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/TiledMap/constructor](/reference/extensions/tiled/TiledMap/constructor) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/TiledMap/getObjectsFromLayer](/reference/extensions/tiled/TiledMap/getObjectsFromLayer) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/TiledMap/stampLayerToBackground](/reference/extensions/tiled/TiledMap/stampLayerToBackground) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/TiledMap/stampLayerToForeground](/reference/extensions/tiled/TiledMap/stampLayerToForeground) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/TiledMap/toString](/reference/extensions/tiled/TiledMap/toString) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | +| [extensions/tiled/TilesetImage/constructor](/reference/extensions/tiled/TilesetImage/constructor) | desktop-only | This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation. | diff --git a/docs/book/differences-scratch.md b/docs/book/differences-scratch.md index 243a3db9..5e0140f2 100644 --- a/docs/book/differences-scratch.md +++ b/docs/book/differences-scratch.md @@ -5,9 +5,12 @@ index: 3 # Differences to Scratch -Probably the most noticeable differences to Scratch are the following: +Scratch for Java keeps stages, sprites, costumes and events. Java gives each +object fields and methods; the library calls `run()` once per game frame. At +normal speed that is about 60 frames per second. Pause, single-step and game +speed control game time, including timers, animation and timed speech. -- There is not wait-block on a Sprite-level, you need to use [Timers](/reference/sprite/sensing/getTimer). +- Use [Timers](/reference/Sprite/getTimer) to delay a sprite's next action across frames. Keep each `run()` call short. If you want to achieve something like this inside a Sprite: @@ -22,7 +25,7 @@ You can use a timer. ```java public class Cat extends Sprite { - // executes 60-times a second, if the sprite is added to a stage. + // Called once per game frame while the sprite is on a running stage. public void run() { if (this.getTimer().everyMillis(1000)) { this.nextCostume(); @@ -32,18 +35,18 @@ public class Cat extends Sprite { ``` -- There **is** a sprite and sound library, like in Scratch: 838 pictures and 266 - sounds ship with Scratch for Java, and you use them by name with - `addCostume("bunny1_stand")`. Browse them on the [Sprites](/sprites) and - [Sounds](/sounds) pages. What Scratch has and this does not is a *choose from - a categorised catalogue with previews inside the editor* - here it is a - documentation page you search. -- There are no built-in editors, so for drawing or recording your own files you - need external tools like [GIMP](https://www.gimp.org/), - [Inkscape](https://inkscape.org/), [Audacity](https://www.audacityteam.org/) - and so on. -- If you want to share your project with others, you have to used external sharing platforms like Nextcloud, iCloud, Dropbox or better a code sharing platform like GitHub. -- You **can not** use a forever loop. This will halt you program. +- **922 pictures and 266 sounds** ship with the library. Studio's asset browser + provides previews; the [Sprites](/sprites) and [Sounds](/sounds) pages show the + same assets. Call `addCostume("bunny1_stand")` to use one. +- Studio includes costume and sound tools. Files created in other tools can be + imported as ordinary assets. Browser workspaces can carry image, audio, font + and shader files; project ZIPs preserve their bytes. +- Save and share a project ZIP or its ordinary Java folder. The browser also + supports workspace JSON. Review [compatibility](/compatibility) before + switching environments: file-system, recording and Tiled APIs require desktop. +- A tight `while (true)` inside `run()` blocks later frames. Put one frame's work + in `run()` and use timers or state fields for sequencing. Finite loops that + finish quickly are useful in constructors and methods. If you want to achieve something like this inside a Sprite: @@ -57,14 +60,16 @@ You can use the run-method of the Sprite-class. ```java public class Cat extends Sprite { - // executes 60-times a second, if the sprite is added to a stage. + // Called once per game frame while the sprite is on a running stage. public void run() { this.move(10); } } ``` -- If you want to have a variable for all sprites, you have to use a static attribute. Static attributes are available across all objects. +- Shared state can live in a stage object passed to its sprites, or in a static + field. Instance fields belong to one object. Clones copy field values; a copied + reference still points to the same array or object, so plan shared state. ```java public class Cat extends Sprite { @@ -125,3 +130,11 @@ public class Player extends Sprite { } } ``` + +## Importing a Scratch project + +Studio keeps the original `.sb3` and records migration tasks beside generated +Java. Open a task to locate its original block and the Java line that needs +attention. Timed and concurrent scripts need decisions about frame updates, +timers and shared state. See [Migration lessons](/migration) and test each +sequence before sharing the result. diff --git a/docs/book/download.md b/docs/book/download.md index eb255b8a..d92885ec 100644 --- a/docs/book/download.md +++ b/docs/book/download.md @@ -50,6 +50,14 @@ which `find`, `getAll` and `getTouchingSprites` return their `List`. See ::download[Sources (NRW)]{src="https://github.com/openpatch/scratch-for-java/releases/latest/download/scratch-{{VERSION}}-nrw-sources.jar"} +## Release metadata and offline examples + +The [catalogs](/catalogs) describe the tested library and browser revisions. +API and asset catalogs also ship inside the library JAR and Studio. Use the +[course pack](/classroom) for prepared projects and offline teaching notes. +Published browser features depend on the embedded IDE revision; check its +compatibility version before using ZIP transfer, clone lifecycle or frame control. + ## Maven Central ```xml diff --git a/docs/book/erste-schritte.md b/docs/book/erste-schritte.md new file mode 100644 index 00000000..7d1da81d --- /dev/null +++ b/docs/book/erste-schritte.md @@ -0,0 +1,59 @@ +--- +name: Erste Schritte +--- + +# Von Scratch zu Java + +Eine Bühne heißt **Stage**, eine Figur **Sprite** und ein Aussehen **costume**. +Wir beginnen mit derselben Figur wie im englischen ersten Tutorial. + +## Drei Einstiege + +1. **Im Browser ausprobieren:** Öffne [Your first program](/tutorials/getting-started) + und drücke ▶. Ändere den Kostümnamen oder eine Zahl und starte erneut. +2. **Mit Studio arbeiten:** [Studio herunterladen](/download), ein Projekt + erstellen, `MyStage` öffnen und die Figur hinzufügen. Java und die Bibliothek + sind enthalten; du brauchst kein zusätzliches JDK. +3. **In deiner Java-Umgebung:** Die Bibliothek nach [Setup](/setup) einbinden. + Normale Klassen laufen ab Java 17. Eine kompakte Datei mit `void main()` + benötigt Java 25; Studio unterstützt diese Form. + +## Das erste Programm + +Lege `MyStage.java` an: + + import org.openpatch.scratch.*; + + public class MyStage extends Stage { + public MyStage() { + Sprite bunny = new Sprite(); + bunny.addCostume("bunny1_stand"); + this.add(bunny); + } + public static void main(String[] args) { + new MyStage(); + } + } + +In Studio drückst du ▶. In BlueJ kannst du auch `new MyStage()` wählen. +Die Figur benötigt keine eigene Bilddatei. Mit `this.add(bunny)` wird sie +auf die Bühne gesetzt. Ihr späteres `run()` wird einmal pro Spielbild aufgerufen. + +## Speichern und wechseln + +Browserdaten bleiben in diesem Browser auf diesem Rechner. Sichere eine +Workspace-JSON oder, bei einer IDE mit ZIP-Unterstützung, eine Projekt-ZIP. +Studio öffnet beide über das Projektmenü und exportiert eine Browser-Projekt-ZIP. +Bewahre Java-Dateien und eigene Bilder, Klänge und Schriften zusammen auf. + +Wählt euer Kurs **NRW**, bleibt bei dieser Auswahl. Auf dem Desktop gehören +auch die Abiturklassen wie `List.java` zum Projekt; im Browser sind sie vorhanden. +Ein Spielwerkstatt-Checkpoint bringt diese Dateien mit. + +## Weiterlernen + +Die [Spielwerkstatt in Hyperbook Informatik](https://informatik.openpatch.org/projekte/spielwerkstatt) +verbindet die Java-Lernpfade mit eigenen Spielideen, Checkpoints und einem +Entwicklertagebuch. Begründe darin deine Entscheidungen und teste nach jedem +Wechsel der Umgebung. Weitere Aufgaben stehen in den [sieben Tutorials](/tutorials) +und im [Kursmaterial](/classroom). diff --git a/docs/book/examples/cat-platformer.md b/docs/book/examples/cat-platformer.md new file mode 100644 index 00000000..ca0558af --- /dev/null +++ b/docs/book/examples/cat-platformer.md @@ -0,0 +1,650 @@ +--- +name: Cat Platformer +--- + +# Cat Platformer + +The Scratch for Java cat in a small platformer. Collect the coffee beans, jump +on the bugs or punch them, and climb up to the steaming mug. Like the +[Coin Collector](/examples/coin-collector), it needs no files: the cat, the +beans, the bugs, the mug and the hearts are built into the library, just like +the grass tiles and the sounds. + +![The cat on a platform, with beans, bugs and the mug](/assets/cat-platformer.png) + +Walk with the left and right arrow keys, jump with space, punch with X, crouch +with the down arrow, and climb the ladder with up and down. + +## The cat's animations + +Every animation of the cat is built in. Each frame is 64 by 64 pixels with the +feet on the bottom row, and the frames of an animation are numbered from 1, so +one line adds a whole animation: + +```java +this.addAnimation("walk", "cat_walk_%d", 6); +``` + +![All animations of the cat](/assets/cat-animations.gif) + +| Animation | Frames | Plays | +| --------- | ------ | --------------- | +| `idle` | 26 | in a loop | +| `walk` | 6 | in a loop | +| `crouch` | 4 | in a loop | +| `jump` | 3 | once, going up | +| `fall` | 2 | once, going down | +| `land` | 2 | once | +| `punch` | 6 | once | +| `hurt` | 3 | once | +| `ko` | 5 | once | +| `cheer` | 4 | in a loop | +| `climb` | 4 | in a loop | + +The cat faces right, like a sprite in Scratch with direction 90. With +`setRotationStyle(RotationStyle.LEFT_RIGHT)` it turns around when it walks +left. + +The things around it are built in too: `coffee_bean_1` to `coffee_bean_4`, +`bug_walk_1` to `bug_walk_4`, `bug_squished_1` and `bug_squished_2`, +`goal_mug_1` to `goal_mug_4`, `heart_full` and `heart_empty`. + +## Which animation? + +The cat picks its animation from what it is doing, every frame, most important +first: + +```java +if (this.hurtFrames > 40) { + this.play("hurt", true); +} else if (this.punching) { + this.play("punch", true); +} else if (!this.onGround) { + this.play(this.fallSpeed > 0 ? "jump" : "fall", true); +} else if (walking) { + this.play("walk", false); +} else { + this.play("idle", false); +} +``` + +`play` is a small helper in `Cat`. An animation that plays once has to start +at its first frame, so the helper resets the animation whenever it changes: + +```java +private void play(String name, boolean once) { + if (!name.equals(this.animation)) { + this.animation = name; + this.resetAnimation(); + } + this.playAnimation(name, once); +} +``` + +## Run it here + +Click the stage so it takes the keyboard. + + +:::onlineide{height="640px" libraries="scratch"} + +```java CatPlatformer.java + +void main() { + new CatPlatformer(); +} + +/** + * The Scratch for Java cat in a small platformer: collect the coffee beans, + * jump on the bugs (or punch them) and climb up to the steaming mug. + * + *

+ * Arrow keys walk, climb and crouch, space jumps, X punches. Like the coin + * collector, it only uses assets built into Scratch for Java - the cat, the + * beans, the bugs, the mug and the hearts are on the built-in cat sheet, the + * tiles and the sounds are Kenney's. + */ +class CatPlatformer extends Stage { + + /** The height the ground reaches up to. */ + public static final double GROUND_TOP = -176; + + /** Where the ladder ends: the top of the platform with the mug. */ + public static final double LADDER_TOP = 112; + + private final List platforms = new ArrayList<>(); + private final Heart[] hearts = new Heart[3]; + + private Text score; + private int beans = 0; + private int totalBeans = 0; + + public CatPlatformer() { + super(800, 480); + this.addBackdrop("background"); + + // The ground, one grass tile at a time. + for (int x = -400; x < 400; x += 64) { + this.add(new Ground(x + 32)); + } + + // A ladder from the ground up to the highest platform, added before the + // platform so it is drawn behind it. + for (double y = GROUND_TOP + 32; y < LADDER_TOP - 32; y += 64) { + this.add(new Ladder(232, y, false)); + } + this.add(new Ladder(232, LADDER_TOP - 32, true)); + + // Three platforms, each from its left edge, its top and a number of tiles. + this.addPlatform(-260, -80, 2); + this.addPlatform(-40, 16, 2); + this.addPlatform(200, LADDER_TOP, 3); + + this.addBean(-330, GROUND_TOP + 40); + this.addBean(-60, GROUND_TOP + 40); + this.addBean(-196, -80 + 40); + this.addBean(24, 16 + 40); + this.addBean(232, -40); + this.addBean(300, LADDER_TOP + 40); + + this.add(new Bug(-170, -20, GROUND_TOP)); + this.add(new Bug(40, 160, GROUND_TOP)); + this.add(new Bug(280, 340, LADDER_TOP)); + + this.add(new Goal(372, LADDER_TOP)); + this.add(new Cat()); + + for (int i = 0; i < this.hearts.length; i++) { + this.hearts[i] = new Heart(-370 + i * 34, 210); + this.add(this.hearts[i]); + } + this.score = new Text(); + this.score.setPosition(-180, 210); + this.score.setTextSize(24); + this.add(this.score); + this.showScore(); + } + + private void addPlatform(double left, double top, int tiles) { + for (int i = 0; i < tiles; i++) { + String costume = i == 0 ? "grassHalf_left" : i == tiles - 1 ? "grassHalf_right" : "grassHalf_mid"; + Platform tile = new Platform(costume, left + 32 + i * 64, top); + this.platforms.add(tile); + this.add(tile); + } + } + + private void addBean(double x, double y) { + this.add(new Bean(x, y)); + this.totalBeans += 1; + } + + private void showScore() { + this.score.showText("Beans: " + this.beans + " / " + this.totalBeans); + } + + /** + * Finds what a falling sprite lands on. Between two frames its feet went + * from feetBefore down to feetAfter; if a platform top (or the ground) lies + * in between, below x, that is where it stands. + * + * @return the height of what it lands on, or NaN while it is still falling + */ + public double landingHeight(double x, double feetBefore, double feetAfter) { + double best = Double.NaN; + for (Platform platform : this.platforms) { + boolean above = x > platform.getLeft() && x < platform.getRight(); + double top = platform.getTop(); + if (above && feetBefore >= top && feetAfter <= top && !(best >= top)) { + best = top; + } + } + if (Double.isNaN(best) && feetAfter <= GROUND_TOP) { + best = GROUND_TOP; + } + return best; + } + + /** Called by a bean when the cat picks it up. */ + public void collectBean() { + this.beans += 1; + this.showScore(); + } + + /** Called by the cat when it gets hurt; returns how many hearts are left. */ + public int loseHeart() { + int left = 0; + for (Heart heart : this.hearts) { + if (heart.isFull()) { + left += 1; + } + } + if (left > 0) { + this.hearts[left - 1].empty(); + left -= 1; + } + return left; + } + + public void win() { + this.playSound("jingles_NES00"); + this.showMessage("You made it! " + this.beans + " / " + this.totalBeans + " beans"); + } + + public void lose() { + this.showMessage("Game over"); + } + + private void showMessage(String message) { + Text text = new Text(); + text.setPosition(0, 60); + text.setTextSize(40); + text.showText(message); + this.add(text); + } +} + +/** One tile of a platform the cat can stand on. */ +class Platform extends Sprite { + + private final double top; + + public Platform(String costume, double x, double top) { + this.addCostume(costume); + this.setSize(50); + this.top = top; + this.setX(x); + // The grass of a half tile starts at the top of its 64 pixel costume. + this.setY(top - 32); + } + + public double getTop() { + return this.top; + } + + public double getLeft() { + return this.getX() - 32; + } + + public double getRight() { + return this.getX() + 32; + } +} + +/** One of the cat's lives, shown in the top left corner. */ +class Heart extends Sprite { + + public Heart(double x, double y) { + this.addCostume("heart_full"); + this.addCostume("heart_empty"); + this.setX(x); + this.setY(y); + } + + public boolean isFull() { + return this.getCurrentCostumeName().equals("heart_full"); + } + + public void empty() { + this.switchCostume("heart_empty"); + } +} + +/** One grass tile of the ground. */ +class Ground extends Sprite { + + public Ground(double x) { + this.addCostume("grassMid"); + this.setSize(50); + this.setX(x); + // The tile is 64 pixels high at size 50, so its middle sits 32 below its top. + this.setY(CatPlatformer.GROUND_TOP - 32); + } +} + +/** One piece of the ladder. Touching it, the cat can climb with the up and down keys. */ +class Ladder extends Sprite { + + public Ladder(double x, double y, boolean top) { + this.addCostume(top ? "ladderTop" : "ladderMid"); + this.setSize(50); + this.setX(x); + this.setY(y); + } +} + +/** A bug walking to and fro. Jump on it or punch it - but do not walk into it. */ +class Bug extends AnimatedSprite { + + /** The costume is 32 pixels high, the legs end 3 pixels above its bottom. */ + private static final double FEET = 13; + + private final double minX; + private final double maxX; + private boolean squished = false; + private int squishedFrames = 0; + + public Bug(double minX, double maxX, double floor) { + this.addAnimation("walk", "bug_walk_%d", 4); + this.addAnimation("squished", "bug_squished_%d", 2); + this.setAnimationInterval(120); + this.setRotationStyle(RotationStyle.LEFT_RIGHT); + this.minX = minX; + this.maxX = maxX; + this.setX(minX); + this.setY(floor + FEET); + } + + public boolean isSquished() { + return this.squished; + } + + public void squish() { + this.squished = true; + this.resetAnimation(); + } + + public void run() { + if (this.squished) { + this.playAnimation("squished", true); + this.squishedFrames += 1; + if (this.squishedFrames > 30) { + this.remove(); + } + return; + } + this.playAnimation("walk"); + this.move(1); + if (this.getX() > this.maxX) { + this.setDirection(-90); + } else if (this.getX() < this.minX) { + this.setDirection(90); + } + } +} + +/** The steaming mug at the end of the level. */ +class Goal extends AnimatedSprite { + + public Goal(double x, double floor) { + this.addAnimation("steam", "goal_mug_%d", 4); + this.setAnimationInterval(150); + this.setX(x); + // the mug stands on the bottom two rows of its 32 pixel costume + this.setY(floor + 14); + } + + public void run() { + this.playAnimation("steam"); + } +} + +/** The Scratch for Java cat. Every one of its animations is on the built-in cat sheet. */ +class Cat extends AnimatedSprite { + + /** The costumes are 64 pixels high with the feet on the bottom row. */ + private static final double FEET = 32; + + private static final double SPEED = 3; + private static final double CLIMB_SPEED = 2; + private static final double JUMP_STRENGTH = 10.5; + private static final double GRAVITY = 0.5; + + private double fallSpeed = 0; + private boolean onGround = true; + private boolean climbing = false; + private boolean punching = false; + private boolean dead = false; + private boolean won = false; + /** Frames left until the cat can be hurt again. */ + private int hurtFrames = 0; + /** Frames left of the landing squat. */ + private int landFrames = 0; + private String animation = ""; + + public Cat() { + // "cat_walk_%d" stands for cat_walk_1 to cat_walk_6. + this.addAnimation("idle", "cat_idle_%d", 26); + this.addAnimation("walk", "cat_walk_%d", 6); + this.addAnimation("crouch", "cat_crouch_%d", 4); + this.addAnimation("jump", "cat_jump_%d", 3); + this.addAnimation("fall", "cat_fall_%d", 2); + this.addAnimation("land", "cat_land_%d", 2); + this.addAnimation("punch", "cat_punch_%d", 6); + this.addAnimation("hurt", "cat_hurt_%d", 3); + this.addAnimation("ko", "cat_ko_%d", 5); + this.addAnimation("cheer", "cat_cheer_%d", 4); + this.addAnimation("climb", "cat_climb_%d", 4); + this.setAnimationInterval(100); + this.addSound("footstep_grass_000"); + this.addSound("impactPunch_medium_004"); + this.addSound("impactSoft_heavy_000"); + this.addSound("handleCoins"); + + this.setRotationStyle(RotationStyle.LEFT_RIGHT); + this.setX(-360); + this.setY(CatPlatformer.GROUND_TOP + FEET); + } + + /** Plays an animation, starting it from its first frame when it changes. */ + private void play(String name, boolean once) { + if (!name.equals(this.animation)) { + this.animation = name; + this.resetAnimation(); + } + this.playAnimation(name, once); + } + + private CatPlatformer level() { + return (CatPlatformer) this.getStage(); + } + + private double feet() { + return this.getY() - FEET; + } + + public void whenKeyPressed(KeyCode keyCode) { + if (this.dead || this.won) { + return; + } + if (keyCode == KeyCode.SPACE && (this.onGround || this.climbing)) { + this.fallSpeed = JUMP_STRENGTH; + this.onGround = false; + this.climbing = false; + this.playSound("footstep_grass_000"); + } + if (keyCode == KeyCode.X && this.onGround && !this.punching) { + this.punching = true; + } + } + + public void run() { + if (this.dead) { + this.fall(); + this.play("ko", true); + return; + } + if (this.won) { + this.play("cheer", false); + return; + } + + boolean walking = this.walk(); + if (!this.climb()) { + this.fall(); + } + this.meetBugs(); + + Bean bean = this.getTouchingSprite(Bean.class); + if (bean != null) { + this.playSound("handleCoins"); + bean.remove(); + this.level().collectBean(); + } + if (this.isTouchingSprite(Goal.class) && this.onGround) { + this.won = true; + this.setTransparency(0); + this.level().win(); + } + + this.animate(walking); + } + + /** Left and right; returns whether the cat is walking. */ + private boolean walk() { + if (this.punching || this.isKeyPressed(KeyCode.DOWN) && this.onGround && !this.isTouchingSprite(Ladder.class)) { + return false; + } + if (this.isKeyPressed(KeyCode.LEFT)) { + this.setDirection(-90); + this.changeX(-SPEED); + } else if (this.isKeyPressed(KeyCode.RIGHT)) { + this.setDirection(90); + this.changeX(SPEED); + } else { + return false; + } + this.climbing = false; + this.setX(Math.max(-380, Math.min(380, this.getX()))); + return true; + } + + /** Up and down a ladder; returns whether the cat is on one. */ + private boolean climb() { + boolean onLadder = this.isTouchingSprite(Ladder.class); + boolean up = this.isKeyPressed(KeyCode.UP); + boolean down = this.isKeyPressed(KeyCode.DOWN); + if (onLadder && (up || down) && !this.punching) { + this.climbing = true; + } + if (!onLadder) { + this.climbing = false; + } + + if (this.climbing) { + this.fallSpeed = 0; + if (up) { + this.changeY(CLIMB_SPEED); + } else if (down) { + this.changeY(-CLIMB_SPEED); + } + // At the top of the ladder the cat steps onto the platform, at the + // bottom onto the ground. + if (this.feet() >= CatPlatformer.LADDER_TOP) { + this.setY(CatPlatformer.LADDER_TOP + FEET); + this.climbing = false; + this.onGround = true; + } else if (this.feet() <= CatPlatformer.GROUND_TOP) { + this.setY(CatPlatformer.GROUND_TOP + FEET); + this.climbing = false; + this.onGround = true; + } else { + this.onGround = false; + } + } + return this.climbing; + } + + /** Falls until the feet meet a platform or the ground. */ + private void fall() { + double before = this.feet(); + this.fallSpeed -= GRAVITY; + this.changeY(this.fallSpeed); + double landing = this.level().landingHeight(this.getX(), before, this.feet()); + if (!Double.isNaN(landing) && this.fallSpeed <= 0) { + if (!this.onGround && this.fallSpeed < -4) { + this.landFrames = 8; + } + this.setY(landing + FEET); + this.fallSpeed = 0; + this.onGround = true; + } else { + this.onGround = false; + } + } + + private void meetBugs() { + if (this.hurtFrames > 0) { + this.hurtFrames -= 1; + // blink while it cannot be hurt + this.setTransparency(this.hurtFrames / 5 % 2 == 0 ? 0 : 60); + } + for (Bug bug : this.getTouchingSprites(Bug.class)) { + if (bug.isSquished()) { + continue; + } + boolean inFront = (bug.getX() - this.getX()) * (this.getDirection() > 0 ? 1 : -1) > 0; + if (this.fallSpeed < 0 && this.feet() > bug.getY()) { + // landed on it + bug.squish(); + this.fallSpeed = 6; + this.playSound("impactPunch_medium_004"); + } else if (this.punching && inFront && this.getAnimationFrame() >= 3) { + bug.squish(); + this.playSound("impactPunch_medium_004"); + } else if (this.hurtFrames == 0) { + this.getHurt(bug); + } + } + } + + private void getHurt(Bug bug) { + this.playSound("impactSoft_heavy_000"); + this.punching = false; + this.hurtFrames = 60; + // knocked back, away from the bug + this.changeX(this.getX() < bug.getX() ? -24 : 24); + this.fallSpeed = 5; + this.onGround = false; + if (this.level().loseHeart() == 0) { + this.dead = true; + this.setTransparency(0); + this.level().lose(); + } + } + + private void animate(boolean walking) { + if (this.hurtFrames > 40) { + this.play("hurt", true); + } else if (this.punching) { + this.play("punch", true); + if (this.isAnimationPlayed()) { + this.punching = false; + } + } else if (this.climbing) { + // only move the arms and legs while climbing + if (this.isKeyPressed(KeyCode.UP) || this.isKeyPressed(KeyCode.DOWN)) { + this.play("climb", false); + } + } else if (!this.onGround) { + this.play(this.fallSpeed > 0 ? "jump" : "fall", true); + } else if (this.landFrames > 0) { + this.landFrames -= 1; + this.play("land", true); + } else if (this.isKeyPressed(KeyCode.DOWN)) { + this.play("crouch", false); + } else if (walking) { + this.play("walk", false); + } else { + this.play("idle", false); + } + } +} + +/** A spinning coffee bean to collect. */ +class Bean extends AnimatedSprite { + + public Bean(double x, double y) { + this.addAnimation("spin", "coffee_bean_%d", 4); + this.setAnimationInterval(120); + this.setX(x); + this.setY(y); + } + + public void run() { + this.playAnimation("spin"); + } +} +``` + +::: diff --git a/docs/book/index.md b/docs/book/index.md index a08d8167..eaeef1be 100644 --- a/docs/book/index.md +++ b/docs/book/index.md @@ -24,7 +24,7 @@ public class MyStage extends Stage { } ``` -That is a complete program, and it needs no image files: **838 pictures and 266 +That is a complete program, and it needs no image files: **922 pictures and 266 sounds are built in**. Here is one running. Press **▶** — then change a number or a costume name and @@ -68,7 +68,9 @@ class Walker extends AnimatedSprite { - **[Your first program](/tutorials/getting-started)** — ten minutes, nothing to download -- **[Setup](/setup)** — BlueJ, VS Code or plain Java +- **[Setup](/setup)** — browser, Studio, BlueJ, VS Code or plain Java +- **[Erste Schritte](/erste-schritte)** — Einstieg auf Deutsch +- **[Classroom course pack](/classroom)** — prepared offline projects and teacher notes - **[Sprites](/sprites)** and **[Sounds](/sounds)** — the built-in library - **[Documentation](/reference)** — every method with the Scratch block it replaces diff --git a/docs/book/migration.md b/docs/book/migration.md new file mode 100644 index 00000000..2faedd8a --- /dev/null +++ b/docs/book/migration.md @@ -0,0 +1,71 @@ +--- +name: Continue a Scratch project +--- + +# Continue a Scratch project in Java + +Studio imports `.sb3` costumes, sounds, sprites and supported scripts. Open the +**Scratch migration** tab to review timing, concurrency and unsupported blocks. +Each task opens the generated Java and shows the original block ID and data. +The project keeps the complete archive at `.scratch4j/original.sb3`. Open that +archive in Scratch to inspect the original script and surrounding blocks. + +Task comments mark the generated source. Studio relocates them when the project +is reopened after edits. Keep the comments until the corresponding behavior is +implemented and tested. The archive, tasks and checks survive project ZIP transfer. +Compare the imported game with the original. + +## Timing + +Scratch can wait inside a script while other scripts continue. Java event methods +return before the next frame is drawn. A timed `say`, glide or sound starts its +effect; a following Java statement can run immediately. Import tasks identify +those sequences. + +Represent a sequence with a field recording its phase, then advance it in `run()` +when a timer finishes: + +```java +import org.openpatch.scratch.*; + +class Greeting extends Sprite { + int phase = 0; + public void run() { + if (phase == 0) { + this.say("Hello!", 2000); + this.getTimer("greeting").reset(); + phase = 1; + } else if (phase == 1 && this.getTimer("greeting").afterMillis(2000)) { + this.changeX(20); + phase = 2; + } + } +} +``` + +The library calls `run()` about 60 times per second. Keep each call short. A +finite loop for an array is useful; an endless loop or sleeping in `run()` holds +up the next frame. Pause/speed/step control game time in the supported revision. + +## Shared state + +Scratch scripts can overlap. Imported Java helper methods run in sequence. +Stage variables become shared stage fields; sprite fields belong to that sprite. +Clones copy the student's fields, including references to shared objects, while +runtime helpers such as timers are independent. Decide which game state is +shared and which belongs to each clone. + +`broadcast()` invokes receivers synchronously. A receiver beginning a timed +effect does not make the caller wait for that effect to finish. Represent +completion as state or a later message. Test a sequence with two sprites first. + +## Unsupported blocks + +A TODO or placeholder expression needs a Java implementation. Open the task's +original block and the preserved Scratch archive. Identify its input, output and +observable effect; replace the placeholder with a method or state transition. +For an unsupported reporter, the generated `0` is only a placeholder. + +Check movement after a fixed number of frames, collisions with actual costumes, +score changes and clone state. Seed randomness to reproduce failures. See +[Differences to Scratch](/differences-scratch) and the [classroom course](/classroom). diff --git a/docs/book/setup.md b/docs/book/setup.md index 7212cf4d..839b0828 100644 --- a/docs/book/setup.md +++ b/docs/book/setup.md @@ -11,7 +11,47 @@ Does your course use the Abiturklassen of the NRW Zentralabitur (`List`, `Queue` of Scratch for Java made for them. ::: -## VS Code (Recommended) +## Choose where to start + +| Start | What to do | Saving and continuing | +| --- | --- | --- | +| **Try in the browser** | Open [Your first program](/tutorials/getting-started) and press ▶. The Scratch library is already selected. | Download workspace JSON or, in an IDE revision with ZIP support, a project ZIP. Browser storage belongs to this browser on this computer. | +| **Create with Studio** | [Download Studio](/download), create a project, and add the rabbit from the same first tutorial. Studio includes Java and the library. | Save ordinary Java and asset files. Open browser workspace JSON or a project ZIP through the Project menu. Export a Browser project ZIP to return to the browser. | +| **Use your Java IDE** | Add the standard or NRW library to BlueJ, VS Code, Maven, or your existing Java project. | Keep Java and assets together; optional Studio metadata is not needed to run the project. | + +All three use **Stage**, **Sprite**, **costume**, and the same rabbit costume, +`bunny1_stand`. Continue with the [seven introductory tutorials](/tutorials). +German material is available at [Erste Schritte](/erste-schritte) and the +[Spielwerkstatt in Hyperbook Informatik](https://informatik.openpatch.org/projekte/spielwerkstatt). + +## Java and library flavor + +The desktop **library runs on Java 17 or newer**. Ordinary named classes with +`public static void main(String[] args)` work with Java 17. Compact source files +with `void main()` require **Java 25**; Studio uses Java 25 and includes its +runtime. Its installer needs no separate JDK. The browser runs its own Java +compiler and interpreter; see the [compatibility contract](/compatibility). + +Use **standard** unless your course uses the NRW Abiturklassen. Select **NRW** +consistently in Studio and the browser. The browser provides NRW classes; desktop +projects also need the course's `List.java` and other Abiturklassen used by the +project. Checkpoints include those course files. Changing flavor can change the +return type of `find`, `getAll`, and `getTouchingSprites`. + +## Studio + +Create a project from the start screen. Run the stage with ▶, save changes with +Ctrl/Cmd+S, and keep a project ZIP before moving computers. Studio has a stage +designer, costume and sound tools, an asset browser, debugger, and Java editor. +For the first tutorial, create `MyStage` and use its code unchanged. You can also +import the tutorial's finished checkpoint through the project menu. + +For offline lessons, prepare the [course pack](/classroom) and both library +flavors before class. Keep a backup of students' Java folders or exported ZIPs. +Studio's local history and project snapshots can restore saved work; unsaved +changes and cleared browser data cannot be recovered from another computer. + +## VS Code First make sure you have the Java Extension Pack installed. You can find it in the Extensions view by searching for `redhat.java`. diff --git a/docs/book/tutorials/getting-started.md b/docs/book/tutorials/getting-started.md index c9451556..39339ea9 100644 --- a/docs/book/tutorials/getting-started.md +++ b/docs/book/tutorials/getting-started.md @@ -13,18 +13,22 @@ that you write them instead of dragging them. This page gets a character moving on screen. It takes about ten minutes, and you do not have to download a single picture. -## What you need +## Choose your environment -1. A development environment. [BlueJ](https://bluej.org) is the friendliest one - to start with, and this page assumes it. -2. The Scratch for Java library, added to BlueJ once. +- **Browser:** use the editor on this page; the library is already loaded. +- **Studio:** [download Studio](/download), create a project, and use the same + `MyStage` and rabbit code below. Studio includes Java and the library. +- **Existing Java IDE:** follow [Setup](/setup), add the library, then create + `MyStage`. In BlueJ, construct the class with `new MyStage()`. -Both are on the [Setup](/setup) page. Come back here when BlueJ is running. +The example's named classes work with Java 17. The browser's compact entry +`void main()` needs Java 25 when saved as a desktop source file; Studio supports +it. Use standard or NRW according to your course and keep that selection when +transferring projects. Save a workspace file or project ZIP before moving computers. ## Step 1: A sprite on the stage -In BlueJ, create a new class called `MyStage` and replace everything in it with -these lines: +Create a class called `MyStage` and use these lines: ```java import org.openpatch.scratch.*; diff --git a/docs/public/assets/cat-animations.gif b/docs/public/assets/cat-animations.gif new file mode 100644 index 0000000000000000000000000000000000000000..d5ad530e4e22393c71f28ccd50a1ebc8fba2f639 GIT binary patch literal 751371 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≦rO2=9Q!$vL?4N7SEt;qO?Q+-TMP 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 U0Ioe{^*$F^$BvBHAM@EH0 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

-REe4$@0C)6YWh)FqiRn* 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⁢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 P{?wnoP%e3F{`vm_eOe&b literal 0 HcmV?d00001 diff --git a/docs/public/catalogs/api.json b/docs/public/catalogs/api.json new file mode 100644 index 00000000..bb9e7bd9 --- /dev/null +++ b/docs/public/catalogs/api.json @@ -0,0 +1,17575 @@ +{ + "schemaVersion": 1, + "libraryVersion": "5.7.0", + "browserVersion": "5.7.0-browser.2", + "methods": [ + { + "id": "AnimatedSprite/addAnimation(String,String,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int" + ], + "parameterNames": [ + "name", + "pattern", + "frames" + ], + "params": [ + "String name", + "String pattern", + "int frames" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "pattern: the pattern (@see String#format) of the file names. The frame\n starts from 1.", + "frames: the number of frames in the animation" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt eine Animation hinzu. %d im Muster wird durch 1..frames ersetzt, z.B. bunny1_walk%d" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,Function,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.util.function.Function", + "int" + ], + "parameterNames": [ + "name", + "builder", + "frame" + ], + "params": [ + "String name", + "Function builder", + "int frame" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nTo add an animation with file names \"walk_1.png\", \"walk_2.png\",\n\"walk_3.png\", you can use the following code:\n\n```java\nsprite.addAnimation(\"walk\", i -> \"walk_\" + i + \".png\", 3);\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "builder: a function that builds the file names for the animation frames", + "frame: the number of frames in the animation. The frame starts from\n 1." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt eine Animation an; builder liefert zu 1..frames jeweils den Bildpfad" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,String,int,int,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int" + ], + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height" + ], + "params": [ + "String name", + "String path", + "int frames", + "int width", + "int height" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nFor an animation sprite sheet, where each frame is of equal width and height,\nyou can use this method to add an animation by specifying the path to the\nsprite sheet, the number of frames, and the dimensions of each frame.\nFor example, for a four-frame animation arranged in a single row, each frame\nbeing 64x64 pixels, you can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64);\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "path: the path to the animation frames", + "frames: the number of frames in the animation", + "width: the width of each frame", + "height: the height of each frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zerlegt ein Bild in gleich große Einzelbilder und legt daraus eine Animation an" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,String,int,int,int,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int" + ], + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height", + "row" + ], + "params": [ + "String name", + "String path", + "int frames", + "int width", + "int height", + "int row" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nIf the animation frames are arranged in rows in a sprite sheet, you can use\nthis method to specify which row to use for the animation.\n\nFor example, for a four-frame animation arranged in a single row, you want the second, each frame\nbeing 64x64 pixels, you can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64, 2);\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "path: the path to the animation frames", + "frames: the number of frames in the animation", + "width: the width of each frame", + "height: the height of each frame", + "row: the row of the animation frames" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wie addAnimation(name, imagePath, frames, width, height), beginnt aber in der angegebenen Zeile" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,String,int,int,int,int,boolean)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int", + "boolean" + ], + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height", + "column", + "useColumns" + ], + "params": [ + "String name", + "String path", + "int frames", + "int width", + "int height", + "int column", + "boolean useColumns" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nIf the animation frames are arranged in either rows or columns in a sprite\nsheet, you can use this method to specify which column or row to use for the\nanimation. Take four frame animation arranged in a single column. Each frame is\n64x64 pixels. You can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64, 1, true); // use column 1\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "path: the path to the animation frames", + "frames: the number of frames in the animation", + "width: the width of each frame", + "height: the height of each frame", + "column: the column of the animation frames", + "useColumns: whether to use columns or rows" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt eine Animation aus einer Spalte des Bildes an" + } + } + }, + { + "id": "AnimatedSprite/clone()", + "memberId": "AnimatedSprite/clone", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "clone", + "static": false, + "returnType": "AnimatedSprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a clone of this sprite with the same animations, playing the same\none, and puts it on the stage right behind this sprite. See\n[Sprite.clone()](../Sprite/clone).", + "description": "Creates a clone of this sprite with the same animations, playing the same\none, and puts it on the stage right behind this sprite. See\n[Sprite.clone()](../Sprite/clone).", + "scratchblock": null, + "paramDocs": [], + "returns": "the clone, of the same class as this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/clone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie dieser Figur" + } + } + }, + { + "id": "AnimatedSprite/constructor()", + "memberId": "AnimatedSprite/constructor", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "constructor", + "static": false, + "returnType": "AnimatedSprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.", + "description": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.\n\nExample usage:\n\n```java\nAnimatedSprite sprite = new AnimatedSprite();\nsprite.addCostume(\"idle\", \"assets/idle.png\");\nsprite.addAnimation(\"walk\", \"assets/walk_%d.png\", 4);\nsprite.playAnimation(\"walk\");\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine neue animierte Figur" + } + } + }, + { + "id": "AnimatedSprite/constructor(AnimatedSprite)", + "memberId": "AnimatedSprite/constructor", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "constructor", + "static": false, + "returnType": "AnimatedSprite", + "parameterTypes": [ + "org.openpatch.scratch.AnimatedSprite" + ], + "parameterNames": [ + "animatedSprite" + ], + "params": [ + "AnimatedSprite animatedSprite" + ], + "summary": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.", + "description": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.\n\nExample usage:\n\n```java\nAnimatedSprite sprite = new AnimatedSprite();\nsprite.addCostume(\"idle\", \"assets/idle.png\");\nsprite.addAnimation(\"walk\", \"assets/walk_%d.png\", 4);\nsprite.playAnimation(\"walk\");\n```", + "scratchblock": null, + "paramDocs": [ + "animatedSprite: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der angegebenen animierten Figur" + } + } + }, + { + "id": "AnimatedSprite/getAnimationFrame()", + "memberId": "AnimatedSprite/getAnimationFrame", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "getAnimationFrame", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the current animation frame.", + "description": "Gets the current animation frame.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current animation frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/getAnimationFrame", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer des aktuellen Einzelbildes zurück" + } + } + }, + { + "id": "AnimatedSprite/getAnimationInterval()", + "memberId": "AnimatedSprite/getAnimationInterval", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "getAnimationInterval", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the interval between animation frames.", + "description": "Gets the interval between animation frames.", + "scratchblock": null, + "paramDocs": [], + "returns": "the interval between animation frames", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/getAnimationInterval", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt zurück, wie viele Millisekunden ein Einzelbild angezeigt wird" + } + } + }, + { + "id": "AnimatedSprite/isAnimationPlayed()", + "memberId": "AnimatedSprite/isAnimationPlayed", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "isAnimationPlayed", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the animation is played.", + "description": "Checks if the animation is played.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the animation is played, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/isAnimationPlayed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine mit once gestartete Animation durchgelaufen ist" + } + } + }, + { + "id": "AnimatedSprite/playAnimation(String)", + "memberId": "AnimatedSprite/playAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "playAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Plays the animation with the specified name.", + "description": "Plays the animation with the specified name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation to play" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/playAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt die Animation in einer Schleife ab" + } + } + }, + { + "id": "AnimatedSprite/playAnimation(String,boolean)", + "memberId": "AnimatedSprite/playAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "playAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "boolean" + ], + "parameterNames": [ + "name", + "once" + ], + "params": [ + "String name", + "boolean once" + ], + "summary": "Plays the animation with the specified name.", + "description": "Plays the animation with the specified name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation to play", + "once: whether to play the animation once" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/playAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt die Animation ab; bei once == true nur ein einziges Mal" + } + } + }, + { + "id": "AnimatedSprite/resetAnimation()", + "memberId": "AnimatedSprite/resetAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "resetAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Resets the animation. The animation will start from the first frame.", + "description": "Resets the animation. The animation will start from the first frame.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/resetAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Animation auf das erste Einzelbild zurück" + } + } + }, + { + "id": "AnimatedSprite/setAnimationFrame(int)", + "memberId": "AnimatedSprite/setAnimationFrame", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "setAnimationFrame", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "frame" + ], + "params": [ + "int frame" + ], + "summary": "Sets the current animation frame.", + "description": "Sets the current animation frame.", + "scratchblock": null, + "paramDocs": [ + "frame: the current animation frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/setAnimationFrame", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Springt zum Einzelbild mit der angegebenen Nummer" + } + } + }, + { + "id": "AnimatedSprite/setAnimationInterval(int)", + "memberId": "AnimatedSprite/setAnimationInterval", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "setAnimationInterval", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "interval" + ], + "params": [ + "int interval" + ], + "summary": "Sets the interval between animation frames.", + "description": "Sets the interval between animation frames.", + "scratchblock": null, + "paramDocs": [ + "interval: the interval between animation frames" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/setAnimationInterval", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie viele Millisekunden ein Einzelbild angezeigt wird" + } + } + }, + { + "id": "AnimatedSprite/toString()", + "memberId": "AnimatedSprite/toString", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns which animation is playing and how far into it.", + "description": "Returns which animation is playing and how far into it.", + "scratchblock": null, + "paramDocs": [], + "returns": "the sprite as a text", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/toString", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Figur als Zeichenkette zurück" + } + } + }, + { + "id": "Circle/constructor(double,double,double)", + "memberId": "Circle/constructor", + "owner": "org.openpatch.scratch.Circle", + "className": "Circle", + "methodName": "constructor", + "static": false, + "returnType": "Circle", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "radius" + ], + "params": [ + "double x", + "double y", + "double radius" + ], + "summary": "Creates a circle with no specified position or size.", + "description": "Creates a circle with no specified position or size.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate of the circle's center", + "y: the y-coordinate of the circle's center", + "radius: the radius of the circle" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Circle/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Kreis um (x, y) mit dem angegebenen Radius" + } + } + }, + { + "id": "Clock/getDay()", + "memberId": "Clock/getDay", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getDay", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current day of the month, from 1 to 31.", + "description": "Returns the current day of the month, from 1 to 31.", + "scratchblock": "(current [date v])", + "paramDocs": [], + "returns": "the day of the month", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getDay", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den aktuellen Tag im Monat zurück" + } + } + }, + { + "id": "Clock/getDayOfWeek()", + "memberId": "Clock/getDayOfWeek", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getDayOfWeek", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current day of the week, from 1 for Monday to 7 for Sunday.", + "description": "Returns the current day of the week, from 1 for Monday to 7 for Sunday.", + "scratchblock": "(current [day of week v])", + "paramDocs": [], + "returns": "the day of the week", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getDayOfWeek", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Wochentag zurück (1 = Montag, 7 = Sonntag)" + } + } + }, + { + "id": "Clock/getDaysSince2000()", + "memberId": "Clock/getDaysSince2000", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getDaysSince2000", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the number of days that have passed since the first of January\n2000.", + "description": "Returns the number of days that have passed since the first of January\n2000.", + "scratchblock": "(days since 2000)", + "paramDocs": [], + "returns": "the days since 2000", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getDaysSince2000", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Anzahl der Tage seit dem 1. Januar 2000 zurück" + } + } + }, + { + "id": "Clock/getHour()", + "memberId": "Clock/getHour", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getHour", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current hour, from 0 to 23.", + "description": "Returns the current hour, from 0 to 23.", + "scratchblock": "(current [hour v])", + "paramDocs": [], + "returns": "the hour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getHour", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Stunde zurück" + } + } + }, + { + "id": "Clock/getMillisecond()", + "memberId": "Clock/getMillisecond", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getMillisecond", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the milliseconds of the current second, from 0 to 999.", + "description": "Returns the milliseconds of the current second, from 0 to 999.", + "scratchblock": null, + "paramDocs": [], + "returns": "the millisecond", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getMillisecond", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Millisekunde zurück" + } + } + }, + { + "id": "Clock/getMinute()", + "memberId": "Clock/getMinute", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getMinute", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current minute, from 0 to 59.", + "description": "Returns the current minute, from 0 to 59.", + "scratchblock": "(current [minute v])", + "paramDocs": [], + "returns": "the minute", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getMinute", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Minute zurück" + } + } + }, + { + "id": "Clock/getMonth()", + "memberId": "Clock/getMonth", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getMonth", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current month, from 1 for January to 12 for December.", + "description": "Returns the current month, from 1 for January to 12 for December.", + "scratchblock": "(current [month v])", + "paramDocs": [], + "returns": "the month", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getMonth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den aktuellen Monat zurück (1 = Januar)" + } + } + }, + { + "id": "Clock/getSecond()", + "memberId": "Clock/getSecond", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getSecond", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current second, from 0 to 59.", + "description": "Returns the current second, from 0 to 59.", + "scratchblock": "(current [second v])", + "paramDocs": [], + "returns": "the second", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getSecond", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Sekunde zurück" + } + } + }, + { + "id": "Clock/getYear()", + "memberId": "Clock/getYear", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getYear", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current year, for example 2026.", + "description": "Returns the current year, for example 2026.", + "scratchblock": "(current [year v])", + "paramDocs": [], + "returns": "the year", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getYear", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das aktuelle Jahr zurück" + } + } + }, + { + "id": "Color/changeColor(double)", + "memberId": "Color/changeColor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "changeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Changes the color accordining to a hue value, which is added to the current hue value. When the\nresulting value is greater than 255 it will be reset. For example: 285 => 30.", + "description": "Changes the color accordining to a hue value, which is added to the current hue value. When the\nresulting value is greater than 255 it will be reset. For example: 285 => 30.", + "scratchblock": null, + "paramDocs": [ + "h: A hue value. Could be any positive or negative number." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/changeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton um den angegebenen Wert" + } + } + }, + { + "id": "Color/constructor()", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Color object with default values.", + "description": "Constructs a new Color object with default values.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt die Farbe Weiß" + } + } + }, + { + "id": "Color/constructor(String)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "hexCode" + ], + "params": [ + "String hexCode" + ], + "summary": "The Color class represents a color in the Scratch environment. It supports various\nfunctionalities such as setting color values in the RGB and HSB spectrum, changing the color\nbased on a hue value, and converting between RGB and HSB color codes.", + "description": "The Color class represents a color in the Scratch environment. It supports various\nfunctionalities such as setting color values in the RGB and HSB spectrum, changing the color\nbased on a hue value, and converting between RGB and HSB color codes.", + "scratchblock": null, + "paramDocs": [ + "hexCode: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Farbe aus einem Hex-Code, z.B. #ff0000" + } + } + }, + { + "id": "Color/constructor(double)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Constructs a new Color object with the specified hue value.", + "description": "Constructs a new Color object with the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Farbe mit dem angegebenen Farbton (0 bis 255)" + } + } + }, + { + "id": "Color/constructor(double,double,double)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Constructs a new Color object with the specified rgb values.", + "description": "Constructs a new Color object with the specified rgb values.", + "scratchblock": null, + "paramDocs": [ + "r: the red value", + "g: the green value", + "b: the blue value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Farbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Color/constructor(Color)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Copies the received ScratchColor object.", + "description": "Copies the received ScratchColor object.", + "scratchblock": null, + "paramDocs": [ + "c: ScratchColor object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der übergebenen Farbe" + } + } + }, + { + "id": "Color/equals(Object)", + "memberId": "Color/equals", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "equals", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.Object" + ], + "parameterNames": [ + "other" + ], + "params": [ + "Object other" + ], + "summary": "Two colours are the same when they are the same colour.", + "description": "Two colours are the same when they are the same colour.", + "scratchblock": null, + "paramDocs": [ + "other: the object to compare with" + ], + "returns": "whether both are colours with the same red, green and blue", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/equals", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob es dieselbe Farbe ist" + } + } + }, + { + "id": "Color/get()", + "memberId": "Color/get", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "get", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the color value as a hex code. This is useful for comparing pixels.", + "description": "Get the color value as a hex code. This is useful for comparing pixels.", + "scratchblock": null, + "paramDocs": [], + "returns": "hex code", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/get", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Farbe als ganze Zahl zurück" + } + } + }, + { + "id": "Color/getBlue()", + "memberId": "Color/getBlue", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getBlue", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the blue value.", + "description": "Get the blue value.", + "scratchblock": null, + "paramDocs": [], + "returns": "blue value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getBlue", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Blauanteil zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getGreen()", + "memberId": "Color/getGreen", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getGreen", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the green value.", + "description": "Get the green value.", + "scratchblock": null, + "paramDocs": [], + "returns": "green value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getGreen", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Grünanteil zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getH()", + "memberId": "Color/getH", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getH", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the hue value.", + "description": "Get the hue value.", + "scratchblock": null, + "paramDocs": [], + "returns": "hue value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getH", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Farbton zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getHSB()", + "memberId": "Color/getHSB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getHSB", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the color value on the HSB spectrum.", + "description": "Get the color value on the HSB spectrum.", + "scratchblock": null, + "paramDocs": [], + "returns": "hue value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getHSB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Farbton zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getL()", + "memberId": "Color/getL", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getL", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the luminosity value.", + "description": "Get the luminosity value.", + "scratchblock": null, + "paramDocs": [], + "returns": "luminosity value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getL", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Helligkeit zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getRed()", + "memberId": "Color/getRed", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getRed", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the red value.", + "description": "Get the red value.", + "scratchblock": null, + "paramDocs": [], + "returns": "red value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getRed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rotanteil zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getS()", + "memberId": "Color/getS", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getS", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the saturation value.", + "description": "Get the saturation value.", + "scratchblock": null, + "paramDocs": [], + "returns": "saturation value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getS", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Sättigung zurück (0 bis 255)" + } + } + }, + { + "id": "Color/hashCode()", + "memberId": "Color/hashCode", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "hashCode", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "", + "description": "", + "scratchblock": null, + "paramDocs": [], + "returns": "a hash consistent with [equals(Object)](equals)", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/hashCode", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Color/setHSB(double)", + "memberId": "Color/setHSB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "setHSB", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Setting the color value after the HSB spectrum. Saturation and Luminosity are fixed at 255.", + "description": "Setting the color value after the HSB spectrum. Saturation and Luminosity are fixed at 255.", + "scratchblock": null, + "paramDocs": [ + "h: A hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/setHSB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Farbton (0 bis 255)" + } + } + }, + { + "id": "Color/setHSB(double,double,double)", + "memberId": "Color/setHSB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "setHSB", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "h", + "s", + "l" + ], + "params": [ + "double h", + "double s", + "double l" + ], + "summary": "Setting the color value after the HSB spectrum.", + "description": "Setting the color value after the HSB spectrum.", + "scratchblock": null, + "paramDocs": [ + "h: A hue value [0...255]", + "s: A saturation value [0...255]", + "l: A luminosity value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/setHSB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt Farbton, Sättigung und Helligkeit (jeweils 0 bis 255)" + } + } + }, + { + "id": "Color/setRGB(double,double,double)", + "memberId": "Color/setRGB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "setRGB", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Setting the color value after the RGB spectrum", + "description": "Setting the color value after the RGB spectrum", + "scratchblock": null, + "paramDocs": [ + "r: A red value [0...255]", + "g: A green value [0...255]", + "b: A blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/setRGB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Color/toString()", + "memberId": "Color/toString", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The colour written out, so that printing one says something.", + "description": "The colour written out, so that printing one says something.\n\nWithout this a `System.out.println(mySprite.getTint())` printed\n`org.openpatch.scratch.Color@35432107`, which tells you nothing about\nthe colour and is the first thing anyone tries when a tint looks wrong.", + "scratchblock": null, + "paramDocs": [], + "returns": "the colour as `Color[r=255.0, g=128.0, b=0.0]`", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/toString", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Farbe als Text aus" + } + } + }, + { + "id": "Ellipse/constructor(double,double,double,double)", + "memberId": "Ellipse/constructor", + "owner": "org.openpatch.scratch.Ellipse", + "className": "Ellipse", + "methodName": "constructor", + "static": false, + "returnType": "Ellipse", + "parameterTypes": [ + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "width", + "height" + ], + "params": [ + "double x", + "double y", + "double width", + "double height" + ], + "summary": "Creates an ellipse with no specified position or size.", + "description": "Creates an ellipse with no specified position or size.", + "scratchblock": null, + "paramDocs": [ + "x: ", + "y: ", + "width: ", + "height: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Ellipse/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Ellipse im angegebenen Rechteck" + } + } + }, + { + "id": "Hitbox/constructor(Shape)", + "memberId": "Hitbox/constructor", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "constructor", + "static": false, + "returnType": "Hitbox", + "parameterTypes": [ + "org.openpatch.scratch.Shape" + ], + "parameterNames": [ + "shape" + ], + "params": [ + "Shape shape" + ], + "summary": "Constructs a hitbox with the specified shape.", + "description": "Constructs a hitbox with the specified shape.", + "scratchblock": null, + "paramDocs": [ + "shape: The shape of the hitbox." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Umriss aus einer Form" + } + } + }, + { + "id": "Hitbox/constructor(double[],double[])", + "memberId": "Hitbox/constructor", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "constructor", + "static": false, + "returnType": "Hitbox", + "parameterTypes": [ + "double[]", + "double[]" + ], + "parameterNames": [ + "xPoints", + "yPoints" + ], + "params": [ + "double[] xPoints", + "double[] yPoints" + ], + "summary": "Constructs a hitbox with the specified x and y points.", + "description": "Constructs a hitbox with the specified x and y points.", + "scratchblock": null, + "paramDocs": [ + "xPoints: The x-coordinates of the points.", + "yPoints: The y-coordinates of the points." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Umriss aus x- und y-Koordinaten" + } + } + }, + { + "id": "Hitbox/contains(double,double)", + "memberId": "Hitbox/contains", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "contains", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Checks if the hitbox contains a point.", + "description": "Checks if the hitbox contains a point.", + "scratchblock": null, + "paramDocs": [ + "x: The x-coordinate of the point.", + "y: The y-coordinate of the point." + ], + "returns": "`true` if the hitbox contains the point, `false`\n otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/contains", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Punkt im Umriss liegt" + } + } + }, + { + "id": "Hitbox/getBounds()", + "memberId": "Hitbox/getBounds", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "getBounds", + "static": false, + "returnType": "Bounds", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the smallest upright rectangle the hitbox fits into.", + "description": "Returns the smallest upright rectangle the hitbox fits into.", + "scratchblock": null, + "paramDocs": [], + "returns": "the bounding box of the hitbox", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/getBounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das umschließende Rechteck zurück" + } + } + }, + { + "id": "Hitbox/getShape()", + "memberId": "Hitbox/getShape", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "getShape", + "static": false, + "returnType": "Shape", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shape of the hitbox.", + "description": "Returns the shape of the hitbox.", + "scratchblock": null, + "paramDocs": [], + "returns": "The shape of the hitbox.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/getShape", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Umriss als Form zurück" + } + } + }, + { + "id": "Hitbox/intersects(Hitbox)", + "memberId": "Hitbox/intersects", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "intersects", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Hitbox" + ], + "parameterNames": [ + "hitbox" + ], + "params": [ + "Hitbox hitbox" + ], + "summary": "Checks if the hitbox intersects with another hitbox.", + "description": "Checks if the hitbox intersects with another hitbox.", + "scratchblock": null, + "paramDocs": [ + "hitbox: The hitbox to check for intersection." + ], + "returns": "`true` if the hitboxes intersect, `false` otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/intersects", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich beide Umrisse überlappen" + } + } + }, + { + "id": "Hitbox/translateAndRotateAndResize(double,double,double,double,double,double)", + "memberId": "Hitbox/translateAndRotateAndResize", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "translateAndRotateAndResize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "degrees", + "originX", + "originY", + "translateX", + "translateY", + "size" + ], + "params": [ + "double degrees", + "double originX", + "double originY", + "double translateX", + "double translateY", + "double size" + ], + "summary": "Transforms the shape by scaling, translating, and rotating it.", + "description": "Transforms the shape by scaling, translating, and rotating it.", + "scratchblock": null, + "paramDocs": [ + "degrees: The angle in degrees to rotate the shape.", + "originX: The x-coordinate of the rotation origin.", + "originY: The y-coordinate of the rotation origin.", + "translateX: The x-coordinate to translate the shape.", + "translateY: The y-coordinate to translate the shape.", + "size: The size to scale the shape, where 100.0 represents the\n original size." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/translateAndRotateAndResize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt, dreht und skaliert den Umriss" + } + } + }, + { + "id": "HtmlColor/constructor()", + "memberId": "HtmlColor/constructor", + "owner": "org.openpatch.scratch.HtmlColor", + "className": "HtmlColor", + "methodName": "constructor", + "static": false, + "returnType": "HtmlColor", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Provides predefined HTML colors as Color objects.", + "description": "Provides predefined HTML colors as Color objects.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/HtmlColor/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige der benannten Farben zurück" + } + } + }, + { + "id": "HtmlColor/getRandom()", + "memberId": "HtmlColor/getRandom", + "owner": "org.openpatch.scratch.HtmlColor", + "className": "HtmlColor", + "methodName": "getRandom", + "static": true, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random HTML color.", + "description": "Returns a random HTML color.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random Color from the predefined HTML colors", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/HtmlColor/getRandom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/absOf(int)", + "memberId": "Operators/absOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "absOf", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "x" + ], + "params": [ + "int x" + ], + "summary": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "description": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "scratchblock": null, + "paramDocs": [ + "x: a value" + ], + "returns": "the absolute value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/absOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Betrag zurück" + } + } + }, + { + "id": "Operators/absOf(double)", + "memberId": "Operators/absOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "absOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "description": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "scratchblock": "([abs v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the absolute value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/absOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Betrag zurück" + } + } + }, + { + "id": "Operators/acosOf(double)", + "memberId": "Operators/acosOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "acosOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"acos\" is the abbreviation for \"arccosine\" and is also sometimes written as cos\\u22121. When given\nthe ratio (in decimal form) of the length of the adjacent side and hypotenuse of a right\ntriangle, it finds the angle.", + "description": "\"acos\" is the abbreviation for \"arccosine\" and is also sometimes written as cos\\u22121. When given\nthe ratio (in decimal form) of the length of the adjacent side and hypotenuse of a right\ntriangle, it finds the angle.", + "scratchblock": "([acos v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the angle of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/acosOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Arkuskosinus von x, Ergebnis in Grad" + } + } + }, + { + "id": "Operators/asinOf(double)", + "memberId": "Operators/asinOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "asinOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"asin\" is the abbreviation for \"arcsine\" and is also sometimes written as sin\\u22121. When given the\nratio (in decimal form) of the length of the opposite side and hypotenuse of a right triangle,\nit finds the angle.", + "description": "\"asin\" is the abbreviation for \"arcsine\" and is also sometimes written as sin\\u22121. When given the\nratio (in decimal form) of the length of the opposite side and hypotenuse of a right triangle,\nit finds the angle.", + "scratchblock": "([asin v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the angle of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/asinOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Arkussinus von x, Ergebnis in Grad" + } + } + }, + { + "id": "Operators/atanOf(double)", + "memberId": "Operators/atanOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "atanOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"atan\" is the abbreviation for \"arctangent\" and is also sometimes written as tan\\u22121. When given\nthe ratio (in decimal form) of the length of the opposite side and adjacent side of a right\ntriangle, it finds the angle.", + "description": "\"atan\" is the abbreviation for \"arctangent\" and is also sometimes written as tan\\u22121. When given\nthe ratio (in decimal form) of the length of the opposite side and adjacent side of a right\ntriangle, it finds the angle.", + "scratchblock": "([atan v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the angle of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/atanOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Arkustangens von x, Ergebnis in Grad" + } + } + }, + { + "id": "Operators/ceilingOf(double)", + "memberId": "Operators/ceilingOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "ceilingOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "This always rounds the number up to the least whole number greater than or equal to the number.\nFor example, ceiling(3.14) = 4 and ceiling(7.68) = 8.", + "description": "This always rounds the number up to the least whole number greater than or equal to the number.\nFor example, ceiling(3.14) = 4 and ceiling(7.68) = 8.", + "scratchblock": "([ceiling v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the ceiling of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/ceilingOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet auf" + } + } + }, + { + "id": "Operators/constrain(double,double,double)", + "memberId": "Operators/constrain", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "constrain", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "amt", + "low", + "high" + ], + "params": [ + "double amt", + "double low", + "double high" + ], + "summary": "Constrains a value to not exceed a maximum and minimum value.", + "description": "Constrains a value to not exceed a maximum and minimum value.", + "scratchblock": null, + "paramDocs": [ + "amt: the value to constrain", + "low: minimum limit", + "high: maximum limit" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/constrain", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Begrenzt den Wert auf den Bereich zwischen low und high" + } + } + }, + { + "id": "Operators/constrain(int,int,int)", + "memberId": "Operators/constrain", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "constrain", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "amt", + "low", + "high" + ], + "params": [ + "int amt", + "int low", + "int high" + ], + "summary": "Constrains a value to not exceed a maximum and minimum value.", + "description": "Constrains a value to not exceed a maximum and minimum value.", + "scratchblock": null, + "paramDocs": [ + "amt: the value to constrain", + "low: minimum limit", + "high: maximum limit" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/constrain", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Begrenzt den Wert auf den Bereich zwischen low und high" + } + } + }, + { + "id": "Operators/cosOf(double)", + "memberId": "Operators/cosOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "cosOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"cos\" is the abbreviation for \"cosine.\" The cosine of an angle is the ratio between the length\nof the side adjacent (next to) it on the triangle and the length of the hypotenuse. In the\npicture above, the cosine of angle A is equal to side \"adjacent\" divided by side \"hypotenuse\".", + "description": "\"cos\" is the abbreviation for \"cosine.\" The cosine of an angle is the ratio between the length\nof the side adjacent (next to) it on the triangle and the length of the hypotenuse. In the\npicture above, the cosine of angle A is equal to side \"adjacent\" divided by side \"hypotenuse\".", + "scratchblock": "([cos v] of (x))", + "paramDocs": [ + "x: an angle between [0, ..., 360]" + ], + "returns": "the cos of the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/cosOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Kosinus des Winkels x, x in Grad" + } + } + }, + { + "id": "Operators/eToThePowerOf(double)", + "memberId": "Operators/eToThePowerOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "eToThePowerOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"e\" is an abbreviation for \"Euler's number\", which is about 2.718. With the e^ function, e is\nmultiplied by itself the value number of times. For example, if the value is 3, the answer\nwould be e3, or e×e×e, which is about 20.086.", + "description": "\"e\" is an abbreviation for \"Euler's number\", which is about 2.718. With the e^ function, e is\nmultiplied by itself the value number of times. For example, if the value is 3, the answer\nwould be e3, or e×e×e, which is about 20.086.", + "scratchblock": "([e ^ v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "e to the power of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/eToThePowerOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt e hoch x zurück" + } + } + }, + { + "id": "Operators/floorOf(double)", + "memberId": "Operators/floorOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "floorOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "This always rounds the number down to the greatest whole number less than or equal to the\nnumber. For example, floor(1.73) = 1 and floor(-2.74) = -3.", + "description": "This always rounds the number down to the greatest whole number less than or equal to the\nnumber. For example, floor(1.73) = 1 and floor(-2.74) = -3.", + "scratchblock": "([floor v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the floor of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/floorOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet ab" + } + } + }, + { + "id": "Operators/lerp(double,double,double)", + "memberId": "Operators/lerp", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "lerp", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "start", + "stop", + "amt" + ], + "params": [ + "double start", + "double stop", + "double amt" + ], + "summary": "Calculates a number between two numbers at a specific increment. The amt parameter is\nthe amount to interpolate between the two values where 0.0 equal to the first point, 0.1 is\nvery near the first point, 0.5 is half-way in between, etc. The lerp function is convenient for\ncreating motion along a straight path and for drawing dotted lines.", + "description": "Calculates a number between two numbers at a specific increment. The amt parameter is\nthe amount to interpolate between the two values where 0.0 equal to the first point, 0.1 is\nvery near the first point, 0.5 is half-way in between, etc. The lerp function is convenient for\ncreating motion along a straight path and for drawing dotted lines.", + "scratchblock": null, + "paramDocs": [ + "start: first value", + "stop: second value", + "amt: double between 0.0 and 1.0" + ], + "returns": "the interpolated value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/lerp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Interpoliert linear zwischen start und stop; amt liegt zwischen 0 und 1" + } + } + }, + { + "id": "Operators/lnOf(double)", + "memberId": "Operators/lnOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "lnOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "ln is \"natural log.\" It figures out how many times e would have to be multiplied by itself to\nget the value. For example, if the value was 148.4, the answer would be about 5 because e5\n(e×e×e×e×e) is around 148.4.", + "description": "ln is \"natural log.\" It figures out how many times e would have to be multiplied by itself to\nget the value. For example, if the value was 148.4, the answer would be about 5 because e5\n(e×e×e×e×e) is around 148.4.", + "scratchblock": "([ln v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the ln of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/lnOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Natürlicher Logarithmus von x" + } + } + }, + { + "id": "Operators/logOf(double)", + "memberId": "Operators/logOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "logOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"Log\" is short for \"logarithm.\" The log function figures out how many times 10 must be\nmultiplied by itself to get the value. For example, if the value is 100, the answer is 2\nbecause 10×10 is 100.", + "description": "\"Log\" is short for \"logarithm.\" The log function figures out how many times 10 must be\nmultiplied by itself to get the value. For example, if the value is 100, the answer is 2\nbecause 10×10 is 100.", + "scratchblock": "([log v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the log to base 10 of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/logOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zehnerlogarithmus von x" + } + } + }, + { + "id": "Operators/map(double,double,double,double,double)", + "memberId": "Operators/map", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "map", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "value", + "start1", + "stop1", + "start2", + "stop2" + ], + "params": [ + "double value", + "double start1", + "double stop1", + "double start2", + "double stop2" + ], + "summary": "Re-maps a number from one range to another.
\n
\nIn the first example above, the number 25 is converted from a value in the range of 0 to 100\ninto a value that ranges from the left edge of the window (0) to the right edge (width).
\n
\nAs shown in the second example, numbers outside the range are not clamped to the minimum and\nmaximum parameters values, because out-of-range values are often intentional and useful.", + "description": "Re-maps a number from one range to another.
\n
\nIn the first example above, the number 25 is converted from a value in the range of 0 to 100\ninto a value that ranges from the left edge of the window (0) to the right edge (width).
\n
\nAs shown in the second example, numbers outside the range are not clamped to the minimum and\nmaximum parameters values, because out-of-range values are often intentional and useful.", + "scratchblock": null, + "paramDocs": [ + "value: the incoming value to be converted", + "start1: lower bound of the value's current range", + "stop1: upper bound of the value's current range", + "start2: lower bound of the value's target range", + "stop2: upper bound of the value's target range" + ], + "returns": "the value mapped to the new range", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/map", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rechnet einen Wert aus dem Bereich start1..stop1 in den Bereich start2..stop2 um" + } + } + }, + { + "id": "Operators/max(double[])", + "memberId": "Operators/max", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "max", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "double[] v" + ], + "summary": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the maximum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/max", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/max(int[])", + "memberId": "Operators/max", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "max", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "int[] v" + ], + "summary": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the maximum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/max", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/min(double[])", + "memberId": "Operators/min", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "min", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "double[] v" + ], + "summary": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the minimum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/min", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/min(int[])", + "memberId": "Operators/min", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "min", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "int[] v" + ], + "summary": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the minimum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/min", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/mod(double,double)", + "memberId": "Operators/mod", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "mod", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second.", + "description": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second.\n\nThe answer takes the sign of the second input, as the Scratch block does, so\n`mod(-7, 3)` is 2 rather than the -1 Java's own `%` would give.\nThat is what makes it useful for wrapping a value into a range: a sprite\nwhose x has gone negative still lands somewhere sensible.", + "scratchblock": "((x) mod (y))", + "paramDocs": [ + "x: first value", + "y: second value" + ], + "returns": "what is left of the first value after dividing by the second", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/mod", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rest der Division x geteilt durch y zurück" + } + } + }, + { + "id": "Operators/mod(int,int)", + "memberId": "Operators/mod", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "mod", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "int x", + "int y" + ], + "summary": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second, with the sign of the second input,\nas the Scratch block does.", + "description": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second, with the sign of the second input,\nas the Scratch block does.", + "scratchblock": null, + "paramDocs": [ + "x: first value", + "y: second value" + ], + "returns": "what is left of the first value after dividing by the second", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/mod", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rest der Division x geteilt durch y zurück" + } + } + }, + { + "id": "Operators/round(double)", + "memberId": "Operators/round", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "round", + "static": true, + "returnType": "int", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "The standard rules of rounding are followed; decimals that are .5 or higher are rounded up,\nwhereas decimals less than .5 are rounded down.", + "description": "The standard rules of rounding are followed; decimals that are .5 or higher are rounded up,\nwhereas decimals less than .5 are rounded down.", + "scratchblock": "(round (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the rounded value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/round", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet auf eine ganze Zahl" + } + } + }, + { + "id": "Operators/round(double,int)", + "memberId": "Operators/round", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "round", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "int" + ], + "parameterNames": [ + "x", + "precision" + ], + "params": [ + "double x", + "int precision" + ], + "summary": "Rounds a number to a specified number of decimal places.", + "description": "Rounds a number to a specified number of decimal places.", + "scratchblock": null, + "paramDocs": [ + "x: a value", + "precision: the number of decimal places to round to" + ], + "returns": "the rounded value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/round", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet auf die angegebene Anzahl Nachkommastellen" + } + } + }, + { + "id": "Operators/sinOf(double)", + "memberId": "Operators/sinOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "sinOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"sin\" is an abbreviation for \"sine.\" The sine of an angle is the ratio between the length of\nthe side that is opposite (across) the triangle from it and the length of the hypotenuse (the\nside that is across from the right angle). In the picture above, the sine of angle A is equal\nto side \"opposite\" divided by side \"hypotenuse\".", + "description": "\"sin\" is an abbreviation for \"sine.\" The sine of an angle is the ratio between the length of\nthe side that is opposite (across) the triangle from it and the length of the hypotenuse (the\nside that is across from the right angle). In the picture above, the sine of angle A is equal\nto side \"opposite\" divided by side \"hypotenuse\".", + "scratchblock": "([sin v] of (x))", + "paramDocs": [ + "x: an angle between [0,...,360]" + ], + "returns": "the sin of the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/sinOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Sinus des Winkels x, x in Grad" + } + } + }, + { + "id": "Operators/sqrtOf(double)", + "memberId": "Operators/sqrtOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "sqrtOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"sqrt\" is an abbreviation for \"square root.\" A number that is squared is multiplied by itself.\nFor example, when 2 is squared, the answer is 2×2, which is 4. When a number is square rooted,\nthe answer is the number that was squared to get it. So, the square root of 4 is 2. Similarly,\nthe square root of 2 is about 1.414213562373095 because 1.4142135623730952\n(1.414213562373095\\u202f×\\u202f1.414213562373095) is close to 2.", + "description": "\"sqrt\" is an abbreviation for \"square root.\" A number that is squared is multiplied by itself.\nFor example, when 2 is squared, the answer is 2×2, which is 4. When a number is square rooted,\nthe answer is the number that was squared to get it. So, the square root of 4 is 2. Similarly,\nthe square root of 2 is about 1.414213562373095 because 1.4142135623730952\n(1.414213562373095\\u202f×\\u202f1.414213562373095) is close to 2.", + "scratchblock": "([sqrt v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the square root of the value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/sqrtOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Quadratwurzel zurück" + } + } + }, + { + "id": "Operators/tanOf(double)", + "memberId": "Operators/tanOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "tanOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"tan\" is the abbreviation for \"tangent.\" The tangent of an angle is the ratio between the\nlength of the side adjacent to it and the side opposite of it. In the picture above, the\ntangent of angle A is equal to side \"opposite\" divided by side \"adjacent\".", + "description": "\"tan\" is the abbreviation for \"tangent.\" The tangent of an angle is the ratio between the\nlength of the side adjacent to it and the side opposite of it. In the picture above, the\ntangent of angle A is equal to side \"opposite\" divided by side \"adjacent\".", + "scratchblock": "([tan v] of (x))", + "paramDocs": [ + "x: an angle between [0, ..., 360]" + ], + "returns": "the tan of the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/tanOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Tangens des Winkels x, x in Grad" + } + } + }, + { + "id": "Operators/tenToThePowerOf(double)", + "memberId": "Operators/tenToThePowerOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "tenToThePowerOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "The 10^ function multiplies 10 times itself the value number of times. For example, if the\nvalue was 6, the answer would be 106 (that is 10×10×10×10×10×10), which is 1,000,000.", + "description": "The 10^ function multiplies 10 times itself the value number of times. For example, if the\nvalue was 6, the answer would be 106 (that is 10×10×10×10×10×10), which is 1,000,000.", + "scratchblock": "([10 ^ v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "10 to the power of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/tenToThePowerOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt 10 hoch x zurück" + } + } + }, + { + "id": "Pen/changeColor(double)", + "memberId": "Pen/changeColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "changeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "c" + ], + "params": [ + "double c" + ], + "summary": "Change color via a hue value, which is added to the current hue value", + "description": "Change color via a hue value, which is added to the current hue value", + "scratchblock": "change pen [color v] by (c)", + "paramDocs": [ + "c: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/changeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton des Stifts um den angegebenen Wert" + } + } + }, + { + "id": "Pen/changeSize(double)", + "memberId": "Pen/changeSize", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "changeSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "size" + ], + "params": [ + "double size" + ], + "summary": "Change the size of the pen", + "description": "Change the size of the pen", + "scratchblock": "change pen size by (size)", + "paramDocs": [ + "size: size to change" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/changeSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Strichstärke um den angegebenen Wert" + } + } + }, + { + "id": "Pen/changeTransparency(double)", + "memberId": "Pen/changeTransparency", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "changeTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Change the transparency by a step", + "description": "Change the transparency by a step", + "scratchblock": null, + "paramDocs": [ + "step: the step to change the transparency by" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/changeTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Deckkraft um den angegebenen Wert" + } + } + }, + { + "id": "Pen/constructor()", + "memberId": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "constructor", + "static": false, + "returnType": "Pen", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Pen object.", + "description": "Constructs a new Pen object.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen neuen Stift" + } + } + }, + { + "id": "Pen/constructor(Sprite)", + "memberId": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "constructor", + "static": false, + "returnType": "Pen", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Constructs a new Pen object associated with the given Sprite.", + "description": "Constructs a new Pen object associated with the given Sprite.", + "scratchblock": null, + "paramDocs": [ + "s: the Sprite object to associate with this Pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Senkt den Stift ab, so dass er beim Bewegen zeichnet" + } + } + }, + { + "id": "Pen/constructor(Pen)", + "memberId": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "constructor", + "static": false, + "returnType": "Pen", + "parameterTypes": [ + "org.openpatch.scratch.Pen" + ], + "parameterNames": [ + "p" + ], + "params": [ + "Pen p" + ], + "summary": "Copies a Pen object.", + "description": "Copies a Pen object.", + "scratchblock": null, + "paramDocs": [ + "p: Pen object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Pen/down()", + "memberId": "Pen/down", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "down", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Set the pen down.", + "description": "Set the pen down.", + "scratchblock": "pen down", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/down", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Pen/eraseAll()", + "memberId": "Pen/eraseAll", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "eraseAll", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Erases all.", + "description": "Erases all.", + "scratchblock": "erase all", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/eraseAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Löscht alles Gezeichnete" + } + } + }, + { + "id": "Pen/getColor()", + "memberId": "Pen/getColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "getColor", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current color of the pen.", + "description": "Retrieves the current color of the pen.", + "scratchblock": null, + "paramDocs": [], + "returns": "the color of the pen", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/getColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Stiftfarbe zurück" + } + } + }, + { + "id": "Pen/getSize()", + "memberId": "Pen/getSize", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "getSize", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size of the pen", + "description": "Returns the size of the pen", + "scratchblock": null, + "paramDocs": [], + "returns": "the size of the pen", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/getSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Strichstärke zurück" + } + } + }, + { + "id": "Pen/goToBackground()", + "memberId": "Pen/goToBackground", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToBackground", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Sets the pen to the background. This method changes the state of the pen to\nindicate that it is\nno longer in the foreground.", + "description": "Sets the pen to the background. This method changes the state of the pen to\nindicate that it is\nno longer in the foreground.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToBackground", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeichnet hinter den Figuren" + } + } + }, + { + "id": "Pen/goToForeground()", + "memberId": "Pen/goToForeground", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToForeground", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the pen to the foreground. This method sets the pen's state to indicate\nthat it is in the\nforeground.", + "description": "Moves the pen to the foreground. This method sets the pen's state to indicate\nthat it is in the\nforeground.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToForeground", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeichnet vor den Figuren" + } + } + }, + { + "id": "Pen/goToMousePointer()", + "memberId": "Pen/goToMousePointer", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToMousePointer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the object to the current position of the mouse pointer.", + "description": "Moves the object to the current position of the mouse pointer.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift auf die Position des Mauszeigers" + } + } + }, + { + "id": "Pen/goToRandomPosition()", + "memberId": "Pen/goToRandomPosition", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToRandomPosition", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the object to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "description": "Moves the object to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToRandomPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift an eine zufällige Position der Bühne" + } + } + }, + { + "id": "Pen/isInBackground()", + "memberId": "Pen/isInBackground", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "isInBackground", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true if the pen is in the background.", + "description": "Returns true if the pen is in the background.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the pen is in the background", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/isInBackground", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Stift hinter den Figuren zeichnet" + } + } + }, + { + "id": "Pen/setColor(Color)", + "memberId": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Set the color of the pen", + "description": "Set the color of the pen", + "scratchblock": null, + "paramDocs": [ + "c: color of the pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Stiftfarbe" + } + } + }, + { + "id": "Pen/setColor(double)", + "memberId": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Set color via hue value", + "description": "Set color via hue value", + "scratchblock": "set pen [color v] to (h)", + "paramDocs": [ + "h: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Stiftfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Pen/setColor(double,double,double)", + "memberId": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Set color via rgb values", + "description": "Set color via rgb values", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Stiftfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Pen/setPosition(double,double)", + "memberId": "Pen/setPosition", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Set the position if the pen is down.", + "description": "Set the position if the pen is down.", + "scratchblock": null, + "paramDocs": [ + "x: x coordinate", + "y: y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift an die angegebene Position; bei abgesenktem Stift wird eine Linie gezeichnet" + } + } + }, + { + "id": "Pen/setPosition(Vector2)", + "memberId": "Pen/setPosition", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the pen using a Vector2 object.", + "description": "Sets the position of the pen using a Vector2 object.", + "scratchblock": null, + "paramDocs": [ + "v: the Vector2 object containing the new x and y coordinates" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift an die angegebene Position; bei abgesenktem Stift wird eine Linie gezeichnet" + } + } + }, + { + "id": "Pen/setSize(double)", + "memberId": "Pen/setSize", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "size" + ], + "params": [ + "double size" + ], + "summary": "Set the size of the pen", + "description": "Set the size of the pen", + "scratchblock": "set pen size to (size)", + "paramDocs": [ + "size: size of the pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Strichstärke" + } + } + }, + { + "id": "Pen/setTransparency(double)", + "memberId": "Pen/setTransparency", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "transparency" + ], + "params": [ + "double transparency" + ], + "summary": "Set the transparency", + "description": "Set the transparency", + "scratchblock": null, + "paramDocs": [ + "transparency: transparency of the pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Deckkraft von 0 (unsichtbar) bis 255 (deckend)" + } + } + }, + { + "id": "Pen/stamp()", + "memberId": "Pen/stamp", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "stamp", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stamps the current sprite onto the canvas. If the sprite is not null, it will\nstamp either to\nthe foreground or the background based on the value of the isForeground flag.", + "description": "Stamps the current sprite onto the canvas. If the sprite is not null, it will\nstamp either to\nthe foreground or the background based on the value of the isForeground flag.", + "scratchblock": "stamp", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/stamp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Druckt ein Abbild der zugehörigen Figur auf die Bühne" + } + } + }, + { + "id": "Pen/up()", + "memberId": "Pen/up", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "up", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Move the pen up.", + "description": "Move the pen up.", + "scratchblock": "pen up", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/up", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Hebt den Stift an, so dass er nicht mehr zeichnet" + } + } + }, + { + "id": "Polygon/addPoint(double,double)", + "memberId": "Polygon/addPoint", + "owner": "org.openpatch.scratch.Polygon", + "className": "Polygon", + "methodName": "addPoint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Adds a point to the polygon.", + "description": "Adds a point to the polygon.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate", + "y: the y-coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Polygon/addPoint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt dem Vieleck einen Punkt hinzu" + } + } + }, + { + "id": "Polygon/constructor()", + "memberId": "Polygon/constructor", + "owner": "org.openpatch.scratch.Polygon", + "className": "Polygon", + "methodName": "constructor", + "static": false, + "returnType": "Polygon", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates an empty polygon.", + "description": "Creates an empty polygon.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Polygon/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein leeres Vieleck; Punkte kommen mit addPoint() dazu" + } + } + }, + { + "id": "Polygon/constructor(double[],double[])", + "memberId": "Polygon/constructor", + "owner": "org.openpatch.scratch.Polygon", + "className": "Polygon", + "methodName": "constructor", + "static": false, + "returnType": "Polygon", + "parameterTypes": [ + "double[]", + "double[]" + ], + "parameterNames": [ + "xPoints", + "yPoints" + ], + "params": [ + "double[] xPoints", + "double[] yPoints" + ], + "summary": "Creates a polygon with the specified vertices.", + "description": "Creates a polygon with the specified vertices.", + "scratchblock": null, + "paramDocs": [ + "xPoints: an array of x-coordinates", + "yPoints: an array of y-coordinates" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Polygon/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Vieleck aus x- und y-Koordinaten" + } + } + }, + { + "id": "Random/noise(double)", + "memberId": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noise", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Returns the Open Simplex noise value at specified coordinates", + "description": "Returns the Open Simplex noise value at specified coordinates", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate" + ], + "returns": "the noise value between 0 and 1", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noise", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle x zurück" + } + } + }, + { + "id": "Random/noise(double,double)", + "memberId": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noise", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Returns the Open Simplex noise value at specified coordinates", + "description": "Returns the Open Simplex noise value at specified coordinates", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate", + "y: y-coordinate" + ], + "returns": "the noise value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noise", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle (x, y) zurück" + } + } + }, + { + "id": "Random/noise(double,double,double)", + "memberId": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noise", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "z" + ], + "params": [ + "double x", + "double y", + "double z" + ], + "summary": "Returns the Open Simplex noise value at specified coordinates", + "description": "Returns the Open Simplex noise value at specified coordinates", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate", + "y: y-coordinate", + "z: z-coordinate" + ], + "returns": "the noise value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noise", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle (x, y, z) zurück" + } + } + }, + { + "id": "Random/noiseSeed(long)", + "memberId": "Random/noiseSeed", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noiseSeed", + "static": true, + "returnType": "void", + "parameterTypes": [ + "long" + ], + "parameterNames": [ + "noiseSeed" + ], + "params": [ + "long noiseSeed" + ], + "summary": "Sets the seed for the noise method.", + "description": "Sets the seed for the noise method.", + "scratchblock": null, + "paramDocs": [ + "noiseSeed: the seed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noiseSeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Startwert für das Rauschen" + } + } + }, + { + "id": "Random/random()", + "memberId": "Random/random", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "random", + "static": true, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random double between 0 and 1.", + "description": "Returns a random double between 0 and 1.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/random", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen 0 und 1 zurück" + } + } + }, + { + "id": "Random/random(double)", + "memberId": "Random/random", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "random", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "max" + ], + "params": [ + "double max" + ], + "summary": "Returns a random double between 0 and max.", + "description": "Returns a random double between 0 and max.", + "scratchblock": null, + "paramDocs": [ + "max: the maximum double" + ], + "returns": "a random double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/random", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen 0 und max zurück" + } + } + }, + { + "id": "Random/random(double,double)", + "memberId": "Random/random", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "random", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "min", + "max" + ], + "params": [ + "double min", + "double max" + ], + "summary": "Returns a random double between min and max.", + "description": "Returns a random double between min and max.", + "scratchblock": "(pick random (min) to (max))", + "paramDocs": [ + "min: the minimum double", + "max: the maximum double" + ], + "returns": "a random double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/random", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen min und max zurück" + } + } + }, + { + "id": "Random/randomInt(int)", + "memberId": "Random/randomInt", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomInt", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "max" + ], + "params": [ + "int max" + ], + "summary": "Returns a random integer between 0 and max.", + "description": "Returns a random integer between 0 and max.", + "scratchblock": null, + "paramDocs": [ + "max: the maximum integer" + ], + "returns": "a random integer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomInt", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine ganze Zufallszahl zwischen 0 und max zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Random/randomInt(int,int)", + "memberId": "Random/randomInt", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomInt", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "min", + "max" + ], + "params": [ + "int min", + "int max" + ], + "summary": "Returns a random integer between min and max.", + "description": "Returns a random integer between min and max.", + "scratchblock": "(pick random (min) to (max))", + "paramDocs": [ + "min: the minimum integer", + "max: the maximum integer" + ], + "returns": "a random integer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomInt", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine ganze Zufallszahl zwischen min und max zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Random/randomPosition()", + "memberId": "Random/randomPosition", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomPosition", + "static": true, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random position with respect to the width of the window.", + "description": "Returns a random position with respect to the width of the window.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random position vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige Position auf der Bühne zurück" + } + } + }, + { + "id": "Random/randomSeed(long)", + "memberId": "Random/randomSeed", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomSeed", + "static": true, + "returnType": "void", + "parameterTypes": [ + "long" + ], + "parameterNames": [ + "seed" + ], + "params": [ + "long seed" + ], + "summary": "Sets the seed for the random method.", + "description": "Sets the seed for the random method.", + "scratchblock": null, + "paramDocs": [ + "seed: the seed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomSeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Startwert für die Zufallszahlen; danach wiederholt sich dieselbe Folge" + } + } + }, + { + "id": "Random/randomVector2()", + "memberId": "Random/randomVector2", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomVector2", + "static": true, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random unit vector", + "description": "Returns a random unit vector", + "scratchblock": null, + "paramDocs": [], + "returns": "a random unit vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomVector2", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen zufälligen Vektor der Länge 1 zurück" + } + } + }, + { + "id": "Random/randomX()", + "memberId": "Random/randomX", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomX", + "static": true, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return a random x coordinate with respect to the width of the window.", + "description": "Return a random x coordinate with respect to the width of the window.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige x-Koordinate innerhalb der Bühne zurück" + } + } + }, + { + "id": "Random/randomY()", + "memberId": "Random/randomY", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomY", + "static": true, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return a random y coordinate with respect to the width of the window.", + "description": "Return a random y coordinate with respect to the width of the window.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige y-Koordinate innerhalb der Bühne zurück" + } + } + }, + { + "id": "Rectangle/constructor(double,double,double,double)", + "memberId": "Rectangle/constructor", + "owner": "org.openpatch.scratch.Rectangle", + "className": "Rectangle", + "methodName": "constructor", + "static": false, + "returnType": "Rectangle", + "parameterTypes": [ + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "width", + "height" + ], + "params": [ + "double x", + "double y", + "double width", + "double height" + ], + "summary": "Creates a rectangle with the specified position and size.", + "description": "Creates a rectangle with the specified position and size.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate of the rectangle's top-left corner", + "y: the y-coordinate of the rectangle's top-left corner", + "width: the width of the rectangle", + "height: the height of the rectangle" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Rectangle/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Rechteck mit der linken oberen Ecke bei (x, y)" + } + } + }, + { + "id": "Shape/contains(double,double)", + "memberId": "Shape/contains", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "contains", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Check if the shape contains a point defined by its x and y coordinates.", + "description": "Check if the shape contains a point defined by its x and y coordinates.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate of the point", + "y: the y-coordinate of the point" + ], + "returns": "true if the shape contains the point, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/contains", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Punkt in der Form liegt" + } + } + }, + { + "id": "Shape/getBounds()", + "memberId": "Shape/getBounds", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "getBounds", + "static": false, + "returnType": "Bounds", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the bounds of the shape.", + "description": "Get the bounds of the shape.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Bounds object representing the bounding box of the shape", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/getBounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das umschließende Rechteck zurück" + } + } + }, + { + "id": "Shape/intersects(Shape)", + "memberId": "Shape/intersects", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "intersects", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Shape" + ], + "parameterNames": [ + "other" + ], + "params": [ + "Shape other" + ], + "summary": "Check if the shape intersects with another shape.", + "description": "Check if the shape intersects with another shape.", + "scratchblock": null, + "paramDocs": [ + "other: the other shape to check intersection with" + ], + "returns": "true if the shapes intersect, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/intersects", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich beide Formen überlappen" + } + } + }, + { + "id": "Shape/rotate(double,double,double)", + "memberId": "Shape/rotate", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "rotate", + "static": false, + "returnType": "Shape", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "theta", + "anchorX", + "anchorY" + ], + "params": [ + "double theta", + "double anchorX", + "double anchorY" + ], + "summary": "Rotate the shape by the specified angle around a given anchor point.", + "description": "Rotate the shape by the specified angle around a given anchor point.", + "scratchblock": null, + "paramDocs": [ + "theta: the angle in degrees to rotate", + "anchorX: the x-coordinate of the anchor point", + "anchorY: the y-coordinate of the anchor point" + ], + "returns": "a new Shape object that is rotated", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/rotate", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die um theta Grad gedrehte Form als neue Form zurück" + } + } + }, + { + "id": "Shape/scale(double,double)", + "memberId": "Shape/scale", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "scale", + "static": false, + "returnType": "Shape", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "scaleX", + "scaleY" + ], + "params": [ + "double scaleX", + "double scaleY" + ], + "summary": "Check if the shape is empty.", + "description": "Check if the shape is empty.", + "scratchblock": null, + "paramDocs": [ + "scaleX: ", + "scaleY: " + ], + "returns": "true if the shape is empty, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/scale", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die skalierte Form als neue Form zurück" + } + } + }, + { + "id": "Shape/translate(double,double)", + "memberId": "Shape/translate", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "translate", + "static": false, + "returnType": "Shape", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "dx", + "dy" + ], + "params": [ + "double dx", + "double dy" + ], + "summary": "Translate the shape by the specified distances in the x and y directions.", + "description": "Translate the shape by the specified distances in the x and y directions.", + "scratchblock": null, + "paramDocs": [ + "dx: the distance to translate in the x direction", + "dy: the distance to translate in the y direction" + ], + "returns": "a new Shape object that is translated", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/translate", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die verschobene Form als neue Form zurück" + } + } + }, + { + "id": "Sprite/addCostume(String)", + "memberId": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the costumes that ship with Scratch for Java to the sprite. The\ncostume gets the same name as the built-in sprite. If a costume with that\nname already exists do nothing.", + "description": "Add one of the costumes that ship with Scratch for Java to the sprite. The\ncostume gets the same name as the built-in sprite. If a costume with that\nname already exists do nothing.\n\nExample usage:\n\n```java\nthis.addCostume(\"bunny1_jump\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sprite, for example \"bunny1_jump\". Add\n the sheet in front of the name, for example\n \"platformer/grass\", if the same name exists on several sheets." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt eines der eingebauten Kostüme hinzu" + } + } + }, + { + "id": "Sprite/addCostume(String,String)", + "memberId": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "imagePath" + ], + "params": [ + "String name", + "String imagePath" + ], + "summary": "Add a costume to the sprite. If a costume with the received name already\nexists do nothing.", + "description": "Add a costume to the sprite. If a costume with the received name already\nexists do nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "imagePath: a image path, or the name of a built-in sprite such as\n \"bunny1_jump\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt ein Kostüm unter eigenem Namen hinzu" + } + } + }, + { + "id": "Sprite/addCostume(String,String,int,int,int,int)", + "memberId": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int" + ], + "parameterNames": [ + "name", + "spriteSheetPath", + "x", + "y", + "width", + "height" + ], + "params": [ + "String name", + "String spriteSheetPath", + "int x", + "int y", + "int width", + "int height" + ], + "summary": "Adds a new costume to the sprite if a costume with the same name does not\nalready exist.", + "description": "Adds a new costume to the sprite if a costume with the same name does not\nalready exist.", + "scratchblock": null, + "paramDocs": [ + "name: The name of the costume.", + "spriteSheetPath: The path to the sprite sheet image file.", + "x: The x-coordinate of the top-left corner of the costume\n in the sprite sheet.", + "y: The y-coordinate of the top-left corner of the costume\n in the sprite sheet.", + "width: The width of the costume in the sprite sheet.", + "height: The height of the costume in the sprite sheet." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schneidet ein Kostüm aus einem Bild aus" + } + } + }, + { + "id": "Sprite/addCostumes(String,String,int,int)", + "memberId": "Sprite/addCostumes", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostumes", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int" + ], + "parameterNames": [ + "prefix", + "spriteSheet", + "tileWidth", + "tileHeight" + ], + "params": [ + "String prefix", + "String spriteSheet", + "int tileWidth", + "int tileHeight" + ], + "summary": "Adds all tiles from a spritesheet as costumes. The costumes will be name by\nthe prefix and the\nindex in the spritesheet. For example if the prefix is \"tile\" and the\nspritesheet contains 4\ntiles, the costumes will be named \"tile0\", \"tile1\", \"tile2\", and \"tile3\".", + "description": "Adds all tiles from a spritesheet as costumes. The costumes will be name by\nthe prefix and the\nindex in the spritesheet. For example if the prefix is \"tile\" and the\nspritesheet contains 4\ntiles, the costumes will be named \"tile0\", \"tile1\", \"tile2\", and \"tile3\".", + "scratchblock": null, + "paramDocs": [ + "prefix: a prefix for all generated costumes", + "spriteSheet: a path to a sprite sheet, or the name of a built-in sprite", + "tileWidth: the width of a single tile", + "tileHeight: the height of a single tile" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostumes", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zerschneidet ein Bild in gleich große Kacheln und fügt sie als Kostüme hinzu" + } + } + }, + { + "id": "Sprite/addSound(String,String)", + "memberId": "Sprite/addSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "soundPath" + ], + "params": [ + "String name", + "String soundPath" + ], + "summary": "Add a sound to the sprite. If a sound with the received name already exists\ndo nothing.", + "description": "Add a sound to the sprite. If a sound with the received name already exists\ndo nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "soundPath: a sound path, or the name of a built-in sound such as\n \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Klang unter eigenem Namen hinzu" + } + } + }, + { + "id": "Sprite/addSound(String)", + "memberId": "Sprite/addSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the sounds that ship with Scratch for Java to the sprite. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.", + "description": "Add one of the sounds that ship with Scratch for Java to the sprite. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.\n\nExample usage:\n\n```java\nthis.addSound(\"footstep_carpet_000\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sound, for example \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen der eingebauten Klänge hinzu" + } + } + }, + { + "id": "Sprite/ask(String)", + "memberId": "Sprite/ask", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "ask", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "question" + ], + "params": [ + "String question" + ], + "summary": "Asks a question and waits for an answer to be typed in. The question appears\nat the top of the stage.", + "description": "Asks a question and waits for an answer to be typed in. The question appears\nat the top of the stage.\n\nUnlike Scratch, this does not pause the sprite. `run()` keeps being called\nwhile the question is on screen, so check [isAsking()](isAsking) or wait for\n[getAnswer()](getAnswer) to change.", + "scratchblock": "ask [question] and wait", + "paramDocs": [ + "question: the question to show" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/ask", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stellt eine Frage; die Antwort wird über getAnswer() abgeholt" + } + } + }, + { + "id": "Sprite/broadcast(String)", + "memberId": "Sprite/broadcast", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "broadcast", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "Broadcasts a message to every sprite on the stage, this one included, and\nto the stage itself, as in Scratch. If the sprite is not on a stage, nothing\nhappens.", + "description": "Broadcasts a message to every sprite on the stage, this one included, and\nto the stage itself, as in Scratch. If the sprite is not on a stage, nothing\nhappens.", + "scratchblock": "broadcast [message v]", + "paramDocs": [ + "message: The message to broadcast." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/broadcast", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Sendet eine Nachricht an alle Figuren und die Bühne" + } + } + }, + { + "id": "Sprite/changePosition(Vector2)", + "memberId": "Sprite/changePosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changePosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Changes the position of the sprite by a given vector.", + "description": "Changes the position of the sprite by a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector representing the change in position" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changePosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt die Figur um den angegebenen Vektor" + } + } + }, + { + "id": "Sprite/changePosition(double,double)", + "memberId": "Sprite/changePosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changePosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Changes the position of the sprite by the given amounts.", + "description": "Changes the position of the sprite by the given amounts.", + "scratchblock": null, + "paramDocs": [ + "x: how far to move along the x-axis", + "y: how far to move along the y-axis" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changePosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt die Figur um die angegebenen Werte" + } + } + }, + { + "id": "Sprite/changeSize(double)", + "memberId": "Sprite/changeSize", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "amount" + ], + "params": [ + "double amount" + ], + "summary": "Changes the size of the sprite by a given percentage.", + "description": "Changes the size of the sprite by a given percentage.", + "scratchblock": "change size by (amount)", + "paramDocs": [ + "amount: a percentage [0...100]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Größe um den angegebenen Wert in Prozent" + } + } + }, + { + "id": "Sprite/changeTint(double)", + "memberId": "Sprite/changeTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes the tint for the sprite by a step.", + "description": "Changes the tint for the sprite by a step.", + "scratchblock": "change [color v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton der Einfärbung um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeTransparency(double)", + "memberId": "Sprite/changeTransparency", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes how see-through the sprite is by a step. A positive step fades it\nout, a negative one brings it back.", + "description": "Changes how see-through the sprite is by a step. A positive step fades it\nout, a negative one brings it back.", + "scratchblock": "change [ghost v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Transparenz um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeVolume(double)", + "memberId": "Sprite/changeVolume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Makes every sound of this sprite louder or quieter.", + "description": "Makes every sound of this sprite louder or quieter.", + "scratchblock": "change volume by (step)", + "paramDocs": [ + "step: how much to add to the volume, in percent" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Lautstärke um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeX(double)", + "memberId": "Sprite/changeX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Changes x by a certain amount", + "description": "Changes x by a certain amount", + "scratchblock": "change x by (x)", + "paramDocs": [ + "x: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die x-Position um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeY(double)", + "memberId": "Sprite/changeY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Changes y by a certain amount", + "description": "Changes y by a certain amount", + "scratchblock": "change y by (y)", + "paramDocs": [ + "y: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die y-Position um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/clone()", + "memberId": "Sprite/clone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "clone", + "static": false, + "returnType": "Sprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a clone of this sprite, like Scratch's \"create clone of myself\": a\nnew sprite of the same class (a clone of a `Cat` is a `Cat`),\nwith the same costume, position, direction, size and pen, and a copy of\nthe variables of your class. It is put on the stage right behind this\nsprite, and its [whenStartsAsClone()](whenStartsAsClone) runs; the constructor does\nnot run again.", + "description": "Creates a clone of this sprite, like Scratch's \"create clone of myself\": a\nnew sprite of the same class (a clone of a `Cat` is a `Cat`),\nwith the same costume, position, direction, size and pen, and a copy of\nthe variables of your class. It is put on the stage right behind this\nsprite, and its [whenStartsAsClone()](whenStartsAsClone) runs; the constructor does\nnot run again.\n\nNumbers, text and booleans in your variables are the clone's own. A list\nor another object is shared with the original: give the clone its own in\n[whenStartsAsClone()](whenStartsAsClone) if it needs one.\n\n```java\nBullet bullet = (Bullet) this.clone();\n```", + "scratchblock": "create clone of [myself v]", + "paramDocs": [], + "returns": "the clone, of the same class as this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/clone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/constructor()", + "memberId": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "constructor", + "static": false, + "returnType": "Sprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Sprite object with default settings.", + "description": "Constructs a new Sprite object with default settings.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine neue Figur" + } + } + }, + { + "id": "Sprite/constructor(String,String)", + "memberId": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "constructor", + "static": false, + "returnType": "Sprite", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "imagePath" + ], + "params": [ + "String name", + "String imagePath" + ], + "summary": "Constructs a new Sprite object with a specified costume.", + "description": "Constructs a new Sprite object with a specified costume.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name for the costume", + "imagePath: a path to an image file, or the name of a built-in sprite\n such as \"slimeGreen\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Figur mit einem ersten Kostüm" + } + } + }, + { + "id": "Sprite/constructor(Sprite)", + "memberId": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "constructor", + "static": false, + "returnType": "Sprite", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Copies a Sprite object.", + "description": "Copies a Sprite object.", + "scratchblock": null, + "paramDocs": [ + "s: a Sprite object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der angegebenen Figur" + } + } + }, + { + "id": "Sprite/debug(Object[])", + "memberId": "Sprite/debug", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "debug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Object[]" + ], + "parameterNames": [ + "values" + ], + "params": [ + "Object[] values" + ], + "summary": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the sprite's class name so you can tell\nwhich sprite it came from.", + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the sprite's class name so you can tell\nwhich sprite it came from.\n\nExample:\n\n```java\nthis.debug(\"x =\", getX(), \"y =\", getY());\n// prints: [CatSprite] x = 100.0 y = 200.0\n```", + "scratchblock": null, + "paramDocs": [ + "values: one or more values to print" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/debug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/deleteThisClone()", + "memberId": "Sprite/deleteThisClone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "deleteThisClone", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes this sprite from the stage if it is a clone, like Scratch's\n\"delete this clone\". The original stays.", + "description": "Removes this sprite from the stage if it is a clone, like Scratch's\n\"delete this clone\". The original stays.", + "scratchblock": "delete this clone", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/deleteThisClone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/disableHitbox()", + "memberId": "Sprite/disableHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "disableHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Disables the hitbox for the sprite. Once the hitbox is disabled, the sprite\nwill no longer\ndetect collisions with other objects.", + "description": "Disables the hitbox for the sprite. Once the hitbox is disabled, the sprite\nwill no longer\ndetect collisions with other objects.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/disableHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Berührungserkennung aus" + } + } + }, + { + "id": "Sprite/distanceToMousePointer()", + "memberId": "Sprite/distanceToMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "distanceToMousePointer", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Calculates the distance from the current sprite to the mouse pointer.", + "description": "Calculates the distance from the current sprite to the mouse pointer.", + "scratchblock": "(distance to [mouse-pointer v])", + "paramDocs": [], + "returns": "the distance to the mouse pointer as a double.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/distanceToMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Abstand zum Mauszeiger zurück" + } + } + }, + { + "id": "Sprite/distanceToSprite(Sprite)", + "memberId": "Sprite/distanceToSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "distanceToSprite", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Calculates the Euclidean distance between this sprite and another sprite.", + "description": "Calculates the Euclidean distance between this sprite and another sprite.", + "scratchblock": "(distance to [sprite v])", + "paramDocs": [ + "sprite: the other sprite to which the distance is calculated" + ], + "returns": "the distance between this sprite and the specified sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/distanceToSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Abstand zu einer anderen Figur zurück" + } + } + }, + { + "id": "Sprite/enableHitbox()", + "memberId": "Sprite/enableHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "enableHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Enables the hitbox for the sprite. This method sets the hitboxDisabled flag\nto false, allowing\nthe sprite to interact with other objects.", + "description": "Enables the hitbox for the sprite. This method sets the hitboxDisabled flag\nto false, allowing\nthe sprite to interact with other objects.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/enableHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Berührungserkennung wieder ein" + } + } + }, + { + "id": "Sprite/getAnswer()", + "memberId": "Sprite/getAnswer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getAnswer", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the last answer that was typed in.", + "description": "Returns the last answer that was typed in.", + "scratchblock": "(answer)", + "paramDocs": [], + "returns": "the answer, or an empty string if nothing has been answered yet", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getAnswer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die zuletzt eingegebene Antwort zurück, sonst eine leere Zeichenkette" + } + } + }, + { + "id": "Sprite/getCurrentCostumeIndex()", + "memberId": "Sprite/getCurrentCostumeIndex", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getCurrentCostumeIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current costume index", + "description": "Returns the current costume index", + "scratchblock": "(costume [number v])", + "paramDocs": [], + "returns": "a costume index", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getCurrentCostumeIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer des aktuellen Kostüms zurück" + } + } + }, + { + "id": "Sprite/getCurrentCostumeName()", + "memberId": "Sprite/getCurrentCostumeName", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getCurrentCostumeName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current costume name", + "description": "Returns the current costume name", + "scratchblock": "(costume [name v])", + "paramDocs": [], + "returns": "a costume name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getCurrentCostumeName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen des aktuellen Kostüms zurück" + } + } + }, + { + "id": "Sprite/getDeltaTime()", + "memberId": "Sprite/getDeltaTime", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getDeltaTime", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the seconds passed since the last frame.", + "description": "Gets the seconds passed since the last frame.", + "scratchblock": null, + "paramDocs": [], + "returns": "seconds since last frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getDeltaTime", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + } + }, + { + "id": "Sprite/getDirection()", + "memberId": "Sprite/getDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getDirection", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the direction of the sprite.", + "description": "Returns the direction of the sprite.", + "scratchblock": "(direction)", + "paramDocs": [], + "returns": "the direction [0...360]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Blickrichtung in Grad zurück (90 = rechts, 0 = oben)" + } + } + }, + { + "id": "Sprite/getHeight()", + "memberId": "Sprite/getHeight", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getHeight", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the height of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Höhe der Figur in Pixeln zurück" + } + } + }, + { + "id": "Sprite/getHitbox()", + "memberId": "Sprite/getHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getHitbox", + "static": false, + "returnType": "Hitbox", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the hitbox of the sprite based on its current costume, position, and\nrotation. If the\nsprite has a hitbox already defined, it updates and returns it. Otherwise, it\ncalculates a new\nhitbox based on the sprite's dimensions and rotation.", + "description": "Returns the hitbox of the sprite based on its current costume, position, and\nrotation. If the\nsprite has a hitbox already defined, it updates and returns it. Otherwise, it\ncalculates a new\nhitbox based on the sprite's dimensions and rotation.", + "scratchblock": null, + "paramDocs": [], + "returns": "the hitbox of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Trefferfläche der Figur zurück" + } + } + }, + { + "id": "Sprite/getMouse()", + "memberId": "Sprite/getMouse", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getMouse", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current position of the mouse cursor.", + "description": "Retrieves the current position of the mouse cursor.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Vector2 object representing the current mouse cursor position, with\n the x-coordinate\n obtained from getMouseX() and the y-coordinate obtained from\n getMouseY().", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getMouse", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position des Mauszeigers zurück" + } + } + }, + { + "id": "Sprite/getMouseX()", + "memberId": "Sprite/getMouseX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getMouseX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current x-position of the mouse cursor", + "description": "Returns the current x-position of the mouse cursor", + "scratchblock": "(mouse x)", + "paramDocs": [], + "returns": "x-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getMouseX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Sprite/getMouseY()", + "memberId": "Sprite/getMouseY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getMouseY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current y-position of the mouse cursor", + "description": "Returns the current y-position of the mouse cursor", + "scratchblock": "(mouse y)", + "paramDocs": [], + "returns": "y-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getMouseY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Sprite/getPen()", + "memberId": "Sprite/getPen", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getPen", + "static": false, + "returnType": "Pen", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pen of the sprite.", + "description": "Returns the pen of the sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getPen", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Stift dieser Figur zurück; mit ihm kann sie eine Spur zeichnen" + } + } + }, + { + "id": "Sprite/getPosition()", + "memberId": "Sprite/getPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current position of the sprite.", + "description": "Retrieves the current position of the sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": "A [Vector2](../Vector2/index) object representing the x and y coordinates of the\n sprite.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position der Figur zurück" + } + } + }, + { + "id": "Sprite/getShaders()", + "memberId": "Sprite/getShaders", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getShaders", + "static": false, + "returnType": "Shaders", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shaders of this sprite. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.", + "description": "Returns the shaders of this sprite. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.\n\nExample usage:\n\n```java\nthis.getShaders().add(\"blur\", \"blur.frag\", null);\nthis.getShaders().switchTo(\"blur\");\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the shaders", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getShaders", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Shader dieser Figur zurück" + } + } + }, + { + "id": "Sprite/getSize()", + "memberId": "Sprite/getSize", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getSize", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size of the sprite.", + "description": "Returns the size of the sprite.", + "scratchblock": "(size)", + "paramDocs": [], + "returns": "size in percentage", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Größe in Prozent zurück" + } + } + }, + { + "id": "Sprite/getStage()", + "memberId": "Sprite/getStage", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getStage", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current stage associated with this sprite.", + "description": "Retrieves the current stage associated with this sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": "the stage associated with this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Bühne zurück, auf der die Figur steht" + } + } + }, + { + "id": "Sprite/getText()", + "memberId": "Sprite/getText", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getText", + "static": false, + "returnType": "Text", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the text associated with this sprite.", + "description": "Retrieves the text associated with this sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": "the text associated with this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getText", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Text zurück, der über der Figur angezeigt wird" + } + } + }, + { + "id": "Sprite/getTimer()", + "memberId": "Sprite/getTimer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the default timer", + "description": "Return the default timer", + "scratchblock": "(timer)", + "paramDocs": [], + "returns": "the default timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Standard-Timer dieser Figur zurück" + } + } + }, + { + "id": "Sprite/getTimer(String)", + "memberId": "Sprite/getTimer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Return a timer by name", + "description": "Return a timer by name", + "scratchblock": null, + "paramDocs": [ + "name: " + ], + "returns": "a timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Timer mit dem angegebenen Namen zurück und legt ihn bei Bedarf an" + } + } + }, + { + "id": "Sprite/getTint()", + "memberId": "Sprite/getTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTint", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the tint value of the current costume.", + "description": "Retrieves the tint value of the current costume.", + "scratchblock": null, + "paramDocs": [], + "returns": "the tint value of the current costume, or null if there are no\n costumes.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Farbe der Einfärbung zurück" + } + } + }, + { + "id": "Sprite/getTouchingSprite(Class)", + "memberId": "Sprite/getTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTouchingSprite", + "static": false, + "returnType": "T", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Returns the first sprite of the specified type that is currently touching\nthis sprite.", + "description": "Returns the first sprite of the specified type that is currently touching\nthis sprite.", + "scratchblock": null, + "paramDocs": [ + "c: the class object of the type of sprite to check for" + ], + "returns": "the first sprite of the specified type that is touching this sprite,\n or null if no such\n sprite is found", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTouchingSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die erste berührte Figur dieser Klasse zurück, sonst null" + } + } + }, + { + "id": "Sprite/getTouchingSprites(Class)", + "memberId": "Sprite/getTouchingSprites", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTouchingSprites", + "static": false, + "returnType": "List", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Returns a list of sprites of the specified type that are currently touching\nthis sprite.", + "description": "Returns a list of sprites of the specified type that are currently touching\nthis sprite.", + "scratchblock": null, + "paramDocs": [ + "c: the class of the type of sprites to return" + ], + "returns": "a list of sprites of the specified type that are touching this\n sprite, or null if the\n stage is not set", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTouchingSprites", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle berührten Figuren dieser Klasse zurück" + } + } + }, + { + "id": "Sprite/getTransparency()", + "memberId": "Sprite/getTransparency", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTransparency", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the transparency of the current costume.", + "description": "Gets the transparency of the current costume.", + "scratchblock": null, + "paramDocs": [], + "returns": "how see-through the sprite is, 0 solid and 100 invisible", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Transparenz in Prozent zurück" + } + } + }, + { + "id": "Sprite/getVolume()", + "memberId": "Sprite/getVolume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getVolume", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns how loud the sounds of this sprite play.", + "description": "Returns how loud the sounds of this sprite play.", + "scratchblock": "(volume)", + "paramDocs": [], + "returns": "the volume, from 0 to 100", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Lautstärke in Prozent zurück" + } + } + }, + { + "id": "Sprite/getWidth()", + "memberId": "Sprite/getWidth", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getWidth", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite der Figur in Pixeln zurück" + } + } + }, + { + "id": "Sprite/getX()", + "memberId": "Sprite/getX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x coordinate of the sprite", + "description": "Returns the x coordinate of the sprite", + "scratchblock": "(x position)", + "paramDocs": [], + "returns": "a x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position zurück (Mitte der Bühne ist 0)" + } + } + }, + { + "id": "Sprite/getY()", + "memberId": "Sprite/getY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y coordinate of the sprite", + "description": "Returns the y coordinate of the sprite", + "scratchblock": "(y position)", + "paramDocs": [], + "returns": "a y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position zurück (Mitte der Bühne ist 0, nach oben positiv)" + } + } + }, + { + "id": "Sprite/glide(double,double,double)", + "memberId": "Sprite/glide", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "glide", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "seconds", + "x", + "y" + ], + "params": [ + "double seconds", + "double x", + "double y" + ], + "summary": "Slides the sprite to a place over the given time, instead of jumping there.", + "description": "Slides the sprite to a place over the given time, instead of jumping there.\n\nUnlike Scratch this does not hold up the sprite: `run()` keeps being called\nwhile the sprite is on its way. Use [isGliding()](isGliding) to tell whether it\nhas arrived.", + "scratchblock": "glide (seconds) secs to x: (x) y: (y)", + "paramDocs": [ + "seconds: how long the trip should take", + "x: where to end up", + "y: where to end up" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/glide", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gleitet in der angegebenen Zeit zur Zielposition" + } + } + }, + { + "id": "Sprite/goLayersBackwards(int)", + "memberId": "Sprite/goLayersBackwards", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goLayersBackwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the sprite backwards by a specified number of layers in the stage. If\nthe sprite is not\npart of a stage, the method does nothing.", + "description": "Moves the sprite backwards by a specified number of layers in the stage. If\nthe sprite is not\npart of a stage, the method does nothing.", + "scratchblock": "go [backward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the sprite backwards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goLayersBackwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt die Figur um die angegebene Anzahl Ebenen nach hinten" + } + } + }, + { + "id": "Sprite/goLayersForwards(int)", + "memberId": "Sprite/goLayersForwards", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goLayersForwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the sprite forward by a specified number of layers within its stage.", + "description": "Moves the sprite forward by a specified number of layers within its stage.", + "scratchblock": "go [forward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the sprite forward" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goLayersForwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt die Figur um die angegebene Anzahl Ebenen nach vorne" + } + } + }, + { + "id": "Sprite/goToBackLayer()", + "memberId": "Sprite/goToBackLayer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToBackLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the sprite to the back layer of the stage. If the sprite is not\nassociated with any\nstage, the method returns without performing any action.", + "description": "Moves the sprite to the back layer of the stage. If the sprite is not\nassociated with any\nstage, the method returns without performing any action.", + "scratchblock": "go to [back v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToBackLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt die Figur ganz nach hinten" + } + } + }, + { + "id": "Sprite/goToFrontLayer()", + "memberId": "Sprite/goToFrontLayer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToFrontLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves this sprite to the front layer of the stage. If the sprite is not part\nof any stage, the\nmethod does nothing.", + "description": "Moves this sprite to the front layer of the stage. If the sprite is not part\nof any stage, the\nmethod does nothing.", + "scratchblock": "go to [front v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToFrontLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt die Figur ganz nach vorne" + } + } + }, + { + "id": "Sprite/goToMousePointer()", + "memberId": "Sprite/goToMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToMousePointer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the sprite to the current position of the mouse pointer. This method\nupdates the sprite's\nposition to the coordinates of the mouse cursor.", + "description": "Moves the sprite to the current position of the mouse pointer. This method\nupdates the sprite's\nposition to the coordinates of the mouse cursor.", + "scratchblock": "go to [mouse-pointer v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an die Position des Mauszeigers" + } + } + }, + { + "id": "Sprite/goToRandomPosition()", + "memberId": "Sprite/goToRandomPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToRandomPosition", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the sprite to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "description": "Moves the sprite to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "scratchblock": "go to [random position v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToRandomPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an eine zufällige Position auf der Bühne" + } + } + }, + { + "id": "Sprite/goToSprite(Sprite)", + "memberId": "Sprite/goToSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToSprite", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Moves this sprite to the position of the specified sprite.", + "description": "Moves this sprite to the position of the specified sprite.", + "scratchblock": "go to [sprite v]", + "paramDocs": [ + "sprite: the sprite to move to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur auf die Position einer anderen Figur" + } + } + }, + { + "id": "Sprite/hide()", + "memberId": "Sprite/hide", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "hide", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Hides the sprite. The pen is not effected.", + "description": "Hides the sprite. The pen is not effected.", + "scratchblock": "hide", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/hide", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Macht die Figur unsichtbar" + } + } + }, + { + "id": "Sprite/hideVariable(String)", + "memberId": "Sprite/hideVariable", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "hideVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "description": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "scratchblock": "hide variable [name v]", + "paramDocs": [ + "name: the name the monitor was shown with" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/hideVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/ifOnEdgeBounce()", + "memberId": "Sprite/ifOnEdgeBounce", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "ifOnEdgeBounce", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the sprite is on the edge of the stage and bounces it back if it\nis. The sprite's\ndirection is reversed when it hits the left or right border, and it is\nreversed and rotated by\n180 degrees when it hits the top or bottom border. The method does nothing if\nthe hitbox is\ndisabled or if the sprite is a UI element. It also does nothing if the\nsprite has not been added to a stage yet.", + "description": "Checks if the sprite is on the edge of the stage and bounces it back if it\nis. The sprite's\ndirection is reversed when it hits the left or right border, and it is\nreversed and rotated by\n180 degrees when it hits the top or bottom border. The method does nothing if\nthe hitbox is\ndisabled or if the sprite is a UI element. It also does nothing if the\nsprite has not been added to a stage yet.", + "scratchblock": "if on edge, bounce", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/ifOnEdgeBounce", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Lässt die Figur am Bühnenrand abprallen" + } + } + }, + { + "id": "Sprite/isAsking()", + "memberId": "Sprite/isAsking", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isAsking", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether a question is on screen and still waiting for an answer.", + "description": "Checks whether a question is on screen and still waiting for an answer.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while a question is waiting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isAsking", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn noch auf eine Antwort gewartet wird" + } + } + }, + { + "id": "Sprite/isClone()", + "memberId": "Sprite/isClone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isClone", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Whether this sprite is a clone, made by [clone()](clone).", + "description": "Whether this sprite is a clone, made by [clone()](clone).", + "scratchblock": null, + "paramDocs": [], + "returns": "true for a clone, false for the original", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isClone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der Figur" + } + } + }, + { + "id": "Sprite/isColorTouchingColor(Color,Color)", + "memberId": "Sprite/isColorTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isColorTouchingColor", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "color", + "other" + ], + "params": [ + "Color color", + "Color other" + ], + "summary": "Checks whether a colour of the sprite is touching a colour on the stage:\nonly the parts of the costume painted in `color` count. A car whose\nfront bumper is red can ask whether the bumper touches the grass.", + "description": "Checks whether a colour of the sprite is touching a colour on the stage:\nonly the parts of the costume painted in `color` count. A car whose\nfront bumper is red can ask whether the bumper touches the grass.\n\n```java\nif (this.isColorTouchingColor(HtmlColor.RED, HtmlColor.GREEN)) {\n this.say(\"Off the road!\");\n}\n```", + "scratchblock": "<color [#ff0000] is touching [#00ff00]?>", + "paramDocs": [ + "color: a colour of this sprite's costume", + "other: the colour to look for under it" + ], + "returns": "true if the colour touches the other colour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isColorTouchingColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob die Teile der Figur in der Farbe color über der Farbe other liegen" + } + } + }, + { + "id": "Sprite/isGliding()", + "memberId": "Sprite/isGliding", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isGliding", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether the sprite is still on its way to a place it was told to\nglide to.", + "description": "Checks whether the sprite is still on its way to a place it was told to\nglide to.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while it is still moving", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isGliding", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur gerade gleitet" + } + } + }, + { + "id": "Sprite/isKeyPressed(KeyCode)", + "memberId": "Sprite/isKeyPressed", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isKeyPressed", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "Returns true if the key is pressed", + "description": "Returns true if the key is pressed", + "scratchblock": "<key [space v] pressed?>", + "paramDocs": [ + "keyCode: a key" + ], + "returns": "key pressed", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Taste gerade gedrückt ist" + } + } + }, + { + "id": "Sprite/isMouseDown()", + "memberId": "Sprite/isMouseDown", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isMouseDown", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true is the mouse button is down", + "description": "Returns true is the mouse button is down", + "scratchblock": "<mouse down?>", + "paramDocs": [], + "returns": "mouse button down", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isMouseDown", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine Maustaste gedrückt ist" + } + } + }, + { + "id": "Sprite/isSoundPlaying(String)", + "memberId": "Sprite/isSoundPlaying", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isSoundPlaying", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns true if the sound if playing", + "description": "Returns true if the sound if playing", + "scratchblock": null, + "paramDocs": [ + "name: Name of the sound" + ], + "returns": "playing", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isSoundPlaying", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Klang gerade abgespielt wird" + } + } + }, + { + "id": "Sprite/isTouchingColor(Color)", + "memberId": "Sprite/isTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingColor", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "color" + ], + "params": [ + "Color color" + ], + "summary": "Checks whether the sprite is touching a colour: whether anything it paints\nlies over that colour on the stage - on the backdrop, on what the pen drew,\nor on another sprite.", + "description": "Checks whether the sprite is touching a colour: whether anything it paints\nlies over that colour on the stage - on the backdrop, on what the pen drew,\nor on another sprite.\n\nAs in Scratch, colours that are nearly the same count, so anti-aliased\nedges still match. Only what is under the painted part of the costume\ncounts, not the empty space around it, and not the hitbox.\n\n```java\nif (this.isTouchingColor(HtmlColor.RED)) {\n this.say(\"Ouch!\");\n}\n```\n\nThe time it takes grows with the size of the sprite, not of the stage.", + "scratchblock": "<touching color [#ff0000]?>", + "paramDocs": [ + "color: the colour to look for" + ], + "returns": "true if the sprite is touching the colour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob etwas, das die Figur malt, über dieser Farbe auf der Bühne liegt — auf dem Bühnenbild, auf dem, was der Stift gezeichnet hat, oder auf einer anderen Figur. Fast gleiche Farben zählen wie in Scratch." + } + } + }, + { + "id": "Sprite/isTouchingColor(double,double,double)", + "memberId": "Sprite/isTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingColor", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Checks whether the sprite is touching a colour given by its red, green and\nblue parts.", + "description": "Checks whether the sprite is touching a colour given by its red, green and\nblue parts.", + "scratchblock": null, + "paramDocs": [ + "r: the red part [0...255]", + "g: the green part [0...255]", + "b: the blue part [0...255]" + ], + "returns": "true if the sprite is touching the colour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob die Figur eine Farbe berührt, angegeben durch Rot, Grün und Blau [0...255]" + } + } + }, + { + "id": "Sprite/isTouchingEdge()", + "memberId": "Sprite/isTouchingEdge", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingEdge", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true if the rectangle which contains the image is outside of the\nstage", + "description": "Returns true if the rectangle which contains the image is outside of the\nstage", + "scratchblock": "<touching [edge v]?>", + "paramDocs": [], + "returns": "true if outside", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingEdge", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur den Bühnenrand berührt" + } + } + }, + { + "id": "Sprite/isTouchingMousePointer()", + "memberId": "Sprite/isTouchingMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingMousePointer", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true is the mouse pointer is touching the hitbox of the sprite.", + "description": "Returns true is the mouse pointer is touching the hitbox of the sprite.", + "scratchblock": "<touching [mouse-pointer v]?>", + "paramDocs": [], + "returns": "true if touching", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Mauszeiger auf der Figur liegt" + } + } + }, + { + "id": "Sprite/isTouchingSprite(Sprite)", + "memberId": "Sprite/isTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingSprite", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Checks if this sprite is touching another sprite.", + "description": "Checks if this sprite is touching another sprite.", + "scratchblock": "<touching [sprite v]?>", + "paramDocs": [ + "sprite: The sprite to check for collision with." + ], + "returns": "true if this sprite is touching the specified sprite, false\n otherwise. Returns false if\n the specified sprite is the same as this sprite, if the stage is\n null, if the specified\n sprite is null, not shown, or has its hitbox disabled.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich die Figuren berühren" + } + } + }, + { + "id": "Sprite/isTouchingSprite(Class)", + "memberId": "Sprite/isTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingSprite", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Checks if this sprite is touching any sprite of the specified class type.", + "description": "Checks if this sprite is touching any sprite of the specified class type.", + "scratchblock": null, + "paramDocs": [ + "c: the class type of the sprite to check for collision" + ], + "returns": "true if this sprite is touching any sprite of the specified class\n type, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur eine Figur dieser Klasse berührt, z.B. isTouchingSprite(Apfel.class)" + } + } + }, + { + "id": "Sprite/isVisible()", + "memberId": "Sprite/isVisible", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isVisible", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns if the sprite is visible", + "description": "Returns if the sprite is visible", + "scratchblock": null, + "paramDocs": [], + "returns": "is visible", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isVisible", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur sichtbar ist" + } + } + }, + { + "id": "Sprite/move(double)", + "memberId": "Sprite/move", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "move", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "steps" + ], + "params": [ + "double steps" + ], + "summary": "Moves the sprite towards the current rotation by the received steps.", + "description": "Moves the sprite towards the current rotation by the received steps.", + "scratchblock": "move (steps) steps", + "paramDocs": [ + "steps: a number of pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/move", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bewegt die Figur um die angegebene Schrittzahl in ihre Blickrichtung" + } + } + }, + { + "id": "Sprite/move(Vector2)", + "memberId": "Sprite/move", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "move", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Moves the sprite in the direction of the given vector. The length of the\nvector determines how\nmove the sprite will move in this direction.", + "description": "Moves the sprite in the direction of the given vector. The length of the\nvector determines how\nmove the sprite will move in this direction.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/move", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt die Figur um den Vektor" + } + } + }, + { + "id": "Sprite/nextCostume()", + "memberId": "Sprite/nextCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "nextCostume", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the next costume.", + "description": "Switch to the next costume.", + "scratchblock": "next costume", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/nextCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum nächsten Kostüm" + } + } + }, + { + "id": "Sprite/pickRandom(int,int)", + "memberId": "Sprite/pickRandom", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pickRandom", + "static": false, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "from", + "to" + ], + "params": [ + "int from", + "int to" + ], + "summary": "Returns a random integer between the specified range.", + "description": "Returns a random integer between the specified range.", + "scratchblock": "(pick random (from) to (to))", + "paramDocs": [ + "from: the lower bound of the range (inclusive)", + "to: the upper bound of the range (exclusive)" + ], + "returns": "a random integer between the specified range", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pickRandom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen from und to zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Sprite/playSound(String)", + "memberId": "Sprite/playSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "playSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Plays a sound.", + "description": "Plays a sound.\n\nEvery sprite plays its own copy, so ten sprites playing the same sound are\nheard ten times at once. One sprite only plays a sound once at a time:\nplaying it again while it is still going does nothing.", + "scratchblock": "start sound [name v]", + "paramDocs": [ + "name: the sound name" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/playSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt einen zuvor hinzugefügten Klang ab" + } + } + }, + { + "id": "Sprite/pointInDirection(double)", + "memberId": "Sprite/pointInDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointInDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Points the sprite in the specified direction.", + "description": "Points the sprite in the specified direction.", + "scratchblock": null, + "paramDocs": [ + "degrees: The direction in degrees to point the sprite. 0 degrees is up,\n 90 degrees is to the right, 180 degrees is down, and 270\n degrees is to the left." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointInDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Blickrichtung in Grad (90 = rechts, 0 = oben)" + } + } + }, + { + "id": "Sprite/pointInDirection(Vector2)", + "memberId": "Sprite/pointInDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointInDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Points the sprite in the direction of the given vector.", + "description": "Points the sprite in the direction of the given vector.", + "scratchblock": null, + "paramDocs": [ + "v: the target vector to point towards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointInDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Richtet die Figur entlang des angegebenen Vektors aus" + } + } + }, + { + "id": "Sprite/pointTowardsMousePointer()", + "memberId": "Sprite/pointTowardsMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointTowardsMousePointer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Points the sprite towards the current position of the mouse pointer. This\nmethod calculates the\nangle between the sprite's current position and the mouse pointer's position,\nthen sets the\nsprite's direction accordingly.", + "description": "Points the sprite towards the current position of the mouse pointer. This\nmethod calculates the\nangle between the sprite's current position and the mouse pointer's position,\nthen sets the\nsprite's direction accordingly.", + "scratchblock": "point towards [mouse-pointer v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointTowardsMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Richtet die Figur zum Mauszeiger aus" + } + } + }, + { + "id": "Sprite/pointTowardsSprite(Sprite)", + "memberId": "Sprite/pointTowardsSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointTowardsSprite", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Points the current sprite towards the specified sprite.", + "description": "Points the current sprite towards the specified sprite.", + "scratchblock": "point towards [sprite v]", + "paramDocs": [ + "s: the sprite to point towards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointTowardsSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Richtet die Figur zu einer anderen Figur aus" + } + } + }, + { + "id": "Sprite/previousCostume()", + "memberId": "Sprite/previousCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "previousCostume", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the previous costume.", + "description": "Switch to the previous costume.", + "scratchblock": "switch costume to (previous costume)", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/previousCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum vorherigen Kostüm" + } + } + }, + { + "id": "Sprite/remove()", + "memberId": "Sprite/remove", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes this sprite from its current stage. For \"delete this clone\", see\n[deleteThisClone()](deleteThisClone).", + "description": "Removes this sprite from its current stage. For \"delete this clone\", see\n[deleteThisClone()](deleteThisClone).", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt die Figur von der Bühne" + } + } + }, + { + "id": "Sprite/run()", + "memberId": "Sprite/run", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "run", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is intended to be overridden by subclasses to define the behavior\nof the sprite\nwhen it is run. By default, this method does nothing.", + "description": "This method is intended to be overridden by subclasses to define the behavior\nof the sprite\nwhen it is run. By default, this method does nothing.\n\nIt is called every frame.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/run", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird in jedem Frame aufgerufen" + } + } + }, + { + "id": "Sprite/say(String)", + "memberId": "Sprite/say", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "say", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Makes the sprite display a speech bubble with the specified text.", + "description": "Makes the sprite display a speech bubble with the specified text.", + "scratchblock": "say [text]", + "paramDocs": [ + "text: The text to be displayed in the speech bubble." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/say", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Sprechblase an" + } + } + }, + { + "id": "Sprite/say(String,int)", + "memberId": "Sprite/say", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "say", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays a text message for a specified duration.", + "description": "Displays a text message for a specified duration.", + "scratchblock": "say [text] for (millis) seconds", + "paramDocs": [ + "text: The message to be displayed.", + "millis: The duration in milliseconds for which the message will be\n displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/say", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Sprechblase für die angegebene Zeit in Millisekunden" + } + } + }, + { + "id": "Sprite/setDirection(double)", + "memberId": "Sprite/setDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Sets the direction of the sprite to a given degrees. When this value is 0 the\nsprite moves\nup, when it is 180 it moves down.", + "description": "Sets the direction of the sprite to a given degrees. When this value is 0 the\nsprite moves\nup, when it is 180 it moves down.", + "scratchblock": "point in direction (degrees)", + "paramDocs": [ + "degrees: between 0 and 360" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Blickrichtung in Grad (90 = rechts, 0 = oben)" + } + } + }, + { + "id": "Sprite/setDirection(Vector2)", + "memberId": "Sprite/setDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the direction of the sprite to the direction of a given vector.", + "description": "Sets the direction of the sprite to the direction of a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Blickrichtung auf die Richtung des Vektors" + } + } + }, + { + "id": "Sprite/setHitbox(double[])", + "memberId": "Sprite/setHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double[]" + ], + "parameterNames": [ + "points" + ], + "params": [ + "double[] points" + ], + "summary": "Sets the hitbox for the sprite using the provided points. The points should\nbe provided in\npairs representing the x and y coordinates.", + "description": "Sets the hitbox for the sprite using the provided points. The points should\nbe provided in\npairs representing the x and y coordinates.", + "scratchblock": null, + "paramDocs": [ + "points: an array of integers representing the x and y coordinates of\n the hitbox vertices.\n The length of the array should be even, with each pair of\n integers representing a point (x,\n y)." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/setHitbox(Shape)", + "memberId": "Sprite/setHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Shape" + ], + "parameterNames": [ + "shape" + ], + "params": [ + "Shape shape" + ], + "summary": "Sets the hitbox for the sprite using the specified shape.", + "description": "Sets the hitbox for the sprite using the specified shape.", + "scratchblock": null, + "paramDocs": [ + "shape: the shape to be used for the hitbox" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Trefferfläche auf die angegebene Form; (0/0) ist die Mitte der Figur" + } + } + }, + { + "id": "Sprite/setPosition(double,double)", + "memberId": "Sprite/setPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the position of the sprite", + "description": "Sets the position of the sprite", + "scratchblock": "go to x: (x) y: (y)", + "paramDocs": [ + "x: a x coordinate", + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Sprite/setPosition(Vector2)", + "memberId": "Sprite/setPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the sprite based on the coordinates of a given vector.", + "description": "Sets the position of the sprite based on the coordinates of a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Sprite/setRotationCenter(double,double)", + "memberId": "Sprite/setRotationCenter", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setRotationCenter", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the point of the costume the sprite turns around - Scratch's rotation\ncenter. It is also the point that sits at the sprite's position, so it is\nwhere the pen draws from and what `goTo` puts in place.", + "description": "Sets the point of the costume the sprite turns around - Scratch's rotation\ncenter. It is also the point that sits at the sprite's position, so it is\nwhere the pen draws from and what `goTo` puts in place.\n\nThe point is given in the costume's own pixels, counted from its top left\ncorner, the same way as [setHitbox(double...)](setHitbox): a sword whose hilt\nis 12 pixels from the left and 60 from the top swings around the hilt with\n`setRotationCenter(12, 60)`. It grows and shrinks with the sprite's\nsize and holds for every costume of the sprite. Without it, a sprite turns\naround the middle of its costume.\n\n```java\nthis.addCostume(\"hand\", \"assets/clock-hand.png\");\nthis.setRotationCenter(8, 100); // the end of the hand\n```", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate in the costume, from its left edge", + "y: the y-coordinate in the costume, from its top edge" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setRotationCenter", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Punkt des Kostüms, um den sich die Figur dreht (Drehpunkt). Er sitzt an der Position der Figur. Angegeben in Pixeln des Kostüms von seiner linken oberen Ecke aus, wie bei setHitbox; er wächst mit der Größe und gilt für alle Kostüme." + } + } + }, + { + "id": "Sprite/setRotationStyle(RotationStyle)", + "memberId": "Sprite/setRotationStyle", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setRotationStyle", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.RotationStyle" + ], + "parameterNames": [ + "style" + ], + "params": [ + "RotationStyle style" + ], + "summary": "Sets the rotation style for the sprite.", + "description": "Sets the rotation style for the sprite.", + "scratchblock": "set rotation style [left-right v]", + "paramDocs": [ + "style: the rotation style to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setRotationStyle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie sich die Figur beim Drehen verhält" + } + } + }, + { + "id": "Sprite/setSize(double)", + "memberId": "Sprite/setSize", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "percentage" + ], + "params": [ + "double percentage" + ], + "summary": "Sets the size of the sprite.", + "description": "Sets the size of the sprite.", + "scratchblock": "set size to (percentage) %", + "paramDocs": [ + "percentage: a percentage [0...100]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Größe in Prozent (100 = Originalgröße)" + } + } + }, + { + "id": "Sprite/setTint(Color)", + "memberId": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the tint for the sprite with an color object.", + "description": "Sets the tint for the sprite with an color object.", + "scratchblock": null, + "paramDocs": [ + "c: a color object" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt die Figur mit der angegebenen Farbe ein" + } + } + }, + { + "id": "Sprite/setTint(double,double,double)", + "memberId": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Sets the tint for the sprite with rgb.", + "description": "Sets the tint for the sprite with rgb.", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt die Figur mit der angegebenen Farbe ein (Anteile jeweils 0 bis 255)" + } + } + }, + { + "id": "Sprite/setTint(double)", + "memberId": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the tint for the sprite with a hue.", + "description": "Sets the tint for the sprite with a hue.", + "scratchblock": "set [color v] effect to (h)", + "paramDocs": [ + "h: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt die Figur mit dem angegebenen Farbton ein (0 bis 255)" + } + } + }, + { + "id": "Sprite/setTransparency(double)", + "memberId": "Sprite/setTransparency", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "transparency" + ], + "params": [ + "double transparency" + ], + "summary": "Sets how see-through the sprite is, as Scratch's ghost effect does: 0 is the\nsolid sprite you start with and 100 is invisible. Anything outside that is\npinned to it.", + "description": "Sets how see-through the sprite is, as Scratch's ghost effect does: 0 is the\nsolid sprite you start with and 100 is invisible. Anything outside that is\npinned to it.", + "scratchblock": "set [ghost v] effect to (transparency)", + "paramDocs": [ + "transparency: [0...100], 0 solid and 100 invisible" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Transparenz in Prozent (0 = deckend, 100 = unsichtbar)" + } + } + }, + { + "id": "Sprite/setVolume(double)", + "memberId": "Sprite/setVolume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "percent" + ], + "params": [ + "double percent" + ], + "summary": "Sets how loud every sound of this sprite plays.", + "description": "Sets how loud every sound of this sprite plays.", + "scratchblock": "set volume to (percent) %", + "paramDocs": [ + "percent: 0 for silent, 100 for full volume" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Lautstärke aller Klänge dieser Figur in Prozent" + } + } + }, + { + "id": "Sprite/setX(double)", + "memberId": "Sprite/setX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Sets the x coordinate", + "description": "Sets the x coordinate", + "scratchblock": "set x to (x)", + "paramDocs": [ + "x: a x coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die x-Position" + } + } + }, + { + "id": "Sprite/setY(double)", + "memberId": "Sprite/setY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Sets the y coordinate", + "description": "Sets the y coordinate", + "scratchblock": "set y to (y)", + "paramDocs": [ + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die y-Position" + } + } + }, + { + "id": "Sprite/show()", + "memberId": "Sprite/show", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "show", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Shows the sprite.", + "description": "Shows the sprite.", + "scratchblock": "show", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/show", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Macht die Figur sichtbar" + } + } + }, + { + "id": "Sprite/showVariable(String,Supplier)", + "memberId": "Sprite/showVariable", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "showVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.util.function.Supplier" + ], + "parameterNames": [ + "name", + "value" + ], + "params": [ + "String name", + "Supplier value" + ], + "summary": "Shows a monitor for one of this sprite's variables in the top left corner\nof the stage, like Scratch's variable monitors: \"Cat: score\" and the\ncurrent value, updated every frame. Showing the same name again replaces\nthe monitor; it goes away with the sprite.", + "description": "Shows a monitor for one of this sprite's variables in the top left corner\nof the stage, like Scratch's variable monitors: \"Cat: score\" and the\ncurrent value, updated every frame. Showing the same name again replaces\nthe monitor; it goes away with the sprite.\n\n```java\npublic Cat() {\n this.addCostume(\"cat\", \"bunny1_stand\");\n this.showVariable(\"lives\", () -> lives);\n}\n```", + "scratchblock": "show variable [name v]", + "paramDocs": [ + "name: the variable's name, shown after the sprite's", + "value: gives the value to show; asked for it every frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/showVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/stamp()", + "memberId": "Sprite/stamp", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stamp", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stamps the current sprite to the background. A stamp is a non interactive\nversion of the sprite.", + "description": "Stamps the current sprite to the background. A stamp is a non interactive\nversion of the sprite.", + "scratchblock": "stamp", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stamp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Druckt ein unbewegliches Abbild der Figur auf die Bühne" + } + } + }, + { + "id": "Sprite/stamp(Layer)", + "memberId": "Sprite/stamp", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stamp", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Layer" + ], + "parameterNames": [ + "layer" + ], + "params": [ + "Layer layer" + ], + "summary": "Stamps the sprite onto one of the stage's layers. A stamp is a picture of\nthe sprite that stays where it is put, and is not interactive.", + "description": "Stamps the sprite onto one of the stage's layers. A stamp is a picture of\nthe sprite that stays where it is put, and is not interactive.\n\nExample usage:\n\n```java\nthis.stamp(Layer.UI);\n```", + "scratchblock": null, + "paramDocs": [ + "layer: which layer to stamp onto" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stamp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Druckt ein unbewegliches Abbild der Figur auf die angegebene Ebene" + } + } + }, + { + "id": "Sprite/stopAllSounds()", + "memberId": "Sprite/stopAllSounds", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stopAllSounds", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the playing of all sounds of the sprite.", + "description": "Stops the playing of all sounds of the sprite.", + "scratchblock": "stop all sounds", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stopAllSounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt alle Klänge dieser Figur" + } + } + }, + { + "id": "Sprite/stopSound(String)", + "memberId": "Sprite/stopSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stopSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stops the playing of the sound with the given name", + "description": "Stops the playing of the sound with the given name", + "scratchblock": null, + "paramDocs": [ + "name: Name of the sound" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stopSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt den Klang mit dem angegebenen Namen" + } + } + }, + { + "id": "Sprite/switchCostume(String)", + "memberId": "Sprite/switchCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "switchCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switch to a costume by name.", + "description": "Switch to a costume by name.", + "scratchblock": "switch costume to [name v]", + "paramDocs": [ + "name: the name of a costume" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/switchCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum Kostüm mit dem Namen" + } + } + }, + { + "id": "Sprite/switchCostume(double)", + "memberId": "Sprite/switchCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "switchCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "index" + ], + "params": [ + "double index" + ], + "summary": "Switches the current costume of the sprite to the costume at the specified\nindex.", + "description": "Switches the current costume of the sprite to the costume at the specified\nindex.", + "scratchblock": "switch costume to (index)", + "paramDocs": [ + "index: The index of the costume to switch to." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/switchCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum Kostüm mit der angegebenen Nummer" + } + } + }, + { + "id": "Sprite/think(String)", + "memberId": "Sprite/think", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "think", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Displays a thought bubble with the specified text.", + "description": "Displays a thought bubble with the specified text.", + "scratchblock": "think [text]", + "paramDocs": [ + "text: The text to be displayed in the thought bubble." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/think", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Denkblase an" + } + } + }, + { + "id": "Sprite/think(String,int)", + "memberId": "Sprite/think", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "think", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays a thought bubble with the specified text for a given duration.", + "description": "Displays a thought bubble with the specified text for a given duration.", + "scratchblock": "think [text] for (millis) seconds", + "paramDocs": [ + "text: The text to be displayed in the thought bubble.", + "millis: The duration in milliseconds for which the thought bubble will\n be displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/think", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Denkblase für die angegebene Zeit in Millisekunden" + } + } + }, + { + "id": "Sprite/turnLeft(double)", + "memberId": "Sprite/turnLeft", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "turnLeft", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Rotates the sprite by a certain degrees to the left.", + "description": "Rotates the sprite by a certain degrees to the left.", + "scratchblock": "turn left (degrees) degrees", + "paramDocs": [ + "degrees: between 0 and 360" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/turnLeft", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Dreht die Figur um die angegebene Gradzahl nach links" + } + } + }, + { + "id": "Sprite/turnRight(double)", + "memberId": "Sprite/turnRight", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "turnRight", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Rotates the sprite by a certain degrees to the right.", + "description": "Rotates the sprite by a certain degrees to the right.", + "scratchblock": "turn right (degrees) degrees", + "paramDocs": [ + "degrees: between 0 and 360" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/turnRight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Dreht die Figur um die angegebene Gradzahl nach rechts" + } + } + }, + { + "id": "Sprite/whenAddedToStage()", + "memberId": "Sprite/whenAddedToStage", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenAddedToStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the sprite is added to the stage. Override this\nmethod to define\ncustom behavior when the sprite is added to the stage.", + "description": "This method is called when the sprite is added to the stage. Override this\nmethod to define\ncustom behavior when the sprite is added to the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenAddedToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Figur der Bühne hinzugefügt wird" + } + } + }, + { + "id": "Sprite/whenBackdropSwitches(String)", + "memberId": "Sprite/whenBackdropSwitches", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenBackdropSwitches", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "This method is called when the backdrop switches to the specified name.\nOverride this method to\ndefine custom behavior.", + "description": "This method is called when the backdrop switches to the specified name.\nOverride this method to\ndefine custom behavior.", + "scratchblock": "when backdrop switches to [name v]", + "paramDocs": [ + "name: the name of the backdrop to switch to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenBackdropSwitches", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Hintergrund gewechselt wird" + } + } + }, + { + "id": "Sprite/whenClicked()", + "memberId": "Sprite/whenClicked", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenClicked", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the sprite is clicked. Override this method to\ndefine custom\nbehavior for the sprite when it is clicked.", + "description": "This method is called when the sprite is clicked. Override this method to\ndefine custom\nbehavior for the sprite when it is clicked.", + "scratchblock": "when this sprite clicked", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenClicked", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Figur angeklickt wird" + } + } + }, + { + "id": "Sprite/whenIReceive(String)", + "memberId": "Sprite/whenIReceive", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenIReceive", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "This method is called when a message is received. Override this method to\ndefine custom\nbehavior.", + "description": "This method is called when a message is received. Override this method to\ndefine custom\nbehavior.", + "scratchblock": "when I receive [message v]", + "paramDocs": [ + "message: The message that is received." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenIReceive", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Bühne eine Nachricht sendet" + } + } + }, + { + "id": "Sprite/whenKeyPressed(KeyCode)", + "memberId": "Sprite/whenKeyPressed", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenKeyPressed", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is pressed. Override this method to define\ncustom behavior.", + "description": "This method is called when a key is pressed. Override this method to define\ncustom behavior.", + "scratchblock": "when [space v] key pressed", + "paramDocs": [ + "keyCode: the key that was pressed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Drücken einer Taste aufgerufen" + } + } + }, + { + "id": "Sprite/whenKeyReleased(KeyCode)", + "memberId": "Sprite/whenKeyReleased", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenKeyReleased", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is released. Override this method to define\ncustom behavior.", + "description": "This method is called when a key is released. Override this method to define\ncustom behavior.", + "scratchblock": null, + "paramDocs": [ + "keyCode: the key that was released" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenKeyReleased", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Loslassen einer Taste aufgerufen" + } + } + }, + { + "id": "Sprite/whenMouseClicked(MouseCode)", + "memberId": "Sprite/whenMouseClicked", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenMouseClicked", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.MouseCode" + ], + "parameterNames": [ + "mouseCode" + ], + "params": [ + "MouseCode mouseCode" + ], + "summary": "This method is called when a mouse click event occurs. Override this method\nto define custom\nbehavior.", + "description": "This method is called when a mouse click event occurs. Override this method\nto define custom\nbehavior.", + "scratchblock": null, + "paramDocs": [ + "mouseCode: The code representing the mouse button that was clicked." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenMouseClicked", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei einem Mausklick aufgerufen, egal wo" + } + } + }, + { + "id": "Sprite/whenMouseMoved(double,double)", + "memberId": "Sprite/whenMouseMoved", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenMouseMoved", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "This method is called when the mouse is moved. Override this method to define\ncustom behavior.", + "description": "This method is called when the mouse is moved. Override this method to define\ncustom behavior.", + "scratchblock": null, + "paramDocs": [ + "x: The x-coordinate of the mouse pointer.", + "y: The y-coordinate of the mouse pointer." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenMouseMoved", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei jeder Mausbewegung aufgerufen; x und y sind Bühnenkoordinaten" + } + } + }, + { + "id": "Sprite/whenRemovedFromStage()", + "memberId": "Sprite/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenRemovedFromStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the sprite is removed from the stage. Override\nthis method to define\ncustom behavior when the sprite is removed.", + "description": "This method is called when the sprite is removed from the stage. Override\nthis method to define\ncustom behavior when the sprite is removed.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenRemovedFromStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Figur von der Bühne entfernt wird" + } + } + }, + { + "id": "Sprite/whenStartsAsClone()", + "memberId": "Sprite/whenStartsAsClone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenStartsAsClone", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Runs when this sprite was just made as a clone, like Scratch's \"when I\nstart as a clone\". Override it to give clones their own behaviour, for\nexample to send a bullet on its way.", + "description": "Runs when this sprite was just made as a clone, like Scratch's \"when I\nstart as a clone\". Override it to give clones their own behaviour, for\nexample to send a bullet on its way.\n\n```java\npublic void whenStartsAsClone() {\n this.show();\n this.goToRandomPosition();\n}\n```", + "scratchblock": "when I start as a clone", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenStartsAsClone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/add(Sprite)", + "memberId": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "add", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Adds a sprite to the stage. Sprites are drawn in the order they were added, so a sprite added\nlater is drawn on top of one added earlier.", + "description": "Adds a sprite to the stage. Sprites are drawn in the order they were added, so a sprite added\nlater is drawn on top of one added earlier.", + "scratchblock": null, + "paramDocs": [ + "sprite: the sprite to add" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt der Bühne eine Figur hinzu" + } + } + }, + { + "id": "Stage/add(Text)", + "memberId": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "add", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Text" + ], + "parameterNames": [ + "text" + ], + "params": [ + "Text text" + ], + "summary": "Add a text object to the stage", + "description": "Add a text object to the stage", + "scratchblock": null, + "paramDocs": [ + "text: a text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt der Bühne einen Text hinzu" + } + } + }, + { + "id": "Stage/add(Pen)", + "memberId": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "add", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Pen" + ], + "parameterNames": [ + "pen" + ], + "params": [ + "Pen pen" + ], + "summary": "Adds a Pen object to the stage.", + "description": "Adds a Pen object to the stage.", + "scratchblock": null, + "paramDocs": [ + "pen: the Pen object to be added to the stage" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt der Bühne einen Stift hinzu" + } + } + }, + { + "id": "Stage/addBackdrop(String,String,boolean)", + "memberId": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "boolean" + ], + "parameterNames": [ + "name", + "imagePath", + "stretch" + ], + "params": [ + "String name", + "String imagePath", + "boolean stretch" + ], + "summary": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "description": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "imagePath: a image path, or the name of a built-in sprite such as\n \"bg_castle\"", + "stretch: stretch image to window size" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Hintergrund hinzu; bei stretch == true wird er auf Bühnengröße gedehnt" + } + } + }, + { + "id": "Stage/addBackdrop(String,String)", + "memberId": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "imagePath" + ], + "params": [ + "String name", + "String imagePath" + ], + "summary": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "description": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "imagePath: a image path, or the name of a built-in sprite such as\n \"bg_castle\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Hintergrund unter eigenem Namen hinzu" + } + } + }, + { + "id": "Stage/addBackdrop(String)", + "memberId": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the backdrops that ship with Scratch for Java to the stage. The\nbackdrop gets the same name as the built-in sprite. If a backdrop with that\nname already exists do nothing.", + "description": "Add one of the backdrops that ship with Scratch for Java to the stage. The\nbackdrop gets the same name as the built-in sprite. If a backdrop with that\nname already exists do nothing.\n\nExample usage:\n\n```java\nthis.addBackdrop(\"bg_castle\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sprite, for example \"bg_castle\". Add the\n sheet in front of the name, for example \"platformer/grass\", if\n the same name exists on several sheets." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen der eingebauten Hintergründe hinzu" + } + } + }, + { + "id": "Stage/addSound(String,String)", + "memberId": "Stage/addSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "soundPath" + ], + "params": [ + "String name", + "String soundPath" + ], + "summary": "Add a sound to the stage. If a sound with the received name already exists do\nnothing.", + "description": "Add a sound to the stage. If a sound with the received name already exists do\nnothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "soundPath: a sound path, or the name of a built-in sound such as\n \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Klang unter eigenem Namen hinzu" + } + } + }, + { + "id": "Stage/addSound(String)", + "memberId": "Stage/addSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the sounds that ship with Scratch for Java to the stage. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.", + "description": "Add one of the sounds that ship with Scratch for Java to the stage. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.\n\nExample usage:\n\n```java\nthis.addSound(\"footstep_carpet_000\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sound, for example \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen der eingebauten Klänge hinzu" + } + } + }, + { + "id": "Stage/ask(String)", + "memberId": "Stage/ask", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "ask", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "question" + ], + "params": [ + "String question" + ], + "summary": "Asks a question and waits for an answer to be typed in. A box appears at the\nbottom of the stage; whatever is typed goes into it until Enter is pressed.", + "description": "Asks a question and waits for an answer to be typed in. A box appears at the\nbottom of the stage; whatever is typed goes into it until Enter is pressed.\n\nUnlike Scratch, this does not pause anything. Your `run()` keeps being\ncalled while the question is on screen, so check [isAsking()](isAsking) or wait\nfor [getAnswer()](getAnswer) to change:\n\n```java\npublic void run() {\n if (!this.isAsking() && this.getAnswer().isEmpty()) {\n this.ask(\"What is your name?\");\n }\n if (!this.getAnswer().isEmpty()) {\n this.display(\"Hello \" + this.getAnswer() + \"!\");\n }\n}\n```", + "scratchblock": "ask [question] and wait", + "paramDocs": [ + "question: the question to show" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/ask", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stellt eine Frage; die Antwort wird über getAnswer() abgeholt" + } + } + }, + { + "id": "Stage/broadcast(String)", + "memberId": "Stage/broadcast", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "broadcast", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "Broadcasts a message to every sprite on the stage and to the stage itself,\nas in Scratch. Each of them runs its `whenIReceive` method with the\nmessage.", + "description": "Broadcasts a message to every sprite on the stage and to the stage itself,\nas in Scratch. Each of them runs its `whenIReceive` method with the\nmessage.", + "scratchblock": "broadcast [message v]", + "paramDocs": [ + "message: The message to broadcast." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/broadcast", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Sendet eine Nachricht an alle whenIReceive-Empfänger" + } + } + }, + { + "id": "Stage/changeColor(double)", + "memberId": "Stage/changeColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Changes the background color by adding a step to the hue value.", + "description": "Changes the background color by adding a step to the hue value.", + "scratchblock": null, + "paramDocs": [ + "h: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton des Hintergrunds um den angegebenen Wert" + } + } + }, + { + "id": "Stage/changeTint(double)", + "memberId": "Stage/changeTint", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes the colour the backdrop is tinted with by a step.", + "description": "Changes the colour the backdrop is tinted with by a step.", + "scratchblock": "change [color v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton der Einfärbung um den angegebenen Wert" + } + } + }, + { + "id": "Stage/changeTransparency(double)", + "memberId": "Stage/changeTransparency", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes how see-through the backdrop is by a step. A positive step fades it\nout, a negative one brings it back.", + "description": "Changes how see-through the backdrop is by a step. A positive step fades it\nout, a negative one brings it back.", + "scratchblock": "change [ghost v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Transparenz des Hintergrunds" + } + } + }, + { + "id": "Stage/changeVolume(double)", + "memberId": "Stage/changeVolume", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Makes every sound of this stage louder or quieter.", + "description": "Makes every sound of this stage louder or quieter.", + "scratchblock": "change volume by (step)", + "paramDocs": [ + "step: how much to add to the volume, in percent" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Lautstärke um den angegebenen Wert" + } + } + }, + { + "id": "Stage/constructor()", + "memberId": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "constructor", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Stage with default dimensions. The default width is 480\npixels and the default\nheight is 360 pixels.", + "description": "Constructs a new Stage with default dimensions. The default width is 480\npixels and the default\nheight is 360 pixels.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Bühne der Größe 480 x 360" + } + } + }, + { + "id": "Stage/constructor(int,int)", + "memberId": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "constructor", + "static": false, + "returnType": "Stage", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "width", + "height" + ], + "params": [ + "int width", + "int height" + ], + "summary": "Constructs a new Stage with the specified width and height.", + "description": "Constructs a new Stage with the specified width and height.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the stage", + "height: the height of the stage" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/constructor(int,int,String)", + "memberId": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "constructor", + "static": false, + "returnType": "Stage", + "parameterTypes": [ + "int", + "int", + "java.lang.String" + ], + "parameterNames": [ + "width", + "height", + "assets" + ], + "params": [ + "int width", + "int height", + "String assets" + ], + "summary": "Constructs a new Stage with the specified width, height, and assets path.", + "description": "Constructs a new Stage with the specified width, height, and assets path.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the stage", + "height: the height of the stage", + "assets: the path to the assets directory" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Bühne der angegebenen Größe. Der Asset-Pfad wird im Browser ignoriert" + } + } + }, + { + "id": "Stage/count(Class)", + "memberId": "Stage/count", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "count", + "static": false, + "returnType": "int", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Returns the number of sprites of the specified class.", + "description": "Returns the number of sprites of the specified class.", + "scratchblock": null, + "paramDocs": [ + "c: the class of the sprites to count" + ], + "returns": "the number of sprites of the specified class", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/count", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Anzahl der Figuren dieser Klasse zurück, z.B. count(Apfel.class)" + } + } + }, + { + "id": "Stage/debug(Object[])", + "memberId": "Stage/debug", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "debug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Object[]" + ], + "parameterNames": [ + "values" + ], + "params": [ + "Object[] values" + ], + "summary": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the stage's class name so you can tell\nwhich stage it came from.", + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the stage's class name so you can tell\nwhich stage it came from.\n\nExample:\n\n```java\nthis.debug(\"score =\", score, \"lives =\", lives);\n// prints: [MyStage] score = 5 lives = 3\n```", + "scratchblock": null, + "paramDocs": [ + "values: one or more values to print" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/debug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/display(String)", + "memberId": "Stage/display", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "display", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Displays the given text on the stage.", + "description": "Displays the given text on the stage.", + "scratchblock": null, + "paramDocs": [ + "text: the text to be displayed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/display", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt einen Text am unteren Rand der Bühne an" + } + } + }, + { + "id": "Stage/display(String,int)", + "memberId": "Stage/display", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "display", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays the given text on the screen for a specified duration.", + "description": "Displays the given text on the screen for a specified duration.", + "scratchblock": null, + "paramDocs": [ + "text: The text to be displayed.", + "millis: The duration in milliseconds for which the text will be\n displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/display", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt einen Text für die angegebene Zeit in Millisekunden an" + } + } + }, + { + "id": "Stage/eraseAll()", + "memberId": "Stage/eraseAll", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "eraseAll", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Erases all lines on the pen layer.", + "description": "Erases all lines on the pen layer.", + "scratchblock": "erase all", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/eraseAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Löscht alles, was mit Stiften gezeichnet wurde" + } + } + }, + { + "id": "Stage/exit()", + "memberId": "Stage/exit", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "exit", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Close the window and therefore the whole application.", + "description": "Close the window and therefore the whole application.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/exit", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Beendet das Programm" + } + } + }, + { + "id": "Stage/find(Class)", + "memberId": "Stage/find", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "find", + "static": false, + "returnType": "List", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Find sprites of a given class.", + "description": "Find sprites of a given class.", + "scratchblock": null, + "paramDocs": [ + "c: Class" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/find", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle Figuren dieser Klasse zurück, z.B. find(Apfel.class)" + } + } + }, + { + "id": "Stage/getAll()", + "memberId": "Stage/getAll", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getAll", + "static": false, + "returnType": "List", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves a list of all sprites in the current stage.", + "description": "Retrieves a list of all sprites in the current stage.", + "scratchblock": null, + "paramDocs": [], + "returns": "a list containing all sp", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle Figuren auf der Bühne zurück" + } + } + }, + { + "id": "Stage/getAnswer()", + "memberId": "Stage/getAnswer", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getAnswer", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the last answer that was typed in.", + "description": "Returns the last answer that was typed in.", + "scratchblock": "(answer)", + "paramDocs": [], + "returns": "the answer, or an empty string if nothing has been answered yet", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getAnswer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die zuletzt eingegebene Antwort zurück, sonst eine leere Zeichenkette" + } + } + }, + { + "id": "Stage/getCamera()", + "memberId": "Stage/getCamera", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getCamera", + "static": false, + "returnType": "Camera", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current camera instance associated with this stage.", + "description": "Retrieves the current camera instance associated with this stage.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current Camera object.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getCamera", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Kamera der Bühne zurück" + } + } + }, + { + "id": "Stage/getColor()", + "memberId": "Stage/getColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getColor", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current color of the stage.", + "description": "Returns the current color of the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current color", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Hintergrundfarbe zurück" + } + } + }, + { + "id": "Stage/getCurrentBackdropIndex()", + "memberId": "Stage/getCurrentBackdropIndex", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getCurrentBackdropIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current backdrop index", + "description": "Returns the current backdrop index", + "scratchblock": "(backdrop [number v])", + "paramDocs": [], + "returns": "a backdrop index", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getCurrentBackdropIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer des aktuellen Hintergrunds zurück" + } + } + }, + { + "id": "Stage/getCurrentBackdropName()", + "memberId": "Stage/getCurrentBackdropName", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getCurrentBackdropName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current backdrop name", + "description": "Returns the current backdrop name", + "scratchblock": "(backdrop [name v])", + "paramDocs": [], + "returns": "a backdrop name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getCurrentBackdropName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen des aktuellen Hintergrunds zurück" + } + } + }, + { + "id": "Stage/getDeltaTime()", + "memberId": "Stage/getDeltaTime", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getDeltaTime", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the seconds passed since the last frame.", + "description": "Gets the seconds passed since the last frame.", + "scratchblock": null, + "paramDocs": [], + "returns": "secons since last frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getDeltaTime", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + } + }, + { + "id": "Stage/getFrameRate()", + "memberId": "Stage/getFrameRate", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getFrameRate", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the frame rate of the application.", + "description": "Get the frame rate of the application.", + "scratchblock": null, + "paramDocs": [], + "returns": "the frame rate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getFrameRate", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Bildrate zurück" + } + } + }, + { + "id": "Stage/getHeight()", + "memberId": "Stage/getHeight", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getHeight", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the height of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Höhe der Bühne in Pixeln zurück" + } + } + }, + { + "id": "Stage/getMouse()", + "memberId": "Stage/getMouse", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getMouse", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current position of the mouse cursor as a Vector2", + "description": "Returns the current position of the mouse cursor as a Vector2", + "scratchblock": null, + "paramDocs": [], + "returns": "mouse position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getMouse", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position des Mauszeigers zurück" + } + } + }, + { + "id": "Stage/getMouseX()", + "memberId": "Stage/getMouseX", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getMouseX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current x-position of the mouse cursor", + "description": "Returns the current x-position of the mouse cursor", + "scratchblock": "(mouse x)", + "paramDocs": [], + "returns": "x-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getMouseX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Stage/getMouseY()", + "memberId": "Stage/getMouseY", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getMouseY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current y-position of the mouse cursor", + "description": "Returns the current y-position of the mouse cursor", + "scratchblock": "(mouse y)", + "paramDocs": [], + "returns": "y-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getMouseY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Stage/getPixels()", + "memberId": "Stage/getPixels", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getPixels", + "static": false, + "returnType": "Pixels", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the colours of everything this stage has drawn.", + "description": "Returns the colours of everything this stage has drawn.\n\nExample usage:\n\n```java\nint[] colours = this.getPixels().main();\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the pixels", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getPixels", + "availability": "desktop-only", + "availabilityReason": "The desktop pixel buffer is not exposed by the browser renderer.", + "translations": { + "de": { + "description": "Nur in der Desktop-Version: Zugriff auf einzelne Bildpunkte" + } + } + }, + { + "id": "Stage/getShaders()", + "memberId": "Stage/getShaders", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getShaders", + "static": false, + "returnType": "Shaders", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shaders of this stage. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.", + "description": "Returns the shaders of this stage. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.\n\nExample usage:\n\n```java\nthis.getShaders().add(\"blur\", \"blur.frag\", null);\nthis.getShaders().switchTo(\"blur\");\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the shaders", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getShaders", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Shader der Bühne zurück; sie verändern das ganze Bild ohne die UI" + } + } + }, + { + "id": "Stage/getSorting()", + "memberId": "Stage/getSorting", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getSorting", + "static": false, + "returnType": "Sorting", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the order in which the sprites of this stage are drawn.", + "description": "Returns the order in which the sprites of this stage are drawn.\n\nExample usage:\n\n```java\nthis.getSorting().byY();\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the sorting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getSorting", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Sortierung der Bühne zurück. Mit getSorting().byY() werden Figuren weiter unten vor denen weiter oben gezeichnet." + } + } + }, + { + "id": "Stage/getTimer()", + "memberId": "Stage/getTimer", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the timer", + "description": "Returns the timer", + "scratchblock": "(timer)", + "paramDocs": [], + "returns": "the timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Standard-Timer der Bühne zurück" + } + } + }, + { + "id": "Stage/getTimer(String)", + "memberId": "Stage/getTimer", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns a timer by name", + "description": "Returns a timer by name", + "scratchblock": null, + "paramDocs": [ + "name: a name" + ], + "returns": "the timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Timer mit dem angegebenen Namen zurück und legt ihn bei Bedarf an" + } + } + }, + { + "id": "Stage/getVolume()", + "memberId": "Stage/getVolume", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getVolume", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns how loud the sounds of this stage play.", + "description": "Returns how loud the sounds of this stage play.", + "scratchblock": "(volume)", + "paramDocs": [], + "returns": "the volume, from 0 to 100", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Lautstärke in Prozent zurück" + } + } + }, + { + "id": "Stage/getWidth()", + "memberId": "Stage/getWidth", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getWidth", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite der Bühne in Pixeln zurück" + } + } + }, + { + "id": "Stage/hideVariable(String)", + "memberId": "Stage/hideVariable", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "hideVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "description": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "scratchblock": "hide variable [name v]", + "paramDocs": [ + "name: the name the monitor was shown with" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/hideVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/isAsking()", + "memberId": "Stage/isAsking", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isAsking", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether a question is on screen and still waiting for an answer.", + "description": "Checks whether a question is on screen and still waiting for an answer.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while a question is waiting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isAsking", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn noch auf eine Antwort gewartet wird" + } + } + }, + { + "id": "Stage/isDebug()", + "memberId": "Stage/isDebug", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isDebug", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the application is in debug mode.", + "description": "Checks if the application is in debug mode.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the application is in debug mode, false otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Fehlersuche eingeschaltet ist" + } + } + }, + { + "id": "Stage/isKeyPressed(KeyCode)", + "memberId": "Stage/isKeyPressed", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isKeyPressed", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "Returns true if the key is pressed", + "description": "Returns true if the key is pressed", + "scratchblock": "<key [space v] pressed?>", + "paramDocs": [ + "keyCode: a key" + ], + "returns": "key pressed", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Taste gerade gedrückt ist" + } + } + }, + { + "id": "Stage/isMouseDown()", + "memberId": "Stage/isMouseDown", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isMouseDown", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true is the mouse button is down", + "description": "Returns true is the mouse button is down", + "scratchblock": "<mouse down?>", + "paramDocs": [], + "returns": "mouse button down", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isMouseDown", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine Maustaste gedrückt ist" + } + } + }, + { + "id": "Stage/isSoundPlaying(String)", + "memberId": "Stage/isSoundPlaying", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isSoundPlaying", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns true if the sound if playing", + "description": "Returns true if the sound if playing", + "scratchblock": null, + "paramDocs": [ + "name: " + ], + "returns": "playing", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isSoundPlaying", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Klang gerade abgespielt wird" + } + } + }, + { + "id": "Stage/nextBackdrop()", + "memberId": "Stage/nextBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "nextBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the next backdrop.", + "description": "Switch to the next backdrop.", + "scratchblock": "next backdrop", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/nextBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum nächsten Hintergrund" + } + } + }, + { + "id": "Stage/pickRandom(int,int)", + "memberId": "Stage/pickRandom", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "pickRandom", + "static": false, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "from", + "to" + ], + "params": [ + "int from", + "int to" + ], + "summary": "Returns a random integer between the specified range (inclusive).", + "description": "Returns a random integer between the specified range (inclusive).", + "scratchblock": "(pick random (from) to (to))", + "paramDocs": [ + "from: the lower bound of the range (inclusive)", + "to: the upper bound of the range (inclusive)" + ], + "returns": "a random integer between `from` and `to` (inclusive)", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/pickRandom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen from und to zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Stage/playSound(String)", + "memberId": "Stage/playSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "playSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Plays a sound.", + "description": "Plays a sound.", + "scratchblock": "start sound [name v]", + "paramDocs": [ + "name: the sound name" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/playSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt einen zuvor hinzugefügten Klang ab" + } + } + }, + { + "id": "Stage/previousBackdrop()", + "memberId": "Stage/previousBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "previousBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the previous backdrop.", + "description": "Switch to the previous backdrop.", + "scratchblock": "switch backdrop to [previous backdrop v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/previousBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum vorherigen Hintergrund" + } + } + }, + { + "id": "Stage/randomBackdrop()", + "memberId": "Stage/randomBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "randomBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to a random backdrop.", + "description": "Switch to a random backdrop.", + "scratchblock": "switch backdrop to [random backdrop v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/randomBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zu einem zufälligen Hintergrund" + } + } + }, + { + "id": "Stage/remove(Sprite)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Removes the specified sprite from the stage.", + "description": "Removes the specified sprite from the stage.", + "scratchblock": null, + "paramDocs": [ + "sprite: the sprite to be removed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt die Figur von der Bühne" + } + } + }, + { + "id": "Stage/remove(Pen)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Pen" + ], + "parameterNames": [ + "pen" + ], + "params": [ + "Pen pen" + ], + "summary": "Removes the specified pen from the stage.", + "description": "Removes the specified pen from the stage.", + "scratchblock": null, + "paramDocs": [ + "pen: the pen to be removed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt den Stift von der Bühne" + } + } + }, + { + "id": "Stage/remove(Text)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Text" + ], + "parameterNames": [ + "text" + ], + "params": [ + "Text text" + ], + "summary": "Removes the specified text from the stage.", + "description": "Removes the specified text from the stage.", + "scratchblock": null, + "paramDocs": [ + "text: the text to be removed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt den Text von der Bühne" + } + } + }, + { + "id": "Stage/remove(Class)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Removes all sprites of the specified class from the stage.", + "description": "Removes all sprites of the specified class from the stage.", + "scratchblock": null, + "paramDocs": [ + "c: the class of the sprites to remove" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt alle Figuren dieser Klasse von der Bühne, z.B. remove(Apfel.class)" + } + } + }, + { + "id": "Stage/removeAll()", + "memberId": "Stage/removeAll", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "removeAll", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes all elements from the stage.", + "description": "Removes all elements from the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/removeAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt alle Figuren von der Bühne" + } + } + }, + { + "id": "Stage/run()", + "memberId": "Stage/run", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "run", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Executes the main logic of the stage. This method should be overridden by\nsubclasses to define\nthe specific behavior of the stage.", + "description": "Executes the main logic of the stage. This method should be overridden by\nsubclasses to define\nthe specific behavior of the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/run", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird in jedem Frame aufgerufen" + } + } + }, + { + "id": "Stage/setColor(double)", + "memberId": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the background color via a hue value", + "description": "Sets the background color via a hue value", + "scratchblock": null, + "paramDocs": [ + "h: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Stage/setColor(double,double,double)", + "memberId": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Sets the background color via a rgb value", + "description": "Sets the background color via a rgb value", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Stage/setColor(Color)", + "memberId": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the color of the stage.", + "description": "Sets the color of the stage.", + "scratchblock": null, + "paramDocs": [ + "c: the new color to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe" + } + } + }, + { + "id": "Stage/setCursor(String)", + "memberId": "Stage/setCursor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setCursor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Sets the cursor image for the stage.", + "description": "Sets the cursor image for the stage.", + "scratchblock": null, + "paramDocs": [ + "path: a path to an image file, or the name of a built-in sprite" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setCursor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt das Mauszeigerbild" + } + } + }, + { + "id": "Stage/setCursor(String,int,int)", + "memberId": "Stage/setCursor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setCursor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int", + "int" + ], + "parameterNames": [ + "path", + "x", + "y" + ], + "params": [ + "String path", + "int x", + "int y" + ], + "summary": "Sets the cursor image and its active spot coordinates.", + "description": "Sets the cursor image and its active spot coordinates.", + "scratchblock": null, + "paramDocs": [ + "path: a path to an image file, or the name of a built-in sprite", + "x: the x-coordinate of the cursor's active spot", + "y: the y-coordinate of the cursor's active spot" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setCursor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt das Mauszeigerbild mit eigenem Aktivpunkt" + } + } + }, + { + "id": "Stage/setDebug(boolean)", + "memberId": "Stage/setDebug", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setDebug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "debug" + ], + "params": [ + "boolean debug" + ], + "summary": "Enables or disables the debug mode for the application.", + "description": "Enables or disables the debug mode for the application.", + "scratchblock": null, + "paramDocs": [ + "debug: a boolean value where `true` enables debug mode and\n `false` disables\n it." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Ausgabe von debug() ein oder aus" + } + } + }, + { + "id": "Stage/setTint(double,double,double)", + "memberId": "Stage/setTint", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Sets the colour the backdrop is tinted with.", + "description": "Sets the colour the backdrop is tinted with.", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt den Hintergrund ein (Anteile jeweils 0 bis 255)" + } + } + }, + { + "id": "Stage/setTint(double)", + "memberId": "Stage/setTint", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the colour the backdrop is tinted with, as a hue.", + "description": "Sets the colour the backdrop is tinted with, as a hue.", + "scratchblock": "set [color v] effect to (h)", + "paramDocs": [ + "h: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt den Hintergrund mit dem angegebenen Farbton ein (0 bis 255)" + } + } + }, + { + "id": "Stage/setTransparency(double)", + "memberId": "Stage/setTransparency", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "transparency" + ], + "params": [ + "double transparency" + ], + "summary": "Sets how see-through the backdrop is, as Scratch's ghost effect does: 0 is\nthe solid backdrop you start with and 100 is invisible.", + "description": "Sets how see-through the backdrop is, as Scratch's ghost effect does: 0 is\nthe solid backdrop you start with and 100 is invisible.", + "scratchblock": "set [ghost v] effect to (transparency)", + "paramDocs": [ + "transparency: [0...100], 0 solid and 100 invisible" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Transparenz des Hintergrunds in Prozent" + } + } + }, + { + "id": "Stage/setVolume(double)", + "memberId": "Stage/setVolume", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "percent" + ], + "params": [ + "double percent" + ], + "summary": "Sets how loud every sound of this stage plays.", + "description": "Sets how loud every sound of this stage plays.", + "scratchblock": "set volume to (percent) %", + "paramDocs": [ + "percent: 0 for silent, 100 for full volume" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Lautstärke in Prozent" + } + } + }, + { + "id": "Stage/showVariable(String,Supplier)", + "memberId": "Stage/showVariable", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "showVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.util.function.Supplier" + ], + "parameterNames": [ + "name", + "value" + ], + "params": [ + "String name", + "Supplier value" + ], + "summary": "Shows a monitor for a variable in the top left corner of the stage, like\nScratch's variable monitors: the name and the current value, updated every\nframe. Showing the same name again replaces the monitor.", + "description": "Shows a monitor for a variable in the top left corner of the stage, like\nScratch's variable monitors: the name and the current value, updated every\nframe. Showing the same name again replaces the monitor.\n\n```java\nthis.showVariable(\"score\", () -> score);\n```", + "scratchblock": "show variable [name v]", + "paramDocs": [ + "name: what the monitor says", + "value: gives the value to show; asked for it every frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/showVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Bühne mit der angegebenen Breite und Höhe" + } + } + }, + { + "id": "Stage/stopAllSounds()", + "memberId": "Stage/stopAllSounds", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "stopAllSounds", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the playing of all sounds of the stage.", + "description": "Stops the playing of all sounds of the stage.", + "scratchblock": "stop all sounds", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/stopAllSounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt alle Klänge der Bühne" + } + } + }, + { + "id": "Stage/stopSound(String)", + "memberId": "Stage/stopSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "stopSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stops the playing of the sound with the given name", + "description": "Stops the playing of the sound with the given name", + "scratchblock": null, + "paramDocs": [ + "name: Name of the sound" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/stopSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt den Klang mit dem angegebenen Namen" + } + } + }, + { + "id": "Stage/switchBackdrop(String)", + "memberId": "Stage/switchBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "switchBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switch to a backdrop by name.", + "description": "Switch to a backdrop by name.", + "scratchblock": "switch backdrop to [name v]", + "paramDocs": [ + "name: the name of a backdrop" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/switchBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum Hintergrund mit dem angegebenen Namen" + } + } + }, + { + "id": "Stage/wait(int)", + "memberId": "Stage/wait", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "wait", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Stop the execution of the whole applications for the given milliseconds.", + "description": "Stop the execution of the whole applications for the given milliseconds.", + "scratchblock": "wait (millis) seconds", + "paramDocs": [ + "millis: Milliseconds" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/wait", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Pausiert das Programm für die angegebene Zeit in Millisekunden" + } + } + }, + { + "id": "Stage/waitUntil(BooleanSupplier)", + "memberId": "Stage/waitUntil", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "waitUntil", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.util.function.BooleanSupplier" + ], + "parameterNames": [ + "condition" + ], + "params": [ + "BooleanSupplier condition" + ], + "summary": "Waits until something becomes true, then carries on.", + "description": "Waits until something becomes true, then carries on.\n\nLike [wait(int)](wait) this holds up the code that calls it, not the whole\nprogram: sprites keep running and the stage keeps drawing while it waits.\nThat makes it useful for setting a scene up in a constructor, and a bad idea\ninside `run()`, which is called once per frame and should return quickly.\n\n```java\nthis.ask(\"What is your name?\");\nthis.waitUntil(() -> !this.isAsking());\nthis.display(\"Hello \" + this.getAnswer() + \"!\");\n```", + "scratchblock": "wait until <condition>", + "paramDocs": [ + "condition: checked over and over until it is true" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/waitUntil", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wartet, bis die Bedingung erfüllt ist" + } + } + }, + { + "id": "Stage/whenBackdropSwitches(String)", + "memberId": "Stage/whenBackdropSwitches", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenBackdropSwitches", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "This method is called when the backdrop switches to the specified name.\nOverride this method to\nadd custom behavior.", + "description": "This method is called when the backdrop switches to the specified name.\nOverride this method to\nadd custom behavior.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the backdrop to switch to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenBackdropSwitches", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Wechsel des Hintergrunds aufgerufen" + } + } + }, + { + "id": "Stage/whenIReceive(String)", + "memberId": "Stage/whenIReceive", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenIReceive", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "This method is called when a specific message is received. Override this\nmethod to add custom\nbehavior.", + "description": "This method is called when a specific message is received. Override this\nmethod to add custom\nbehavior.", + "scratchblock": "when I receive [message v]", + "paramDocs": [ + "message: The message that triggers this method." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenIReceive", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei broadcast(message) aufgerufen" + } + } + }, + { + "id": "Stage/whenKeyPressed(KeyCode)", + "memberId": "Stage/whenKeyPressed", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenKeyPressed", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is pressed. Override this method to add\ncustom behavior.", + "description": "This method is called when a key is pressed. Override this method to add\ncustom behavior.", + "scratchblock": "when [space v] key pressed", + "paramDocs": [ + "keyCode: the key that was pressed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Drücken der Taste aufgerufen" + } + } + }, + { + "id": "Stage/whenKeyReleased(KeyCode)", + "memberId": "Stage/whenKeyReleased", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenKeyReleased", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is released. Override this method to add\ncustom behavior.", + "description": "This method is called when a key is released. Override this method to add\ncustom behavior.", + "scratchblock": null, + "paramDocs": [ + "keyCode: the key that was released" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenKeyReleased", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Loslassen der Taste aufgerufen" + } + } + }, + { + "id": "Stage/whenMouseClicked(MouseCode)", + "memberId": "Stage/whenMouseClicked", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenMouseClicked", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.MouseCode" + ], + "parameterNames": [ + "mouseEvent" + ], + "params": [ + "MouseCode mouseEvent" + ], + "summary": "This method is called when a mouse click event occurs. Overwrite this method\nto add custom\nbehavior.", + "description": "This method is called when a mouse click event occurs. Overwrite this method\nto add custom\nbehavior.", + "scratchblock": "when stage clicked", + "paramDocs": [ + "mouseEvent: The mouse event that triggered this method." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenMouseClicked", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei einem Mausklick aufgerufen" + } + } + }, + { + "id": "Stage/whenMouseWheelMoved(int)", + "memberId": "Stage/whenMouseWheelMoved", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenMouseWheelMoved", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "steps" + ], + "params": [ + "int steps" + ], + "summary": "This method is called when the mouse wheel is moved. Overwrite this method to\nadd custom\nbehavior.", + "description": "This method is called when the mouse wheel is moved. Overwrite this method to\nadd custom\nbehavior.", + "scratchblock": null, + "paramDocs": [ + "steps: the number of steps the mouse wheel has moved. Positive values\n indicate movement\n away from the user, while negative values indicate movement\n towards the user." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenMouseWheelMoved", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Drehen des Mausrads aufgerufen" + } + } + }, + { + "id": "Text/addFont(String,String)", + "memberId": "Text/addFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "addFont", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "path" + ], + "params": [ + "String name", + "String path" + ], + "summary": "Adds a new font to the list of fonts if it does not already exist.", + "description": "Adds a new font to the list of fonts if it does not already exist.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the font to be added", + "path: the path to the font file" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/addFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt eine Schriftart hinzu" + } + } + }, + { + "id": "Text/constructor()", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Text object with default values. The text is initialized to an empty string,\npositioned at (0, 0), with a default size of 0. The text style is set to plain and the text\nis centred on its position, as every text is. Call [setAlign(TextAlign)](setAlign) for anything\nelse.", + "description": "Constructs a new Text object with default values. The text is initialized to an empty string,\npositioned at (0, 0), with a default size of 0. The text style is set to plain and the text\nis centred on its position, as every text is. Call [setAlign(TextAlign)](setAlign) for anything\nelse.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen leeren Text in der Mitte der Bühne" + } + } + }, + { + "id": "Text/constructor(Sprite)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Constructs a new Text object associated with a given Sprite.", + "description": "Constructs a new Text object associated with a given Sprite.", + "scratchblock": null, + "paramDocs": [ + "s: the Sprite to associate with this Text object" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Text an der angegebenen Position mit der angegebenen Breite" + } + } + }, + { + "id": "Text/constructor(String,double,double,double)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "java.lang.String", + "double", + "double", + "double" + ], + "parameterNames": [ + "text", + "x", + "y", + "width" + ], + "params": [ + "String text", + "double x", + "double y", + "double width" + ], + "summary": "Constructs a new Text object with the specified text, position, and width.", + "description": "Constructs a new Text object with the specified text, position, and width.", + "scratchblock": null, + "paramDocs": [ + "text: the text to be displayed", + "x: the x-coordinate of the text's position", + "y: the y-coordinate of the text's position", + "width: the width of the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Text/constructor(String,double,double,double,TextStyle)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "java.lang.String", + "double", + "double", + "double", + "org.openpatch.scratch.TextStyle" + ], + "parameterNames": [ + "text", + "x", + "y", + "width", + "style" + ], + "params": [ + "String text", + "double x", + "double y", + "double width", + "TextStyle style" + ], + "summary": "Constructs a new Text object with the specified text, position, width, and style.", + "description": "Constructs a new Text object with the specified text, position, width, and style.", + "scratchblock": null, + "paramDocs": [ + "text: the text content to be displayed", + "x: the x-coordinate of the text's position", + "y: the y-coordinate of the text's position", + "width: the width of the text area", + "style: the style to be applied to the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Text an der angegebenen Position, mit der angegebenen Breite und im angegebenen Stil" + } + } + }, + { + "id": "Text/constructor(Text)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "org.openpatch.scratch.Text" + ], + "parameterNames": [ + "t" + ], + "params": [ + "Text t" + ], + "summary": "Copy constructor for the Text class. Creates a new Text object by copying the properties of the\ngiven Text object.", + "description": "Copy constructor for the Text class. Creates a new Text object by copying the properties of the\ngiven Text object.", + "scratchblock": null, + "paramDocs": [ + "t: the Text object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Text/getAlign()", + "memberId": "Text/getAlign", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getAlign", + "static": false, + "returnType": "TextAlign", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns where the text sits relative to its position.", + "description": "Returns where the text sits relative to its position.", + "scratchblock": null, + "paramDocs": [], + "returns": "the alignment", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getAlign", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Ausrichtung des Texts zurück" + } + } + }, + { + "id": "Text/getCurrentFontIndex()", + "memberId": "Text/getCurrentFontIndex", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getCurrentFontIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the index of the current font.", + "description": "Returns the index of the current font.", + "scratchblock": null, + "paramDocs": [], + "returns": "the index of the current font", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getCurrentFontIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer der aktuellen Schriftart zurück" + } + } + }, + { + "id": "Text/getCurrentFontName()", + "memberId": "Text/getCurrentFontName", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getCurrentFontName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the name of the current font.", + "description": "Retrieves the name of the current font.", + "scratchblock": null, + "paramDocs": [], + "returns": "the name of the current font, or `null` if no fonts are available.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getCurrentFontName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen der aktuellen Schriftart zurück" + } + } + }, + { + "id": "Text/getDefaultFont()", + "memberId": "Text/getDefaultFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getDefaultFont", + "static": true, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the font that text is written in by default.", + "description": "Returns the font that text is written in by default.", + "scratchblock": null, + "paramDocs": [], + "returns": "the path to the font file", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getDefaultFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Standardschriftart zurück" + } + } + }, + { + "id": "Text/getDefaultFontSize()", + "memberId": "Text/getDefaultFontSize", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getDefaultFontSize", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size text is written in by default.", + "description": "Returns the size text is written in by default.", + "scratchblock": null, + "paramDocs": [], + "returns": "the font size", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getDefaultFontSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Standardschriftgröße zurück" + } + } + }, + { + "id": "Text/getFont()", + "memberId": "Text/getFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getFont", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the name of the font.", + "description": "Retrieves the name of the font.", + "scratchblock": null, + "paramDocs": [], + "returns": "the name of the font as a String.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen der aktuellen Schriftart zurück" + } + } + }, + { + "id": "Text/getPosition()", + "memberId": "Text/getPosition", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current position as a Vector2 object.", + "description": "Retrieves the current position as a Vector2 object.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Vector2 object representing the current x and y coordinates.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position des Texts zurück" + } + } + }, + { + "id": "Text/getStage()", + "memberId": "Text/getStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getStage", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current stage associated with this object.", + "description": "Retrieves the current stage associated with this object.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current stage", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Bühne zurück, auf der der Text liegt" + } + } + }, + { + "id": "Text/getStyle()", + "memberId": "Text/getStyle", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getStyle", + "static": false, + "returnType": "TextStyle", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the style the text is drawn in.", + "description": "Returns the style the text is drawn in.", + "scratchblock": null, + "paramDocs": [], + "returns": "the style, never null", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getStyle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Stil zurück, in dem der Text gezeichnet wird" + } + } + }, + { + "id": "Text/getTextSize()", + "memberId": "Text/getTextSize", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getTextSize", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size of the text.", + "description": "Returns the size of the text.", + "scratchblock": null, + "paramDocs": [], + "returns": "the size of the text as an integer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getTextSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Schriftgröße zurück" + } + } + }, + { + "id": "Text/getWidth()", + "memberId": "Text/getWidth", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getWidth", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the width of the text.", + "description": "Returns the width of the text.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the text as a double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite des Textfelds zurück" + } + } + }, + { + "id": "Text/getX()", + "memberId": "Text/getX", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x-coordinate of this object.", + "description": "Returns the x-coordinate of this object.", + "scratchblock": null, + "paramDocs": [], + "returns": "the x-coordinate as a double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position zurück" + } + } + }, + { + "id": "Text/getY()", + "memberId": "Text/getY", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y-coordinate of this object.", + "description": "Returns the y-coordinate of this object.", + "scratchblock": null, + "paramDocs": [], + "returns": "the y-coordinate as a double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position zurück" + } + } + }, + { + "id": "Text/goLayersBackwards(int)", + "memberId": "Text/goLayersBackwards", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goLayersBackwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the text backwards by a specified number of layers in the stage. If\nthe text is not on a stage, the method does nothing.", + "description": "Moves the text backwards by a specified number of layers in the stage. If\nthe text is not on a stage, the method does nothing.", + "scratchblock": "go [backward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the text backwards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goLayersBackwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt den Text um die angegebene Anzahl Ebenen nach hinten" + } + } + }, + { + "id": "Text/goLayersForwards(int)", + "memberId": "Text/goLayersForwards", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goLayersForwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the text forward by a specified number of layers within its stage. If\nthe text is not on a stage, the method does nothing.", + "description": "Moves the text forward by a specified number of layers within its stage. If\nthe text is not on a stage, the method does nothing.", + "scratchblock": "go [forward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the text forward" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goLayersForwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt den Text um die angegebene Anzahl Ebenen nach vorne" + } + } + }, + { + "id": "Text/goToBackLayer()", + "memberId": "Text/goToBackLayer", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goToBackLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves this text to the back layer of the stage, behind every other text on\nit. If the text is not on a stage, the method does nothing.", + "description": "Moves this text to the back layer of the stage, behind every other text on\nit. If the text is not on a stage, the method does nothing.\n\nTexts are drawn on top of the sprites, so this orders a text against the\nother texts rather than against the sprites.", + "scratchblock": "go to [back v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goToBackLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt den Text hinter die anderen Texte" + } + } + }, + { + "id": "Text/goToFrontLayer()", + "memberId": "Text/goToFrontLayer", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goToFrontLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves this text to the front layer of the stage, in front of every other\ntext on it. If the text is not on a stage, the method does nothing.", + "description": "Moves this text to the front layer of the stage, in front of every other\ntext on it. If the text is not on a stage, the method does nothing.\n\nTexts are drawn on top of the sprites, so this orders a text against the\nother texts rather than against the sprites.", + "scratchblock": "go to [front v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goToFrontLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt den Text vor die anderen Texte" + } + } + }, + { + "id": "Text/isUI()", + "memberId": "Text/isUI", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "isUI", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the current instance is a UI element.", + "description": "Checks if the current instance is a UI element.", + "scratchblock": null, + "paramDocs": [], + "returns": "`true` if this instance is a UI element, `false` otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/isUI", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Text zur Benutzeroberfläche gehört" + } + } + }, + { + "id": "Text/nextFont()", + "memberId": "Text/nextFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "nextFont", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Advances to the next font in the list of available fonts. The current font index is incremented\nby one and wraps around to the beginning of the list if it exceeds the number of available\nfonts.", + "description": "Advances to the next font in the list of available fonts. The current font index is incremented\nby one and wraps around to the beginning of the list if it exceeds the number of available\nfonts.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/nextFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zur nächsten Schriftart" + } + } + }, + { + "id": "Text/remove()", + "memberId": "Text/remove", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes this object from its current stage if it is associated with one. If the object is not\nassociated with any stage, this method does nothing.", + "description": "Removes this object from its current stage if it is associated with one. If the object is not\nassociated with any stage, this method does nothing.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt den Text von der Bühne" + } + } + }, + { + "id": "Text/setAlign(TextAlign)", + "memberId": "Text/setAlign", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setAlign", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.TextAlign" + ], + "parameterNames": [ + "align" + ], + "params": [ + "TextAlign align" + ], + "summary": "Sets the alignment of the text.", + "description": "Sets the alignment of the text.", + "scratchblock": null, + "paramDocs": [ + "align: where the text should sit relative to its position" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setAlign", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie der Text zu seiner Position ausgerichtet wird" + } + } + }, + { + "id": "Text/setBackgroundColor(int,int,int)", + "memberId": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setBackgroundColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "int r", + "int g", + "int b" + ], + "summary": "Sets the background color using the specified RGB values.", + "description": "Sets the background color using the specified RGB values.", + "scratchblock": null, + "paramDocs": [ + "r: the red component of the color (0-255)", + "g: the green component of the color (0-255)", + "b: the blue component of the color (0-255)" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setBackgroundColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Text/setBackgroundColor(double)", + "memberId": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setBackgroundColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the background color using the specified hue value.", + "description": "Sets the background color using the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value for the background color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setBackgroundColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Text/setBackgroundColor(Color)", + "memberId": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setBackgroundColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the background color of the text.", + "description": "Sets the background color of the text.", + "scratchblock": null, + "paramDocs": [ + "c: the new background color to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setBackgroundColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe" + } + } + }, + { + "id": "Text/setFont(String)", + "memberId": "Text/setFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setFont", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Sets the font name for the text.", + "description": "Sets the font name for the text.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the font to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zur Schriftart mit dem angegebenen Namen" + } + } + }, + { + "id": "Text/setIsUI(boolean)", + "memberId": "Text/setIsUI", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setIsUI", + "static": false, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "isUI" + ], + "params": [ + "boolean isUI" + ], + "summary": "Sets the UI status of this object.", + "description": "Sets the UI status of this object.", + "scratchblock": null, + "paramDocs": [ + "isUI: a boolean indicating whether this object is part of the UI" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setIsUI", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, ob der Text zur Benutzeroberfläche gehört und sich nicht mit der Kamera bewegt" + } + } + }, + { + "id": "Text/setPosition(double,double)", + "memberId": "Text/setPosition", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the position of the text", + "description": "Sets the position of the text", + "scratchblock": null, + "paramDocs": [ + "x: a x coordinate", + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Text an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Text/setPosition(Vector2)", + "memberId": "Text/setPosition", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the text object using a Vector2 object.", + "description": "Sets the position of the text object using a Vector2 object.", + "scratchblock": null, + "paramDocs": [ + "v: the Vector2 object containing the x and y coordinates" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Text an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Text/setStrokeColor(int,int,int)", + "memberId": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStrokeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "int r", + "int g", + "int b" + ], + "summary": "Sets the stroke color using the specified RGB values.", + "description": "Sets the stroke color using the specified RGB values.", + "scratchblock": null, + "paramDocs": [ + "r: the red component of the color (0-255)", + "g: the green component of the color (0-255)", + "b: the blue component of the color (0-255)" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStrokeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Rahmenfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Text/setStrokeColor(double)", + "memberId": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStrokeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the stroke color using the specified hue value.", + "description": "Sets the stroke color using the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value for the stroke color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStrokeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Rahmenfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Text/setStrokeColor(Color)", + "memberId": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStrokeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the stroke color for the text.", + "description": "Sets the stroke color for the text.", + "scratchblock": null, + "paramDocs": [ + "c: the color to set as the stroke color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStrokeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Rahmenfarbe" + } + } + }, + { + "id": "Text/setStyle(TextStyle)", + "memberId": "Text/setStyle", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStyle", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.TextStyle" + ], + "parameterNames": [ + "style" + ], + "params": [ + "TextStyle style" + ], + "summary": "Sets the style of the text.", + "description": "Sets the style of the text.", + "scratchblock": null, + "paramDocs": [ + "style: the TextStyle to be applied to the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStyle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, ob der Text als Kasten, Sprech- oder Denkblase dargestellt wird" + } + } + }, + { + "id": "Text/setTextColor(int,int,int)", + "memberId": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "int r", + "int g", + "int b" + ], + "summary": "Sets the text color using RGB values.", + "description": "Sets the text color using RGB values.", + "scratchblock": null, + "paramDocs": [ + "r: the red component of the color (0-255)", + "g: the green component of the color (0-255)", + "b: the blue component of the color (0-255)" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Text/setTextColor(double)", + "memberId": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the text color using the specified hue value.", + "description": "Sets the text color using the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value for the text color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Text/setTextColor(Color)", + "memberId": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the color of the text.", + "description": "Sets the color of the text.", + "scratchblock": null, + "paramDocs": [ + "c: the new color to be set for the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftfarbe" + } + } + }, + { + "id": "Text/setTextSize(int)", + "memberId": "Text/setTextSize", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "size" + ], + "params": [ + "int size" + ], + "summary": "Sets the size of the text.", + "description": "Sets the size of the text.", + "scratchblock": null, + "paramDocs": [ + "size: the new size of the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftgröße" + } + } + }, + { + "id": "Text/setWidth(double)", + "memberId": "Text/setWidth", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setWidth", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "width" + ], + "params": [ + "double width" + ], + "summary": "Sets the width of the text.", + "description": "Sets the width of the text.", + "scratchblock": null, + "paramDocs": [ + "width: the new width to set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Breite des Textfelds; längere Texte werden umgebrochen" + } + } + }, + { + "id": "Text/setX(double)", + "memberId": "Text/setX", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Sets the x-coordinate for this object.", + "description": "Sets the x-coordinate for this object.", + "scratchblock": null, + "paramDocs": [ + "x: the new x-coordinate value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die x-Position" + } + } + }, + { + "id": "Text/setY(double)", + "memberId": "Text/setY", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Sets the Y coordinate of the text.", + "description": "Sets the Y coordinate of the text.", + "scratchblock": null, + "paramDocs": [ + "y: the new Y coordinate value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die y-Position" + } + } + }, + { + "id": "Text/showText(String)", + "memberId": "Text/showText", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "showText", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Displays the specified text.", + "description": "Displays the specified text.", + "scratchblock": null, + "paramDocs": [ + "text: The text to be displayed. If the text is null or empty, the text will be set to\n null." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/showText", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt den Text an" + } + } + }, + { + "id": "Text/showText(String,int)", + "memberId": "Text/showText", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "showText", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays the specified text for a given duration.", + "description": "Displays the specified text for a given duration.", + "scratchblock": null, + "paramDocs": [ + "text: The text to be displayed.", + "millis: The duration in milliseconds for which the text should be displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/showText", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt den Text für die angegebene Zeit in Millisekunden an" + } + } + }, + { + "id": "Text/switchFont(String)", + "memberId": "Text/switchFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "switchFont", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switches the current font to the font with the specified name.", + "description": "Switches the current font to the font with the specified name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the font to switch to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/switchFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zur Schriftart mit dem angegebenen Namen" + } + } + }, + { + "id": "Text/useFont(String,int)", + "memberId": "Text/useFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useFont", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "path", + "size" + ], + "params": [ + "String path", + "int size" + ], + "summary": "Chooses the font all text is written in, and how big it is.", + "description": "Chooses the font all text is written in, and how big it is.\n\nCall it before the first stage is created. The font is loaded while the\nwindow starts up, so choosing one later is not reliable.\n\n```java\npublic static void main(String[] args) {\n Text.useFont(\"assets/Retro Gaming.ttf\", 11);\n new MyStage();\n}\n```", + "scratchblock": null, + "paramDocs": [ + "path: the path to a .ttf or .otf file", + "size: the size to write in" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt Schriftart und -größe für alle Texte fest" + } + } + }, + { + "id": "Text/useFont(String)", + "memberId": "Text/useFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useFont", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Chooses the font all text is written in, keeping the current size.", + "description": "Chooses the font all text is written in, keeping the current size.", + "scratchblock": null, + "paramDocs": [ + "path: the path to a .ttf or .otf file" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt die Schriftart für alle Texte fest" + } + } + }, + { + "id": "Text/useFontSizes(int[])", + "memberId": "Text/useFontSizes", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useFontSizes", + "static": true, + "returnType": "void", + "parameterTypes": [ + "int[]" + ], + "parameterNames": [ + "sizes" + ], + "params": [ + "int[] sizes" + ], + "summary": "Prepares several sizes of the font in advance. Only needed when text is\nshown at more than one size, so that every size looks sharp.", + "description": "Prepares several sizes of the font in advance. Only needed when text is\nshown at more than one size, so that every size looks sharp.", + "scratchblock": null, + "paramDocs": [ + "sizes: the sizes to prepare" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useFontSizes", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Text/useSmoothing(boolean)", + "memberId": "Text/useSmoothing", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useSmoothing", + "static": true, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "smooth" + ], + "params": [ + "boolean smooth" + ], + "summary": "Chooses whether letters are smoothed. Turn it off for pixel fonts.", + "description": "Chooses whether letters are smoothed. Turn it off for pixel fonts.", + "scratchblock": null, + "paramDocs": [ + "smooth: true to smooth the letters" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useSmoothing", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, ob Schrift geglättet wird" + } + } + }, + { + "id": "Text/whenAddedToStage()", + "memberId": "Text/whenAddedToStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenAddedToStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the object is added to the stage. Override this method to define\ncustom behavior when the object is added to the stage.", + "description": "This method is called when the object is added to the stage. Override this method to define\ncustom behavior when the object is added to the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenAddedToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text der Bühne hinzugefügt wird" + } + } + }, + { + "id": "Text/whenAddedToStage(Stage)", + "memberId": "Text/whenAddedToStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenAddedToStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "stage" + ], + "params": [ + "Stage stage" + ], + "summary": "This method is called when the text is added to the stage. Override this method to define\ncustom behavior when the text.", + "description": "This method is called when the text is added to the stage. Override this method to define\ncustom behavior when the text.", + "scratchblock": null, + "paramDocs": [ + "stage: The stage to which the text is added." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenAddedToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text der Bühne hinzugefügt wird" + } + } + }, + { + "id": "Text/whenRemovedFromStage()", + "memberId": "Text/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenRemovedFromStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the object is removed from the stage. Override this method to define\ncustom behavior that should occur when the object is no longer part of the stage.", + "description": "This method is called when the object is removed from the stage. Override this method to define\ncustom behavior that should occur when the object is no longer part of the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenRemovedFromStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text von der Bühne entfernt wird" + } + } + }, + { + "id": "Text/whenRemovedFromStage(Stage)", + "memberId": "Text/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenRemovedFromStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "stage" + ], + "params": [ + "Stage stage" + ], + "summary": "This method is called when the text is removed from the stage. Override this method to define\ncustom behavior that should occur.", + "description": "This method is called when the text is removed from the stage. Override this method to define\ncustom behavior that should occur.", + "scratchblock": null, + "paramDocs": [ + "stage: The stage from which the text is removed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenRemovedFromStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text von der Bühne entfernt wird" + } + } + }, + { + "id": "Timer/afterMillis(int)", + "memberId": "Timer/afterMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "afterMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified number of milliseconds has passed since the method was first called.", + "description": "Checks if the specified number of milliseconds has passed since the method was first called.", + "scratchblock": null, + "paramDocs": [ + "millis: the number of milliseconds to check against" + ], + "returns": "true if the specified number of milliseconds has passed since the method was first\n called, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/afterMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt true zurück, sobald seit dem Zurücksetzen millis Millisekunden vergangen sind" + } + } + }, + { + "id": "Timer/constructor()", + "memberId": "Timer/constructor", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "constructor", + "static": false, + "returnType": "Timer", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Timer object.", + "description": "Constructs a new Timer object.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen neuen Timer" + } + } + }, + { + "id": "Timer/everyMillis(int)", + "memberId": "Timer/everyMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "everyMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified number of milliseconds has passed since the last time this method\nreturned true.", + "description": "Checks if the specified number of milliseconds has passed since the last time this method\nreturned true.", + "scratchblock": null, + "paramDocs": [ + "millis: The number of milliseconds to wait before returning true." + ], + "returns": "true if the specified number of milliseconds has passed since the last call that\n returned true, false otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/everyMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle millis Millisekunden einmal true zurück" + } + } + }, + { + "id": "Timer/forMillis(int)", + "memberId": "Timer/forMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "forMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified amount of milliseconds has passed since the method was first called. If\nthe method is called for the first time, it initializes the start time.", + "description": "Checks if the specified amount of milliseconds has passed since the method was first called. If\nthe method is called for the first time, it initializes the start time.", + "scratchblock": null, + "paramDocs": [ + "millis: the number of milliseconds to check against" + ], + "returns": "true if the current time is less than the start time plus the specified milliseconds,\n false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/forMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt für die ersten millis Millisekunden nach dem Zurücksetzen true zurück" + } + } + }, + { + "id": "Timer/intervalMillis(int)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis: the interval in milliseconds to check" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt alle millis Millisekunden zwischen true und false" + } + } + }, + { + "id": "Timer/intervalMillis(int,boolean)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int", + "boolean" + ], + "parameterNames": [ + "millis", + "skipFirst" + ], + "params": [ + "int millis", + "boolean skipFirst" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis: the interval in milliseconds to check", + "skipFirst: if true, the first interval will be skipped" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt alle millis Millisekunden zwischen true und false; skipFirst überspringt das erste Intervall" + } + } + }, + { + "id": "Timer/intervalMillis(int,int)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "millis1", + "millis2" + ], + "params": [ + "int millis1", + "int millis2" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis1: the first interval in milliseconds to check", + "millis2: the second interval in milliseconds to check" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt millis1 Millisekunden lang true und danach millis2 Millisekunden lang false zurück" + } + } + }, + { + "id": "Timer/intervalMillis(int,int,boolean)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int", + "int", + "boolean" + ], + "parameterNames": [ + "millis1", + "millis2", + "skipFirst" + ], + "params": [ + "int millis1", + "int millis2", + "boolean skipFirst" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis1: the first interval in milliseconds to check", + "millis2: the second interval in milliseconds to check", + "skipFirst: if true, the first interval will be skipped" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt millis1 Millisekunden lang true und danach millis2 Millisekunden lang false zurück; skipFirst überspringt das erste Intervall" + } + } + }, + { + "id": "Timer/millis()", + "memberId": "Timer/millis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "millis", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the number of milliseconds of game time since the program started.\nGame time stands still while the game is paused and runs slower or faster\nwith the game speed (see [Window.pause()](../Window/pause) and\n[Window.setGameSpeed(double)](../Window/setGameSpeed)); without either, it is the real time.", + "description": "Returns the number of milliseconds of game time since the program started.\nGame time stands still while the game is paused and runs slower or faster\nwith the game speed (see [Window.pause()](../Window/pause) and\n[Window.setGameSpeed(double)](../Window/setGameSpeed)); without either, it is the real time.", + "scratchblock": "(timer)", + "paramDocs": [], + "returns": "the milliseconds of game time since the program started", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/millis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die seit dem Programmstart vergangenen Millisekunden zurück" + } + } + }, + { + "id": "Timer/reset()", + "memberId": "Timer/reset", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "reset", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Resets the timer.", + "description": "Resets the timer.", + "scratchblock": "reset timer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/reset", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Timer auf 0 zurück" + } + } + }, + { + "id": "Triangle/constructor(double,double,double,double,double,double)", + "memberId": "Triangle/constructor", + "owner": "org.openpatch.scratch.Triangle", + "className": "Triangle", + "methodName": "constructor", + "static": false, + "returnType": "Triangle", + "parameterTypes": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "x1", + "y1", + "x2", + "y2", + "x3", + "y3" + ], + "params": [ + "double x1", + "double y1", + "double x2", + "double y2", + "double x3", + "double y3" + ], + "summary": "Creates a triangle with the specified vertices.", + "description": "Creates a triangle with the specified vertices.", + "scratchblock": null, + "paramDocs": [ + "x1: the x-coordinate of the first vertex", + "y1: the y-coordinate of the first vertex", + "x2: the x-coordinate of the second vertex", + "y2: the y-coordinate of the second vertex", + "x3: the x-coordinate of the third vertex", + "y3: the y-coordinate of the third vertex" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Triangle/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Dreieck aus den drei Eckpunkten" + } + } + }, + { + "id": "UISprite/changeHeight(double)", + "memberId": "UISprite/changeHeight", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "changeHeight", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "amount" + ], + "params": [ + "double amount" + ], + "summary": "Changes the height of the sprite by the given number of pixels.", + "description": "Changes the height of the sprite by the given number of pixels.", + "scratchblock": null, + "paramDocs": [ + "amount: how many pixels to add to the height" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/changeHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Höhe um die angegebene Anzahl Pixel" + } + } + }, + { + "id": "UISprite/changeWidth(double)", + "memberId": "UISprite/changeWidth", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "changeWidth", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "amount" + ], + "params": [ + "double amount" + ], + "summary": "Changes the width of the sprite by the given number of pixels.", + "description": "Changes the width of the sprite by the given number of pixels.", + "scratchblock": null, + "paramDocs": [ + "amount: how many pixels to add to the width" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/changeWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Breite um die angegebene Anzahl Pixel" + } + } + }, + { + "id": "UISprite/constructor()", + "memberId": "UISprite/constructor", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "constructor", + "static": false, + "returnType": "UISprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a sprite that is drawn as part of the user interface.", + "description": "Creates a sprite that is drawn as part of the user interface.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine neue UI-Figur" + } + } + }, + { + "id": "UISprite/disableNineSlice()", + "memberId": "UISprite/disableNineSlice", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "disableNineSlice", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Lets the whole costume stretch again.", + "description": "Lets the whole costume stretch again.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/disableNineSlice", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Lässt das ganze Kostüm wieder mitskalieren" + } + } + }, + { + "id": "UISprite/setHeight(double)", + "memberId": "UISprite/setHeight", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "setHeight", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "height" + ], + "params": [ + "double height" + ], + "summary": "Sets the height of the sprite in pixels.", + "description": "Sets the height of the sprite in pixels.", + "scratchblock": null, + "paramDocs": [ + "height: the height in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/setHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Höhe in Pixeln" + } + } + }, + { + "id": "UISprite/setNineSlice(int,int,int,int)", + "memberId": "UISprite/setNineSlice", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "setNineSlice", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int", + "int" + ], + "parameterNames": [ + "top", + "right", + "bottom", + "left" + ], + "params": [ + "int top", + "int right", + "int bottom", + "int left" + ], + "summary": "Keeps the corners and edges of the costume from stretching when the sprite\nis resized, so that a button costume can be made any size.", + "description": "Keeps the corners and edges of the costume from stretching when the sprite\nis resized, so that a button costume can be made any size.", + "scratchblock": null, + "paramDocs": [ + "top: how many pixels of the costume belong to the top edge", + "right: how many pixels of the costume belong to the right edge", + "bottom: how many pixels of the costume belong to the bottom edge", + "left: how many pixels of the costume belong to the left edge" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/setNineSlice", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Hält die Ecken und Ränder des Kostüms beim Skalieren fest (Nine-Slice)" + } + } + }, + { + "id": "UISprite/setWidth(double)", + "memberId": "UISprite/setWidth", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "setWidth", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "width" + ], + "params": [ + "double width" + ], + "summary": "Sets the width of the sprite in pixels.", + "description": "Sets the width of the sprite in pixels.", + "scratchblock": null, + "paramDocs": [ + "width: the width in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/setWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Breite in Pixeln" + } + } + }, + { + "id": "Vector2/add(Vector2)", + "memberId": "Vector2/add", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "add", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Adds another vector and returns the result", + "description": "Adds another vector and returns the result", + "scratchblock": null, + "paramDocs": [ + "v: " + ], + "returns": "the sum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Summe beider Vektoren als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/angle()", + "memberId": "Vector2/angle", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "angle", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the angle of the vector.", + "description": "Returns the angle of the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/angle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Winkel des Vektors in Grad zurück" + } + } + }, + { + "id": "Vector2/clone()", + "memberId": "Vector2/clone", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "clone", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a clone of the vector", + "description": "Creates a clone of the vector", + "scratchblock": null, + "paramDocs": [], + "returns": "the cloned vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/clone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Kopie des Vektors zurück" + } + } + }, + { + "id": "Vector2/constructor()", + "memberId": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "constructor", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructor for the null vector.", + "description": "Constructor for the null vector.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt den Nullvektor" + } + } + }, + { + "id": "Vector2/constructor(double,double)", + "memberId": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "constructor", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Constructor for a 2D vector.", + "description": "Constructor for a 2D vector.", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate", + "y: y-coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Vektor mit den angegebenen Koordinaten" + } + } + }, + { + "id": "Vector2/constructor(Vector2)", + "memberId": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "constructor", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Copy constructor for copying a vector.", + "description": "Copy constructor for copying a vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie des übergebenen Vektors" + } + } + }, + { + "id": "Vector2/distance(Vector2)", + "memberId": "Vector2/distance", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "distance", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Calculates the distance to another vector.", + "description": "Calculates the distance to another vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": "the distance", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/distance", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Abstand zu v zurück" + } + } + }, + { + "id": "Vector2/distanceSq(Vector2)", + "memberId": "Vector2/distanceSq", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "distanceSq", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Calculates the squared distance to another vector.", + "description": "Calculates the squared distance to another vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": "the squared distance", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/distanceSq", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Quadrat des Abstands zu v zurück" + } + } + }, + { + "id": "Vector2/dot(Vector2)", + "memberId": "Vector2/dot", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "dot", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Calculates the dot product.", + "description": "Calculates the dot product.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": "the dot product", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/dot", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Skalarprodukt beider Vektoren zurück" + } + } + }, + { + "id": "Vector2/equals(Object)", + "memberId": "Vector2/equals", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "equals", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.Object" + ], + "parameterNames": [ + "obj" + ], + "params": [ + "Object obj" + ], + "summary": "Compares this vector with another object.", + "description": "Compares this vector with another object.", + "scratchblock": null, + "paramDocs": [ + "obj: the object to compare with" + ], + "returns": "true if the other object is a vector with the same x- and y-coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/equals", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn beide Vektoren gleich sind" + } + } + }, + { + "id": "Vector2/fromPolar(double,double)", + "memberId": "Vector2/fromPolar", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "fromPolar", + "static": true, + "returnType": "Vector2", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "magnitude", + "angle" + ], + "params": [ + "double magnitude", + "double angle" + ], + "summary": "Constructor method for constructing a vector based on polar coordinates.", + "description": "Constructor method for constructing a vector based on polar coordinates.", + "scratchblock": null, + "paramDocs": [ + "magnitude: of the vector", + "angle: of the vector" + ], + "returns": "a vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/fromPolar", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Vektor aus Länge und Winkel (in Grad)" + } + } + }, + { + "id": "Vector2/getX()", + "memberId": "Vector2/getX", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x coordinate of the vector", + "description": "Returns the x coordinate of the vector", + "scratchblock": null, + "paramDocs": [], + "returns": "the x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Koordinate zurück" + } + } + }, + { + "id": "Vector2/getY()", + "memberId": "Vector2/getY", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y coordinate of the vector", + "description": "Returns the y coordinate of the vector", + "scratchblock": null, + "paramDocs": [], + "returns": "the y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Koordinate zurück" + } + } + }, + { + "id": "Vector2/hashCode()", + "memberId": "Vector2/hashCode", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "hashCode", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the hash code of the vector. Vectors that are equal have the same hash code, which is\nwhat lets them be used as keys in a `HashMap`.", + "description": "Returns the hash code of the vector. Vectors that are equal have the same hash code, which is\nwhat lets them be used as keys in a `HashMap`.", + "scratchblock": null, + "paramDocs": [], + "returns": "the hash code of the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/hashCode", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Hashwert des Vektors zurück" + } + } + }, + { + "id": "Vector2/length()", + "memberId": "Vector2/length", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "length", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Calculates the length of the vector.", + "description": "Calculates the length of the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "the length of the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/length", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Länge des Vektors zurück" + } + } + }, + { + "id": "Vector2/lengthSq()", + "memberId": "Vector2/lengthSq", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "lengthSq", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Calculates the squared length of the vector.", + "description": "Calculates the squared length of the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "the squared length of the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/lengthSq", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Quadrat der Länge zurück (schneller als length())" + } + } + }, + { + "id": "Vector2/multiply(double)", + "memberId": "Vector2/multiply", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "multiply", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "scalar" + ], + "params": [ + "double scalar" + ], + "summary": "Multiplies a scalar and return the result.", + "description": "Multiplies a scalar and return the result.", + "scratchblock": null, + "paramDocs": [ + "scalar: a scalar" + ], + "returns": "the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/multiply", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den mit scalar multiplizierten Vektor als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/normalVector()", + "memberId": "Vector2/normalVector", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "normalVector", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the normal vector, which is perpendicular to the vector.", + "description": "Returns the normal vector, which is perpendicular to the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "a normal vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/normalVector", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen dazu senkrechten Vektor zurück" + } + } + }, + { + "id": "Vector2/reverse()", + "memberId": "Vector2/reverse", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "reverse", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Reverses a vector and returns the result.", + "description": "Reverses a vector and returns the result.", + "scratchblock": null, + "paramDocs": [], + "returns": "the reversed vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/reverse", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den entgegengesetzten Vektor zurück" + } + } + }, + { + "id": "Vector2/rotateBy(double)", + "memberId": "Vector2/rotateBy", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "rotateBy", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "angle" + ], + "params": [ + "double angle" + ], + "summary": "Rotates the vector by an angle and returns the result.", + "description": "Rotates the vector by an angle and returns the result.", + "scratchblock": null, + "paramDocs": [ + "angle: an angle between [0, ..., 360]" + ], + "returns": "the rotated vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/rotateBy", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den um angle Grad gedrehten Vektor als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/rotateTo(double)", + "memberId": "Vector2/rotateTo", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "rotateTo", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "angle" + ], + "params": [ + "double angle" + ], + "summary": "Rotates the vector to a given angle and returns the result.", + "description": "Rotates the vector to a given angle and returns the result.", + "scratchblock": null, + "paramDocs": [ + "angle: an angle between [0,...,360]" + ], + "returns": "the rotated vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/rotateTo", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen Vektor gleicher Länge mit dem Winkel angle (in Grad) zurück" + } + } + }, + { + "id": "Vector2/sub(Vector2)", + "memberId": "Vector2/sub", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "sub", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Substracts another vector and returns the result", + "description": "Substracts another vector and returns the result", + "scratchblock": null, + "paramDocs": [ + "v: " + ], + "returns": "the difference", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/sub", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Differenz beider Vektoren als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/toString()", + "memberId": "Vector2/toString", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the vector as a text, for example `Vector2[60.0, 80.0]`.", + "description": "Returns the vector as a text, for example `Vector2[60.0, 80.0]`.", + "scratchblock": null, + "paramDocs": [], + "returns": "the vector as a text", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/toString", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Vektor als Zeichenkette zurück" + } + } + }, + { + "id": "Vector2/unitVector()", + "memberId": "Vector2/unitVector", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "unitVector", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the unit vector.", + "description": "Returns the unit vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "a unit vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/unitVector", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen Vektor gleicher Richtung mit der Länge 1 zurück" + } + } + }, + { + "id": "Window/constructor()", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Window with default dimensions. The default width is 480\npixels and the\ndefault height is 360 pixels.", + "description": "Constructs a new Window with default dimensions. The default width is 480\npixels and the\ndefault height is 360 pixels.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster in Standardgröße" + } + } + }, + { + "id": "Window/constructor(String)", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "assets" + ], + "params": [ + "String assets" + ], + "summary": "Constructs a new Window with the specified assets. The window will have a\ndefault width of 480\npixels and a height of 360 pixels.", + "description": "Constructs a new Window with the specified assets. The window will have a\ndefault width of 480\npixels and a height of 360 pixels.", + "scratchblock": null, + "paramDocs": [ + "assets: the path to the assets to be used in the window" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster mit eigenem Asset-Ordner" + } + } + }, + { + "id": "Window/constructor(int,int)", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "width", + "height" + ], + "params": [ + "int width", + "int height" + ], + "summary": "Constructs a new Window with the specified width and height.", + "description": "Constructs a new Window with the specified width and height.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the window", + "height: the height of the window" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster mit der angegebenen Größe" + } + } + }, + { + "id": "Window/constructor(int,int,String)", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [ + "int", + "int", + "java.lang.String" + ], + "parameterNames": [ + "width", + "height", + "assets" + ], + "params": [ + "int width", + "int height", + "String assets" + ], + "summary": "Constructs a new Window with the specified width, height, and assets path.\nEnsures that only\none instance of Window can be created.", + "description": "Constructs a new Window with the specified width, height, and assets path.\nEnsures that only\none instance of Window can be created.\n\nThe single exception is the window Java builds by itself: a class that\nextends Window and has a `main` method which is not static is\ninstantiated by the JVM before `main` is called, so the\n`new MyWindow()` in that `main` would be the second window. That\none reuses the first instead of failing.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the window", + "height: the height of the window", + "assets: the path to the assets" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster mit Größe und eigenem Asset-Ordner" + } + } + }, + { + "id": "Window/debug(Object[])", + "memberId": "Window/debug", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "debug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Object[]" + ], + "parameterNames": [ + "values" + ], + "params": [ + "Object[] values" + ], + "summary": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the window's class name.", + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the window's class name.\n\nExample:\n\n```java\nthis.debug(\"fps =\", getFps());\n// prints: [MyWindow] fps = 60\n```", + "scratchblock": null, + "paramDocs": [ + "values: one or more values to print" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/debug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/exit()", + "memberId": "Window/exit", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "exit", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Exits the application by invoking the `whenExits` method and then calling the\n`exit` method on\nthe `Applet` instance.", + "description": "Exits the application by invoking the `whenExits` method and then calling the\n`exit` method on\nthe `Applet` instance.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/exit", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Beendet das Programm" + } + } + }, + { + "id": "Window/getDeltaTime()", + "memberId": "Window/getDeltaTime", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getDeltaTime", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the seconds of game time passed since the last frame. While the game\nis paused this is 0, and at half speed half the real time.", + "description": "Gets the seconds of game time passed since the last frame. While the game\nis paused this is 0, and at half speed half the real time.", + "scratchblock": null, + "paramDocs": [], + "returns": "seconds since last frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getDeltaTime", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + } + }, + { + "id": "Window/getGameSpeed()", + "memberId": "Window/getGameSpeed", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getGameSpeed", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The game speed set with [setGameSpeed(double)](setGameSpeed).", + "description": "The game speed set with [setGameSpeed(double)](setGameSpeed).", + "scratchblock": null, + "paramDocs": [], + "returns": "1 for normal speed", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getGameSpeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/getHeight()", + "memberId": "Window/getHeight", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getHeight", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the height of the current window.", + "description": "Retrieves the height of the current window.", + "scratchblock": null, + "paramDocs": [], + "returns": "the height of the window in pixels", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Höhe des Fensters in Pixeln zurück" + } + } + }, + { + "id": "Window/getInstance()", + "memberId": "Window/getInstance", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getInstance", + "static": true, + "returnType": "Window", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the singleton instance of the Window class.", + "description": "Returns the singleton instance of the Window class.", + "scratchblock": null, + "paramDocs": [], + "returns": "the singleton instance of Window", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getInstance", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Fenster des laufenden Programms zurück" + } + } + }, + { + "id": "Window/getLibraryTitle()", + "memberId": "Window/getLibraryTitle", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getLibraryTitle", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the title of the library.", + "description": "Returns the title of the library.", + "scratchblock": null, + "paramDocs": [], + "returns": "the title of the library as a String", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getLibraryTitle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen der Bibliothek zurück" + } + } + }, + { + "id": "Window/getLibraryVersion()", + "memberId": "Window/getLibraryVersion", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getLibraryVersion", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the version of the library.", + "description": "Returns the version of the library.", + "scratchblock": null, + "paramDocs": [], + "returns": "the version of the library as a String", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getLibraryVersion", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Version der Bibliothek zurück" + } + } + }, + { + "id": "Window/getStage()", + "memberId": "Window/getStage", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getStage", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current stage from the Applet instance.", + "description": "Retrieves the current stage from the Applet instance.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current Stage object", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/getTextureSampling()", + "memberId": "Window/getTextureSampling", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getTextureSampling", + "static": true, + "returnType": "TextureSampling", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns how pictures are being smoothed.", + "description": "Returns how pictures are being smoothed.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current setting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getTextureSampling", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das eingestellte Glättungsverfahren zurück" + } + } + }, + { + "id": "Window/getWidth()", + "memberId": "Window/getWidth", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getWidth", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the width of the current window.", + "description": "Retrieves the width of the current window.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the window in pixels", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite des Fensters in Pixeln zurück" + } + } + }, + { + "id": "Window/isDebug()", + "memberId": "Window/isDebug", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "isDebug", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the application is in debug mode.", + "description": "Checks if the application is in debug mode.\n\nDebug mode can be toggled at runtime by pressing F12.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the application is in debug mode, false otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/isDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Fehlersuche eingeschaltet ist" + } + } + }, + { + "id": "Window/isPaused()", + "memberId": "Window/isPaused", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "isPaused", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Whether the game is paused.", + "description": "Whether the game is paused.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while paused", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/isPaused", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/pause()", + "memberId": "Window/pause", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "pause", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Pauses the game: `run()` is no longer called, and timers, gliding\nand animations stand still. The window keeps drawing, so the paused\npicture stays visible, and keys and clicks still reach methods like\n`whenKeyPressed`, so a key can [resume()](resume) the game.", + "description": "Pauses the game: `run()` is no longer called, and timers, gliding\nand animations stand still. The window keeps drawing, so the paused\npicture stays visible, and keys and clicks still reach methods like\n`whenKeyPressed`, so a key can [resume()](resume) the game.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/pause", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Bühne zurück, die gerade angezeigt wird" + } + } + }, + { + "id": "Window/resume()", + "memberId": "Window/resume", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "resume", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Lets a paused game go on where it stopped.", + "description": "Lets a paused game go on where it stopped.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/resume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/setDebug(boolean)", + "memberId": "Window/setDebug", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "setDebug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "debug" + ], + "params": [ + "boolean debug" + ], + "summary": "Enables or disables the debug mode for the application.", + "description": "Enables or disables the debug mode for the application.\n\nDebug mode shows sprite positions, hitboxes, and other debug information.\nIt can also be toggled at runtime by pressing F12.", + "scratchblock": null, + "paramDocs": [ + "debug: a boolean value where `true` enables debug mode and\n `false` disables\n it." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/setDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Ausgabe von debug() ein oder aus" + } + } + }, + { + "id": "Window/setGameSpeed(double)", + "memberId": "Window/setGameSpeed", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "setGameSpeed", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "speed" + ], + "params": [ + "double speed" + ], + "summary": "Makes the game run slower or faster: 1 is normal, 0.5 half as fast, 2\ntwice as fast. `run()`, timers, gliding and animations all follow,\nso the whole game looks like slow motion; the window keeps drawing\nsmoothly.", + "description": "Makes the game run slower or faster: 1 is normal, 0.5 half as fast, 2\ntwice as fast. `run()`, timers, gliding and animations all follow,\nso the whole game looks like slow motion; the window keeps drawing\nsmoothly.", + "scratchblock": null, + "paramDocs": [ + "speed: 1 for normal speed, smaller for slower, larger for faster" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/setGameSpeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/setStage(Stage)", + "memberId": "Window/setStage", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "setStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "stage" + ], + "params": [ + "Stage stage" + ], + "summary": "Sets the current stage of the application.", + "description": "Sets the current stage of the application.", + "scratchblock": null, + "paramDocs": [ + "stage: the new stage to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/setStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt die angegebene Bühne an" + } + } + }, + { + "id": "Window/step()", + "memberId": "Window/step", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "step", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "While the game is paused: runs it for exactly one frame (every\n`run()` once) and pauses again. Useful to watch closely what\nhappens, for example when two sprites touch.", + "description": "While the game is paused: runs it for exactly one frame (every\n`run()` once) and pauses again. Useful to watch closely what\nhappens, for example when two sprites touch.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/step", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/transitionToStage(Stage,int)", + "memberId": "Window/transitionToStage", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "transitionToStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage", + "int" + ], + "parameterNames": [ + "stage", + "duration" + ], + "params": [ + "Stage stage", + "int duration" + ], + "summary": "Transitions to a new stage with a specified duration.", + "description": "Transitions to a new stage with a specified duration.", + "scratchblock": null, + "paramDocs": [ + "stage: the new stage to transition to", + "duration: the duration of the transition in milliseconds" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/transitionToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Blendet über Schwarz zur angegebenen Bühne über" + } + } + }, + { + "id": "Window/useFullScreen()", + "memberId": "Window/useFullScreen", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "useFullScreen", + "static": true, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Makes the window fill the whole screen.", + "description": "Makes the window fill the whole screen.\n\nCall it before the first stage is created, because the size of the window is\nsettled the moment it opens:\n\n```java\npublic static void main(String[] args) {\n Window.useFullScreen();\n new MyStage();\n}\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/useFullScreen", + "availability": "desktop-only", + "availabilityReason": "The embedded browser output uses its enclosing page; this desktop window option only reports a limitation.", + "translations": { + "de": { + "description": "Nur in der Desktop-Version: startet im Vollbild" + } + } + }, + { + "id": "Window/useSplashLogo(String)", + "memberId": "Window/useSplashLogo", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "useSplashLogo", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Puts your own picture on the loading screen in place of the Scratch for Java\nlogo. The picture fades in while your project starts and fades out again\nonce it is ready.", + "description": "Puts your own picture on the loading screen in place of the Scratch for Java\nlogo. The picture fades in while your project starts and fades out again\nonce it is ready.\n\nIt is shrunk to fit if it is large, and never enlarged, so a picture of\nroughly 300 by 300 looks right in a window of the usual size.\n\nCall it before the first stage is created, because the loading screen is the\nfirst thing the window draws:\n\n```java\npublic static void main(String[] args) {\n Window.useSplashLogo(\"assets/logo.png\");\n new MyStage();\n}\n```", + "scratchblock": null, + "paramDocs": [ + "path: a path to an image file or the name of a built-in sprite, or\n `null` for the Scratch for Java logo" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/useSplashLogo", + "availability": "desktop-only", + "availabilityReason": "The browser has no desktop splash window. This option only reports a limitation.", + "translations": { + "de": { + "description": "Nur in der Desktop-Version: zeigt beim Start ein Logo" + } + } + }, + { + "id": "Window/useTextureSampling(TextureSampling)", + "memberId": "Window/useTextureSampling", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "useTextureSampling", + "static": true, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.TextureSampling" + ], + "parameterNames": [ + "sampling" + ], + "params": [ + "TextureSampling sampling" + ], + "summary": "Chooses how pictures are smoothed when they are drawn larger or smaller than\nthey really are. Pixel art usually wants [TextureSampling.POINT](../TextureSampling/POINT).", + "description": "Chooses how pictures are smoothed when they are drawn larger or smaller than\nthey really are. Pixel art usually wants [TextureSampling.POINT](../TextureSampling/POINT).\n\nCall it before the first stage is created.\n\n```java\nWindow.useTextureSampling(TextureSampling.POINT);\nnew MyStage();\n```", + "scratchblock": null, + "paramDocs": [ + "sampling: how to smooth pictures" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/useTextureSampling", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie Bilder beim Vergrößern und Verkleinern geglättet werden. TextureSampling.POINT hält Pixelgrafik scharf, LINEAR (Standard) glättet. BILINEAR und TRILINEAR wirken im Browser wie LINEAR." + } + } + }, + { + "id": "Window/whenExits()", + "memberId": "Window/whenExits", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "whenExits", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the window exits. Override this method to define\ncustom behavior\nwhen the window is closed.", + "description": "This method is called when the window exits. Override this method to define\ncustom behavior\nwhen the window is closed.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/whenExits", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Beenden des Programms aufgerufen" + } + } + }, + { + "id": "extensions/camera/Camera/changeX(double)", + "memberId": "extensions/camera/Camera/changeX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "changeX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Changes x by a certain amount", + "description": "Changes x by a certain amount", + "scratchblock": null, + "paramDocs": [ + "x: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/changeX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/changeY(double)", + "memberId": "extensions/camera/Camera/changeY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "changeY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Changes y by a certain amount", + "description": "Changes y by a certain amount", + "scratchblock": null, + "paramDocs": [ + "y: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/changeY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/changeZoom(double)", + "memberId": "extensions/camera/Camera/changeZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "changeZoom", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "dz" + ], + "params": [ + "double dz" + ], + "summary": "Changes the zoom level by a certain amount", + "description": "Changes the zoom level by a certain amount", + "scratchblock": null, + "paramDocs": [ + "dz: the amount to change the zoom level by" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/changeZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/constructor()", + "memberId": "extensions/camera/Camera/constructor", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "constructor", + "static": false, + "returnType": "Camera", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Camera with default values. The default position is (0, 0) and the default\nzoom level is 100.", + "description": "Constructs a new Camera with default values. The default position is (0, 0) and the default\nzoom level is 100.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getPosition()", + "memberId": "extensions/camera/Camera/getPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the position of the sprite", + "description": "Returns the position of the sprite", + "scratchblock": null, + "paramDocs": [], + "returns": "a vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getX()", + "memberId": "extensions/camera/Camera/getX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x coordinate of the sprite", + "description": "Returns the x coordinate of the sprite", + "scratchblock": null, + "paramDocs": [], + "returns": "a x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getY()", + "memberId": "extensions/camera/Camera/getY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y coordinate of the sprite", + "description": "Returns the y coordinate of the sprite", + "scratchblock": null, + "paramDocs": [], + "returns": "a y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getZoom()", + "memberId": "extensions/camera/Camera/getZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getZoom", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the zoom level", + "description": "Returns the zoom level", + "scratchblock": null, + "paramDocs": [], + "returns": "the zoom level", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/resetZoom()", + "memberId": "extensions/camera/Camera/resetZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "resetZoom", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Resets the zoom level to 100", + "description": "Resets the zoom level to 100", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/resetZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setPosition(double,double)", + "memberId": "extensions/camera/Camera/setPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the position of the sprite", + "description": "Sets the position of the sprite", + "scratchblock": null, + "paramDocs": [ + "x: a x coordinate", + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setPosition(Vector2)", + "memberId": "extensions/camera/Camera/setPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the sprite based on the coordinates of a given vector.", + "description": "Sets the position of the sprite based on the coordinates of a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setX(double)", + "memberId": "extensions/camera/Camera/setX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Sets the x coordinate", + "description": "Sets the x coordinate", + "scratchblock": null, + "paramDocs": [ + "x: a x coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setY(double)", + "memberId": "extensions/camera/Camera/setY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Sets the y coordinate", + "description": "Sets the y coordinate", + "scratchblock": null, + "paramDocs": [ + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setZoom(double)", + "memberId": "extensions/camera/Camera/setZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setZoom", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "zoom" + ], + "params": [ + "double zoom" + ], + "summary": "Sets the zoom", + "description": "Sets the zoom", + "scratchblock": null, + "paramDocs": [ + "zoom: the zoom level" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setZoomLimit(double,double)", + "memberId": "extensions/camera/Camera/setZoomLimit", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setZoomLimit", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "low", + "high" + ], + "params": [ + "double low", + "double high" + ], + "summary": "Sets the zoom limits", + "description": "Sets the zoom limits", + "scratchblock": null, + "paramDocs": [ + "low: the lower limit", + "high: the upper limit" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setZoomLimit", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toGlobalPosition(Vector2)", + "memberId": "extensions/camera/Camera/toGlobalPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toGlobalPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Converts local camera coordinates to screen coordinates", + "description": "Converts local camera coordinates to screen coordinates", + "scratchblock": null, + "paramDocs": [ + "v: local camera coordinates" + ], + "returns": "screen coordinates", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toGlobalPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toGlobalX(double)", + "memberId": "extensions/camera/Camera/toGlobalX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toGlobalX", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Converts local camera x coordinate to screen x coordinate", + "description": "Converts local camera x coordinate to screen x coordinate", + "scratchblock": null, + "paramDocs": [ + "x: local camera x coordinate" + ], + "returns": "screen x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toGlobalX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toGlobalY(double)", + "memberId": "extensions/camera/Camera/toGlobalY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toGlobalY", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Converts local camera y coordinate to screen y coordinate", + "description": "Converts local camera y coordinate to screen y coordinate", + "scratchblock": null, + "paramDocs": [ + "y: local camera y coordinate" + ], + "returns": "screen y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toGlobalY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toLocalPosition(Vector2)", + "memberId": "extensions/camera/Camera/toLocalPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toLocalPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Converts screen coordinates to local camera coordinates", + "description": "Converts screen coordinates to local camera coordinates", + "scratchblock": null, + "paramDocs": [ + "v: screen coordinates" + ], + "returns": "local coordinates", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toLocalPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toLocalX(double)", + "memberId": "extensions/camera/Camera/toLocalX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toLocalX", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Converts screen x coordinate to local camera x coordinate", + "description": "Converts screen x coordinate to local camera x coordinate", + "scratchblock": null, + "paramDocs": [ + "x: screen x coordinate" + ], + "returns": "local x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toLocalX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toLocalY(double)", + "memberId": "extensions/camera/Camera/toLocalY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toLocalY", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Converts screen y coordinate to local camera y coordinate", + "description": "Converts screen y coordinate to local camera y coordinate", + "scratchblock": null, + "paramDocs": [ + "y: screen y coordinate" + ], + "returns": "local y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toLocalY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/fs/File/constructor()", + "memberId": "extensions/fs/File/constructor", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "constructor", + "static": false, + "returnType": "File", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The File class provides methods to save and load objects to and from files in\nJSON or XML format.\nIt supports saving and loading objects with automatic detection of file type\nbased on the method\nused. The class uses Jackson ObjectMapper for JSON and XmlMapper for XML\nserialization and\ndeserialization.", + "description": "The File class provides methods to save and load objects to and from files in\nJSON or XML format.\nIt supports saving and loading objects with automatic detection of file type\nbased on the method\nused. The class uses Jackson ObjectMapper for JSON and XmlMapper for XML\nserialization and\ndeserialization.\n\nUsage examples:\n\n```java\n// Save an object as JSON\nFile.save(\"/path/to/file.json\", myObject);\n\n// Save an object as XML\nFile.saveXML(\"/path/to/file.xml\", myObject);\n\n// Load an object from JSON\nMyClass obj = File.load(\"/path/to/file.json\", MyClass.class);\n\n// Load an object from XML\nMyClass obj = File.loadXML(\"/path/to/file.xml\", MyClass.class);\n```\n\nNote: The file paths can be absolute or relative. If a relative path is\nprovided, the class\nwill attempt to load the file from the classpath.\n\nSupported file types:\n\n

", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/load(String,Class)", + "memberId": "extensions/fs/File/load", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "load", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from a file at the given path.", + "description": "Loads an object of the specified class from a file at the given path.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the file from which the object is to be loaded", + "cls: the class of the object to be loaded" + ], + "returns": "the loaded object of the specified class", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/load", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/loadOrCreate(String,Class)", + "memberId": "extensions/fs/File/loadOrCreate", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "loadOrCreate", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from a file at the given path, or\ncreates a new one if the file does not exist.", + "description": "Loads an object of the specified class from a file at the given path, or\ncreates a new one if the file does not exist.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the file from which the object is to be loaded", + "cls: the class of the object to be loaded" + ], + "returns": "the loaded object of the specified class, or a new instance if the\n file does not exist", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/loadOrCreate", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/loadXML(String,Class)", + "memberId": "extensions/fs/File/loadXML", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "loadXML", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from an XML file at the given path.", + "description": "Loads an object of the specified class from an XML file at the given path.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the XML file", + "cls: the class of the object to be loaded" + ], + "returns": "the object loaded from the XML file", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/loadXML", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/loadXMLOrCreate(String,Class)", + "memberId": "extensions/fs/File/loadXMLOrCreate", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "loadXMLOrCreate", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from an XML file at the given path,\nor creates a new one if the file does not exist.", + "description": "Loads an object of the specified class from an XML file at the given path,\nor creates a new one if the file does not exist.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the XML file", + "cls: the class of the object to be loaded" + ], + "returns": "the object loaded from the XML file, or a new instance if the file\n does not exist", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/loadXMLOrCreate", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/save(String,T)", + "memberId": "extensions/fs/File/save", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "save", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "T" + ], + "parameterNames": [ + "path", + "obj" + ], + "params": [ + "String path", + "T obj" + ], + "summary": "Saves the given object to the specified path in the default file type (JSON).", + "description": "Saves the given object to the specified path in the default file type (JSON).", + "scratchblock": null, + "paramDocs": [ + "path: the path where the object should be saved", + "obj: the object to be saved" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/save", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/saveXML(String,T)", + "memberId": "extensions/fs/File/saveXML", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "saveXML", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "T" + ], + "parameterNames": [ + "path", + "obj" + ], + "params": [ + "String path", + "T obj" + ], + "summary": "Saves the given object as an XML file at the specified path.", + "description": "Saves the given object as an XML file at the specified path.", + "scratchblock": null, + "paramDocs": [ + "path: the path where the XML file will be saved", + "obj: the object to be saved as XML" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/saveXML", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/background()", + "memberId": "extensions/pixels/Pixels/background", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "background", + "static": false, + "returnType": "int[]", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pixels of the background layer, where the pen and stamps draw.", + "description": "Returns the pixels of the background layer, where the pen and stamps draw.", + "scratchblock": null, + "paramDocs": [], + "returns": "one colour per pixel", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/background", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/constructor(PGraphics,PGraphics,PGraphics)", + "memberId": "extensions/pixels/Pixels/constructor", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "constructor", + "static": false, + "returnType": "Pixels", + "parameterTypes": [ + "processing.core.PGraphics", + "processing.core.PGraphics", + "processing.core.PGraphics" + ], + "parameterNames": [ + "mainBuffer", + "backgroundBuffer", + "foregroundBuffer" + ], + "params": [ + "PGraphics mainBuffer", + "PGraphics backgroundBuffer", + "PGraphics foregroundBuffer" + ], + "summary": "Creates the pixel access for a stage.", + "description": "Creates the pixel access for a stage.", + "scratchblock": null, + "paramDocs": [ + "mainBuffer: where the sprites are drawn", + "backgroundBuffer: where the background is drawn", + "foregroundBuffer: where the foreground is drawn" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/foreground()", + "memberId": "extensions/pixels/Pixels/foreground", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "foreground", + "static": false, + "returnType": "int[]", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pixels of the foreground layer.", + "description": "Returns the pixels of the foreground layer.", + "scratchblock": null, + "paramDocs": [], + "returns": "one colour per pixel", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/foreground", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/main()", + "memberId": "extensions/pixels/Pixels/main", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "main", + "static": false, + "returnType": "int[]", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pixels of the layer the sprites are drawn on.", + "description": "Returns the pixels of the layer the sprites are drawn on.", + "scratchblock": null, + "paramDocs": [], + "returns": "one colour per pixel", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/main", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FFmpegRecorder/constructor(String)", + "memberId": "extensions/recorder/FFmpegRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "className": "FFmpegRecorder", + "methodName": "constructor", + "static": false, + "returnType": "FFmpegRecorder", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Constructs an FFmpegRecorder object with the specified path.", + "description": "Constructs an FFmpegRecorder object with the specified path.", + "scratchblock": null, + "paramDocs": [ + "path: the path where the recording will be saved\n \n\nThis constructor initializes the FFmpegRecorder by creating a temporary directory and\n setting up a pattern for temporary PNG files. If the temporary directory cannot be created,\n an error message is printed to the console." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FFmpegRecorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FFmpegRecorder/saveFrame()", + "memberId": "extensions/recorder/FFmpegRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "className": "FFmpegRecorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame using the specified pattern.", + "description": "Saves the current frame using the specified pattern.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FFmpegRecorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FFmpegRecorder/stop()", + "memberId": "extensions/recorder/FFmpegRecorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "className": "FFmpegRecorder", + "methodName": "stop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the recording process and converts the recorded frames into a video file using FFmpeg.", + "description": "Stops the recording process and converts the recorded frames into a video file using FFmpeg.\n\nThis method overrides the `stop` method from the superclass. It first calls the superclass's\n`stop` method, then checks if the temporary directory (`tmpDir`) is not null. If it is not\nnull, it constructs a command to run FFmpeg, which converts the recorded frames (stored as PNG\nfiles) into a video file with the specified frame rate and codec.\n\nThe FFmpeg command is executed, and a message is printed to the console indicating that the\nvideo conversion is in progress. If there is an error during the execution of the command, the\nerror message is printed to the console.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FFmpegRecorder/stop", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FrameRecorder/constructor(String)", + "memberId": "extensions/recorder/FrameRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "className": "FrameRecorder", + "methodName": "constructor", + "static": false, + "returnType": "FrameRecorder", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "outputFolder" + ], + "params": [ + "String outputFolder" + ], + "summary": "Constructs a new FrameRecorder with the specified output folder.", + "description": "Constructs a new FrameRecorder with the specified output folder.", + "scratchblock": null, + "paramDocs": [ + "outputFolder: the folder where the recorded frames will be saved" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FrameRecorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FrameRecorder/saveFrame()", + "memberId": "extensions/recorder/FrameRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "className": "FrameRecorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame of the applet to the specified output folder. The frame is saved as a\nPNG file with a filename pattern \"#######.png\". The exact filename will be generated based on\nthe current frame number.", + "description": "Saves the current frame of the applet to the specified output folder. The frame is saved as a\nPNG file with a filename pattern \"#######.png\". The exact filename will be generated based on\nthe current frame number.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FrameRecorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FrameRecorder/snapshot(String)", + "memberId": "extensions/recorder/FrameRecorder/snapshot", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "className": "FrameRecorder", + "methodName": "snapshot", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "filename" + ], + "params": [ + "String filename" + ], + "summary": "Takes a snapshot of the current frame and saves it to the specified filename.", + "description": "Takes a snapshot of the current frame and saves it to the specified filename.", + "scratchblock": null, + "paramDocs": [ + "filename: the name of the file to save the snapshot to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FrameRecorder/snapshot", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/constructor(String)", + "memberId": "extensions/recorder/GifRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "constructor", + "static": false, + "returnType": "GifRecorder", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "filePath" + ], + "params": [ + "String filePath" + ], + "summary": "Constructs a new GifRecorder object.", + "description": "Constructs a new GifRecorder object.", + "scratchblock": null, + "paramDocs": [ + "filePath: the path where the GIF file will be saved" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/saveFrame()", + "memberId": "extensions/recorder/GifRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame of the applet as a GIF image.", + "description": "Saves the current frame of the applet as a GIF image.\n\nThis method captures the current frame from the applet, sets the frame rate, and adds the\nframe to the GIF encoder. If the applet's pixels are null, the frame is not saved.\n\nNote: This method catches and ignores any NullPointerException that may occur.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/snapshot()", + "memberId": "extensions/recorder/GifRecorder/snapshot", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "snapshot", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Captures a snapshot and saves it as a GIF. This method starts the GIF encoder, saves the\ncurrent frame, and then finishes the encoding process.", + "description": "Captures a snapshot and saves it as a GIF. This method starts the GIF encoder, saves the\ncurrent frame, and then finishes the encoding process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/snapshot", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/start()", + "memberId": "extensions/recorder/GifRecorder/start", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "start", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Starts the GIF recording process.", + "description": "Starts the GIF recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/start", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/stop()", + "memberId": "extensions/recorder/GifRecorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "stop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the GIF recording process and finalizes the GIF file.", + "description": "Stops the GIF recording process and finalizes the GIF file.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/stop", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/constructor(String,String)", + "memberId": "extensions/recorder/Recorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "constructor", + "static": false, + "returnType": "Recorder", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "path", + "ext" + ], + "params": [ + "String path", + "String ext" + ], + "summary": "Constructs a new Recorder object with the specified file path and extension. If the provided\npath does not end with the specified extension, the extension is appended to the path.", + "description": "Constructs a new Recorder object with the specified file path and extension. If the provided\npath does not end with the specified extension, the extension is appended to the path.", + "scratchblock": null, + "paramDocs": [ + "path: the file path where the recording will be saved", + "ext: the file extension to be used for the recording" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/post()", + "memberId": "extensions/recorder/Recorder/post", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "post", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Called after each frame is drawn. This method is registered with the Applet class to ensure\nthat frames are saved at the appropriate time during the recording process.", + "description": "Called after each frame is drawn. This method is registered with the Applet class to ensure\nthat frames are saved at the appropriate time during the recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/post", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/saveFrame()", + "memberId": "extensions/recorder/Recorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame. This method should be implemented by subclasses to define the specific\nbehavior for saving a frame.", + "description": "Saves the current frame. This method should be implemented by subclasses to define the specific\nbehavior for saving a frame.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/start()", + "memberId": "extensions/recorder/Recorder/start", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "start", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Starts the recording process.", + "description": "Starts the recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/start", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/stop()", + "memberId": "extensions/recorder/Recorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "stop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the recording process.", + "description": "Stops the recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/stop", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/constructor(String,String,String)", + "memberId": "extensions/shader/Shader/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "constructor", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "fragmentShaderPath", + "vertexShaderPath" + ], + "params": [ + "String name", + "String fragmentShaderPath", + "String vertexShaderPath" + ], + "summary": "Constructor", + "description": "Constructor", + "scratchblock": null, + "paramDocs": [ + "name: unique name", + "fragmentShaderPath: path to the fragment shader file", + "vertexShaderPath: path to the vertex shader file, or null for Processing's default one" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/constructor(Shader)", + "memberId": "extensions/shader/Shader/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "constructor", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "org.openpatch.scratch.extensions.shader.Shader" + ], + "parameterNames": [ + "shader" + ], + "params": [ + "Shader shader" + ], + "summary": "Copy constructor", + "description": "Copy constructor", + "scratchblock": null, + "paramDocs": [ + "shader: shader" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/getName()", + "memberId": "extensions/shader/Shader/getName", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "getName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the name", + "description": "Returns the name", + "scratchblock": null, + "paramDocs": [], + "returns": "the name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/getName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/getPShader()", + "memberId": "extensions/shader/Shader/getPShader", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "getPShader", + "static": false, + "returnType": "PShader", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shader", + "description": "Returns the shader", + "scratchblock": null, + "paramDocs": [], + "returns": "the shader", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/getPShader", + "availability": "desktop-only", + "availabilityReason": "Processing's PShader object belongs to the desktop renderer. The browser uses WebGL filters.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "name", + "x" + ], + "params": [ + "String name", + "int x" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the uniform in the shader file", + "x: the value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,boolean)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "boolean" + ], + "parameterNames": [ + "name", + "x" + ], + "params": [ + "String name", + "boolean x" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,double)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "double" + ], + "parameterNames": [ + "name", + "x" + ], + "params": [ + "String name", + "double x" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,int,int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int", + "int" + ], + "parameterNames": [ + "name", + "x", + "y" + ], + "params": [ + "String name", + "int x", + "int y" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: ", + "y: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,boolean,boolean)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "boolean", + "boolean" + ], + "parameterNames": [ + "name", + "x", + "y" + ], + "params": [ + "String name", + "boolean x", + "boolean y" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: ", + "y: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,double,double)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "double", + "double" + ], + "parameterNames": [ + "name", + "x", + "y" + ], + "params": [ + "String name", + "double x", + "double y" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: ", + "y: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,Vector2)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "name", + "vec" + ], + "params": [ + "String name", + "Vector2 vec" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "vec: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,int[],int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int[]", + "int" + ], + "parameterNames": [ + "name", + "values", + "ncoords" + ], + "params": [ + "String name", + "int[] values", + "int ncoords" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "values: ", + "ncoords: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,double[],int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "double[]", + "int" + ], + "parameterNames": [ + "name", + "values", + "ncoords" + ], + "params": [ + "String name", + "double[] values", + "int ncoords" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "values: ", + "ncoords: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,Color)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "name", + "c" + ], + "params": [ + "String name", + "Color c" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "c: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/setName(String)", + "memberId": "extensions/shader/Shader/setName", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "setName", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Sets the name", + "description": "Sets the name", + "scratchblock": null, + "paramDocs": [ + "name: unique name" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/setName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/add(String,String,String)", + "memberId": "extensions/shader/Shaders/add", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "add", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "fragmentShaderPath", + "vertexShaderPath" + ], + "params": [ + "String name", + "String fragmentShaderPath", + "String vertexShaderPath" + ], + "summary": "Adds a shader. If a shader with the given name already exists, that one is\nreturned instead.", + "description": "Adds a shader. If a shader with the given name already exists, that one is\nreturned instead.\n\nThe first shader added is drawn with right away; the ones after it wait\nuntil [switchTo(String)](switchTo) or [next()](next) picks them.\n\nThe vertex shader is usually `null`, which uses Processing's default\none. In the browser any other vertex shader is ignored.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "fragmentShaderPath: the path to the fragment shader", + "vertexShaderPath: the path to the vertex shader, may be null" + ], + "returns": "the shader", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/constructor(String)", + "memberId": "extensions/shader/Shaders/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "constructor", + "static": false, + "returnType": "Shaders", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "owner" + ], + "params": [ + "String owner" + ], + "summary": "Creates an empty set of shaders.", + "description": "Creates an empty set of shaders.", + "scratchblock": null, + "paramDocs": [ + "owner: what the shaders belong to, used in error messages: \"sprite\" or\n \"stage\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/constructor(Shaders)", + "memberId": "extensions/shader/Shaders/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "constructor", + "static": false, + "returnType": "Shaders", + "parameterTypes": [ + "org.openpatch.scratch.extensions.shader.Shaders" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Shaders s" + ], + "summary": "Copies a set of shaders.", + "description": "Copies a set of shaders.", + "scratchblock": null, + "paramDocs": [ + "s: the shaders to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/get(String)", + "memberId": "extensions/shader/Shaders/get", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "get", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns a shader by name.", + "description": "Returns a shader by name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the shader" + ], + "returns": "the shader, or null if there is none with that name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/get", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/getCurrent()", + "memberId": "extensions/shader/Shaders/getCurrent", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "getCurrent", + "static": false, + "returnType": "Shader", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shader currently drawn with.", + "description": "Returns the shader currently drawn with.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current shader, or null if there is none", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/getCurrent", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/getCurrentIndex()", + "memberId": "extensions/shader/Shaders/getCurrentIndex", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "getCurrentIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the position of the current shader.", + "description": "Returns the position of the current shader.", + "scratchblock": null, + "paramDocs": [], + "returns": "the position, or -1 if no shader is in use", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/getCurrentIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/getCurrentName()", + "memberId": "extensions/shader/Shaders/getCurrentName", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "getCurrentName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the name of the current shader.", + "description": "Returns the name of the current shader.", + "scratchblock": null, + "paramDocs": [], + "returns": "the name, or null if no shader is in use", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/getCurrentName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/next()", + "memberId": "extensions/shader/Shaders/next", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "next", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switches to the next shader, in the order they were added. After the last\none comes the first one again.", + "description": "Switches to the next shader, in the order they were added. After the last\none comes the first one again.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/next", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/reset()", + "memberId": "extensions/shader/Shaders/reset", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "reset", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops drawing with a shader, so the sprite or stage looks as it does\nwithout one. The shaders are kept: [switchTo(String)](switchTo) or\n[next()](next) brings one back.", + "description": "Stops drawing with a shader, so the sprite or stage looks as it does\nwithout one. The shaders are kept: [switchTo(String)](switchTo) or\n[next()](next) brings one back.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/reset", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/switchTo(String)", + "memberId": "extensions/shader/Shaders/switchTo", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "switchTo", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switches to the shader with the given name, or with the given position in\nthe order the shaders were added. A name that is not there leaves the\ncurrent shader and prints which ones there are.", + "description": "Switches to the shader with the given name, or with the given position in\nthe order the shaders were added. A name that is not there leaves the\ncurrent shader and prints which ones there are.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the shader" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/switchTo", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/switchTo(double)", + "memberId": "extensions/shader/Shaders/switchTo", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "switchTo", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "index" + ], + "params": [ + "double index" + ], + "summary": "Switches to the shader at the given position.", + "description": "Switches to the shader at the given position.", + "scratchblock": null, + "paramDocs": [ + "index: the position of the shader" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/switchTo", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/by(Comparator)", + "memberId": "extensions/sorting/Sorting/by", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "by", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.util.Comparator" + ], + "parameterNames": [ + "comparator" + ], + "params": [ + "Comparator comparator" + ], + "summary": "Draws sprites in an order of your own.", + "description": "Draws sprites in an order of your own.", + "scratchblock": null, + "paramDocs": [ + "comparator: decides which of two sprites is drawn first" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/by", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/byY()", + "memberId": "extensions/sorting/Sorting/byY", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "byY", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Draws sprites that are further down the stage in front of sprites that are\nfurther up, which is what a view from above usually wants.", + "description": "Draws sprites that are further down the stage in front of sprites that are\nfurther up, which is what a view from above usually wants.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/byY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/constructor()", + "memberId": "extensions/sorting/Sorting/constructor", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "constructor", + "static": false, + "returnType": "Sorting", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Decides the order in which the sprites of a stage are drawn.", + "description": "Decides the order in which the sprites of a stage are drawn.\n\nReached through `stage.getSorting()`:\n\n```java\nthis.getSorting().byY();\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/getComparator()", + "memberId": "extensions/sorting/Sorting/getComparator", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "getComparator", + "static": false, + "returnType": "Comparator", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the order currently used.", + "description": "Returns the order currently used.", + "scratchblock": null, + "paramDocs": [], + "returns": "the comparator, or null if the sprites are not sorted", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/getComparator", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/isOn()", + "memberId": "extensions/sorting/Sorting/isOn", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "isOn", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether the sprites are being sorted.", + "description": "Checks whether the sprites are being sorted.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if an order is set", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/isOn", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/off()", + "memberId": "extensions/sorting/Sorting/off", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "off", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Draws sprites in the order they were added, which is the default.", + "description": "Draws sprites in the order they were added, which is the default.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/off", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/constructor()", + "memberId": "extensions/tiled/MapObject/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "constructor", + "static": false, + "returnType": "MapObject", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Represents a map object with various properties such as dimensions, position,\nvisibility, and\ntype. It also provides methods to retrieve property values in different\nformats and to get a\nShape representation of the map object.", + "description": "Represents a map object with various properties such as dimensions, position,\nvisibility, and\ntype. It also provides methods to retrieve property values in different\nformats and to get a\nShape representation of the map object.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getProperty(String)", + "memberId": "extensions/tiled/MapObject/getProperty", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getProperty", + "static": false, + "returnType": "String", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of a property with the specified name from the properties\nlist.", + "description": "Retrieves the value of a property with the specified name from the properties\nlist.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the value of the property with the specified name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getProperty", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getPropertyBoolean(String)", + "memberId": "extensions/tiled/MapObject/getPropertyBoolean", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getPropertyBoolean", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of the specified property as a boolean.", + "description": "Retrieves the value of the specified property as a boolean.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the boolean value of the property, or false if the property is not\n found or cannot be\n parsed as a boolean", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getPropertyBoolean", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getPropertyFloat(String)", + "memberId": "extensions/tiled/MapObject/getPropertyFloat", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getPropertyFloat", + "static": false, + "returnType": "float", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of a specified property as a float.", + "description": "Retrieves the value of a specified property as a float.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the float value of the specified property", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getPropertyFloat", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getPropertyInt(String)", + "memberId": "extensions/tiled/MapObject/getPropertyInt", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getPropertyInt", + "static": false, + "returnType": "int", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of a property with the specified name and converts it to\nan integer.", + "description": "Retrieves the value of a property with the specified name and converts it to\nan integer.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the integer value of the property", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getPropertyInt", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getShape()", + "memberId": "extensions/tiled/MapObject/getShape", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getShape", + "static": false, + "returnType": "Shape", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a Shape object representing the current map object. The type of Shape\nreturned depends\non the properties of the map object: - If the object is a point, a 1x1\nrectangle is returned. -\nIf the object is an ellipse, an Ellipse2D object with the specified width and\nheight is\nreturned. - If the object is a polygon, a Polygon object with the specified\npoints is returned.\n- If none of the above conditions are met, a rectangle with the specified\nwidth and height is\nreturned.", + "description": "Returns a Shape object representing the current map object. The type of Shape\nreturned depends\non the properties of the map object: - If the object is a point, a 1x1\nrectangle is returned. -\nIf the object is an ellipse, an Ellipse2D object with the specified width and\nheight is\nreturned. - If the object is a polygon, a Polygon object with the specified\npoints is returned.\n- If none of the above conditions are met, a rectangle with the specified\nwidth and height is\nreturned.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Shape object representing the current map object.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getShape", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/setClassName(String)", + "memberId": "extensions/tiled/MapObject/setClassName", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "setClassName", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "className" + ], + "params": [ + "String className" + ], + "summary": "Tiled 1.9 renamed an object's type to class; both end up in [type](type)\n(an explicit type wins).", + "description": "Tiled 1.9 renamed an object's type to class; both end up in [type](type)\n(an explicit type wins).", + "scratchblock": null, + "paramDocs": [ + "className: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/setClassName", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/Property/constructor()", + "memberId": "extensions/tiled/Property/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.Property", + "className": "Property", + "methodName": "constructor", + "static": false, + "returnType": "Property", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The Property class represents a property of a Tiled object. It includes fields for the property\nname, type, and value.", + "description": "The Property class represents a property of a Tiled object. It includes fields for the property\nname, type, and value.\n\nExample usage:\n\n```java\nProperty p = new Property();\np.name = \"myProperty\";\np.type = \"number\";\np.value = \"42\";\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/Property/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/Property/setText(String)", + "memberId": "extensions/tiled/Property/setText", + "owner": "org.openpatch.scratch.extensions.tiled.Property", + "className": "Property", + "methodName": "setText", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Multi-line strings are written as the element's text instead of a value\nattribute.", + "description": "Multi-line strings are written as the element's text instead of a value\nattribute.", + "scratchblock": null, + "paramDocs": [ + "text: the element text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/Property/setText", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/constructor(String,Stage)", + "memberId": "extensions/tiled/TiledMap/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "constructor", + "static": false, + "returnType": "TiledMap", + "parameterTypes": [ + "java.lang.String", + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "path", + "stage" + ], + "params": [ + "String path", + "Stage stage" + ], + "summary": "Constructs a new TiledMap object.", + "description": "Constructs a new TiledMap object.", + "scratchblock": null, + "paramDocs": [ + "path: the file path to the Tiled map XML file", + "stage: the stage to which this Tiled map belongs" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/getObjectsFromLayer(String)", + "memberId": "extensions/tiled/TiledMap/getObjectsFromLayer", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "getObjectsFromLayer", + "static": false, + "returnType": "MapObject[]", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the objects from a specified layer in the tiled map.", + "description": "Retrieves the objects from a specified layer in the tiled map.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the layer from which to retrieve objects" + ], + "returns": "an array of MapObject from the specified layer, or null if the layer\n does not exist", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/getObjectsFromLayer", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/stampLayerToBackground(String)", + "memberId": "extensions/tiled/TiledMap/stampLayerToBackground", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "stampLayerToBackground", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stamps a specified layer onto the background.", + "description": "Stamps a specified layer onto the background.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the layer to be stamped onto the background" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/stampLayerToBackground", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/stampLayerToForeground(String)", + "memberId": "extensions/tiled/TiledMap/stampLayerToForeground", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "stampLayerToForeground", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stamps the specified layer to the foreground.", + "description": "Stamps the specified layer to the foreground.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the layer to be stamped to the foreground" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/stampLayerToForeground", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/toString()", + "memberId": "extensions/tiled/TiledMap/toString", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "", + "description": "", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/toString", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TilesetImage/constructor()", + "memberId": "extensions/tiled/TilesetImage/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.TilesetImage", + "className": "TilesetImage", + "methodName": "constructor", + "static": false, + "returnType": "TilesetImage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "", + "description": "", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TilesetImage/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + } + ] +} diff --git a/docs/public/catalogs/assets.json b/docs/public/catalogs/assets.json new file mode 100644 index 00000000..067f4c30 --- /dev/null +++ b/docs/public/catalogs/assets.json @@ -0,0 +1,12138 @@ +{ + "schemaVersion": 1, + "libraryVersion": "5.7.0", + "browserVersion": "5.7.0-browser.2", + "license": "CC0", + "images": [ + { + "id": "platformer/alienBeige_climb1", + "name": "alienBeige_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_climb1" + }, + { + "id": "platformer/alienBeige_climb2", + "name": "alienBeige_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_climb2" + }, + { + "id": "platformer/alienBeige_duck", + "name": "alienBeige_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_duck" + }, + { + "id": "platformer/alienBeige_front", + "name": "alienBeige_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_front" + }, + { + "id": "platformer/alienBeige_hit", + "name": "alienBeige_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_hit" + }, + { + "id": "platformer/alienBeige_jump", + "name": "alienBeige_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_jump" + }, + { + "id": "platformer/alienBeige_stand", + "name": "alienBeige_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_stand" + }, + { + "id": "platformer/alienBeige_swim1", + "name": "alienBeige_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_swim1" + }, + { + "id": "platformer/alienBeige_swim2", + "name": "alienBeige_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_swim2" + }, + { + "id": "platformer/alienBeige_walk1", + "name": "alienBeige_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_walk1" + }, + { + "id": "platformer/alienBeige_walk2", + "name": "alienBeige_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_walk2" + }, + { + "id": "platformer/alienBlue_climb1", + "name": "alienBlue_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_climb1" + }, + { + "id": "platformer/alienBlue_climb2", + "name": "alienBlue_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_climb2" + }, + { + "id": "platformer/alienBlue_duck", + "name": "alienBlue_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_duck" + }, + { + "id": "platformer/alienBlue_front", + "name": "alienBlue_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_front" + }, + { + "id": "platformer/alienBlue_hit", + "name": "alienBlue_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_hit" + }, + { + "id": "platformer/alienBlue_jump", + "name": "alienBlue_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_jump" + }, + { + "id": "platformer/alienBlue_stand", + "name": "alienBlue_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_stand" + }, + { + "id": "platformer/alienBlue_swim1", + "name": "alienBlue_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_swim1" + }, + { + "id": "platformer/alienBlue_swim2", + "name": "alienBlue_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_swim2" + }, + { + "id": "platformer/alienBlue_walk1", + "name": "alienBlue_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_walk1" + }, + { + "id": "platformer/alienBlue_walk2", + "name": "alienBlue_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_walk2" + }, + { + "id": "platformer/alienGreen_climb1", + "name": "alienGreen_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_climb1" + }, + { + "id": "platformer/alienGreen_climb2", + "name": "alienGreen_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_climb2" + }, + { + "id": "platformer/alienGreen_duck", + "name": "alienGreen_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_duck" + }, + { + "id": "platformer/alienGreen_front", + "name": "alienGreen_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_front" + }, + { + "id": "platformer/alienGreen_hit", + "name": "alienGreen_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_hit" + }, + { + "id": "platformer/alienGreen_jump", + "name": "alienGreen_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_jump" + }, + { + "id": "platformer/alienGreen_stand", + "name": "alienGreen_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_stand" + }, + { + "id": "platformer/alienGreen_swim1", + "name": "alienGreen_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_swim1" + }, + { + "id": "platformer/alienGreen_swim2", + "name": "alienGreen_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_swim2" + }, + { + "id": "platformer/alienGreen_walk1", + "name": "alienGreen_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_walk1" + }, + { + "id": "platformer/alienGreen_walk2", + "name": "alienGreen_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_walk2" + }, + { + "id": "platformer/alienPink_climb1", + "name": "alienPink_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_climb1" + }, + { + "id": "platformer/alienPink_climb2", + "name": "alienPink_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_climb2" + }, + { + "id": "platformer/alienPink_duck", + "name": "alienPink_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_duck" + }, + { + "id": "platformer/alienPink_front", + "name": "alienPink_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_front" + }, + { + "id": "platformer/alienPink_hit", + "name": "alienPink_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_hit" + }, + { + "id": "platformer/alienPink_jump", + "name": "alienPink_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_jump" + }, + { + "id": "platformer/alienPink_stand", + "name": "alienPink_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_stand" + }, + { + "id": "platformer/alienPink_swim1", + "name": "alienPink_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_swim1" + }, + { + "id": "platformer/alienPink_swim2", + "name": "alienPink_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_swim2" + }, + { + "id": "platformer/alienPink_walk1", + "name": "alienPink_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_walk1" + }, + { + "id": "platformer/alienPink_walk2", + "name": "alienPink_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_walk2" + }, + { + "id": "platformer/alienYellow_climb1", + "name": "alienYellow_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_climb1" + }, + { + "id": "platformer/alienYellow_climb2", + "name": "alienYellow_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_climb2" + }, + { + "id": "platformer/alienYellow_duck", + "name": "alienYellow_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_duck" + }, + { + "id": "platformer/alienYellow_front", + "name": "alienYellow_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_front" + }, + { + "id": "platformer/alienYellow_hit", + "name": "alienYellow_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_hit" + }, + { + "id": "platformer/alienYellow_jump", + "name": "alienYellow_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_jump" + }, + { + "id": "platformer/alienYellow_stand", + "name": "alienYellow_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_stand" + }, + { + "id": "platformer/alienYellow_swim1", + "name": "alienYellow_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_swim1" + }, + { + "id": "platformer/alienYellow_swim2", + "name": "alienYellow_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_swim2" + }, + { + "id": "platformer/alienYellow_walk1", + "name": "alienYellow_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_walk1" + }, + { + "id": "platformer/alienYellow_walk2", + "name": "alienYellow_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_walk2" + }, + { + "id": "platformer/barnacle", + "name": "barnacle", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "barnacle" + }, + { + "id": "platformer/barnacle_attack", + "name": "barnacle_attack", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "barnacle_attack" + }, + { + "id": "platformer/barnacle_dead", + "name": "barnacle_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "barnacle_dead" + }, + { + "id": "platformer/bee", + "name": "bee", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3510, + "y": 130, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "bee" + }, + { + "id": "platformer/bee_dead", + "name": "bee_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3510, + "y": 0, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "bee_dead" + }, + { + "id": "platformer/bee_move", + "name": "bee_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1820, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "bee_move" + }, + { + "id": "platformer/bomb", + "name": "bomb", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bomb" + }, + { + "id": "platformer/bombWhite", + "name": "bombWhite", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bombWhite" + }, + { + "id": "platformer/boxCoin", + "name": "boxCoin", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin" + }, + { + "id": "platformer/boxCoin_boxed", + "name": "boxCoin_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin_boxed" + }, + { + "id": "platformer/boxCoin_disabled", + "name": "boxCoin_disabled", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin_disabled" + }, + { + "id": "platformer/boxCoin_disabled_boxed", + "name": "boxCoin_disabled_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin_disabled_boxed" + }, + { + "id": "platformer/boxCrate", + "name": "boxCrate", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate" + }, + { + "id": "platformer/boxCrate_double", + "name": "boxCrate_double", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate_double" + }, + { + "id": "platformer/boxCrate_single", + "name": "boxCrate_single", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate_single" + }, + { + "id": "platformer/boxCrate_warning", + "name": "boxCrate_warning", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate_warning" + }, + { + "id": "platformer/boxExplosive", + "name": "boxExplosive", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxExplosive" + }, + { + "id": "platformer/boxExplosive_disabled", + "name": "boxExplosive_disabled", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxExplosive_disabled" + }, + { + "id": "platformer/boxExplosive_used", + "name": "boxExplosive_used", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxExplosive_used" + }, + { + "id": "platformer/boxItem", + "name": "boxItem", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem" + }, + { + "id": "platformer/boxItem_boxed", + "name": "boxItem_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem_boxed" + }, + { + "id": "platformer/boxItem_disabled", + "name": "boxItem_disabled", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem_disabled" + }, + { + "id": "platformer/boxItem_disabled_boxed", + "name": "boxItem_disabled_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem_disabled_boxed" + }, + { + "id": "platformer/brickBrown", + "name": "brickBrown", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "brickBrown" + }, + { + "id": "platformer/brickGrey", + "name": "brickGrey", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "brickGrey" + }, + { + "id": "platformer/bridgeA", + "name": "bridgeA", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bridgeA" + }, + { + "id": "platformer/bridgeB", + "name": "bridgeB", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bridgeB" + }, + { + "id": "platformer/bush", + "name": "bush", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bush" + }, + { + "id": "platformer/cactus", + "name": "cactus", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "cactus" + }, + { + "id": "platformer/chain", + "name": "chain", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "chain" + }, + { + "id": "platformer/coinBronze", + "name": "coinBronze", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "coinBronze" + }, + { + "id": "platformer/coinGold", + "name": "coinGold", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "coinGold" + }, + { + "id": "platformer/coinSilver", + "name": "coinSilver", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "coinSilver" + }, + { + "id": "platformer/dirt", + "name": "dirt", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirt" + }, + { + "id": "platformer/dirtCenter", + "name": "dirtCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCenter" + }, + { + "id": "platformer/dirtCenter_rounded", + "name": "dirtCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCenter_rounded" + }, + { + "id": "platformer/dirtCliffAlt_left", + "name": "dirtCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliffAlt_left" + }, + { + "id": "platformer/dirtCliffAlt_right", + "name": "dirtCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliffAlt_right" + }, + { + "id": "platformer/dirtCliff_left", + "name": "dirtCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliff_left" + }, + { + "id": "platformer/dirtCliff_right", + "name": "dirtCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliff_right" + }, + { + "id": "platformer/dirtCorner_left", + "name": "dirtCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCorner_left" + }, + { + "id": "platformer/dirtCorner_right", + "name": "dirtCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCorner_right" + }, + { + "id": "platformer/dirtHalf", + "name": "dirtHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf" + }, + { + "id": "platformer/dirtHalf_left", + "name": "dirtHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf_left" + }, + { + "id": "platformer/dirtHalf_mid", + "name": "dirtHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf_mid" + }, + { + "id": "platformer/dirtHalf_right", + "name": "dirtHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf_right" + }, + { + "id": "platformer/dirtHill_left", + "name": "dirtHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHill_left" + }, + { + "id": "platformer/dirtHill_right", + "name": "dirtHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHill_right" + }, + { + "id": "platformer/dirtLeft", + "name": "dirtLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtLeft" + }, + { + "id": "platformer/dirtMid", + "name": "dirtMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtMid" + }, + { + "id": "platformer/dirtRight", + "name": "dirtRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtRight" + }, + { + "id": "platformer/doorClosed_mid", + "name": "doorClosed_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorClosed_mid" + }, + { + "id": "platformer/doorClosed_top", + "name": "doorClosed_top", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorClosed_top" + }, + { + "id": "platformer/doorOpen_mid", + "name": "doorOpen_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorOpen_mid" + }, + { + "id": "platformer/doorOpen_top", + "name": "doorOpen_top", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorOpen_top" + }, + { + "id": "platformer/fence", + "name": "fence", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "fence" + }, + { + "id": "platformer/fenceBroken", + "name": "fenceBroken", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "fenceBroken" + }, + { + "id": "platformer/fireball", + "name": "fireball", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 650, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fireball" + }, + { + "id": "platformer/fishBlue", + "name": "fishBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1690, + "width": 128, + "height": 128, + "direction": 0.0, + "referenceName": "fishBlue" + }, + { + "id": "platformer/fishBlue_dead", + "name": "fishBlue_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1560, + "width": 128, + "height": 128, + "direction": 0.0, + "referenceName": "fishBlue_dead" + }, + { + "id": "platformer/fishBlue_fall", + "name": "fishBlue_fall", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1430, + "width": 128, + "height": 128, + "direction": 0.0, + "referenceName": "fishBlue_fall" + }, + { + "id": "platformer/fishGreen", + "name": "fishGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishGreen" + }, + { + "id": "platformer/fishGreen_dead", + "name": "fishGreen_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishGreen_dead" + }, + { + "id": "platformer/fishGreen_move", + "name": "fishGreen_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishGreen_move" + }, + { + "id": "platformer/fishPink", + "name": "fishPink", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 910, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishPink" + }, + { + "id": "platformer/fishPink_dead", + "name": "fishPink_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 780, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishPink_dead" + }, + { + "id": "platformer/fishPink_move", + "name": "fishPink_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 650, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishPink_move" + }, + { + "id": "platformer/flagBlue1", + "name": "flagBlue1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagBlue1" + }, + { + "id": "platformer/flagBlue2", + "name": "flagBlue2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagBlue2" + }, + { + "id": "platformer/flagBlue_down", + "name": "flagBlue_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagBlue_down" + }, + { + "id": "platformer/flagGreen1", + "name": "flagGreen1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagGreen1" + }, + { + "id": "platformer/flagGreen2", + "name": "flagGreen2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagGreen2" + }, + { + "id": "platformer/flagGreen_down", + "name": "flagGreen_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagGreen_down" + }, + { + "id": "platformer/flagRed1", + "name": "flagRed1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagRed1" + }, + { + "id": "platformer/flagRed2", + "name": "flagRed2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagRed2" + }, + { + "id": "platformer/flagRed_down", + "name": "flagRed_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagRed_down" + }, + { + "id": "platformer/flagYellow1", + "name": "flagYellow1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagYellow1" + }, + { + "id": "platformer/flagYellow2", + "name": "flagYellow2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagYellow2" + }, + { + "id": "platformer/flagYellow_down", + "name": "flagYellow_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagYellow_down" + }, + { + "id": "platformer/fly", + "name": "fly", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 520, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fly" + }, + { + "id": "platformer/fly_dead", + "name": "fly_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 390, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fly_dead" + }, + { + "id": "platformer/fly_move", + "name": "fly_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 260, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fly_move" + }, + { + "id": "platformer/frog", + "name": "frog", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 130, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "frog" + }, + { + "id": "platformer/frog_dead", + "name": "frog_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 0, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "frog_dead" + }, + { + "id": "platformer/frog_move", + "name": "frog_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1820, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "frog_move" + }, + { + "id": "platformer/gemBlue", + "name": "gemBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemBlue" + }, + { + "id": "platformer/gemGreen", + "name": "gemGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemGreen" + }, + { + "id": "platformer/gemRed", + "name": "gemRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemRed" + }, + { + "id": "platformer/gemYellow", + "name": "gemYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemYellow" + }, + { + "id": "platformer/grass", + "name": "grass", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grass" + }, + { + "id": "platformer/grassCenter", + "name": "grassCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCenter" + }, + { + "id": "platformer/grassCenter_round", + "name": "grassCenter_round", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCenter_round" + }, + { + "id": "platformer/grassCliffAlt_left", + "name": "grassCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliffAlt_left" + }, + { + "id": "platformer/grassCliffAlt_right", + "name": "grassCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliffAlt_right" + }, + { + "id": "platformer/grassCliff_left", + "name": "grassCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliff_left" + }, + { + "id": "platformer/grassCliff_right", + "name": "grassCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliff_right" + }, + { + "id": "platformer/grassCorner_left", + "name": "grassCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCorner_left" + }, + { + "id": "platformer/grassCorner_right", + "name": "grassCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCorner_right" + }, + { + "id": "platformer/grassHalf", + "name": "grassHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf" + }, + { + "id": "platformer/grassHalf_left", + "name": "grassHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf_left" + }, + { + "id": "platformer/grassHalf_mid", + "name": "grassHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf_mid" + }, + { + "id": "platformer/grassHalf_right", + "name": "grassHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf_right" + }, + { + "id": "platformer/grassHill_left", + "name": "grassHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHill_left" + }, + { + "id": "platformer/grassHill_right", + "name": "grassHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHill_right" + }, + { + "id": "platformer/grassLeft", + "name": "grassLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassLeft" + }, + { + "id": "platformer/grassMid", + "name": "grassMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassMid" + }, + { + "id": "platformer/grassRight", + "name": "grassRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassRight" + }, + { + "id": "platformer/hud0", + "name": "hud0", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud0" + }, + { + "id": "platformer/hud1", + "name": "hud1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud1" + }, + { + "id": "platformer/hud2", + "name": "hud2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud2" + }, + { + "id": "platformer/hud3", + "name": "hud3", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud3" + }, + { + "id": "platformer/hud4", + "name": "hud4", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud4" + }, + { + "id": "platformer/hud5", + "name": "hud5", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud5" + }, + { + "id": "platformer/hud6", + "name": "hud6", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud6" + }, + { + "id": "platformer/hud7", + "name": "hud7", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud7" + }, + { + "id": "platformer/hud8", + "name": "hud8", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud8" + }, + { + "id": "platformer/hud9", + "name": "hud9", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud9" + }, + { + "id": "platformer/hudCoin", + "name": "hudCoin", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudCoin" + }, + { + "id": "platformer/hudHeart_empty", + "name": "hudHeart_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudHeart_empty" + }, + { + "id": "platformer/hudHeart_full", + "name": "hudHeart_full", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudHeart_full" + }, + { + "id": "platformer/hudHeart_half", + "name": "hudHeart_half", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudHeart_half" + }, + { + "id": "platformer/hudJewel_blue", + "name": "hudJewel_blue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_blue" + }, + { + "id": "platformer/hudJewel_blue_empty", + "name": "hudJewel_blue_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_blue_empty" + }, + { + "id": "platformer/hudJewel_green", + "name": "hudJewel_green", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_green" + }, + { + "id": "platformer/hudJewel_green_empty", + "name": "hudJewel_green_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_green_empty" + }, + { + "id": "platformer/hudJewel_red", + "name": "hudJewel_red", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_red" + }, + { + "id": "platformer/hudJewel_red_empty", + "name": "hudJewel_red_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_red_empty" + }, + { + "id": "platformer/hudJewel_yellow", + "name": "hudJewel_yellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_yellow" + }, + { + "id": "platformer/hudJewel_yellow_empty", + "name": "hudJewel_yellow_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_yellow_empty" + }, + { + "id": "platformer/hudKey_blue", + "name": "hudKey_blue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_blue" + }, + { + "id": "platformer/hudKey_blue_empty", + "name": "hudKey_blue_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_blue_empty" + }, + { + "id": "platformer/hudKey_green", + "name": "hudKey_green", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_green" + }, + { + "id": "platformer/hudKey_green_empty", + "name": "hudKey_green_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_green_empty" + }, + { + "id": "platformer/hudKey_red", + "name": "hudKey_red", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_red" + }, + { + "id": "platformer/hudKey_red_empty", + "name": "hudKey_red_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_red_empty" + }, + { + "id": "platformer/hudKey_yellow", + "name": "hudKey_yellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_yellow" + }, + { + "id": "platformer/hudKey_yellow_empty", + "name": "hudKey_yellow_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_yellow_empty" + }, + { + "id": "platformer/hudPlayer_beige", + "name": "hudPlayer_beige", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_beige" + }, + { + "id": "platformer/hudPlayer_blue", + "name": "hudPlayer_blue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_blue" + }, + { + "id": "platformer/hudPlayer_green", + "name": "hudPlayer_green", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_green" + }, + { + "id": "platformer/hudPlayer_pink", + "name": "hudPlayer_pink", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_pink" + }, + { + "id": "platformer/hudPlayer_yellow", + "name": "hudPlayer_yellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_yellow" + }, + { + "id": "platformer/hudX", + "name": "hudX", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudX" + }, + { + "id": "platformer/keyBlue", + "name": "keyBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyBlue" + }, + { + "id": "platformer/keyGreen", + "name": "keyGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyGreen" + }, + { + "id": "platformer/keyRed", + "name": "keyRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyRed" + }, + { + "id": "platformer/keyYellow", + "name": "keyYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyYellow" + }, + { + "id": "platformer/ladderMid", + "name": "ladderMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "ladderMid" + }, + { + "id": "platformer/ladderTop", + "name": "ladderTop", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "ladderTop" + }, + { + "id": "platformer/ladybug", + "name": "ladybug", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1690, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "ladybug" + }, + { + "id": "platformer/ladybug_fly", + "name": "ladybug_fly", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1560, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "ladybug_fly" + }, + { + "id": "platformer/ladybug_move", + "name": "ladybug_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1430, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "ladybug_move" + }, + { + "id": "platformer/lava", + "name": "lava", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lava" + }, + { + "id": "platformer/lavaTop_high", + "name": "lavaTop_high", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lavaTop_high" + }, + { + "id": "platformer/lavaTop_low", + "name": "lavaTop_low", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lavaTop_low" + }, + { + "id": "platformer/leverLeft", + "name": "leverLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "leverLeft" + }, + { + "id": "platformer/leverMid", + "name": "leverMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "leverMid" + }, + { + "id": "platformer/leverRight", + "name": "leverRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "leverRight" + }, + { + "id": "platformer/lockBlue", + "name": "lockBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockBlue" + }, + { + "id": "platformer/lockGreen", + "name": "lockGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockGreen" + }, + { + "id": "platformer/lockRed", + "name": "lockRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockRed" + }, + { + "id": "platformer/lockYellow", + "name": "lockYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockYellow" + }, + { + "id": "platformer/mouse", + "name": "mouse", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "mouse" + }, + { + "id": "platformer/mouse_dead", + "name": "mouse_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "mouse_dead" + }, + { + "id": "platformer/mouse_move", + "name": "mouse_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "mouse_move" + }, + { + "id": "platformer/mushroomBrown", + "name": "mushroomBrown", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "mushroomBrown" + }, + { + "id": "platformer/mushroomRed", + "name": "mushroomRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "mushroomRed" + }, + { + "id": "platformer/planet", + "name": "planet", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planet" + }, + { + "id": "platformer/planetCenter", + "name": "planetCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCenter" + }, + { + "id": "platformer/planetCenter_rounded", + "name": "planetCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCenter_rounded" + }, + { + "id": "platformer/planetCliffAlt_left", + "name": "planetCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliffAlt_left" + }, + { + "id": "platformer/planetCliffAlt_right", + "name": "planetCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliffAlt_right" + }, + { + "id": "platformer/planetCliff_left", + "name": "planetCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliff_left" + }, + { + "id": "platformer/planetCliff_right", + "name": "planetCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliff_right" + }, + { + "id": "platformer/planetCorner_left", + "name": "planetCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCorner_left" + }, + { + "id": "platformer/planetCorner_right", + "name": "planetCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCorner_right" + }, + { + "id": "platformer/planetHalf", + "name": "planetHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf" + }, + { + "id": "platformer/planetHalf_left", + "name": "planetHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf_left" + }, + { + "id": "platformer/planetHalf_mid", + "name": "planetHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf_mid" + }, + { + "id": "platformer/planetHalf_right", + "name": "planetHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf_right" + }, + { + "id": "platformer/planetHill_left", + "name": "planetHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHill_left" + }, + { + "id": "platformer/planetHill_right", + "name": "planetHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHill_right" + }, + { + "id": "platformer/planetLeft", + "name": "planetLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetLeft" + }, + { + "id": "platformer/planetMid", + "name": "planetMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetMid" + }, + { + "id": "platformer/planetRight", + "name": "planetRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetRight" + }, + { + "id": "platformer/plantPurple", + "name": "plantPurple", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "plantPurple" + }, + { + "id": "platformer/rock", + "name": "rock", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "rock" + }, + { + "id": "platformer/sand", + "name": "sand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sand" + }, + { + "id": "platformer/sandCenter", + "name": "sandCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCenter" + }, + { + "id": "platformer/sandCenter_rounded", + "name": "sandCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCenter_rounded" + }, + { + "id": "platformer/sandCliffAlt_left", + "name": "sandCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliffAlt_left" + }, + { + "id": "platformer/sandCliffAlt_right", + "name": "sandCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliffAlt_right" + }, + { + "id": "platformer/sandCliff_left", + "name": "sandCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliff_left" + }, + { + "id": "platformer/sandCliff_right", + "name": "sandCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliff_right" + }, + { + "id": "platformer/sandCorner_leftg", + "name": "sandCorner_leftg", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCorner_leftg" + }, + { + "id": "platformer/sandCorner_right", + "name": "sandCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCorner_right" + }, + { + "id": "platformer/sandHalf", + "name": "sandHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf" + }, + { + "id": "platformer/sandHalf_left", + "name": "sandHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf_left" + }, + { + "id": "platformer/sandHalf_mid", + "name": "sandHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf_mid" + }, + { + "id": "platformer/sandHalf_right", + "name": "sandHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf_right" + }, + { + "id": "platformer/sandHill_left", + "name": "sandHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHill_left" + }, + { + "id": "platformer/sandHill_right", + "name": "sandHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHill_right" + }, + { + "id": "platformer/sandLeft", + "name": "sandLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandLeft" + }, + { + "id": "platformer/sandMid", + "name": "sandMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandMid" + }, + { + "id": "platformer/sandRight", + "name": "sandRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandRight" + }, + { + "id": "platformer/saw", + "name": "saw", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "saw" + }, + { + "id": "platformer/sawHalf", + "name": "sawHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sawHalf" + }, + { + "id": "platformer/sawHalf_dead", + "name": "sawHalf_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sawHalf_dead" + }, + { + "id": "platformer/sawHalf_move", + "name": "sawHalf_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3510, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sawHalf_move" + }, + { + "id": "platformer/saw_dead", + "name": "saw_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "saw_dead" + }, + { + "id": "platformer/saw_move", + "name": "saw_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "saw_move" + }, + { + "id": "platformer/sign", + "name": "sign", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sign" + }, + { + "id": "platformer/signExit", + "name": "signExit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "signExit" + }, + { + "id": "platformer/signLeft", + "name": "signLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "signLeft" + }, + { + "id": "platformer/signRight", + "name": "signRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "signRight" + }, + { + "id": "platformer/slimeBlock", + "name": "slimeBlock", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "slimeBlock" + }, + { + "id": "platformer/slimeBlock_dead", + "name": "slimeBlock_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "slimeBlock_dead" + }, + { + "id": "platformer/slimeBlock_move", + "name": "slimeBlock_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "slimeBlock_move" + }, + { + "id": "platformer/slimeBlue", + "name": "slimeBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1690, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue" + }, + { + "id": "platformer/slimeBlue_dead", + "name": "slimeBlue_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1560, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue_dead" + }, + { + "id": "platformer/slimeBlue_hit", + "name": "slimeBlue_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1430, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue_hit" + }, + { + "id": "platformer/slimeBlue_move", + "name": "slimeBlue_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue_move" + }, + { + "id": "platformer/slimeGreen", + "name": "slimeGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen" + }, + { + "id": "platformer/slimeGreen_dead", + "name": "slimeGreen_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen_dead" + }, + { + "id": "platformer/slimeGreen_hit", + "name": "slimeGreen_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 910, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen_hit" + }, + { + "id": "platformer/slimeGreen_move", + "name": "slimeGreen_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 780, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen_move" + }, + { + "id": "platformer/slimePurple", + "name": "slimePurple", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 650, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple" + }, + { + "id": "platformer/slimePurple_dead", + "name": "slimePurple_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 520, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple_dead" + }, + { + "id": "platformer/slimePurple_hit", + "name": "slimePurple_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 390, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple_hit" + }, + { + "id": "platformer/slimePurple_move", + "name": "slimePurple_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 260, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple_move" + }, + { + "id": "platformer/snail", + "name": "snail", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 130, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "snail" + }, + { + "id": "platformer/snail_move", + "name": "snail_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 0, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "snail_move" + }, + { + "id": "platformer/snail_shell", + "name": "snail_shell", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1820, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "snail_shell" + }, + { + "id": "platformer/snow", + "name": "snow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snow" + }, + { + "id": "platformer/snowCenter", + "name": "snowCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCenter" + }, + { + "id": "platformer/snowCenter_rounded", + "name": "snowCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCenter_rounded" + }, + { + "id": "platformer/snowCliffAlt_left", + "name": "snowCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliffAlt_left" + }, + { + "id": "platformer/snowCliffAlt_right", + "name": "snowCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliffAlt_right" + }, + { + "id": "platformer/snowCliff_left", + "name": "snowCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliff_left" + }, + { + "id": "platformer/snowCliff_right", + "name": "snowCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliff_right" + }, + { + "id": "platformer/snowCorner_left", + "name": "snowCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCorner_left" + }, + { + "id": "platformer/snowCorner_right", + "name": "snowCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCorner_right" + }, + { + "id": "platformer/snowHalf", + "name": "snowHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf" + }, + { + "id": "platformer/snowHalf_left", + "name": "snowHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf_left" + }, + { + "id": "platformer/snowHalf_mid", + "name": "snowHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf_mid" + }, + { + "id": "platformer/snowHalf_right", + "name": "snowHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf_right" + }, + { + "id": "platformer/snowHill_left", + "name": "snowHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHill_left" + }, + { + "id": "platformer/snowHill_right", + "name": "snowHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHill_right" + }, + { + "id": "platformer/snowLeft", + "name": "snowLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowLeft" + }, + { + "id": "platformer/snowMid", + "name": "snowMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowMid" + }, + { + "id": "platformer/snowRight", + "name": "snowRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowRight" + }, + { + "id": "platformer/spikes", + "name": "spikes", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "spikes" + }, + { + "id": "platformer/spring", + "name": "spring", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "spring" + }, + { + "id": "platformer/sprung", + "name": "sprung", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sprung" + }, + { + "id": "platformer/star", + "name": "star", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "star" + }, + { + "id": "platformer/stone", + "name": "stone", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stone" + }, + { + "id": "platformer/stoneCenter", + "name": "stoneCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCenter" + }, + { + "id": "platformer/stoneCenter_rounded", + "name": "stoneCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCenter_rounded" + }, + { + "id": "platformer/stoneCliffAlt_left", + "name": "stoneCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliffAlt_left" + }, + { + "id": "platformer/stoneCliffAlt_right", + "name": "stoneCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliffAlt_right" + }, + { + "id": "platformer/stoneCliff_left", + "name": "stoneCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliff_left" + }, + { + "id": "platformer/stoneCliff_right", + "name": "stoneCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliff_right" + }, + { + "id": "platformer/stoneCorner_left", + "name": "stoneCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCorner_left" + }, + { + "id": "platformer/stoneCorner_right", + "name": "stoneCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1808, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCorner_right" + }, + { + "id": "platformer/stoneHalf", + "name": "stoneHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1678, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf" + }, + { + "id": "platformer/stoneHalf_left", + "name": "stoneHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1548, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf_left" + }, + { + "id": "platformer/stoneHalf_mid", + "name": "stoneHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf_mid" + }, + { + "id": "platformer/stoneHalf_right", + "name": "stoneHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf_right" + }, + { + "id": "platformer/stoneHill_left", + "name": "stoneHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHill_left" + }, + { + "id": "platformer/stoneHill_right", + "name": "stoneHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHill_right" + }, + { + "id": "platformer/stoneLeft", + "name": "stoneLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneLeft" + }, + { + "id": "platformer/stoneMid", + "name": "stoneMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneMid" + }, + { + "id": "platformer/stoneRight", + "name": "stoneRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneRight" + }, + { + "id": "platformer/switchBlue", + "name": "switchBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchBlue" + }, + { + "id": "platformer/switchBlue_pressed", + "name": "switchBlue_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchBlue_pressed" + }, + { + "id": "platformer/switchGreen", + "name": "switchGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchGreen" + }, + { + "id": "platformer/switchGreen_pressed", + "name": "switchGreen_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchGreen_pressed" + }, + { + "id": "platformer/switchRed", + "name": "switchRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchRed" + }, + { + "id": "platformer/switchRed_pressed", + "name": "switchRed_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchRed_pressed" + }, + { + "id": "platformer/switchYellow", + "name": "switchYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchYellow" + }, + { + "id": "platformer/switchYellow_pressed", + "name": "switchYellow_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchYellow_pressed" + }, + { + "id": "platformer/torch1", + "name": "torch1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "torch1" + }, + { + "id": "platformer/torch2", + "name": "torch2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "torch2" + }, + { + "id": "platformer/torchOff", + "name": "torchOff", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "torchOff" + }, + { + "id": "platformer/water", + "name": "water", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "water" + }, + { + "id": "platformer/waterTop_high", + "name": "waterTop_high", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "waterTop_high" + }, + { + "id": "platformer/waterTop_low", + "name": "waterTop_low", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "waterTop_low" + }, + { + "id": "platformer/weight", + "name": "weight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "weight" + }, + { + "id": "platformer/weightAttached", + "name": "weightAttached", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "weightAttached" + }, + { + "id": "platformer/window", + "name": "window", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "window" + }, + { + "id": "platformer/wormGreen", + "name": "wormGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1690, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormGreen" + }, + { + "id": "platformer/wormGreen_dead", + "name": "wormGreen_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1560, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormGreen_dead" + }, + { + "id": "platformer/wormGreen_move", + "name": "wormGreen_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1430, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormGreen_move" + }, + { + "id": "platformer/wormPink", + "name": "wormPink", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormPink" + }, + { + "id": "platformer/wormPink_dead", + "name": "wormPink_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormPink_dead" + }, + { + "id": "platformer/wormPink_move", + "name": "wormPink_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormPink_move" + }, + { + "id": "jumper/bronze_1", + "name": "bronze_1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 707, + "y": 296, + "width": 84, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_1" + }, + { + "id": "jumper/bronze_2", + "name": "bronze_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 206, + "width": 66, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_2" + }, + { + "id": "jumper/bronze_3", + "name": "bronze_3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 899, + "y": 116, + "width": 50, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_3" + }, + { + "id": "jumper/bronze_4", + "name": "bronze_4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 670, + "y": 406, + "width": 14, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_4" + }, + { + "id": "jumper/bubble", + "name": "bubble", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1662, + "width": 211, + "height": 215, + "direction": 90.0, + "referenceName": "bubble" + }, + { + "id": "jumper/bunny1_hurt", + "name": "bunny1_hurt", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 946, + "width": 150, + "height": 174, + "direction": 90.0, + "referenceName": "bunny1_hurt" + }, + { + "id": "jumper/bunny1_jump", + "name": "bunny1_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 763, + "width": 150, + "height": 181, + "direction": 90.0, + "referenceName": "bunny1_jump" + }, + { + "id": "jumper/bunny1_ready", + "name": "bunny1_ready", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 614, + "y": 1063, + "width": 120, + "height": 191, + "direction": 90.0, + "referenceName": "bunny1_ready" + }, + { + "id": "jumper/bunny1_stand", + "name": "bunny1_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 690, + "y": 406, + "width": 120, + "height": 201, + "direction": 90.0, + "referenceName": "bunny1_stand" + }, + { + "id": "jumper/bunny1_walk1", + "name": "bunny1_walk1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 678, + "y": 860, + "width": 120, + "height": 201, + "direction": 90.0, + "referenceName": "bunny1_walk1" + }, + { + "id": "jumper/bunny1_walk2", + "name": "bunny1_walk2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 692, + "y": 1458, + "width": 120, + "height": 207, + "direction": 90.0, + "referenceName": "bunny1_walk2" + }, + { + "id": "jumper/bunny2_hurt", + "name": "bunny2_hurt", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 411, + "y": 1866, + "width": 150, + "height": 174, + "direction": 90.0, + "referenceName": "bunny2_hurt" + }, + { + "id": "jumper/bunny2_jump", + "name": "bunny2_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 416, + "y": 1660, + "width": 150, + "height": 181, + "direction": 90.0, + "referenceName": "bunny2_jump" + }, + { + "id": "jumper/bunny2_ready", + "name": "bunny2_ready", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 581, + "y": 1265, + "width": 121, + "height": 191, + "direction": 90.0, + "referenceName": "bunny2_ready" + }, + { + "id": "jumper/bunny2_stand", + "name": "bunny2_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 584, + "y": 0, + "width": 121, + "height": 201, + "direction": 90.0, + "referenceName": "bunny2_stand" + }, + { + "id": "jumper/bunny2_walk1", + "name": "bunny2_walk1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 584, + "y": 203, + "width": 121, + "height": 201, + "direction": 90.0, + "referenceName": "bunny2_walk1" + }, + { + "id": "jumper/bunny2_walk2", + "name": "bunny2_walk2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 678, + "y": 651, + "width": 121, + "height": 207, + "direction": 90.0, + "referenceName": "bunny2_walk2" + }, + { + "id": "jumper/cactus", + "name": "cactus", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 707, + "y": 134, + "width": 117, + "height": 160, + "direction": 90.0, + "referenceName": "jumper/cactus" + }, + { + "id": "jumper/carrot", + "name": "carrot", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 820, + "y": 1733, + "width": 78, + "height": 70, + "direction": 90.0, + "referenceName": "carrot" + }, + { + "id": "jumper/carrot_gold", + "name": "carrot_gold", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 814, + "y": 1661, + "width": 78, + "height": 70, + "direction": 90.0, + "referenceName": "carrot_gold" + }, + { + "id": "jumper/carrots", + "name": "carrots", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 812, + "y": 554, + "width": 54, + "height": 49, + "direction": 90.0, + "referenceName": "carrots" + }, + { + "id": "jumper/cloud", + "name": "cloud", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1152, + "width": 260, + "height": 134, + "direction": 90.0, + "referenceName": "cloud" + }, + { + "id": "jumper/coin_bronze", + "name": "coin_bronze", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 329, + "y": 1390, + "width": 60, + "height": 61, + "direction": 90.0, + "referenceName": "coin_bronze" + }, + { + "id": "jumper/coin_gold", + "name": "coin_gold", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 244, + "y": 1981, + "width": 61, + "height": 61, + "direction": 90.0, + "referenceName": "coin_gold" + }, + { + "id": "jumper/coin_silver", + "name": "coin_silver", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 307, + "y": 1981, + "width": 61, + "height": 61, + "direction": 90.0, + "referenceName": "coin_silver" + }, + { + "id": "jumper/flame", + "name": "flame", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 900, + "y": 1733, + "width": 41, + "height": 80, + "direction": 90.0, + "referenceName": "flame" + }, + { + "id": "jumper/flyMan_fly", + "name": "flyMan_fly", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 566, + "y": 510, + "width": 122, + "height": 139, + "direction": 90.0, + "referenceName": "flyMan_fly" + }, + { + "id": "jumper/flyMan_jump", + "name": "flyMan_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 568, + "y": 1534, + "width": 122, + "height": 135, + "direction": 90.0, + "referenceName": "flyMan_jump" + }, + { + "id": "jumper/flyMan_stand", + "name": "flyMan_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 568, + "y": 1671, + "width": 122, + "height": 139, + "direction": 90.0, + "referenceName": "flyMan_stand" + }, + { + "id": "jumper/flyMan_still_fly", + "name": "flyMan_still_fly", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 692, + "y": 1667, + "width": 120, + "height": 132, + "direction": 90.0, + "referenceName": "flyMan_still_fly" + }, + { + "id": "jumper/flyMan_still_jump", + "name": "flyMan_still_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 698, + "y": 1801, + "width": 120, + "height": 128, + "direction": 90.0, + "referenceName": "flyMan_still_jump" + }, + { + "id": "jumper/flyMan_still_stand", + "name": "flyMan_still_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 707, + "y": 0, + "width": 120, + "height": 132, + "direction": 90.0, + "referenceName": "flyMan_still_stand" + }, + { + "id": "jumper/gold_1", + "name": "gold_1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 698, + "y": 1931, + "width": 84, + "height": 84, + "direction": 90.0, + "referenceName": "gold_1" + }, + { + "id": "jumper/gold_2", + "name": "gold_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 829, + "y": 0, + "width": 66, + "height": 84, + "direction": 90.0, + "referenceName": "gold_2" + }, + { + "id": "jumper/gold_3", + "name": "gold_3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 897, + "y": 1574, + "width": 50, + "height": 84, + "direction": 90.0, + "referenceName": "gold_3" + }, + { + "id": "jumper/gold_4", + "name": "gold_4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 645, + "y": 651, + "width": 15, + "height": 84, + "direction": 90.0, + "referenceName": "gold_4" + }, + { + "id": "jumper/grass1", + "name": "grass1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 868, + "y": 1877, + "width": 58, + "height": 57, + "direction": 90.0, + "referenceName": "grass1" + }, + { + "id": "jumper/grass2", + "name": "grass2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 784, + "y": 1931, + "width": 82, + "height": 70, + "direction": 90.0, + "referenceName": "grass2" + }, + { + "id": "jumper/grass_brown1", + "name": "grass_brown1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 534, + "y": 1063, + "width": 58, + "height": 57, + "direction": 90.0, + "referenceName": "grass_brown1" + }, + { + "id": "jumper/grass_brown2", + "name": "grass_brown2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 801, + "y": 752, + "width": 82, + "height": 70, + "direction": 90.0, + "referenceName": "grass_brown2" + }, + { + "id": "jumper/ground_cake", + "name": "ground_cake", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 576, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_cake" + }, + { + "id": "jumper/ground_cake_broken", + "name": "ground_cake_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 0, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_cake_broken" + }, + { + "id": "jumper/ground_cake_small", + "name": "ground_cake_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 218, + "y": 1456, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_cake_small" + }, + { + "id": "jumper/ground_cake_small_broken", + "name": "ground_cake_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 262, + "y": 1152, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_cake_small_broken" + }, + { + "id": "jumper/ground_grass", + "name": "ground_grass", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 288, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_grass" + }, + { + "id": "jumper/ground_grass_broken", + "name": "ground_grass_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 384, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_grass_broken" + }, + { + "id": "jumper/ground_grass_small", + "name": "ground_grass_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 213, + "y": 1662, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_grass_small" + }, + { + "id": "jumper/ground_grass_small_broken", + "name": "ground_grass_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 204, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_grass_small_broken" + }, + { + "id": "jumper/ground_sand", + "name": "ground_sand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 672, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_sand" + }, + { + "id": "jumper/ground_sand_broken", + "name": "ground_sand_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1056, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_sand_broken" + }, + { + "id": "jumper/ground_sand_small", + "name": "ground_sand_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 208, + "y": 1879, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_sand_small" + }, + { + "id": "jumper/ground_sand_small_broken", + "name": "ground_sand_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 102, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_sand_small_broken" + }, + { + "id": "jumper/ground_snow", + "name": "ground_snow", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 768, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_snow" + }, + { + "id": "jumper/ground_snow_broken", + "name": "ground_snow_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 480, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_snow_broken" + }, + { + "id": "jumper/ground_snow_small", + "name": "ground_snow_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 213, + "y": 1764, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_snow_small" + }, + { + "id": "jumper/ground_snow_small_broken", + "name": "ground_snow_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 306, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_snow_small_broken" + }, + { + "id": "jumper/ground_stone", + "name": "ground_stone", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 96, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_stone" + }, + { + "id": "jumper/ground_stone_broken", + "name": "ground_stone_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 192, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_stone_broken" + }, + { + "id": "jumper/ground_stone_small", + "name": "ground_stone_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 408, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_stone_small" + }, + { + "id": "jumper/ground_stone_small_broken", + "name": "ground_stone_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 232, + "y": 1288, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_stone_small_broken" + }, + { + "id": "jumper/ground_wood", + "name": "ground_wood", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 960, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_wood" + }, + { + "id": "jumper/ground_wood_broken", + "name": "ground_wood_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 864, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_wood_broken" + }, + { + "id": "jumper/ground_wood_small", + "name": "ground_wood_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 218, + "y": 1558, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_wood_small" + }, + { + "id": "jumper/ground_wood_small_broken", + "name": "ground_wood_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 0, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_wood_small_broken" + }, + { + "id": "jumper/jetpack", + "name": "jetpack", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 563, + "y": 1843, + "width": 133, + "height": 160, + "direction": 90.0, + "referenceName": "jetpack" + }, + { + "id": "jumper/jetpack_item", + "name": "jetpack_item", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 852, + "y": 1089, + "width": 65, + "height": 77, + "direction": 90.0, + "referenceName": "jetpack_item" + }, + { + "id": "jumper/lifes", + "name": "lifes", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 868, + "y": 1936, + "width": 52, + "height": 71, + "direction": 90.0, + "referenceName": "lifes" + }, + { + "id": "jumper/lighting_blue", + "name": "lighting_blue", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 895, + "y": 453, + "width": 55, + "height": 114, + "direction": 90.0, + "referenceName": "lighting_blue" + }, + { + "id": "jumper/lighting_yellow", + "name": "lighting_yellow", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 897, + "y": 0, + "width": 55, + "height": 114, + "direction": 90.0, + "referenceName": "lighting_yellow" + }, + { + "id": "jumper/mushroom_brown", + "name": "mushroom_brown", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 814, + "y": 1574, + "width": 81, + "height": 85, + "direction": 90.0, + "referenceName": "mushroom_brown" + }, + { + "id": "jumper/mushroom_red", + "name": "mushroom_red", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 812, + "y": 453, + "width": 81, + "height": 99, + "direction": 90.0, + "referenceName": "mushroom_red" + }, + { + "id": "jumper/particle_beige", + "name": "particle_beige", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 563, + "y": 2005, + "width": 58, + "height": 41, + "direction": 90.0, + "referenceName": "particle_beige" + }, + { + "id": "jumper/particle_blue", + "name": "particle_blue", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 852, + "y": 1168, + "width": 51, + "height": 49, + "direction": 90.0, + "referenceName": "particle_blue" + }, + { + "id": "jumper/particle_brown", + "name": "particle_brown", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 820, + "y": 1877, + "width": 44, + "height": 48, + "direction": 90.0, + "referenceName": "particle_brown" + }, + { + "id": "jumper/particle_darkBrown", + "name": "particle_darkBrown", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 784, + "y": 2003, + "width": 54, + "height": 43, + "direction": 90.0, + "referenceName": "particle_darkBrown" + }, + { + "id": "jumper/particle_darkGrey", + "name": "particle_darkGrey", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 1364, + "width": 51, + "height": 43, + "direction": 90.0, + "referenceName": "particle_darkGrey" + }, + { + "id": "jumper/particle_green", + "name": "particle_green", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 800, + "y": 1003, + "width": 48, + "height": 46, + "direction": 90.0, + "referenceName": "particle_green" + }, + { + "id": "jumper/particle_grey", + "name": "particle_grey", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 623, + "y": 2005, + "width": 38, + "height": 41, + "direction": 90.0, + "referenceName": "particle_grey" + }, + { + "id": "jumper/particle_pink", + "name": "particle_pink", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 829, + "y": 86, + "width": 53, + "height": 46, + "direction": 90.0, + "referenceName": "particle_pink" + }, + { + "id": "jumper/portal_orange", + "name": "portal_orange", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1288, + "width": 230, + "height": 82, + "direction": 90.0, + "referenceName": "portal_orange" + }, + { + "id": "jumper/portal_orangeParticle", + "name": "portal_orangeParticle", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 262, + "y": 1254, + "width": 20, + "height": 20, + "direction": 90.0, + "referenceName": "portal_orangeParticle" + }, + { + "id": "jumper/portal_yellow", + "name": "portal_yellow", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1372, + "width": 230, + "height": 82, + "direction": 90.0, + "referenceName": "portal_yellow" + }, + { + "id": "jumper/portal_yellowParticle", + "name": "portal_yellowParticle", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 284, + "y": 1254, + "width": 20, + "height": 20, + "direction": 90.0, + "referenceName": "portal_yellowParticle" + }, + { + "id": "jumper/powerup_bubble", + "name": "powerup_bubble", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 134, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_bubble" + }, + { + "id": "jumper/powerup_bunny", + "name": "powerup_bunny", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 1220, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_bunny" + }, + { + "id": "jumper/powerup_empty", + "name": "powerup_empty", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 894, + "y": 1661, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_empty" + }, + { + "id": "jumper/powerup_jetpack", + "name": "powerup_jetpack", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 820, + "y": 1805, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_jetpack" + }, + { + "id": "jumper/powerup_wings", + "name": "powerup_wings", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 1292, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_wings" + }, + { + "id": "jumper/silver_1", + "name": "silver_1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 584, + "y": 406, + "width": 84, + "height": 84, + "direction": 90.0, + "referenceName": "silver_1" + }, + { + "id": "jumper/silver_2", + "name": "silver_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 852, + "y": 1003, + "width": 66, + "height": 84, + "direction": 90.0, + "referenceName": "silver_2" + }, + { + "id": "jumper/silver_3", + "name": "silver_3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 899, + "y": 1219, + "width": 50, + "height": 84, + "direction": 90.0, + "referenceName": "silver_3" + }, + { + "id": "jumper/silver_4", + "name": "silver_4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 662, + "y": 651, + "width": 14, + "height": 84, + "direction": 90.0, + "referenceName": "silver_4" + }, + { + "id": "jumper/smoke", + "name": "smoke", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 879, + "y": 1364, + "width": 51, + "height": 48, + "direction": 90.0, + "referenceName": "smoke" + }, + { + "id": "jumper/spikeBall1", + "name": "spikeBall1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 534, + "y": 763, + "width": 142, + "height": 148, + "direction": 90.0, + "referenceName": "spikeBall1" + }, + { + "id": "jumper/spikeBall_2", + "name": "spikeBall_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 464, + "y": 1122, + "width": 148, + "height": 141, + "direction": 90.0, + "referenceName": "spikeBall_2" + }, + { + "id": "jumper/spikeMan_jump", + "name": "spikeMan_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 736, + "y": 1063, + "width": 114, + "height": 155, + "direction": 90.0, + "referenceName": "spikeMan_jump" + }, + { + "id": "jumper/spikeMan_stand", + "name": "spikeMan_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 814, + "y": 1417, + "width": 90, + "height": 155, + "direction": 90.0, + "referenceName": "spikeMan_stand" + }, + { + "id": "jumper/spikeMan_walk1", + "name": "spikeMan_walk1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 704, + "y": 1256, + "width": 120, + "height": 159, + "direction": 90.0, + "referenceName": "spikeMan_walk1" + }, + { + "id": "jumper/spikeMan_walk2", + "name": "spikeMan_walk2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 812, + "y": 296, + "width": 90, + "height": 155, + "direction": 90.0, + "referenceName": "spikeMan_walk2" + }, + { + "id": "jumper/spike_bottom", + "name": "spike_bottom", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 894, + "y": 206, + "width": 51, + "height": 87, + "direction": 90.0, + "referenceName": "spike_bottom" + }, + { + "id": "jumper/spike_top", + "name": "spike_top", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 885, + "y": 752, + "width": 51, + "height": 87, + "direction": 90.0, + "referenceName": "spike_top" + }, + { + "id": "jumper/spikes_bottom", + "name": "spikes_bottom", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 147, + "y": 1988, + "width": 95, + "height": 53, + "direction": 90.0, + "referenceName": "spikes_bottom" + }, + { + "id": "jumper/spikes_top", + "name": "spikes_top", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 232, + "y": 1390, + "width": 95, + "height": 53, + "direction": 90.0, + "referenceName": "spikes_top" + }, + { + "id": "jumper/spring", + "name": "spring", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 420, + "y": 1558, + "width": 145, + "height": 77, + "direction": 90.0, + "referenceName": "jumper/spring" + }, + { + "id": "jumper/springMan_hurt", + "name": "springMan_hurt", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 800, + "y": 860, + "width": 110, + "height": 141, + "direction": 90.0, + "referenceName": "springMan_hurt" + }, + { + "id": "jumper/springMan_stand", + "name": "springMan_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 801, + "y": 609, + "width": 110, + "height": 141, + "direction": 90.0, + "referenceName": "springMan_stand" + }, + { + "id": "jumper/spring_in", + "name": "spring_in", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1988, + "width": 145, + "height": 57, + "direction": 90.0, + "referenceName": "spring_in" + }, + { + "id": "jumper/spring_out", + "name": "spring_out", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 434, + "y": 1265, + "width": 145, + "height": 110, + "direction": 90.0, + "referenceName": "spring_out" + }, + { + "id": "jumper/sun1", + "name": "sun1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 534, + "y": 913, + "width": 142, + "height": 148, + "direction": 90.0, + "referenceName": "sun1" + }, + { + "id": "jumper/sun2", + "name": "sun2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 421, + "y": 1390, + "width": 148, + "height": 142, + "direction": 90.0, + "referenceName": "sun2" + }, + { + "id": "jumper/wingMan1", + "name": "wingMan1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 635, + "width": 174, + "height": 126, + "direction": 90.0, + "referenceName": "wingMan1" + }, + { + "id": "jumper/wingMan2", + "name": "wingMan2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1879, + "width": 206, + "height": 107, + "direction": 90.0, + "referenceName": "wingMan2" + }, + { + "id": "jumper/wingMan3", + "name": "wingMan3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1559, + "width": 216, + "height": 101, + "direction": 90.0, + "referenceName": "wingMan3" + }, + { + "id": "jumper/wingMan4", + "name": "wingMan4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1456, + "width": 216, + "height": 101, + "direction": 90.0, + "referenceName": "wingMan4" + }, + { + "id": "jumper/wingMan5", + "name": "wingMan5", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 510, + "width": 182, + "height": 123, + "direction": 90.0, + "referenceName": "wingMan5" + }, + { + "id": "jumper/wing_left", + "name": "wing_left", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 558, + "y": 651, + "width": 85, + "height": 74, + "direction": 90.0, + "referenceName": "wing_left" + }, + { + "id": "jumper/wing_right", + "name": "wing_right", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 571, + "y": 1458, + "width": 85, + "height": 74, + "direction": 90.0, + "referenceName": "wing_right" + }, + { + "id": "space_shooter/beam0", + "name": "beam0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 143, + "y": 377, + "width": 43, + "height": 31, + "direction": 0.0, + "referenceName": "beam0" + }, + { + "id": "space_shooter/beam1", + "name": "beam1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 327, + "y": 644, + "width": 40, + "height": 20, + "direction": 0.0, + "referenceName": "beam1" + }, + { + "id": "space_shooter/beam2", + "name": "beam2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 262, + "y": 907, + "width": 38, + "height": 31, + "direction": 0.0, + "referenceName": "beam2" + }, + { + "id": "space_shooter/beam3", + "name": "beam3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 396, + "y": 384, + "width": 29, + "height": 29, + "direction": 0.0, + "referenceName": "beam3" + }, + { + "id": "space_shooter/beam4", + "name": "beam4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 177, + "y": 496, + "width": 41, + "height": 17, + "direction": 0.0, + "referenceName": "beam4" + }, + { + "id": "space_shooter/beam5", + "name": "beam5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 186, + "y": 377, + "width": 40, + "height": 25, + "direction": 0.0, + "referenceName": "beam5" + }, + { + "id": "space_shooter/beam6", + "name": "beam6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 120, + "y": 688, + "width": 43, + "height": 23, + "direction": 0.0, + "referenceName": "beam6" + }, + { + "id": "space_shooter/beamLong1", + "name": "beamLong1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 943, + "width": 15, + "height": 67, + "direction": 0.0, + "referenceName": "beamLong1" + }, + { + "id": "space_shooter/beamLong2", + "name": "beamLong2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 307, + "y": 309, + "width": 25, + "height": 64, + "direction": 0.0, + "referenceName": "beamLong2" + }, + { + "id": "space_shooter/bold_silver", + "name": "bold_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 837, + "width": 19, + "height": 30, + "direction": 90.0, + "referenceName": "bold_silver" + }, + { + "id": "space_shooter/bolt_bronze", + "name": "bolt_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 467, + "width": 19, + "height": 30, + "direction": 90.0, + "referenceName": "bolt_bronze" + }, + { + "id": "space_shooter/bolt_gold", + "name": "bolt_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 437, + "width": 19, + "height": 30, + "direction": 90.0, + "referenceName": "bolt_gold" + }, + { + "id": "space_shooter/buttonBlue", + "name": "buttonBlue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 78, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonBlue" + }, + { + "id": "space_shooter/buttonGreen", + "name": "buttonGreen", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 117, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonGreen" + }, + { + "id": "space_shooter/buttonRed", + "name": "buttonRed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 0, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonRed" + }, + { + "id": "space_shooter/buttonYellow", + "name": "buttonYellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 39, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonYellow" + }, + { + "id": "space_shooter/cockpitBlue_0", + "name": "cockpitBlue_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 586, + "y": 0, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitBlue_0" + }, + { + "id": "space_shooter/cockpitBlue_1", + "name": "cockpitBlue_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 862, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitBlue_1" + }, + { + "id": "space_shooter/cockpitBlue_2", + "name": "cockpitBlue_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 684, + "y": 67, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitBlue_2" + }, + { + "id": "space_shooter/cockpitBlue_3", + "name": "cockpitBlue_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 336, + "y": 384, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitBlue_3" + }, + { + "id": "space_shooter/cockpitBlue_4", + "name": "cockpitBlue_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 637, + "y": 0, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitBlue_4" + }, + { + "id": "space_shooter/cockpitBlue_5", + "name": "cockpitBlue_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 627, + "y": 144, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitBlue_5" + }, + { + "id": "space_shooter/cockpitBlue_6", + "name": "cockpitBlue_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 684, + "y": 0, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitBlue_6" + }, + { + "id": "space_shooter/cockpitBlue_7", + "name": "cockpitBlue_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 737, + "y": 542, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitBlue_7" + }, + { + "id": "space_shooter/cockpitGreen_0", + "name": "cockpitGreen_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 576, + "y": 225, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitGreen_0" + }, + { + "id": "space_shooter/cockpitGreen_1", + "name": "cockpitGreen_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 734, + "y": 977, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitGreen_1" + }, + { + "id": "space_shooter/cockpitGreen_2", + "name": "cockpitGreen_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 696, + "y": 659, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitGreen_2" + }, + { + "id": "space_shooter/cockpitGreen_3", + "name": "cockpitGreen_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 234, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitGreen_3" + }, + { + "id": "space_shooter/cockpitGreen_4", + "name": "cockpitGreen_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 627, + "y": 219, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitGreen_4" + }, + { + "id": "space_shooter/cockpitGreen_5", + "name": "cockpitGreen_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 694, + "y": 364, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitGreen_5" + }, + { + "id": "space_shooter/cockpitGreen_6", + "name": "cockpitGreen_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 737, + "y": 471, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitGreen_6" + }, + { + "id": "space_shooter/cockpitGreen_7", + "name": "cockpitGreen_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 602, + "y": 525, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitGreen_7" + }, + { + "id": "space_shooter/cockpitRed_0", + "name": "cockpitRed_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 535, + "y": 75, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitRed_0" + }, + { + "id": "space_shooter/cockpitRed_1", + "name": "cockpitRed_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 351, + "y": 982, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitRed_1" + }, + { + "id": "space_shooter/cockpitRed_2", + "name": "cockpitRed_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 718, + "y": 197, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitRed_2" + }, + { + "id": "space_shooter/cockpitRed_3", + "name": "cockpitRed_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 520, + "y": 661, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitRed_3" + }, + { + "id": "space_shooter/cockpitRed_4", + "name": "cockpitRed_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 647, + "y": 857, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitRed_4" + }, + { + "id": "space_shooter/cockpitRed_5", + "name": "cockpitRed_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 605, + "y": 707, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitRed_5" + }, + { + "id": "space_shooter/cockpitRed_6", + "name": "cockpitRed_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 795, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitRed_6" + }, + { + "id": "space_shooter/cockpitRed_7", + "name": "cockpitRed_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 329, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitRed_7" + }, + { + "id": "space_shooter/cockpitYellow_0", + "name": "cockpitYellow_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 726, + "y": 80, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitYellow_0" + }, + { + "id": "space_shooter/cockpitYellow_1", + "name": "cockpitYellow_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 309, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitYellow_1" + }, + { + "id": "space_shooter/cockpitYellow_2", + "name": "cockpitYellow_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 637, + "y": 67, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitYellow_2" + }, + { + "id": "space_shooter/cockpitYellow_3", + "name": "cockpitYellow_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 607, + "y": 782, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitYellow_3" + }, + { + "id": "space_shooter/cockpitYellow_4", + "name": "cockpitYellow_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 696, + "y": 262, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitYellow_4" + }, + { + "id": "space_shooter/cockpitYellow_5", + "name": "cockpitYellow_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 400, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitYellow_5" + }, + { + "id": "space_shooter/cockpitYellow_6", + "name": "cockpitYellow_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 734, + "y": 921, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitYellow_6" + }, + { + "id": "space_shooter/cockpitYellow_7", + "name": "cockpitYellow_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 600, + "y": 375, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitYellow_7" + }, + { + "id": "space_shooter/cursor", + "name": "cursor", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 797, + "y": 173, + "width": 30, + "height": 33, + "direction": 90.0, + "referenceName": "cursor" + }, + { + "id": "space_shooter/enemyBlack1", + "name": "enemyBlack1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 728, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack1" + }, + { + "id": "space_shooter/enemyBlack2", + "name": "enemyBlack2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 120, + "y": 604, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack2" + }, + { + "id": "space_shooter/enemyBlack3", + "name": "enemyBlack3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 144, + "y": 156, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack3" + }, + { + "id": "space_shooter/enemyBlack4", + "name": "enemyBlack4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 325, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack4" + }, + { + "id": "space_shooter/enemyBlack5", + "name": "enemyBlack5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 150, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack5" + }, + { + "id": "space_shooter/enemyBlue1", + "name": "enemyBlue1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 425, + "y": 468, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue1" + }, + { + "id": "space_shooter/enemyBlue2", + "name": "enemyBlue2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 143, + "y": 293, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue2" + }, + { + "id": "space_shooter/enemyBlue3", + "name": "enemyBlue3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 0, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue3" + }, + { + "id": "space_shooter/enemyBlue4", + "name": "enemyBlue4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 409, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue4" + }, + { + "id": "space_shooter/enemyBlue5", + "name": "enemyBlue5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 421, + "y": 814, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue5" + }, + { + "id": "space_shooter/enemyGreen1", + "name": "enemyGreen1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 425, + "y": 552, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen1" + }, + { + "id": "space_shooter/enemyGreen2", + "name": "enemyGreen2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 133, + "y": 412, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen2" + }, + { + "id": "space_shooter/enemyGreen3", + "name": "enemyGreen3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 496, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen3" + }, + { + "id": "space_shooter/enemyGreen4", + "name": "enemyGreen4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 493, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen4" + }, + { + "id": "space_shooter/enemyGreen5", + "name": "enemyGreen5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 408, + "y": 907, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen5" + }, + { + "id": "space_shooter/enemyRed1", + "name": "enemyRed1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 425, + "y": 384, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed1" + }, + { + "id": "space_shooter/enemyRed2", + "name": "enemyRed2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 120, + "y": 520, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed2" + }, + { + "id": "space_shooter/enemyRed3", + "name": "enemyRed3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 580, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed3" + }, + { + "id": "space_shooter/enemyRed4", + "name": "enemyRed4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 520, + "y": 577, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed4" + }, + { + "id": "space_shooter/enemyRed5", + "name": "enemyRed5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 644, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed5" + }, + { + "id": "space_shooter/engine1", + "name": "engine1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 907, + "width": 38, + "height": 23, + "direction": 0.0, + "referenceName": "engine1" + }, + { + "id": "space_shooter/engine2", + "name": "engine2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 163, + "y": 688, + "width": 42, + "height": 28, + "direction": 0.0, + "referenceName": "engine2" + }, + { + "id": "space_shooter/engine3", + "name": "engine3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 644, + "y": 1002, + "width": 27, + "height": 22, + "direction": 0.0, + "referenceName": "engine3" + }, + { + "id": "space_shooter/engine4", + "name": "engine4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 144, + "y": 240, + "width": 49, + "height": 45, + "direction": 0.0, + "referenceName": "engine4" + }, + { + "id": "space_shooter/engine5", + "name": "engine5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 133, + "y": 496, + "width": 44, + "height": 24, + "direction": 0.0, + "referenceName": "engine5" + }, + { + "id": "space_shooter/fire00", + "name": "fire00", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 125, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire00" + }, + { + "id": "space_shooter/fire01", + "name": "fire01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 206, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire01" + }, + { + "id": "space_shooter/fire02", + "name": "fire02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 663, + "width": 14, + "height": 32, + "direction": 0.0, + "referenceName": "fire02" + }, + { + "id": "space_shooter/fire03", + "name": "fire03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 437, + "width": 14, + "height": 34, + "direction": 0.0, + "referenceName": "fire03" + }, + { + "id": "space_shooter/fire04", + "name": "fire04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 831, + "y": 0, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire04" + }, + { + "id": "space_shooter/fire05", + "name": "fire05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 834, + "y": 299, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire05" + }, + { + "id": "space_shooter/fire06", + "name": "fire06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 502, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire06" + }, + { + "id": "space_shooter/fire07", + "name": "fire07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 330, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire07" + }, + { + "id": "space_shooter/fire08", + "name": "fire08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 867, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire08" + }, + { + "id": "space_shooter/fire09", + "name": "fire09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 811, + "y": 663, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire09" + }, + { + "id": "space_shooter/fire10", + "name": "fire10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 812, + "y": 206, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire10" + }, + { + "id": "space_shooter/fire11", + "name": "fire11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 395, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire11" + }, + { + "id": "space_shooter/fire12", + "name": "fire12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 533, + "width": 14, + "height": 32, + "direction": 0.0, + "referenceName": "fire12" + }, + { + "id": "space_shooter/fire13", + "name": "fire13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 361, + "width": 14, + "height": 34, + "direction": 0.0, + "referenceName": "fire13" + }, + { + "id": "space_shooter/fire14", + "name": "fire14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 831, + "y": 31, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire14" + }, + { + "id": "space_shooter/fire15", + "name": "fire15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 471, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire15" + }, + { + "id": "space_shooter/fire16", + "name": "fire16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 268, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire16" + }, + { + "id": "space_shooter/fire17", + "name": "fire17", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 237, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire17" + }, + { + "id": "space_shooter/fire18", + "name": "fire18", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 165, + "width": 16, + "height": 41, + "direction": 0.0, + "referenceName": "fire18" + }, + { + "id": "space_shooter/fire19", + "name": "fire19", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 812, + "y": 246, + "width": 16, + "height": 41, + "direction": 0.0, + "referenceName": "fire19" + }, + { + "id": "space_shooter/gun00", + "name": "gun00", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 907, + "width": 16, + "height": 36, + "direction": 0.0, + "referenceName": "gun00" + }, + { + "id": "space_shooter/gun01", + "name": "gun01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 867, + "width": 17, + "height": 33, + "direction": 0.0, + "referenceName": "gun01" + }, + { + "id": "space_shooter/gun02", + "name": "gun02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 611, + "width": 14, + "height": 36, + "direction": 0.0, + "referenceName": "gun02" + }, + { + "id": "space_shooter/gun03", + "name": "gun03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 796, + "width": 20, + "height": 41, + "direction": 0.0, + "referenceName": "gun03" + }, + { + "id": "space_shooter/gun04", + "name": "gun04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 84, + "width": 16, + "height": 41, + "direction": 0.0, + "referenceName": "gun04" + }, + { + "id": "space_shooter/gun05", + "name": "gun05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 0, + "width": 21, + "height": 41, + "direction": 0.0, + "referenceName": "gun05" + }, + { + "id": "space_shooter/gun06", + "name": "gun06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 900, + "width": 17, + "height": 38, + "direction": 0.0, + "referenceName": "gun06" + }, + { + "id": "space_shooter/gun07", + "name": "gun07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 796, + "width": 14, + "height": 41, + "direction": 0.0, + "referenceName": "gun07" + }, + { + "id": "space_shooter/gun08", + "name": "gun08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 263, + "width": 10, + "height": 47, + "direction": 0.0, + "referenceName": "gun08" + }, + { + "id": "space_shooter/gun09", + "name": "gun09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 611, + "width": 20, + "height": 52, + "direction": 0.0, + "referenceName": "gun09" + }, + { + "id": "space_shooter/gun10", + "name": "gun10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 808, + "y": 961, + "width": 20, + "height": 52, + "direction": 0.0, + "referenceName": "gun10" + }, + { + "id": "space_shooter/laserBlue01", + "name": "laserBlue01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 421, + "width": 9, + "height": 54, + "direction": 0.0, + "referenceName": "laserBlue01" + }, + { + "id": "space_shooter/laserBlue02", + "name": "laserBlue02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 841, + "y": 647, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue02" + }, + { + "id": "space_shooter/laserBlue03", + "name": "laserBlue03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 57, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue03" + }, + { + "id": "space_shooter/laserBlue04", + "name": "laserBlue04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 565, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue04" + }, + { + "id": "space_shooter/laserBlue05", + "name": "laserBlue05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 475, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue05" + }, + { + "id": "space_shooter/laserBlue06", + "name": "laserBlue06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 752, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue06" + }, + { + "id": "space_shooter/laserBlue07", + "name": "laserBlue07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 775, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue07" + }, + { + "id": "space_shooter/laserBlue08", + "name": "laserBlue08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 596, + "y": 961, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserBlue08" + }, + { + "id": "space_shooter/laserBlue09", + "name": "laserBlue09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 434, + "y": 325, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserBlue09" + }, + { + "id": "space_shooter/laserBlue10", + "name": "laserBlue10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 740, + "y": 724, + "width": 37, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue10" + }, + { + "id": "space_shooter/laserBlue11", + "name": "laserBlue11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 698, + "y": 795, + "width": 38, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue11" + }, + { + "id": "space_shooter/laserBlue12", + "name": "laserBlue12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 695, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue12" + }, + { + "id": "space_shooter/laserBlue13", + "name": "laserBlue13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 869, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue13" + }, + { + "id": "space_shooter/laserBlue14", + "name": "laserBlue14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 842, + "y": 206, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue14" + }, + { + "id": "space_shooter/laserBlue15", + "name": "laserBlue15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 849, + "y": 480, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue15" + }, + { + "id": "space_shooter/laserBlue16", + "name": "laserBlue16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 62, + "width": 13, + "height": 54, + "direction": 0.0, + "referenceName": "laserBlue16" + }, + { + "id": "space_shooter/laserGreen01", + "name": "laserGreen01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 740, + "y": 686, + "width": 37, + "height": 38, + "direction": 0.0, + "referenceName": "laserGreen01" + }, + { + "id": "space_shooter/laserGreen02", + "name": "laserGreen02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 116, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen02" + }, + { + "id": "space_shooter/laserGreen03", + "name": "laserGreen03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 855, + "y": 173, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen03" + }, + { + "id": "space_shooter/laserGreen04", + "name": "laserGreen04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 565, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen04" + }, + { + "id": "space_shooter/laserGreen05", + "name": "laserGreen05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 854, + "y": 639, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen05" + }, + { + "id": "space_shooter/laserGreen06", + "name": "laserGreen06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 845, + "y": 0, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen06" + }, + { + "id": "space_shooter/laserGreen07", + "name": "laserGreen07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 849, + "y": 364, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen07" + }, + { + "id": "space_shooter/laserGreen08", + "name": "laserGreen08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 738, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen08" + }, + { + "id": "space_shooter/laserGreen09", + "name": "laserGreen09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 94, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen09" + }, + { + "id": "space_shooter/laserGreen10", + "name": "laserGreen10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 426, + "width": 13, + "height": 54, + "direction": 0.0, + "referenceName": "laserGreen10" + }, + { + "id": "space_shooter/laserGreen11", + "name": "laserGreen11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 849, + "y": 310, + "width": 9, + "height": 54, + "direction": 0.0, + "referenceName": "laserGreen11" + }, + { + "id": "space_shooter/laserGreen12", + "name": "laserGreen12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 602, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen12" + }, + { + "id": "space_shooter/laserGreen13", + "name": "laserGreen13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 0, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen13" + }, + { + "id": "space_shooter/laserGreen14", + "name": "laserGreen14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 193, + "y": 240, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserGreen14" + }, + { + "id": "space_shooter/laserGreen15", + "name": "laserGreen15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 443, + "y": 182, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserGreen15" + }, + { + "id": "space_shooter/laserGreen16", + "name": "laserGreen16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 760, + "y": 192, + "width": 37, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen16" + }, + { + "id": "space_shooter/laserRed01", + "name": "laserRed01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 230, + "width": 9, + "height": 54, + "direction": 0.0, + "referenceName": "laserRed01" + }, + { + "id": "space_shooter/laserRed02", + "name": "laserRed02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 977, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed02" + }, + { + "id": "space_shooter/laserRed03", + "name": "laserRed03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 602, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed03" + }, + { + "id": "space_shooter/laserRed04", + "name": "laserRed04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 940, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed04" + }, + { + "id": "space_shooter/laserRed05", + "name": "laserRed05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 983, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed05" + }, + { + "id": "space_shooter/laserRed06", + "name": "laserRed06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 903, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed06" + }, + { + "id": "space_shooter/laserRed07", + "name": "laserRed07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 131, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed07" + }, + { + "id": "space_shooter/laserRed08", + "name": "laserRed08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 580, + "y": 661, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserRed08" + }, + { + "id": "space_shooter/laserRed09", + "name": "laserRed09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 602, + "y": 600, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserRed09" + }, + { + "id": "space_shooter/laserRed10", + "name": "laserRed10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 738, + "y": 650, + "width": 37, + "height": 36, + "direction": 0.0, + "referenceName": "laserRed10" + }, + { + "id": "space_shooter/laserRed11", + "name": "laserRed11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 737, + "y": 613, + "width": 37, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed11" + }, + { + "id": "space_shooter/laserRed12", + "name": "laserRed12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 846, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed12" + }, + { + "id": "space_shooter/laserRed13", + "name": "laserRed13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 812, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed13" + }, + { + "id": "space_shooter/laserRed14", + "name": "laserRed14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 789, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed14" + }, + { + "id": "space_shooter/laserRed15", + "name": "laserRed15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 926, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed15" + }, + { + "id": "space_shooter/laserRed16", + "name": "laserRed16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 684, + "width": 13, + "height": 54, + "direction": 0.0, + "referenceName": "laserRed16" + }, + { + "id": "space_shooter/meteorBrown_big1", + "name": "meteorBrown_big1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 664, + "width": 101, + "height": 84, + "direction": 90.0, + "referenceName": "meteorBrown_big1" + }, + { + "id": "space_shooter/meteorBrown_big2", + "name": "meteorBrown_big2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 520, + "width": 120, + "height": 98, + "direction": 90.0, + "referenceName": "meteorBrown_big2" + }, + { + "id": "space_shooter/meteorBrown_big3", + "name": "meteorBrown_big3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 810, + "width": 89, + "height": 82, + "direction": 90.0, + "referenceName": "meteorBrown_big3" + }, + { + "id": "space_shooter/meteorBrown_big4", + "name": "meteorBrown_big4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 327, + "y": 452, + "width": 98, + "height": 96, + "direction": 90.0, + "referenceName": "meteorBrown_big4" + }, + { + "id": "space_shooter/meteorBrown_med1", + "name": "meteorBrown_med1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 447, + "width": 43, + "height": 43, + "direction": 90.0, + "referenceName": "meteorBrown_med1" + }, + { + "id": "space_shooter/meteorBrown_med3", + "name": "meteorBrown_med3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 237, + "y": 452, + "width": 45, + "height": 40, + "direction": 90.0, + "referenceName": "meteorBrown_med3" + }, + { + "id": "space_shooter/meteorBrown_small1", + "name": "meteorBrown_small1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 406, + "y": 234, + "width": 28, + "height": 28, + "direction": 90.0, + "referenceName": "meteorBrown_small1" + }, + { + "id": "space_shooter/meteorBrown_small2", + "name": "meteorBrown_small2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 587, + "width": 29, + "height": 26, + "direction": 90.0, + "referenceName": "meteorBrown_small2" + }, + { + "id": "space_shooter/meteorBrown_tiny1", + "name": "meteorBrown_tiny1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 814, + "width": 18, + "height": 18, + "direction": 90.0, + "referenceName": "meteorBrown_tiny1" + }, + { + "id": "space_shooter/meteorBrown_tiny2", + "name": "meteorBrown_tiny2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 399, + "y": 814, + "width": 16, + "height": 15, + "direction": 90.0, + "referenceName": "meteorBrown_tiny2" + }, + { + "id": "space_shooter/meteorGrey_big1", + "name": "meteorGrey_big1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 748, + "width": 101, + "height": 84, + "direction": 90.0, + "referenceName": "meteorGrey_big1" + }, + { + "id": "space_shooter/meteorGrey_big2", + "name": "meteorGrey_big2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 618, + "width": 120, + "height": 98, + "direction": 90.0, + "referenceName": "meteorGrey_big2" + }, + { + "id": "space_shooter/meteorGrey_big3", + "name": "meteorGrey_big3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 516, + "y": 728, + "width": 89, + "height": 82, + "direction": 90.0, + "referenceName": "meteorGrey_big3" + }, + { + "id": "space_shooter/meteorGrey_big4", + "name": "meteorGrey_big4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 327, + "y": 548, + "width": 98, + "height": 96, + "direction": 90.0, + "referenceName": "meteorGrey_big4" + }, + { + "id": "space_shooter/meteorGrey_med1", + "name": "meteorGrey_med1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 674, + "y": 219, + "width": 43, + "height": 43, + "direction": 90.0, + "referenceName": "meteorGrey_med1" + }, + { + "id": "space_shooter/meteorGrey_med2", + "name": "meteorGrey_med2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 282, + "y": 452, + "width": 45, + "height": 40, + "direction": 90.0, + "referenceName": "meteorGrey_med2" + }, + { + "id": "space_shooter/meteorGrey_small1", + "name": "meteorGrey_small1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 406, + "y": 262, + "width": 28, + "height": 28, + "direction": 90.0, + "referenceName": "meteorGrey_small1" + }, + { + "id": "space_shooter/meteorGrey_small2", + "name": "meteorGrey_small2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 396, + "y": 413, + "width": 29, + "height": 26, + "direction": 90.0, + "referenceName": "meteorGrey_small2" + }, + { + "id": "space_shooter/meteorGrey_tiny1", + "name": "meteorGrey_tiny1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 364, + "y": 814, + "width": 18, + "height": 18, + "direction": 90.0, + "referenceName": "meteorGrey_tiny1" + }, + { + "id": "space_shooter/meteorGrey_tiny2", + "name": "meteorGrey_tiny2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 602, + "y": 646, + "width": 16, + "height": 15, + "direction": 90.0, + "referenceName": "meteorGrey_tiny2" + }, + { + "id": "space_shooter/numeral0", + "name": "numeral0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 367, + "y": 644, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral0" + }, + { + "id": "space_shooter/numeral1", + "name": "numeral1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 205, + "y": 688, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral1" + }, + { + "id": "space_shooter/numeral2", + "name": "numeral2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 406, + "y": 290, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral2" + }, + { + "id": "space_shooter/numeral3", + "name": "numeral3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 580, + "y": 707, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral3" + }, + { + "id": "space_shooter/numeral4", + "name": "numeral4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 386, + "y": 644, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral4" + }, + { + "id": "space_shooter/numeral5", + "name": "numeral5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 628, + "y": 646, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral5" + }, + { + "id": "space_shooter/numeral6", + "name": "numeral6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 671, + "y": 1002, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral6" + }, + { + "id": "space_shooter/numeral7", + "name": "numeral7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 690, + "y": 1004, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral7" + }, + { + "id": "space_shooter/numeral8", + "name": "numeral8", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 709, + "y": 1004, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral8" + }, + { + "id": "space_shooter/numeral9", + "name": "numeral9", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 491, + "y": 215, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral9" + }, + { + "id": "space_shooter/numeralX", + "name": "numeralX", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 382, + "y": 814, + "width": 17, + "height": 17, + "direction": 90.0, + "referenceName": "numeralX" + }, + { + "id": "space_shooter/pill_blue", + "name": "pill_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 674, + "y": 262, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_blue" + }, + { + "id": "space_shooter/pill_green", + "name": "pill_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 573, + "y": 989, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_green" + }, + { + "id": "space_shooter/pill_red", + "name": "pill_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 108, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_red" + }, + { + "id": "space_shooter/pill_yellow", + "name": "pill_yellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 129, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_yellow" + }, + { + "id": "space_shooter/playerLife1_blue", + "name": "playerLife1_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 482, + "y": 358, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_blue" + }, + { + "id": "space_shooter/playerLife1_green", + "name": "playerLife1_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 535, + "y": 150, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_green" + }, + { + "id": "space_shooter/playerLife1_orange", + "name": "playerLife1_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 327, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_orange" + }, + { + "id": "space_shooter/playerLife1_red", + "name": "playerLife1_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 775, + "y": 301, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_red" + }, + { + "id": "space_shooter/playerLife2_blue", + "name": "playerLife2_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 465, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_blue" + }, + { + "id": "space_shooter/playerLife2_green", + "name": "playerLife2_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 391, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_green" + }, + { + "id": "space_shooter/playerLife2_orange", + "name": "playerLife2_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 428, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_orange" + }, + { + "id": "space_shooter/playerLife2_red", + "name": "playerLife2_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 502, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_red" + }, + { + "id": "space_shooter/playerLife3_blue", + "name": "playerLife3_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 385, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_blue" + }, + { + "id": "space_shooter/playerLife3_green", + "name": "playerLife3_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 469, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_green" + }, + { + "id": "space_shooter/playerLife3_orange", + "name": "playerLife3_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 712, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_orange" + }, + { + "id": "space_shooter/playerLife3_red", + "name": "playerLife3_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 443, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_red" + }, + { + "id": "space_shooter/playerShip1_blue", + "name": "playerShip1_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 211, + "y": 941, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_blue" + }, + { + "id": "space_shooter/playerShip1_damage1", + "name": "playerShip1_damage1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 941, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_damage1" + }, + { + "id": "space_shooter/playerShip1_damage2", + "name": "playerShip1_damage2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 234, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_damage2" + }, + { + "id": "space_shooter/playerShip1_damage3", + "name": "playerShip1_damage3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 159, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_damage3" + }, + { + "id": "space_shooter/playerShip1_green", + "name": "playerShip1_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 237, + "y": 377, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_green" + }, + { + "id": "space_shooter/playerShip1_orange", + "name": "playerShip1_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 84, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_orange" + }, + { + "id": "space_shooter/playerShip1_red", + "name": "playerShip1_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 832, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_red" + }, + { + "id": "space_shooter/playerShip2_blue", + "name": "playerShip2_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 791, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_blue" + }, + { + "id": "space_shooter/playerShip2_damage1", + "name": "playerShip2_damage1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 866, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_damage1" + }, + { + "id": "space_shooter/playerShip2_damage2", + "name": "playerShip2_damage2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 791, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_damage2" + }, + { + "id": "space_shooter/playerShip2_damage3", + "name": "playerShip2_damage3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 716, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_damage3" + }, + { + "id": "space_shooter/playerShip2_green", + "name": "playerShip2_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 866, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_green" + }, + { + "id": "space_shooter/playerShip2_orange", + "name": "playerShip2_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 716, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_orange" + }, + { + "id": "space_shooter/playerShip2_red", + "name": "playerShip2_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 941, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_red" + }, + { + "id": "space_shooter/playerShip3_blue", + "name": "playerShip3_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 739, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_blue" + }, + { + "id": "space_shooter/playerShip3_damage1", + "name": "playerShip3_damage1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 323, + "y": 832, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_damage1" + }, + { + "id": "space_shooter/playerShip3_damage2", + "name": "playerShip3_damage2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 310, + "y": 907, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_damage2" + }, + { + "id": "space_shooter/playerShip3_damage3", + "name": "playerShip3_damage3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 664, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_damage3" + }, + { + "id": "space_shooter/playerShip3_green", + "name": "playerShip3_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 75, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_green" + }, + { + "id": "space_shooter/playerShip3_orange", + "name": "playerShip3_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 336, + "y": 309, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_orange" + }, + { + "id": "space_shooter/playerShip3_red", + "name": "playerShip3_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 0, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_red" + }, + { + "id": "space_shooter/powerupBlue", + "name": "powerupBlue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 696, + "y": 329, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue" + }, + { + "id": "space_shooter/powerupBlue_bolt", + "name": "powerupBlue_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 539, + "y": 989, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue_bolt" + }, + { + "id": "space_shooter/powerupBlue_shield", + "name": "powerupBlue_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 679, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue_shield" + }, + { + "id": "space_shooter/powerupBlue_star", + "name": "powerupBlue_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 776, + "y": 895, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue_star" + }, + { + "id": "space_shooter/powerupGreen", + "name": "powerupGreen", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 774, + "y": 613, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen" + }, + { + "id": "space_shooter/powerupGreen_bolt", + "name": "powerupGreen_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 766, + "y": 80, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen_bolt" + }, + { + "id": "space_shooter/powerupGreen_shield", + "name": "powerupGreen_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 776, + "y": 862, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen_shield" + }, + { + "id": "space_shooter/powerupGreen_star", + "name": "powerupGreen_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 490, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen_star" + }, + { + "id": "space_shooter/powerupRed", + "name": "powerupRed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 491, + "y": 182, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed" + }, + { + "id": "space_shooter/powerupRed_bolt", + "name": "powerupRed_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 775, + "y": 646, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed_bolt" + }, + { + "id": "space_shooter/powerupRed_shield", + "name": "powerupRed_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 776, + "y": 928, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed_shield" + }, + { + "id": "space_shooter/powerupRed_star", + "name": "powerupRed_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 774, + "y": 977, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed_star" + }, + { + "id": "space_shooter/powerupYellow", + "name": "powerupYellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 774, + "y": 761, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow" + }, + { + "id": "space_shooter/powerupYellow_bolt", + "name": "powerupYellow_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 740, + "y": 761, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow_bolt" + }, + { + "id": "space_shooter/powerupYellow_shield", + "name": "powerupYellow_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 482, + "y": 325, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow_shield" + }, + { + "id": "space_shooter/powerupYellow_star", + "name": "powerupYellow_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 607, + "y": 857, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow_star" + }, + { + "id": "space_shooter/scratch1", + "name": "scratch1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 814, + "width": 21, + "height": 16, + "direction": 90.0, + "referenceName": "scratch1" + }, + { + "id": "space_shooter/scratch2", + "name": "scratch2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 41, + "width": 21, + "height": 16, + "direction": 90.0, + "referenceName": "scratch2" + }, + { + "id": "space_shooter/scratch3", + "name": "scratch3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 295, + "width": 16, + "height": 12, + "direction": 90.0, + "referenceName": "scratch3" + }, + { + "id": "space_shooter/shield1", + "name": "shield1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 412, + "width": 133, + "height": 108, + "direction": 0.0, + "referenceName": "shield1" + }, + { + "id": "space_shooter/shield2", + "name": "shield2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 293, + "width": 143, + "height": 119, + "direction": 0.0, + "referenceName": "shield2" + }, + { + "id": "space_shooter/shield3", + "name": "shield3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 156, + "width": 144, + "height": 137, + "direction": 0.0, + "referenceName": "shield3" + }, + { + "id": "space_shooter/shield_bronze", + "name": "shield_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 797, + "y": 143, + "width": 30, + "height": 30, + "direction": 90.0, + "referenceName": "shield_bronze" + }, + { + "id": "space_shooter/shield_gold", + "name": "shield_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 797, + "y": 113, + "width": 30, + "height": 30, + "direction": 90.0, + "referenceName": "shield_gold" + }, + { + "id": "space_shooter/shield_silver", + "name": "shield_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 824, + "width": 30, + "height": 30, + "direction": 90.0, + "referenceName": "shield_silver" + }, + { + "id": "space_shooter/speed", + "name": "speed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 284, + "width": 7, + "height": 108, + "direction": 0.0, + "referenceName": "speed" + }, + { + "id": "space_shooter/star1", + "name": "star1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 628, + "y": 681, + "width": 25, + "height": 24, + "direction": 90.0, + "referenceName": "star1" + }, + { + "id": "space_shooter/star2", + "name": "star2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 84, + "width": 25, + "height": 24, + "direction": 90.0, + "referenceName": "star2" + }, + { + "id": "space_shooter/star3", + "name": "star3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 576, + "y": 300, + "width": 24, + "height": 24, + "direction": 90.0, + "referenceName": "star3" + }, + { + "id": "space_shooter/star_bronze", + "name": "star_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 794, + "width": 31, + "height": 30, + "direction": 90.0, + "referenceName": "star_bronze" + }, + { + "id": "space_shooter/star_gold", + "name": "star_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 557, + "width": 31, + "height": 30, + "direction": 90.0, + "referenceName": "star_gold" + }, + { + "id": "space_shooter/star_silver", + "name": "star_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 527, + "width": 31, + "height": 30, + "direction": 90.0, + "referenceName": "star_silver" + }, + { + "id": "space_shooter/things_bronze", + "name": "things_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 495, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "things_bronze" + }, + { + "id": "space_shooter/things_gold", + "name": "things_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 411, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "things_gold" + }, + { + "id": "space_shooter/things_silver", + "name": "things_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 353, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "things_silver" + }, + { + "id": "space_shooter/turretBase_big", + "name": "turretBase_big", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 310, + "y": 982, + "width": 41, + "height": 41, + "direction": 90.0, + "referenceName": "turretBase_big" + }, + { + "id": "space_shooter/turretBase_small", + "name": "turretBase_small", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 808, + "y": 301, + "width": 26, + "height": 26, + "direction": 90.0, + "referenceName": "turretBase_small" + }, + { + "id": "space_shooter/ufoBlue", + "name": "ufoBlue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 444, + "y": 91, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoBlue" + }, + { + "id": "space_shooter/ufoGreen", + "name": "ufoGreen", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 434, + "y": 234, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoGreen" + }, + { + "id": "space_shooter/ufoRed", + "name": "ufoRed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 444, + "y": 0, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoRed" + }, + { + "id": "space_shooter/ufoYellow", + "name": "ufoYellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 505, + "y": 898, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoYellow" + }, + { + "id": "space_shooter/wingBlue_0", + "name": "wingBlue_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 647, + "y": 924, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingBlue_0" + }, + { + "id": "space_shooter/wingBlue_1", + "name": "wingBlue_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 738, + "y": 253, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingBlue_1" + }, + { + "id": "space_shooter/wingBlue_2", + "name": "wingBlue_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 805, + "y": 0, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingBlue_2" + }, + { + "id": "space_shooter/wingBlue_3", + "name": "wingBlue_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 600, + "y": 450, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingBlue_3" + }, + { + "id": "space_shooter/wingBlue_4", + "name": "wingBlue_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 692, + "y": 924, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingBlue_4" + }, + { + "id": "space_shooter/wingBlue_5", + "name": "wingBlue_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 596, + "y": 892, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingBlue_5" + }, + { + "id": "space_shooter/wingBlue_6", + "name": "wingBlue_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 694, + "y": 847, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingBlue_6" + }, + { + "id": "space_shooter/wingBlue_7", + "name": "wingBlue_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 675, + "y": 134, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingBlue_7" + }, + { + "id": "space_shooter/wingGreen_0", + "name": "wingGreen_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 650, + "y": 525, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingGreen_0" + }, + { + "id": "space_shooter/wingGreen_1", + "name": "wingGreen_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 775, + "y": 229, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingGreen_1" + }, + { + "id": "space_shooter/wingGreen_2", + "name": "wingGreen_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 527, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingGreen_2" + }, + { + "id": "space_shooter/wingGreen_3", + "name": "wingGreen_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 535, + "y": 0, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingGreen_3" + }, + { + "id": "space_shooter/wingGreen_4", + "name": "wingGreen_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 694, + "y": 431, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingGreen_4" + }, + { + "id": "space_shooter/wingGreen_5", + "name": "wingGreen_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 525, + "y": 251, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingGreen_5" + }, + { + "id": "space_shooter/wingGreen_6", + "name": "wingGreen_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 695, + "y": 511, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingGreen_6" + }, + { + "id": "space_shooter/wingGreen_7", + "name": "wingGreen_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 655, + "y": 764, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingGreen_7" + }, + { + "id": "space_shooter/wingRed_0", + "name": "wingRed_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 712, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingRed_0" + }, + { + "id": "space_shooter/wingRed_1", + "name": "wingRed_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 768, + "y": 0, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingRed_1" + }, + { + "id": "space_shooter/wingRed_2", + "name": "wingRed_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 600, + "y": 300, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingRed_2" + }, + { + "id": "space_shooter/wingRed_3", + "name": "wingRed_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 698, + "y": 715, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingRed_3" + }, + { + "id": "space_shooter/wingRed_4", + "name": "wingRed_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 586, + "y": 75, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingRed_4" + }, + { + "id": "space_shooter/wingRed_5", + "name": "wingRed_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 718, + "y": 123, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingRed_5" + }, + { + "id": "space_shooter/wingRed_6", + "name": "wingRed_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 653, + "y": 681, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingRed_6" + }, + { + "id": "space_shooter/wingRed_7", + "name": "wingRed_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 286, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingRed_7" + }, + { + "id": "space_shooter/wingYellow_0", + "name": "wingYellow_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 650, + "y": 603, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingYellow_0" + }, + { + "id": "space_shooter/wingYellow_1", + "name": "wingYellow_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 760, + "y": 120, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingYellow_1" + }, + { + "id": "space_shooter/wingYellow_2", + "name": "wingYellow_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 353, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingYellow_2" + }, + { + "id": "space_shooter/wingYellow_3", + "name": "wingYellow_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 576, + "y": 150, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingYellow_3" + }, + { + "id": "space_shooter/wingYellow_4", + "name": "wingYellow_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 726, + "y": 0, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingYellow_4" + }, + { + "id": "space_shooter/wingYellow_5", + "name": "wingYellow_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 525, + "y": 182, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingYellow_5" + }, + { + "id": "space_shooter/wingYellow_6", + "name": "wingYellow_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 695, + "y": 585, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingYellow_6" + }, + { + "id": "space_shooter/wingYellow_7", + "name": "wingYellow_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 364, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingYellow_7" + }, + { + "id": "tappy_plane/UIbg", + "name": "UIbg", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 986, + "width": 264, + "height": 264, + "direction": 90.0, + "referenceName": "UIbg" + }, + { + "id": "tappy_plane/background", + "name": "background", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 355, + "width": 800, + "height": 480, + "direction": 90.0, + "referenceName": "background" + }, + { + "id": "tappy_plane/buttonLarge", + "name": "buttonLarge", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1250, + "width": 196, + "height": 70, + "direction": 90.0, + "referenceName": "buttonLarge" + }, + { + "id": "tappy_plane/buttonSmall", + "name": "buttonSmall", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1320, + "width": 136, + "height": 80, + "direction": 90.0, + "referenceName": "buttonSmall" + }, + { + "id": "tappy_plane/groundDirt", + "name": "groundDirt", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 0, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundDirt" + }, + { + "id": "tappy_plane/groundGrass", + "name": "groundGrass", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 142, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundGrass" + }, + { + "id": "tappy_plane/groundIce", + "name": "groundIce", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 71, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundIce" + }, + { + "id": "tappy_plane/groundRock", + "name": "groundRock", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 284, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundRock" + }, + { + "id": "tappy_plane/groundSnow", + "name": "groundSnow", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 213, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundSnow" + }, + { + "id": "tappy_plane/letterA", + "name": "letterA", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 412, + "y": 835, + "width": 61, + "height": 64, + "direction": 90.0, + "referenceName": "letterA" + }, + { + "id": "tappy_plane/letterB", + "name": "letterB", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 487, + "y": 1537, + "width": 50, + "height": 66, + "direction": 90.0, + "referenceName": "letterB" + }, + { + "id": "tappy_plane/letterC", + "name": "letterC", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 460, + "y": 977, + "width": 52, + "height": 66, + "direction": 90.0, + "referenceName": "letterC" + }, + { + "id": "tappy_plane/letterD", + "name": "letterD", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1613, + "width": 54, + "height": 66, + "direction": 90.0, + "referenceName": "letterD" + }, + { + "id": "tappy_plane/letterE", + "name": "letterE", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 511, + "y": 1965, + "width": 45, + "height": 64, + "direction": 90.0, + "referenceName": "letterE" + }, + { + "id": "tappy_plane/letterF", + "name": "letterF", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 963, + "width": 44, + "height": 64, + "direction": 90.0, + "referenceName": "letterF" + }, + { + "id": "tappy_plane/letterG", + "name": "letterG", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 460, + "y": 1107, + "width": 52, + "height": 66, + "direction": 90.0, + "referenceName": "letterG" + }, + { + "id": "tappy_plane/letterH", + "name": "letterH", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 473, + "y": 835, + "width": 51, + "height": 64, + "direction": 90.0, + "referenceName": "letterH" + }, + { + "id": "tappy_plane/letterI", + "name": "letterI", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 524, + "y": 835, + "width": 22, + "height": 64, + "direction": 90.0, + "referenceName": "letterI" + }, + { + "id": "tappy_plane/letterJ", + "name": "letterJ", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 1027, + "width": 42, + "height": 66, + "direction": 90.0, + "referenceName": "letterJ" + }, + { + "id": "tappy_plane/letterK", + "name": "letterK", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1821, + "width": 53, + "height": 64, + "direction": 90.0, + "referenceName": "letterK" + }, + { + "id": "tappy_plane/letterL", + "name": "letterL", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 899, + "width": 44, + "height": 64, + "direction": 90.0, + "referenceName": "letterL" + }, + { + "id": "tappy_plane/letterM", + "name": "letterM", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 392, + "y": 1967, + "width": 66, + "height": 64, + "direction": 90.0, + "referenceName": "letterM" + }, + { + "id": "tappy_plane/letterN", + "name": "letterN", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1679, + "width": 53, + "height": 64, + "direction": 90.0, + "referenceName": "letterN" + }, + { + "id": "tappy_plane/letterO", + "name": "letterO", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1284, + "width": 60, + "height": 66, + "direction": 90.0, + "referenceName": "letterO" + }, + { + "id": "tappy_plane/letterP", + "name": "letterP", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 489, + "y": 1427, + "width": 48, + "height": 65, + "direction": 90.0, + "referenceName": "letterP" + }, + { + "id": "tappy_plane/letterQ", + "name": "letterQ", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1205, + "width": 60, + "height": 79, + "direction": 90.0, + "referenceName": "letterQ" + }, + { + "id": "tappy_plane/letterR", + "name": "letterR", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 478, + "y": 1249, + "width": 51, + "height": 65, + "direction": 90.0, + "referenceName": "letterR" + }, + { + "id": "tappy_plane/letterS", + "name": "letterS", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 511, + "y": 1899, + "width": 46, + "height": 66, + "direction": 90.0, + "referenceName": "letterS" + }, + { + "id": "tappy_plane/letterT", + "name": "letterT", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 460, + "y": 1043, + "width": 52, + "height": 64, + "direction": 90.0, + "referenceName": "letterT" + }, + { + "id": "tappy_plane/letterU", + "name": "letterU", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 485, + "y": 1757, + "width": 51, + "height": 66, + "direction": 90.0, + "referenceName": "letterU" + }, + { + "id": "tappy_plane/letterV", + "name": "letterV", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 400, + "y": 913, + "width": 61, + "height": 64, + "direction": 90.0, + "referenceName": "letterV" + }, + { + "id": "tappy_plane/letterW", + "name": "letterW", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 136, + "y": 1320, + "width": 76, + "height": 64, + "direction": 90.0, + "referenceName": "letterW" + }, + { + "id": "tappy_plane/letterX", + "name": "letterX", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1409, + "width": 58, + "height": 64, + "direction": 90.0, + "referenceName": "letterX" + }, + { + "id": "tappy_plane/letterY", + "name": "letterY", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1473, + "width": 57, + "height": 64, + "direction": 90.0, + "referenceName": "letterY" + }, + { + "id": "tappy_plane/letterZ", + "name": "letterZ", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 486, + "y": 1613, + "width": 50, + "height": 64, + "direction": 90.0, + "referenceName": "letterZ" + }, + { + "id": "tappy_plane/medalBronze", + "name": "medalBronze", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1400, + "width": 114, + "height": 119, + "direction": 90.0, + "referenceName": "medalBronze" + }, + { + "id": "tappy_plane/medalGold", + "name": "medalGold", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1519, + "width": 114, + "height": 119, + "direction": 90.0, + "referenceName": "medalGold" + }, + { + "id": "tappy_plane/medalSilver", + "name": "medalSilver", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1638, + "width": 114, + "height": 119, + "direction": 90.0, + "referenceName": "medalSilver" + }, + { + "id": "tappy_plane/number0", + "name": "number0", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1743, + "width": 53, + "height": 78, + "direction": 90.0, + "referenceName": "number0" + }, + { + "id": "tappy_plane/number1", + "name": "number1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 1093, + "width": 37, + "height": 76, + "direction": 90.0, + "referenceName": "number1" + }, + { + "id": "tappy_plane/number2", + "name": "number2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 477, + "y": 1350, + "width": 51, + "height": 77, + "direction": 90.0, + "referenceName": "number2" + }, + { + "id": "tappy_plane/number3", + "name": "number3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 485, + "y": 1679, + "width": 51, + "height": 78, + "direction": 90.0, + "referenceName": "number3" + }, + { + "id": "tappy_plane/number4", + "name": "number4", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1537, + "width": 55, + "height": 76, + "direction": 90.0, + "referenceName": "number4" + }, + { + "id": "tappy_plane/number5", + "name": "number5", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 485, + "y": 1823, + "width": 50, + "height": 76, + "direction": 90.0, + "referenceName": "number5" + }, + { + "id": "tappy_plane/number6", + "name": "number6", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1885, + "width": 53, + "height": 77, + "direction": 90.0, + "referenceName": "number6" + }, + { + "id": "tappy_plane/number7", + "name": "number7", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 478, + "y": 1173, + "width": 51, + "height": 76, + "direction": 90.0, + "referenceName": "number7" + }, + { + "id": "tappy_plane/number8", + "name": "number8", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 461, + "y": 899, + "width": 51, + "height": 78, + "direction": 90.0, + "referenceName": "number8" + }, + { + "id": "tappy_plane/number9", + "name": "number9", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 458, + "y": 1962, + "width": 53, + "height": 77, + "direction": 90.0, + "referenceName": "number9" + }, + { + "id": "tappy_plane/planeBlue1", + "name": "planeBlue1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1371, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeBlue1" + }, + { + "id": "tappy_plane/planeBlue2", + "name": "planeBlue2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 372, + "y": 1132, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeBlue2" + }, + { + "id": "tappy_plane/planeBlue3", + "name": "planeBlue3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 222, + "y": 1562, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeBlue3" + }, + { + "id": "tappy_plane/planeGreen1", + "name": "planeGreen1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 114, + "y": 1639, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeGreen1" + }, + { + "id": "tappy_plane/planeGreen2", + "name": "planeGreen2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 216, + "y": 1951, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeGreen2" + }, + { + "id": "tappy_plane/planeGreen3", + "name": "planeGreen3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 222, + "y": 1489, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeGreen3" + }, + { + "id": "tappy_plane/planeRed1", + "name": "planeRed1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 216, + "y": 1878, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeRed1" + }, + { + "id": "tappy_plane/planeRed2", + "name": "planeRed2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 372, + "y": 1059, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeRed2" + }, + { + "id": "tappy_plane/planeRed3", + "name": "planeRed3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 372, + "y": 986, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeRed3" + }, + { + "id": "tappy_plane/planeYellow1", + "name": "planeYellow1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 304, + "y": 1967, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeYellow1" + }, + { + "id": "tappy_plane/planeYellow2", + "name": "planeYellow2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1298, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeYellow2" + }, + { + "id": "tappy_plane/planeYellow3", + "name": "planeYellow3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1225, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeYellow3" + }, + { + "id": "tappy_plane/puffLarge", + "name": "puffLarge", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 114, + "y": 1712, + "width": 42, + "height": 35, + "direction": 90.0, + "referenceName": "puffLarge" + }, + { + "id": "tappy_plane/puffSmall", + "name": "puffSmall", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 196, + "y": 1250, + "width": 25, + "height": 21, + "direction": 90.0, + "referenceName": "puffSmall" + }, + { + "id": "tappy_plane/rock", + "name": "rock", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 114, + "y": 1400, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "tappy_plane/rock" + }, + { + "id": "tappy_plane/rockDown", + "name": "rockDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 324, + "y": 1489, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockDown" + }, + { + "id": "tappy_plane/rockGrass", + "name": "rockGrass", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1757, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockGrass" + }, + { + "id": "tappy_plane/rockGrassDown", + "name": "rockGrassDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 264, + "y": 986, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockGrassDown" + }, + { + "id": "tappy_plane/rockIce", + "name": "rockIce", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 216, + "y": 1639, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockIce" + }, + { + "id": "tappy_plane/rockIceDown", + "name": "rockIceDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 222, + "y": 1250, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockIceDown" + }, + { + "id": "tappy_plane/rockSnow", + "name": "rockSnow", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 324, + "y": 1728, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockSnow" + }, + { + "id": "tappy_plane/rockSnowDown", + "name": "rockSnowDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 108, + "y": 1757, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockSnowDown" + }, + { + "id": "tappy_plane/starBronze", + "name": "starBronze", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 170, + "y": 1996, + "width": 39, + "height": 37, + "direction": 90.0, + "referenceName": "starBronze" + }, + { + "id": "tappy_plane/starGold", + "name": "starGold", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 369, + "y": 1444, + "width": 39, + "height": 37, + "direction": 90.0, + "referenceName": "starGold" + }, + { + "id": "tappy_plane/starSilver", + "name": "starSilver", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1444, + "width": 39, + "height": 37, + "direction": 90.0, + "referenceName": "starSilver" + }, + { + "id": "tappy_plane/tap", + "name": "tap", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 156, + "y": 1712, + "width": 40, + "height": 40, + "direction": 90.0, + "referenceName": "tap" + }, + { + "id": "tappy_plane/tapLeft", + "name": "tapLeft", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1996, + "width": 85, + "height": 42, + "direction": 90.0, + "referenceName": "tapLeft" + }, + { + "id": "tappy_plane/tapRight", + "name": "tapRight", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 85, + "y": 1996, + "width": 85, + "height": 42, + "direction": 90.0, + "referenceName": "tapRight" + }, + { + "id": "tappy_plane/tapTick", + "name": "tapTick", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1350, + "width": 59, + "height": 59, + "direction": 90.0, + "referenceName": "tapTick" + }, + { + "id": "tappy_plane/textGameOver", + "name": "textGameOver", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 835, + "width": 412, + "height": 78, + "direction": 90.0, + "referenceName": "textGameOver" + }, + { + "id": "tappy_plane/textGetReady", + "name": "textGetReady", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 913, + "width": 400, + "height": 73, + "direction": 90.0, + "referenceName": "textGetReady" + }, + { + "id": "cat/cat_idle_1", + "name": "cat_idle_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_1" + }, + { + "id": "cat/cat_idle_2", + "name": "cat_idle_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_2" + }, + { + "id": "cat/cat_idle_6", + "name": "cat_idle_6", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_6" + }, + { + "id": "cat/cat_idle_10", + "name": "cat_idle_10", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_10" + }, + { + "id": "cat/cat_idle_14", + "name": "cat_idle_14", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_14" + }, + { + "id": "cat/cat_idle_18", + "name": "cat_idle_18", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_18" + }, + { + "id": "cat/cat_idle_3", + "name": "cat_idle_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_3" + }, + { + "id": "cat/cat_idle_7", + "name": "cat_idle_7", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_7" + }, + { + "id": "cat/cat_idle_11", + "name": "cat_idle_11", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_11" + }, + { + "id": "cat/cat_idle_15", + "name": "cat_idle_15", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_15" + }, + { + "id": "cat/cat_idle_19", + "name": "cat_idle_19", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_19" + }, + { + "id": "cat/cat_idle_25", + "name": "cat_idle_25", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_25" + }, + { + "id": "cat/cat_idle_4", + "name": "cat_idle_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_4" + }, + { + "id": "cat/cat_idle_8", + "name": "cat_idle_8", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_8" + }, + { + "id": "cat/cat_idle_12", + "name": "cat_idle_12", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_12" + }, + { + "id": "cat/cat_idle_16", + "name": "cat_idle_16", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_16" + }, + { + "id": "cat/cat_idle_26", + "name": "cat_idle_26", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_26" + }, + { + "id": "cat/cat_idle_5", + "name": "cat_idle_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_5" + }, + { + "id": "cat/cat_idle_9", + "name": "cat_idle_9", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_9" + }, + { + "id": "cat/cat_idle_13", + "name": "cat_idle_13", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_13" + }, + { + "id": "cat/cat_idle_17", + "name": "cat_idle_17", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_17" + }, + { + "id": "cat/cat_idle_20", + "name": "cat_idle_20", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 330, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_20" + }, + { + "id": "cat/cat_idle_21", + "name": "cat_idle_21", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 396, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_21" + }, + { + "id": "cat/cat_idle_22", + "name": "cat_idle_22", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 462, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_22" + }, + { + "id": "cat/cat_idle_23", + "name": "cat_idle_23", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 528, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_23" + }, + { + "id": "cat/cat_idle_24", + "name": "cat_idle_24", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 594, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_24" + }, + { + "id": "cat/cat_walk_1", + "name": "cat_walk_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_1" + }, + { + "id": "cat/cat_walk_2", + "name": "cat_walk_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_2" + }, + { + "id": "cat/cat_walk_3", + "name": "cat_walk_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_3" + }, + { + "id": "cat/cat_walk_4", + "name": "cat_walk_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_4" + }, + { + "id": "cat/cat_walk_5", + "name": "cat_walk_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_5" + }, + { + "id": "cat/cat_walk_6", + "name": "cat_walk_6", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 330, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_6" + }, + { + "id": "cat/cat_crouch_1", + "name": "cat_crouch_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_1" + }, + { + "id": "cat/cat_crouch_2", + "name": "cat_crouch_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_2" + }, + { + "id": "cat/cat_crouch_3", + "name": "cat_crouch_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_3" + }, + { + "id": "cat/cat_crouch_4", + "name": "cat_crouch_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_4" + }, + { + "id": "cat/cat_jump_1", + "name": "cat_jump_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 198, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_jump_1" + }, + { + "id": "cat/cat_jump_2", + "name": "cat_jump_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 198, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_jump_2" + }, + { + "id": "cat/cat_jump_3", + "name": "cat_jump_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 198, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_jump_3" + }, + { + "id": "cat/cat_fall_1", + "name": "cat_fall_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 264, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_fall_1" + }, + { + "id": "cat/cat_fall_2", + "name": "cat_fall_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 264, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_fall_2" + }, + { + "id": "cat/cat_land_1", + "name": "cat_land_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 330, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_land_1" + }, + { + "id": "cat/cat_land_2", + "name": "cat_land_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 330, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_land_2" + }, + { + "id": "cat/cat_punch_1", + "name": "cat_punch_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_1" + }, + { + "id": "cat/cat_punch_2", + "name": "cat_punch_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_2" + }, + { + "id": "cat/cat_punch_3", + "name": "cat_punch_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_3" + }, + { + "id": "cat/cat_punch_4", + "name": "cat_punch_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_4" + }, + { + "id": "cat/cat_punch_5", + "name": "cat_punch_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_5" + }, + { + "id": "cat/cat_punch_6", + "name": "cat_punch_6", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_6" + }, + { + "id": "cat/cat_hurt_1", + "name": "cat_hurt_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 462, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_hurt_1" + }, + { + "id": "cat/cat_hurt_2", + "name": "cat_hurt_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 462, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_hurt_2" + }, + { + "id": "cat/cat_hurt_3", + "name": "cat_hurt_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 462, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_hurt_3" + }, + { + "id": "cat/cat_ko_1", + "name": "cat_ko_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_1" + }, + { + "id": "cat/cat_ko_2", + "name": "cat_ko_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_2" + }, + { + "id": "cat/cat_ko_3", + "name": "cat_ko_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_3" + }, + { + "id": "cat/cat_ko_4", + "name": "cat_ko_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_4" + }, + { + "id": "cat/cat_ko_5", + "name": "cat_ko_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_5" + }, + { + "id": "cat/cat_cheer_1", + "name": "cat_cheer_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_1" + }, + { + "id": "cat/cat_cheer_3", + "name": "cat_cheer_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_3" + }, + { + "id": "cat/cat_cheer_2", + "name": "cat_cheer_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_2" + }, + { + "id": "cat/cat_cheer_4", + "name": "cat_cheer_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_4" + }, + { + "id": "cat/cat_climb_1", + "name": "cat_climb_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_1" + }, + { + "id": "cat/cat_climb_2", + "name": "cat_climb_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_2" + }, + { + "id": "cat/cat_climb_4", + "name": "cat_climb_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_4" + }, + { + "id": "cat/cat_climb_3", + "name": "cat_climb_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_3" + }, + { + "id": "cat/coffee_bean_1", + "name": "coffee_bean_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_1" + }, + { + "id": "cat/coffee_bean_2", + "name": "coffee_bean_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_2" + }, + { + "id": "cat/coffee_bean_3", + "name": "coffee_bean_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 68, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_3" + }, + { + "id": "cat/coffee_bean_4", + "name": "coffee_bean_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 102, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_4" + }, + { + "id": "cat/bug_walk_1", + "name": "bug_walk_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_1" + }, + { + "id": "cat/bug_walk_3", + "name": "bug_walk_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_3" + }, + { + "id": "cat/bug_walk_2", + "name": "bug_walk_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_2" + }, + { + "id": "cat/bug_walk_4", + "name": "bug_walk_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 68, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_4" + }, + { + "id": "cat/bug_squished_1", + "name": "bug_squished_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 794, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_squished_1" + }, + { + "id": "cat/bug_squished_2", + "name": "bug_squished_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 794, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_squished_2" + }, + { + "id": "cat/goal_mug_1", + "name": "goal_mug_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_1" + }, + { + "id": "cat/goal_mug_2", + "name": "goal_mug_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_2" + }, + { + "id": "cat/goal_mug_3", + "name": "goal_mug_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 68, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_3" + }, + { + "id": "cat/goal_mug_4", + "name": "goal_mug_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 102, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_4" + }, + { + "id": "cat/heart_full", + "name": "heart_full", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 862, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "heart_full" + }, + { + "id": "cat/heart_empty", + "name": "heart_empty", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 862, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "heart_empty" + } + ], + "sounds": [ + { + "id": "footstep_carpet_000", + "path": "sounds/impact/footstep_carpet_000.ogg" + }, + { + "id": "footstep_carpet_001", + "path": "sounds/impact/footstep_carpet_001.ogg" + }, + { + "id": "footstep_carpet_002", + "path": "sounds/impact/footstep_carpet_002.ogg" + }, + { + "id": "footstep_carpet_003", + "path": "sounds/impact/footstep_carpet_003.ogg" + }, + { + "id": "footstep_carpet_004", + "path": "sounds/impact/footstep_carpet_004.ogg" + }, + { + "id": "footstep_concrete_000", + "path": "sounds/impact/footstep_concrete_000.ogg" + }, + { + "id": "footstep_concrete_001", + "path": "sounds/impact/footstep_concrete_001.ogg" + }, + { + "id": "footstep_concrete_002", + "path": "sounds/impact/footstep_concrete_002.ogg" + }, + { + "id": "footstep_concrete_003", + "path": "sounds/impact/footstep_concrete_003.ogg" + }, + { + "id": "footstep_concrete_004", + "path": "sounds/impact/footstep_concrete_004.ogg" + }, + { + "id": "footstep_grass_000", + "path": "sounds/impact/footstep_grass_000.ogg" + }, + { + "id": "footstep_grass_001", + "path": "sounds/impact/footstep_grass_001.ogg" + }, + { + "id": "footstep_grass_002", + "path": "sounds/impact/footstep_grass_002.ogg" + }, + { + "id": "footstep_grass_003", + "path": "sounds/impact/footstep_grass_003.ogg" + }, + { + "id": "footstep_grass_004", + "path": "sounds/impact/footstep_grass_004.ogg" + }, + { + "id": "footstep_snow_000", + "path": "sounds/impact/footstep_snow_000.ogg" + }, + { + "id": "footstep_snow_001", + "path": "sounds/impact/footstep_snow_001.ogg" + }, + { + "id": "footstep_snow_002", + "path": "sounds/impact/footstep_snow_002.ogg" + }, + { + "id": "footstep_snow_003", + "path": "sounds/impact/footstep_snow_003.ogg" + }, + { + "id": "footstep_snow_004", + "path": "sounds/impact/footstep_snow_004.ogg" + }, + { + "id": "footstep_wood_000", + "path": "sounds/impact/footstep_wood_000.ogg" + }, + { + "id": "footstep_wood_001", + "path": "sounds/impact/footstep_wood_001.ogg" + }, + { + "id": "footstep_wood_002", + "path": "sounds/impact/footstep_wood_002.ogg" + }, + { + "id": "footstep_wood_003", + "path": "sounds/impact/footstep_wood_003.ogg" + }, + { + "id": "footstep_wood_004", + "path": "sounds/impact/footstep_wood_004.ogg" + }, + { + "id": "impactBell_heavy_000", + "path": "sounds/impact/impactBell_heavy_000.ogg" + }, + { + "id": "impactBell_heavy_001", + "path": "sounds/impact/impactBell_heavy_001.ogg" + }, + { + "id": "impactBell_heavy_002", + "path": "sounds/impact/impactBell_heavy_002.ogg" + }, + { + "id": "impactBell_heavy_003", + "path": "sounds/impact/impactBell_heavy_003.ogg" + }, + { + "id": "impactBell_heavy_004", + "path": "sounds/impact/impactBell_heavy_004.ogg" + }, + { + "id": "impactGeneric_light_000", + "path": "sounds/impact/impactGeneric_light_000.ogg" + }, + { + "id": "impactGeneric_light_001", + "path": "sounds/impact/impactGeneric_light_001.ogg" + }, + { + "id": "impactGeneric_light_002", + "path": "sounds/impact/impactGeneric_light_002.ogg" + }, + { + "id": "impactGeneric_light_003", + "path": "sounds/impact/impactGeneric_light_003.ogg" + }, + { + "id": "impactGeneric_light_004", + "path": "sounds/impact/impactGeneric_light_004.ogg" + }, + { + "id": "impactGlass_heavy_000", + "path": "sounds/impact/impactGlass_heavy_000.ogg" + }, + { + "id": "impactGlass_heavy_001", + "path": "sounds/impact/impactGlass_heavy_001.ogg" + }, + { + "id": "impactGlass_heavy_002", + "path": "sounds/impact/impactGlass_heavy_002.ogg" + }, + { + "id": "impactGlass_heavy_003", + "path": "sounds/impact/impactGlass_heavy_003.ogg" + }, + { + "id": "impactGlass_heavy_004", + "path": "sounds/impact/impactGlass_heavy_004.ogg" + }, + { + "id": "impactGlass_light_000", + "path": "sounds/impact/impactGlass_light_000.ogg" + }, + { + "id": "impactGlass_light_001", + "path": "sounds/impact/impactGlass_light_001.ogg" + }, + { + "id": "impactGlass_light_002", + "path": "sounds/impact/impactGlass_light_002.ogg" + }, + { + "id": "impactGlass_light_003", + "path": "sounds/impact/impactGlass_light_003.ogg" + }, + { + "id": "impactGlass_light_004", + "path": "sounds/impact/impactGlass_light_004.ogg" + }, + { + "id": "impactGlass_medium_000", + "path": "sounds/impact/impactGlass_medium_000.ogg" + }, + { + "id": "impactGlass_medium_001", + "path": "sounds/impact/impactGlass_medium_001.ogg" + }, + { + "id": "impactGlass_medium_002", + "path": "sounds/impact/impactGlass_medium_002.ogg" + }, + { + "id": "impactGlass_medium_003", + "path": "sounds/impact/impactGlass_medium_003.ogg" + }, + { + "id": "impactGlass_medium_004", + "path": "sounds/impact/impactGlass_medium_004.ogg" + }, + { + "id": "impactMetal_heavy_000", + "path": "sounds/impact/impactMetal_heavy_000.ogg" + }, + { + "id": "impactMetal_heavy_001", + "path": "sounds/impact/impactMetal_heavy_001.ogg" + }, + { + "id": "impactMetal_heavy_002", + "path": "sounds/impact/impactMetal_heavy_002.ogg" + }, + { + "id": "impactMetal_heavy_003", + "path": "sounds/impact/impactMetal_heavy_003.ogg" + }, + { + "id": "impactMetal_heavy_004", + "path": "sounds/impact/impactMetal_heavy_004.ogg" + }, + { + "id": "impactMetal_light_000", + "path": "sounds/impact/impactMetal_light_000.ogg" + }, + { + "id": "impactMetal_light_001", + "path": "sounds/impact/impactMetal_light_001.ogg" + }, + { + "id": "impactMetal_light_002", + "path": "sounds/impact/impactMetal_light_002.ogg" + }, + { + "id": "impactMetal_light_003", + "path": "sounds/impact/impactMetal_light_003.ogg" + }, + { + "id": "impactMetal_light_004", + "path": "sounds/impact/impactMetal_light_004.ogg" + }, + { + "id": "impactMetal_medium_000", + "path": "sounds/impact/impactMetal_medium_000.ogg" + }, + { + "id": "impactMetal_medium_001", + "path": "sounds/impact/impactMetal_medium_001.ogg" + }, + { + "id": "impactMetal_medium_002", + "path": "sounds/impact/impactMetal_medium_002.ogg" + }, + { + "id": "impactMetal_medium_003", + "path": "sounds/impact/impactMetal_medium_003.ogg" + }, + { + "id": "impactMetal_medium_004", + "path": "sounds/impact/impactMetal_medium_004.ogg" + }, + { + "id": "impactMining_000", + "path": "sounds/impact/impactMining_000.ogg" + }, + { + "id": "impactMining_001", + "path": "sounds/impact/impactMining_001.ogg" + }, + { + "id": "impactMining_002", + "path": "sounds/impact/impactMining_002.ogg" + }, + { + "id": "impactMining_003", + "path": "sounds/impact/impactMining_003.ogg" + }, + { + "id": "impactMining_004", + "path": "sounds/impact/impactMining_004.ogg" + }, + { + "id": "impactPlank_medium_000", + "path": "sounds/impact/impactPlank_medium_000.ogg" + }, + { + "id": "impactPlank_medium_001", + "path": "sounds/impact/impactPlank_medium_001.ogg" + }, + { + "id": "impactPlank_medium_002", + "path": "sounds/impact/impactPlank_medium_002.ogg" + }, + { + "id": "impactPlank_medium_003", + "path": "sounds/impact/impactPlank_medium_003.ogg" + }, + { + "id": "impactPlank_medium_004", + "path": "sounds/impact/impactPlank_medium_004.ogg" + }, + { + "id": "impactPlate_heavy_000", + "path": "sounds/impact/impactPlate_heavy_000.ogg" + }, + { + "id": "impactPlate_heavy_001", + "path": "sounds/impact/impactPlate_heavy_001.ogg" + }, + { + "id": "impactPlate_heavy_002", + "path": "sounds/impact/impactPlate_heavy_002.ogg" + }, + { + "id": "impactPlate_heavy_003", + "path": "sounds/impact/impactPlate_heavy_003.ogg" + }, + { + "id": "impactPlate_heavy_004", + "path": "sounds/impact/impactPlate_heavy_004.ogg" + }, + { + "id": "impactPlate_light_000", + "path": "sounds/impact/impactPlate_light_000.ogg" + }, + { + "id": "impactPlate_light_001", + "path": "sounds/impact/impactPlate_light_001.ogg" + }, + { + "id": "impactPlate_light_002", + "path": "sounds/impact/impactPlate_light_002.ogg" + }, + { + "id": "impactPlate_light_003", + "path": "sounds/impact/impactPlate_light_003.ogg" + }, + { + "id": "impactPlate_light_004", + "path": "sounds/impact/impactPlate_light_004.ogg" + }, + { + "id": "impactPlate_medium_000", + "path": "sounds/impact/impactPlate_medium_000.ogg" + }, + { + "id": "impactPlate_medium_001", + "path": "sounds/impact/impactPlate_medium_001.ogg" + }, + { + "id": "impactPlate_medium_002", + "path": "sounds/impact/impactPlate_medium_002.ogg" + }, + { + "id": "impactPlate_medium_003", + "path": "sounds/impact/impactPlate_medium_003.ogg" + }, + { + "id": "impactPlate_medium_004", + "path": "sounds/impact/impactPlate_medium_004.ogg" + }, + { + "id": "impactPunch_heavy_000", + "path": "sounds/impact/impactPunch_heavy_000.ogg" + }, + { + "id": "impactPunch_heavy_001", + "path": "sounds/impact/impactPunch_heavy_001.ogg" + }, + { + "id": "impactPunch_heavy_002", + "path": "sounds/impact/impactPunch_heavy_002.ogg" + }, + { + "id": "impactPunch_heavy_003", + "path": "sounds/impact/impactPunch_heavy_003.ogg" + }, + { + "id": "impactPunch_heavy_004", + "path": "sounds/impact/impactPunch_heavy_004.ogg" + }, + { + "id": "impactPunch_medium_000", + "path": "sounds/impact/impactPunch_medium_000.ogg" + }, + { + "id": "impactPunch_medium_001", + "path": "sounds/impact/impactPunch_medium_001.ogg" + }, + { + "id": "impactPunch_medium_002", + "path": "sounds/impact/impactPunch_medium_002.ogg" + }, + { + "id": "impactPunch_medium_003", + "path": "sounds/impact/impactPunch_medium_003.ogg" + }, + { + "id": "impactPunch_medium_004", + "path": "sounds/impact/impactPunch_medium_004.ogg" + }, + { + "id": "impactSoft_heavy_000", + "path": "sounds/impact/impactSoft_heavy_000.ogg" + }, + { + "id": "impactSoft_heavy_001", + "path": "sounds/impact/impactSoft_heavy_001.ogg" + }, + { + "id": "impactSoft_heavy_002", + "path": "sounds/impact/impactSoft_heavy_002.ogg" + }, + { + "id": "impactSoft_heavy_003", + "path": "sounds/impact/impactSoft_heavy_003.ogg" + }, + { + "id": "impactSoft_heavy_004", + "path": "sounds/impact/impactSoft_heavy_004.ogg" + }, + { + "id": "impactSoft_medium_000", + "path": "sounds/impact/impactSoft_medium_000.ogg" + }, + { + "id": "impactSoft_medium_001", + "path": "sounds/impact/impactSoft_medium_001.ogg" + }, + { + "id": "impactSoft_medium_002", + "path": "sounds/impact/impactSoft_medium_002.ogg" + }, + { + "id": "impactSoft_medium_003", + "path": "sounds/impact/impactSoft_medium_003.ogg" + }, + { + "id": "impactSoft_medium_004", + "path": "sounds/impact/impactSoft_medium_004.ogg" + }, + { + "id": "impactTin_medium_000", + "path": "sounds/impact/impactTin_medium_000.ogg" + }, + { + "id": "impactTin_medium_001", + "path": "sounds/impact/impactTin_medium_001.ogg" + }, + { + "id": "impactTin_medium_002", + "path": "sounds/impact/impactTin_medium_002.ogg" + }, + { + "id": "impactTin_medium_003", + "path": "sounds/impact/impactTin_medium_003.ogg" + }, + { + "id": "impactTin_medium_004", + "path": "sounds/impact/impactTin_medium_004.ogg" + }, + { + "id": "impactWood_heavy_000", + "path": "sounds/impact/impactWood_heavy_000.ogg" + }, + { + "id": "impactWood_heavy_001", + "path": "sounds/impact/impactWood_heavy_001.ogg" + }, + { + "id": "impactWood_heavy_002", + "path": "sounds/impact/impactWood_heavy_002.ogg" + }, + { + "id": "impactWood_heavy_003", + "path": "sounds/impact/impactWood_heavy_003.ogg" + }, + { + "id": "impactWood_heavy_004", + "path": "sounds/impact/impactWood_heavy_004.ogg" + }, + { + "id": "impactWood_light_000", + "path": "sounds/impact/impactWood_light_000.ogg" + }, + { + "id": "impactWood_light_001", + "path": "sounds/impact/impactWood_light_001.ogg" + }, + { + "id": "impactWood_light_002", + "path": "sounds/impact/impactWood_light_002.ogg" + }, + { + "id": "impactWood_light_003", + "path": "sounds/impact/impactWood_light_003.ogg" + }, + { + "id": "impactWood_light_004", + "path": "sounds/impact/impactWood_light_004.ogg" + }, + { + "id": "impactWood_medium_000", + "path": "sounds/impact/impactWood_medium_000.ogg" + }, + { + "id": "impactWood_medium_001", + "path": "sounds/impact/impactWood_medium_001.ogg" + }, + { + "id": "impactWood_medium_002", + "path": "sounds/impact/impactWood_medium_002.ogg" + }, + { + "id": "impactWood_medium_003", + "path": "sounds/impact/impactWood_medium_003.ogg" + }, + { + "id": "impactWood_medium_004", + "path": "sounds/impact/impactWood_medium_004.ogg" + }, + { + "id": "jingles_NES00", + "path": "sounds/jingles/8-Bit jingles/jingles_NES00.ogg" + }, + { + "id": "jingles_NES01", + "path": "sounds/jingles/8-Bit jingles/jingles_NES01.ogg" + }, + { + "id": "jingles_NES02", + "path": "sounds/jingles/8-Bit jingles/jingles_NES02.ogg" + }, + { + "id": "jingles_NES03", + "path": "sounds/jingles/8-Bit jingles/jingles_NES03.ogg" + }, + { + "id": "jingles_NES04", + "path": "sounds/jingles/8-Bit jingles/jingles_NES04.ogg" + }, + { + "id": "jingles_NES05", + "path": "sounds/jingles/8-Bit jingles/jingles_NES05.ogg" + }, + { + "id": "jingles_NES06", + "path": "sounds/jingles/8-Bit jingles/jingles_NES06.ogg" + }, + { + "id": "jingles_NES07", + "path": "sounds/jingles/8-Bit jingles/jingles_NES07.ogg" + }, + { + "id": "jingles_NES08", + "path": "sounds/jingles/8-Bit jingles/jingles_NES08.ogg" + }, + { + "id": "jingles_NES09", + "path": "sounds/jingles/8-Bit jingles/jingles_NES09.ogg" + }, + { + "id": "jingles_NES10", + "path": "sounds/jingles/8-Bit jingles/jingles_NES10.ogg" + }, + { + "id": "jingles_NES11", + "path": "sounds/jingles/8-Bit jingles/jingles_NES11.ogg" + }, + { + "id": "jingles_NES12", + "path": "sounds/jingles/8-Bit jingles/jingles_NES12.ogg" + }, + { + "id": "jingles_NES13", + "path": "sounds/jingles/8-Bit jingles/jingles_NES13.ogg" + }, + { + "id": "jingles_NES14", + "path": "sounds/jingles/8-Bit jingles/jingles_NES14.ogg" + }, + { + "id": "jingles_NES15", + "path": "sounds/jingles/8-Bit jingles/jingles_NES15.ogg" + }, + { + "id": "jingles_NES16", + "path": "sounds/jingles/8-Bit jingles/jingles_NES16.ogg" + }, + { + "id": "jingles_HIT00", + "path": "sounds/jingles/Hit jingles/jingles_HIT00.ogg" + }, + { + "id": "jingles_HIT01", + "path": "sounds/jingles/Hit jingles/jingles_HIT01.ogg" + }, + { + "id": "jingles_HIT02", + "path": "sounds/jingles/Hit jingles/jingles_HIT02.ogg" + }, + { + "id": "jingles_HIT03", + "path": "sounds/jingles/Hit jingles/jingles_HIT03.ogg" + }, + { + "id": "jingles_HIT04", + "path": "sounds/jingles/Hit jingles/jingles_HIT04.ogg" + }, + { + "id": "jingles_HIT05", + "path": "sounds/jingles/Hit jingles/jingles_HIT05.ogg" + }, + { + "id": "jingles_HIT06", + "path": "sounds/jingles/Hit jingles/jingles_HIT06.ogg" + }, + { + "id": "jingles_HIT07", + "path": "sounds/jingles/Hit jingles/jingles_HIT07.ogg" + }, + { + "id": "jingles_HIT08", + "path": "sounds/jingles/Hit jingles/jingles_HIT08.ogg" + }, + { + "id": "jingles_HIT09", + "path": "sounds/jingles/Hit jingles/jingles_HIT09.ogg" + }, + { + "id": "jingles_HIT10", + "path": "sounds/jingles/Hit jingles/jingles_HIT10.ogg" + }, + { + "id": "jingles_HIT11", + "path": "sounds/jingles/Hit jingles/jingles_HIT11.ogg" + }, + { + "id": "jingles_HIT12", + "path": "sounds/jingles/Hit jingles/jingles_HIT12.ogg" + }, + { + "id": "jingles_HIT13", + "path": "sounds/jingles/Hit jingles/jingles_HIT13.ogg" + }, + { + "id": "jingles_HIT14", + "path": "sounds/jingles/Hit jingles/jingles_HIT14.ogg" + }, + { + "id": "jingles_HIT15", + "path": "sounds/jingles/Hit jingles/jingles_HIT15.ogg" + }, + { + "id": "jingles_HIT16", + "path": "sounds/jingles/Hit jingles/jingles_HIT16.ogg" + }, + { + "id": "jingles_PIZZI00", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI00.ogg" + }, + { + "id": "jingles_PIZZI01", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI01.ogg" + }, + { + "id": "jingles_PIZZI02", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI02.ogg" + }, + { + "id": "jingles_PIZZI03", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI03.ogg" + }, + { + "id": "jingles_PIZZI04", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI04.ogg" + }, + { + "id": "jingles_PIZZI05", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI05.ogg" + }, + { + "id": "jingles_PIZZI06", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI06.ogg" + }, + { + "id": "jingles_PIZZI07", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI07.ogg" + }, + { + "id": "jingles_PIZZI08", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI08.ogg" + }, + { + "id": "jingles_PIZZI09", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI09.ogg" + }, + { + "id": "jingles_PIZZI10", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI10.ogg" + }, + { + "id": "jingles_PIZZI11", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI11.ogg" + }, + { + "id": "jingles_PIZZI12", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI12.ogg" + }, + { + "id": "jingles_PIZZI13", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI13.ogg" + }, + { + "id": "jingles_PIZZI14", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI14.ogg" + }, + { + "id": "jingles_PIZZI15", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI15.ogg" + }, + { + "id": "jingles_PIZZI16", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI16.ogg" + }, + { + "id": "jingles_SAX00", + "path": "sounds/jingles/Sax jingles/jingles_SAX00.ogg" + }, + { + "id": "jingles_SAX01", + "path": "sounds/jingles/Sax jingles/jingles_SAX01.ogg" + }, + { + "id": "jingles_SAX02", + "path": "sounds/jingles/Sax jingles/jingles_SAX02.ogg" + }, + { + "id": "jingles_SAX03", + "path": "sounds/jingles/Sax jingles/jingles_SAX03.ogg" + }, + { + "id": "jingles_SAX04", + "path": "sounds/jingles/Sax jingles/jingles_SAX04.ogg" + }, + { + "id": "jingles_SAX05", + "path": "sounds/jingles/Sax jingles/jingles_SAX05.ogg" + }, + { + "id": "jingles_SAX06", + "path": "sounds/jingles/Sax jingles/jingles_SAX06.ogg" + }, + { + "id": "jingles_SAX07", + "path": "sounds/jingles/Sax jingles/jingles_SAX07.ogg" + }, + { + "id": "jingles_SAX08", + "path": "sounds/jingles/Sax jingles/jingles_SAX08.ogg" + }, + { + "id": "jingles_SAX09", + "path": "sounds/jingles/Sax jingles/jingles_SAX09.ogg" + }, + { + "id": "jingles_SAX10", + "path": "sounds/jingles/Sax jingles/jingles_SAX10.ogg" + }, + { + "id": "jingles_SAX11", + "path": "sounds/jingles/Sax jingles/jingles_SAX11.ogg" + }, + { + "id": "jingles_SAX12", + "path": "sounds/jingles/Sax jingles/jingles_SAX12.ogg" + }, + { + "id": "jingles_SAX13", + "path": "sounds/jingles/Sax jingles/jingles_SAX13.ogg" + }, + { + "id": "jingles_SAX14", + "path": "sounds/jingles/Sax jingles/jingles_SAX14.ogg" + }, + { + "id": "jingles_SAX15", + "path": "sounds/jingles/Sax jingles/jingles_SAX15.ogg" + }, + { + "id": "jingles_SAX16", + "path": "sounds/jingles/Sax jingles/jingles_SAX16.ogg" + }, + { + "id": "jingles_STEEL00", + "path": "sounds/jingles/Steel jingles/jingles_STEEL00.ogg" + }, + { + "id": "jingles_STEEL01", + "path": "sounds/jingles/Steel jingles/jingles_STEEL01.ogg" + }, + { + "id": "jingles_STEEL02", + "path": "sounds/jingles/Steel jingles/jingles_STEEL02.ogg" + }, + { + "id": "jingles_STEEL03", + "path": "sounds/jingles/Steel jingles/jingles_STEEL03.ogg" + }, + { + "id": "jingles_STEEL04", + "path": "sounds/jingles/Steel jingles/jingles_STEEL04.ogg" + }, + { + "id": "jingles_STEEL05", + "path": "sounds/jingles/Steel jingles/jingles_STEEL05.ogg" + }, + { + "id": "jingles_STEEL06", + "path": "sounds/jingles/Steel jingles/jingles_STEEL06.ogg" + }, + { + "id": "jingles_STEEL07", + "path": "sounds/jingles/Steel jingles/jingles_STEEL07.ogg" + }, + { + "id": "jingles_STEEL08", + "path": "sounds/jingles/Steel jingles/jingles_STEEL08.ogg" + }, + { + "id": "jingles_STEEL09", + "path": "sounds/jingles/Steel jingles/jingles_STEEL09.ogg" + }, + { + "id": "jingles_STEEL10", + "path": "sounds/jingles/Steel jingles/jingles_STEEL10.ogg" + }, + { + "id": "jingles_STEEL11", + "path": "sounds/jingles/Steel jingles/jingles_STEEL11.ogg" + }, + { + "id": "jingles_STEEL12", + "path": "sounds/jingles/Steel jingles/jingles_STEEL12.ogg" + }, + { + "id": "jingles_STEEL13", + "path": "sounds/jingles/Steel jingles/jingles_STEEL13.ogg" + }, + { + "id": "jingles_STEEL14", + "path": "sounds/jingles/Steel jingles/jingles_STEEL14.ogg" + }, + { + "id": "jingles_STEEL15", + "path": "sounds/jingles/Steel jingles/jingles_STEEL15.ogg" + }, + { + "id": "jingles_STEEL16", + "path": "sounds/jingles/Steel jingles/jingles_STEEL16.ogg" + }, + { + "id": "beltHandle1", + "path": "sounds/rpg/beltHandle1.ogg" + }, + { + "id": "beltHandle2", + "path": "sounds/rpg/beltHandle2.ogg" + }, + { + "id": "bookClose", + "path": "sounds/rpg/bookClose.ogg" + }, + { + "id": "bookFlip1", + "path": "sounds/rpg/bookFlip1.ogg" + }, + { + "id": "bookFlip2", + "path": "sounds/rpg/bookFlip2.ogg" + }, + { + "id": "bookFlip3", + "path": "sounds/rpg/bookFlip3.ogg" + }, + { + "id": "bookOpen", + "path": "sounds/rpg/bookOpen.ogg" + }, + { + "id": "bookPlace1", + "path": "sounds/rpg/bookPlace1.ogg" + }, + { + "id": "bookPlace2", + "path": "sounds/rpg/bookPlace2.ogg" + }, + { + "id": "bookPlace3", + "path": "sounds/rpg/bookPlace3.ogg" + }, + { + "id": "chop", + "path": "sounds/rpg/chop.ogg" + }, + { + "id": "cloth1", + "path": "sounds/rpg/cloth1.ogg" + }, + { + "id": "cloth2", + "path": "sounds/rpg/cloth2.ogg" + }, + { + "id": "cloth3", + "path": "sounds/rpg/cloth3.ogg" + }, + { + "id": "cloth4", + "path": "sounds/rpg/cloth4.ogg" + }, + { + "id": "clothBelt", + "path": "sounds/rpg/clothBelt.ogg" + }, + { + "id": "clothBelt2", + "path": "sounds/rpg/clothBelt2.ogg" + }, + { + "id": "creak1", + "path": "sounds/rpg/creak1.ogg" + }, + { + "id": "creak2", + "path": "sounds/rpg/creak2.ogg" + }, + { + "id": "creak3", + "path": "sounds/rpg/creak3.ogg" + }, + { + "id": "doorClose_1", + "path": "sounds/rpg/doorClose_1.ogg" + }, + { + "id": "doorClose_2", + "path": "sounds/rpg/doorClose_2.ogg" + }, + { + "id": "doorClose_3", + "path": "sounds/rpg/doorClose_3.ogg" + }, + { + "id": "doorClose_4", + "path": "sounds/rpg/doorClose_4.ogg" + }, + { + "id": "doorOpen_1", + "path": "sounds/rpg/doorOpen_1.ogg" + }, + { + "id": "doorOpen_2", + "path": "sounds/rpg/doorOpen_2.ogg" + }, + { + "id": "drawKnife1", + "path": "sounds/rpg/drawKnife1.ogg" + }, + { + "id": "drawKnife2", + "path": "sounds/rpg/drawKnife2.ogg" + }, + { + "id": "drawKnife3", + "path": "sounds/rpg/drawKnife3.ogg" + }, + { + "id": "dropLeather", + "path": "sounds/rpg/dropLeather.ogg" + }, + { + "id": "footstep00", + "path": "sounds/rpg/footstep00.ogg" + }, + { + "id": "footstep01", + "path": "sounds/rpg/footstep01.ogg" + }, + { + "id": "footstep02", + "path": "sounds/rpg/footstep02.ogg" + }, + { + "id": "footstep03", + "path": "sounds/rpg/footstep03.ogg" + }, + { + "id": "footstep04", + "path": "sounds/rpg/footstep04.ogg" + }, + { + "id": "footstep05", + "path": "sounds/rpg/footstep05.ogg" + }, + { + "id": "footstep06", + "path": "sounds/rpg/footstep06.ogg" + }, + { + "id": "footstep07", + "path": "sounds/rpg/footstep07.ogg" + }, + { + "id": "footstep08", + "path": "sounds/rpg/footstep08.ogg" + }, + { + "id": "footstep09", + "path": "sounds/rpg/footstep09.ogg" + }, + { + "id": "handleCoins", + "path": "sounds/rpg/handleCoins.ogg" + }, + { + "id": "handleCoins2", + "path": "sounds/rpg/handleCoins2.ogg" + }, + { + "id": "handleSmallLeather", + "path": "sounds/rpg/handleSmallLeather.ogg" + }, + { + "id": "handleSmallLeather2", + "path": "sounds/rpg/handleSmallLeather2.ogg" + }, + { + "id": "knifeSlice", + "path": "sounds/rpg/knifeSlice.ogg" + }, + { + "id": "knifeSlice2", + "path": "sounds/rpg/knifeSlice2.ogg" + }, + { + "id": "metalClick", + "path": "sounds/rpg/metalClick.ogg" + }, + { + "id": "metalLatch", + "path": "sounds/rpg/metalLatch.ogg" + }, + { + "id": "metalPot1", + "path": "sounds/rpg/metalPot1.ogg" + }, + { + "id": "metalPot2", + "path": "sounds/rpg/metalPot2.ogg" + }, + { + "id": "metalPot3", + "path": "sounds/rpg/metalPot3.ogg" + } + ] +} diff --git a/docs/public/catalogs/examples.json b/docs/public/catalogs/examples.json new file mode 100644 index 00000000..da2df7c9 --- /dev/null +++ b/docs/public/catalogs/examples.json @@ -0,0 +1,1907 @@ +{ + "schemaVersion": 1, + "libraryVersion": "5.7.0", + "browserVersion": "5.7.0-browser.2", + "examples": [ + { + "id": "demo/cat", + "kind": "demo", + "source": "src/examples/java/demos/cat", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "CatSketch.ctxt", + "sha256": "f0425f9eda65280859247b795144aa7570088d0c95635b7ac4d8f21a494a5282" + }, + { + "path": "CatSketch.java", + "sha256": "720ccf8f24d9c87beaf05c0e130dee65da5c8e2a31d98352a21ea319577df3ea" + }, + { + "path": "sprites/cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + } + ] + }, + { + "id": "demo/catPlatformer", + "kind": "demo", + "source": "src/examples/java/demos/catPlatformer", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "cat", + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Bean.java", + "sha256": "e711aead57857c6d25ff96f5e0de6a969ffd9c1b33f359e3f2bb8a36428f5a10" + }, + { + "path": "Bug.java", + "sha256": "6a6e39b0925985b93f9e5e1c509fe898a9cd13a5dc2cba3f46b3c58eae58677a" + }, + { + "path": "Cat.java", + "sha256": "40752d42d41e75295bbea5463ae5f574b58ddc4a888cde56b319cf57a4484c40" + }, + { + "path": "CatPlatformer.java", + "sha256": "bbe3fe14eee8152747818462485beb514870dc2a5f57a6bec9c164a2c294ecb2" + }, + { + "path": "Goal.java", + "sha256": "a0ab034b3dbf2835a1b85dd1edbb32b67a7774dd8e41b3a493194ba778b97572" + }, + { + "path": "Ground.java", + "sha256": "9515a80cf4c830e9646a64b61c2d3f9eca9fad899438f83fec8566c439643032" + }, + { + "path": "Heart.java", + "sha256": "bd423d745bd2b5ccbc0e765a6b838946411e044e4f51972e325f4cfe21e2d31c" + }, + { + "path": "Ladder.java", + "sha256": "d133f3365cc26cccb4c1c29bdce907bc28b41f2de158cb8b59d869a5e1367d1e" + }, + { + "path": "Platform.java", + "sha256": "7b42871f874fb59bb1849760af9fcd2963540c7b541326a5d2e9631fb21eb1fd" + } + ] + }, + { + "id": "demo/clock", + "kind": "demo", + "source": "src/examples/java/demos/clock", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Clock.class", + "sha256": "e2385a27deb9148840fd3970d3eebc1afe9435ccac77d267e768263e92c7d0b6" + }, + { + "path": "Clock.ctxt", + "sha256": "a960e294f7621fb7227cc21a5bc5e761bd30b49afc2406a0b39b4bd4b710d9ea" + }, + { + "path": "ClockSprite.class", + "sha256": "d8b2710f3fa9c2bf05ce42bd37cb8345601e3c6212d20a33a076c8c3c6f1d25d" + }, + { + "path": "ClockSprite.ctxt", + "sha256": "e0fdbbe2e22df1af27e684de6846215e261693cf1f48357945ea5a67978473aa" + }, + { + "path": "ClockSprite.java", + "sha256": "498b9a3b87b2863f054895e9cc4d668274f15e7b555cc82025e3715fc68dc79b" + }, + { + "path": "ClockStage.java", + "sha256": "1b1a9a5cfbec16b86956258fad2e1243df6f8d70d20a9570a5152a513371577b" + }, + { + "path": "HourHandSprite.class", + "sha256": "e42303dd06146e30882eefe6fa672cf087993441b9347acdd68d465370c72133" + }, + { + "path": "HourHandSprite.ctxt", + "sha256": "e4563507c584bd87322f84a7bb3aac369554eb8358ad5226d1b708350cf54add" + }, + { + "path": "HourHandSprite.java", + "sha256": "afbdbddccfa8e4e2faa0e498d13d8175fb8ccca82f38a6792a9e7b4fe3e9e54b" + }, + { + "path": "MinuteHandSprite.class", + "sha256": "69a6d94a87a4ee79eb1eeae4d77fa1417f916f57ff02eec415c3066e8b8ef3c5" + }, + { + "path": "MinuteHandSprite.ctxt", + "sha256": "c1c794edc010292c0271a543c16f7c8bbe380a189e5e74b8c7dede318a592914" + }, + { + "path": "MinuteHandSprite.java", + "sha256": "654e62b72e7e03b1df52077eefac3b077894f1a64a9f2176c9b72c1fac32a6ef" + }, + { + "path": "SecondHandSprite.class", + "sha256": "0eafa22bfa3e4635e5861972c84aa6e7f14f11bbc1f9db82647a95be749b9952" + }, + { + "path": "SecondHandSprite.ctxt", + "sha256": "ba3487ee3509b252d581a4984334ac1ffb85b7b1f8188eef5cb1987e4747bdf1" + }, + { + "path": "SecondHandSprite.java", + "sha256": "1404a90a1da7fb355b662b7ae5d6d46c4b370d99ea4888cacc3be93e5bb653dd" + }, + { + "path": "sprites/clock.png", + "sha256": "4aa62eaede42134ec9cbc0d22290a82d3c2b6deb9c064f56c34be7af124c41b7" + }, + { + "path": "sprites/clock.svg", + "sha256": "3566b50f76e74e035e68f89df03302fb4887f13ce67d873a497224091e4501d2" + }, + { + "path": "sprites/hour.png", + "sha256": "86dc71146074f166e783459b2c5252bfccc37d54a384d90e604adb4ed0e048ac" + }, + { + "path": "sprites/minute.png", + "sha256": "9023359e8e1273e72dae86678f4f0d1b860e32277b09d8e24977107c60021ad7" + }, + { + "path": "sprites/second.png", + "sha256": "0fa19932a82e616e71b6af073b360cf2dd8939ba73da037ed94bc815b5843241" + } + ] + }, + { + "id": "demo/coinCollector", + "kind": "demo", + "source": "src/examples/java/demos/coinCollector", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Coin.java", + "sha256": "968265215317ce300737ad31da7e07d0b3aff9f09d98f783e5a599bf28203957" + }, + { + "path": "CoinCollector.java", + "sha256": "f8100c3e5db0378bb30a3ff74e7c455e4de3a1781dd23e565ff8c604404c3688" + }, + { + "path": "Ground.java", + "sha256": "6599317ccac9c3c7535da8dd63e4ffa3aed4e59d02a331ae810aec7c5fb54e3a" + }, + { + "path": "Player.java", + "sha256": "7727f61aba83dfc7e368f0f924d313571d7030af54a587eba2c72ba1236129af" + } + ] + }, + { + "id": "demo/donutIO", + "kind": "demo", + "source": "src/examples/java/demos/donutIO", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Background.ctxt", + "sha256": "928fffee1697b0af11be67b58f6b21913f484c87bb1b6e567436ec4327c8ce8a" + }, + { + "path": "Background.java", + "sha256": "1309869222dd8488b6215aa09da058dfafc753d741584c73dfcd33e50a59adfe" + }, + { + "path": "Donut.ctxt", + "sha256": "f43e48901fa8e514397d4ef9a2aa8ae68822546815012ca47195f7f6997e27f4" + }, + { + "path": "Donut.java", + "sha256": "0b4f61e3f7d46d341c2002ebabe8f5039878c2ce189f0621880fa77bfcc71a41" + }, + { + "path": "FollowDonut.ctxt", + "sha256": "041ce42c129381a457e1e6ffe9bc524fd0cfa1410f26ff96a15cd6494e66796b" + }, + { + "path": "FollowDonut.java", + "sha256": "07e45838abc4aa1053b1b3cef7e85850924cbd668ff601c1691063e27875a136" + }, + { + "path": "Game.ctxt", + "sha256": "32f617410e6cd0068706aafc86086cf4ae5ec7ca0f4e274db220f56d4ee7c762" + }, + { + "path": "Game.java", + "sha256": "74d613db1055f1bbcdf4e90b26c7edeb971066be49614ef3b8f5036330649190" + }, + { + "path": "GameOverStage.ctxt", + "sha256": "3b56ea634fcbda7cb669f9e41a7dfd2cd29decbd8b043ec7593a9d860c0ea26d" + }, + { + "path": "GameOverStage.java", + "sha256": "913c81a99e0a8f3b92c8c7bf8889def04cd765a3ec563fdbba9057a45cfc5ab6" + }, + { + "path": "PlayerDonut.ctxt", + "sha256": "8a21359b0e1b2fde96c7e335146bbb2e04a5da4139bf5b9391f6fbba7c54e0d5" + }, + { + "path": "PlayerDonut.java", + "sha256": "dbb1026901d854e2c728ecec7f8d49d83e31e75db93c56a755f7d0d93a9bed97" + }, + { + "path": "StartStage.ctxt", + "sha256": "cc4e75d1c25e1d9e5728c2a582fa1fef347902811a3a391f41bafbe410a63b84" + }, + { + "path": "StartStage.java", + "sha256": "f8419017ad70bb40949a78b17888188b091e57f347898ca495a6dc80c649c896" + }, + { + "path": "WinStage.ctxt", + "sha256": "ddc4334a25724a3df7c614643591d09c9058763b65ce9e9e175eff8e0e3c4b6f" + }, + { + "path": "WinStage.java", + "sha256": "c4c9fa066d10fc19215d56763ec5a67e09f296764dc1f1d57c7023dda269e86f" + }, + { + "path": "WorldStage.ctxt", + "sha256": "8588835d2b413a0e603786d8c1bb55b0600836208bb916eabd99337a6c9b1b96" + }, + { + "path": "WorldStage.java", + "sha256": "2143d816a12266a4a1f3cf244e1ecc42201275718187975002499777396817d1" + }, + { + "path": "assets/donut.png", + "sha256": "1a3106071f180d9f484eaf82c8567d759fa94689f9ee9ba7b122c6daf99bf6db" + }, + { + "path": "assets/donut.svg", + "sha256": "1fb30404f57873f363b2e47711831e7d460df57575946bcb9e626e1f0a71c58c" + }, + { + "path": "assets/grid.png", + "sha256": "4b91fff890e34ddb540e1be514eee580dc138fcaaa9ca41ef2b633344c22467b" + } + ] + }, + { + "id": "demo/glide", + "kind": "demo", + "source": "src/examples/java/demos/glide", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Glide.java", + "sha256": "ae653f7ce351b21cbed2e71f1a02bac9cc31ac37881fd59c2783a45652df4f16" + } + ] + }, + { + "id": "demo/pipes", + "kind": "demo", + "source": "src/examples/java/demos/pipes", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "PenSprite.ctxt", + "sha256": "04b2796df4f437a74936fee3614e5cb54f896b266db1028c7723802283a6cc69" + }, + { + "path": "PenSprite.java", + "sha256": "d582f5bc29738b2d69f9433c4b7a40b9fae7d6451b8f938fba2768b028a9b736" + }, + { + "path": "Pipes.ctxt", + "sha256": "0ad6a99a6b2b6c5641ef9e6a744240851853eadc5d9bc234c711e91184585611" + }, + { + "path": "Pipes.java", + "sha256": "3026f03ca92b00776cccd363d0dafa2e15801dc6578279b0c4cc1ca508c155d1" + }, + { + "path": "backdrops/chalk_board.jpg", + "sha256": "72e78e95fd5a3225b6beb7f681cbc78dcc49e1c3b51ec2d1d140105cadd33389" + }, + { + "path": "sounds/bensound-enigmatic.ogg", + "sha256": "a41a57516dfea5f0a8e0c857bef66ce698197c923d6468992f23d7e94fa34a19" + }, + { + "path": "sprites/pen.png", + "sha256": "dc1c56c00f27c97ba4059f98e7fd3d7f9db8f4b33f2779c461568e09aac9b1dc" + } + ] + }, + { + "id": "demo/quiz", + "kind": "demo", + "source": "src/examples/java/demos/quiz", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Quiz.java", + "sha256": "e7d5e15ce5a8ae60f4f19bda5942784f1a6a3d23e21f0e86f4def2117ca6c9ff" + } + ] + }, + { + "id": "demo/rainbowVine", + "kind": "demo", + "source": "src/examples/java/demos/rainbowVine", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "RainbowVine.ctxt", + "sha256": "893b65df4e627e0e41fe61c83451a4cf9fb9e309aed93db3164c3c28a169fabd" + }, + { + "path": "RainbowVine.java", + "sha256": "a6fc438d97c957b62e0499fb63fbdd970cab0abd744374049158f233693593bb" + } + ] + }, + { + "id": "demo/randomDot", + "kind": "demo", + "source": "src/examples/java/demos/randomDot", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "RandomDot.ctxt", + "sha256": "4ae975d6ed03fa370334ddc03c86924b1f8bbdb488bd89ba80d5b113ff6ea354" + }, + { + "path": "RandomDot.java", + "sha256": "ea0ad9068e6bc875f94aaee7c5e15528c8409b4d4d0b3f819ae795a541cdb0bc" + } + ] + }, + { + "id": "demo/robot", + "kind": "demo", + "source": "src/examples/java/demos/robot", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "RobotSprite.java", + "sha256": "ae603a01374a9838a2430ebd7d9de573df7f9fd5d83780c17c3c24966b2ce3a2" + }, + { + "path": "RobotStage.java", + "sha256": "587f25bbe2b14b6cece3ca64df11c4aad6adac66739a0b8ae02354c11110d81b" + }, + { + "path": "sprites/robot.png", + "sha256": "e3426e0f0fbcd9f472326a39f45089ce074797d85c6ce8a42ca6fbf21a1b92a0" + } + ] + }, + { + "id": "demo/saving", + "kind": "demo", + "source": "src/examples/java/demos/saving", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "ExampleSettings.class", + "sha256": "9ed58f7c1ffaade0add634819a1dd8308f7636632144b3a285815ce17c0b87d4" + }, + { + "path": "ExampleSettings.ctxt", + "sha256": "c9ddd1270673bc58cbf59167f9b5f39e680f16bb08f6ddd0f3319872937e0823" + }, + { + "path": "ExampleSettings.java", + "sha256": "45cefc5bb42d659e1d077f6cb08d5a61b64b05d80fc65e8d71b8e4aad740b75d" + }, + { + "path": "Saving.class", + "sha256": "b23649e8611ce04e037ec21761fac333edbafd74e01f90908be8d20f89a246f2" + }, + { + "path": "Saving.ctxt", + "sha256": "d87b7c8939e43df7044652428bc71292949d82bf3e1080a45719fe51c9a7b3c3" + }, + { + "path": "Saving.java", + "sha256": "083c69f9950f753e83a21bc722b4d91bdf476d6bb5d73f41d939c27d4ff60ac6" + } + ] + }, + { + "id": "demo/sensing", + "kind": "demo", + "source": "src/examples/java/demos/sensing", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Sensing.java", + "sha256": "fb506f93964443ada7a50cdda42c0aea955b1c76886108d9bec59c18fd282394" + }, + { + "path": "sprites/hero.png", + "sha256": "c2c48af7fae8913bbe5b175296e07e1b2c05d7b0e557a403c7c7055f0eaafbc7" + }, + { + "path": "sprites/hero2.png", + "sha256": "fc49e2ed1f0e7546c2f5fb7250447b7ca1ca8be70ed74469ab4d97a12e7b8a88" + } + ] + }, + { + "id": "demo/shader", + "kind": "demo", + "source": "src/examples/java/demos/shader", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "LightSprite.ctxt", + "sha256": "ae5012fbc67213f2cb843984467c3eab8cd203ede506a7bff3cc29aee2943743" + }, + { + "path": "LightSprite.java", + "sha256": "3e8e37f53699f06e7d6c1e9838670b9a52f4eeab8289cabf94e5e7f86a5d2bd0" + }, + { + "path": "MySprite.ctxt", + "sha256": "528b4e6b95dcdcbb7064d7a3867fedca6db69f968a4d3d6929506c67bfb0ded7" + }, + { + "path": "MySprite.java", + "sha256": "fbc85f8ec07d603cc62e7fcf2d47a8eb1a9e6e17ccc60bab4508f6feab2ce60f" + }, + { + "path": "MyStage.ctxt", + "sha256": "fb7fcc3280c829e9aee2eb6ea0f7fa9e2b098b7f2951749a492faff83c0aded4" + }, + { + "path": "MyStage.java", + "sha256": "d4cfacd6f2749b5e703b3f2f6668d46f30340356d6787f629b744b833a7899a1" + }, + { + "path": "MyWindow.ctxt", + "sha256": "48638300d8d294aaef715d2aa33a0057a13de7880d217a4c852c99aebe88c56c" + }, + { + "path": "NormalSprite.ctxt", + "sha256": "ce8686adf891caaab2d194fd31b4a29d34360f5202b45e871c3e47c86c045432" + }, + { + "path": "NormalSprite.java", + "sha256": "e645c87cb21f235ad255eec06ca4558b019b5f9f773182b12d3bfc8df29ba612" + }, + { + "path": "ShaderExample.java", + "sha256": "df96b2c473b62166e2ac533ac4daac394ec3bd9ced8cebf3b431dc524b75ba93" + }, + { + "path": "blobby.frag", + "sha256": "384933079eec3bb08beb0b141bec7cd59ff7ef17c4a8fa706e3c4f1640dba55b" + }, + { + "path": "cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + }, + { + "path": "default.vert", + "sha256": "74b864ff74fb681af02ede001826b988ec94edcbb2c3b3377cd08975edca7cbf" + }, + { + "path": "glitch.frag", + "sha256": "cc97afe4a6df211c95abf0dead361f05d32cf4e42d042d78ad47f22a3c1fdb5d" + }, + { + "path": "halftone.frag", + "sha256": "64e2eb806ed07b091fa5d9c15329cf776d2950832021fb985172edebd0c0df71" + }, + { + "path": "light.frag", + "sha256": "cbb7e7c862a6944b620919c8643b40f8986a6dcc389e2308966fa5f50694e551" + }, + { + "path": "light.png", + "sha256": "8e64a24aedd5860c5573d818d708d8ba8ba2772d33ec86175eca26acb8ecb631" + }, + { + "path": "neon.frag", + "sha256": "8e875c5eb0cc2884d3470ae96797bf3708e01eb1725a98ad560414d5c9493f75" + }, + { + "path": "pixel.frag", + "sha256": "3b3d471cd76f42313008ffaa3019fd382e80916ddc990c48b748786a54f5796f" + }, + { + "path": "pixelate.frag", + "sha256": "7d0842e4fc000f92a2ac9cf113fce083b7c2c5e5bb43c2cb2edfbf0bc045075b" + } + ] + }, + { + "id": "demo/shakespeare", + "kind": "demo", + "source": "src/examples/java/demos/shakespeare", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "DNA.java", + "sha256": "d7fb514623ec03739084107481332ee1e68f24f288ac10cf278266100ba52e1a" + }, + { + "path": "Population.java", + "sha256": "1225987f167ca4db84acb4be8b3f1e57f089c122617409b09dcf13e0fd851eb8" + }, + { + "path": "Shakespeare.java", + "sha256": "bc83a9c98e6bc68976626c097e8058fd1bacb30bf43e5fdc91851b7a0fddeb3b" + }, + { + "path": "assets/Singkong.ttf", + "sha256": "0e4ccf7a12fe3282f2f8622ff1612206675d283f2881582f81ebba4702c4e0c2" + } + ] + }, + { + "id": "demo/smartRocket", + "kind": "demo", + "source": "src/examples/java/demos/smartRocket", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "DNA.ctxt", + "sha256": "98794aa9e549f0edaeed468e530fd4cd55e99601b2a30713c35be97d2c2c5cf0" + }, + { + "path": "DNA.java", + "sha256": "a032039dcd704fd3d7cabc8899cd3f94938aa74e767f0211560124612b38f59b" + }, + { + "path": "Level.ctxt", + "sha256": "a048cdb9d29e029b5f6dec0ad60a050e336cdf11572195d92c25c71331ea0399" + }, + { + "path": "Level.java", + "sha256": "6d65f2fda636d2f51f9184cfc87650491e0f31690cf374c9fff7ef6cfd48aa59" + }, + { + "path": "Population.ctxt", + "sha256": "a5fd04c02b7c3f63c5a3e14a70073b743ef60187b2f725ecab8f6046ec38fe37" + }, + { + "path": "Population.java", + "sha256": "eb21b9da4d7c03a1e6b8b5042a7d48ec5d16c80417915d80710d9ef011df7203" + }, + { + "path": "Rocket.ctxt", + "sha256": "42435a32b0244f81eadc863452dffc7bbe18be9bf74fc58da1aee46825a9686b" + }, + { + "path": "Rocket.java", + "sha256": "a6245304fc1ae2d9824e5c325ff2dcc697e61eb498d8808df165836ad46514b8" + }, + { + "path": "SmartRocket.ctxt", + "sha256": "16a36a50aafe1b7ada036a7b9e61354aafb0423677ba0c5626ed05265f12f4dc" + }, + { + "path": "SmartRocket.java", + "sha256": "865b4f7ecd65133e52d9e00d0a94ef248eee2ce1462af6109ca307d4aaaff9be" + }, + { + "path": "Ziel.ctxt", + "sha256": "37e64e2c172d4e8263b83b0b603d94e200f47cd38496d28c0c4300b8079e452f" + }, + { + "path": "Ziel.java", + "sha256": "e82ad1e3accf297c08135a588a3765e270857dc76ff70df91751f79321cc71f5" + }, + { + "path": "assets/rocket.png", + "sha256": "e459d96e8fb8c399efe9205796da70d2b652e584c82ecff5a2bb8a1963bdc428" + }, + { + "path": "assets/target.png", + "sha256": "d56b2aa9d5a9dac9bec50487138341ec3d16d703ab83eda47fbb2d6203d4c57d" + } + ] + }, + { + "id": "demo/stressTest", + "kind": "demo", + "source": "src/examples/java/demos/stressTest", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Character$1.class", + "sha256": "c54b3302c596103fbb7c10ff55575d27278e6df2d0a7c26fde7fab8a6b6cee43" + }, + { + "path": "Character.class", + "sha256": "2d20a2d119b2a2b31e395a16c61d3af8f80ea0559deb86fb4b2e8b7aba001c0d" + }, + { + "path": "Character.ctxt", + "sha256": "2d221a16e536712cdd95b8772539e5ca0ceb203aa1b12b123ccac427780e70da" + }, + { + "path": "CharacterState.class", + "sha256": "850c11afb05ad164fa316d2edfad7478ff36d5d865a159c8702e3cff0e13af4f" + }, + { + "path": "CharacterState.ctxt", + "sha256": "7b6d2b9e8f1ba867699553cc6b946185eee057d3e8d07316df78bcfd64730a2e" + }, + { + "path": "Dino.class", + "sha256": "9a4f79cb8e642b3dae71afc717fb98ca9ff00d54761567747257cfcce8370d47" + }, + { + "path": "Dino.ctxt", + "sha256": "ebfd59731c6410ab84c229bc2ed240fdf9d781e0c3b092e8d36d8b08d0bcf9f4" + }, + { + "path": "Dino.java", + "sha256": "d65f08c55ec15351ff77d625e3d8797d12dc24e877ea7dfe2c05ba576153c7d1" + }, + { + "path": "Figure.java", + "sha256": "345693eb286fb99f5fdb74a6f892130362b3eb9c973004434a38c172dc3e2a3e" + }, + { + "path": "FigureState.java", + "sha256": "5dcedf8f434d2d16809700a117377e7a527feecc48c4267d61206c2c0cf72a69" + }, + { + "path": "Knight.class", + "sha256": "eff5f2da50488896b663e4fd1895a60766bddea06b82988e19f09c83138498c7" + }, + { + "path": "Knight.ctxt", + "sha256": "b99051a2ba771b2ec034ec583f18a56f9263c1b5a1980b58ce9a4c1b86adf060" + }, + { + "path": "Knight.java", + "sha256": "5984f9ce9d6ce09247f0b5ae45b752e809e7fe1bffdf0a0f2b468cd2360470f3" + }, + { + "path": "Ninja.class", + "sha256": "d3b1c73c1efe9839fbe8105a2ca3251356f228e2cd97f3e096716c2622891216" + }, + { + "path": "Ninja.ctxt", + "sha256": "f52f8ff8464b4abe32573730ea4adc43471e20a4c707e1ff99f01233df024be3" + }, + { + "path": "Ninja.java", + "sha256": "cf6cf2d953366cd7b11c186a1fe01103788a2c9ad221c9ad58531ba402e9dbb5" + }, + { + "path": "StressTest.class", + "sha256": "42bc2bf49062b8fe6d78db099858c0c4381338b06a3a43f353ababa8591e9896" + }, + { + "path": "StressTest.ctxt", + "sha256": "390de6aefa294d1cb9d2b405ed8d39b1f239d5a0b4aac273c20f375615083ee6" + }, + { + "path": "StressTest.java", + "sha256": "e8566d3630cd0b6767c5fab6d4e774bd8d3d857fbd4a0f6517f4dcf36fba9bf4" + }, + { + "path": "assets/dino/Idle (1).png", + "sha256": "5a5507544b8bd548d21107ae9cfaa9adedf1d8ca893e67e0c5598fd2b5c154d6" + }, + { + "path": "assets/dino/Idle (10).png", + "sha256": "da4d5bbb19dcf39d249e498ca96e11bddada2a84af48a5f1ca2089a490573c77" + }, + { + "path": "assets/dino/Idle (2).png", + "sha256": "983cee1459218c3840f025ff11dd9471bbe0f236486ebae1d8c282628ddd6539" + }, + { + "path": "assets/dino/Idle (3).png", + "sha256": "5a57aa76e9a3ed48cc4c98842c2c11f286001fa5de44abe3763b7b353b76d18f" + }, + { + "path": "assets/dino/Idle (4).png", + "sha256": "745e0448bbeb086dcf534a1c7c1e1e3430c195f5da6455a194e0699c18cdd0d3" + }, + { + "path": "assets/dino/Idle (5).png", + "sha256": "3cfd09a9fe8e3bb57cb6e7ebff89335dd77082a7c4e541659c65f99094dc3647" + }, + { + "path": "assets/dino/Idle (6).png", + "sha256": "114b32b8ac4a3298a3fa904371140476fb642224905932e2d3f8b1888b209a11" + }, + { + "path": "assets/dino/Idle (7).png", + "sha256": "562ef3c99b1272535b25929c70bb1e85fc73f7d57d99f5cb2a87eaf9f29b90f3" + }, + { + "path": "assets/dino/Idle (8).png", + "sha256": "5e065cc1c4011cbbd94b0de89ad0cca66c8d6daf8a9cb499c45993508e3f2f75" + }, + { + "path": "assets/dino/Idle (9).png", + "sha256": "b9749fe9651f851dc668ab6799282bc840f921681e41632428bc5a2196df141b" + }, + { + "path": "assets/dino/LICENSE", + "sha256": "41ddb588901b4a011ec2c39dc469619fc39dbf24cd9d3d3e705a8d6d9c057a48" + }, + { + "path": "assets/dino/Run (1).png", + "sha256": "7c9413292b23282208285ce71572f15530f1b8006169f4d5c71945bd5f33c348" + }, + { + "path": "assets/dino/Run (2).png", + "sha256": "ed19846de2252f3acbe08f0db10b24830d0293c3abf11c94124da7a177cd7099" + }, + { + "path": "assets/dino/Run (3).png", + "sha256": "4defb15ffe20561b77d3a3120d6d822fea184907f651be13bd78de20907bbdd8" + }, + { + "path": "assets/dino/Run (4).png", + "sha256": "379025216e878055da8a488a0e90979a563425c8e85ad5886caea37bdd9d9ec4" + }, + { + "path": "assets/dino/Run (5).png", + "sha256": "6f68b216e7528402ab1f0328760af4afdd2689d47b561dde067df38303ba1561" + }, + { + "path": "assets/dino/Run (6).png", + "sha256": "7765bae61c2c89866f0ac5f77bed070e3768a557654072c38d9b2d2326f8665e" + }, + { + "path": "assets/dino/Run (7).png", + "sha256": "bfbdd6350d890a0a95183f2d92319328caa36dd4c5bca0436b2448d3907fe009" + }, + { + "path": "assets/dino/Run (8).png", + "sha256": "c877c9363595e93597b303d776b966c5dc4a08ecb4ec6fce2b618ac2d8fd09b8" + }, + { + "path": "assets/dino/Walk (1).png", + "sha256": "03eaac74a29a8275e08813a04274a55d6d048952d52afa21bfa9c1885a53288b" + }, + { + "path": "assets/dino/Walk (10).png", + "sha256": "c4d281e972230304095ef3739d5fe3b6432666cc715e5fa17e768cf6bea0e6aa" + }, + { + "path": "assets/dino/Walk (2).png", + "sha256": "1c3388e5a87aa73e76ed423c007f412146e6e5ccd8f3d02411e3616ce273d59e" + }, + { + "path": "assets/dino/Walk (3).png", + "sha256": "b5df437fea73b909af59869828ad11dd5c4e41f5f7f2e138bcf489d40ebeffc7" + }, + { + "path": "assets/dino/Walk (4).png", + "sha256": "536aba6c1b2e8629c5c252c9bd9dfe4db24865a69ff9a8e3f0c895bb4f68b6f4" + }, + { + "path": "assets/dino/Walk (5).png", + "sha256": "8aaca1f70101d07c303f6a9a585d6c8cd982af151269fcf7e9819d83d700337e" + }, + { + "path": "assets/dino/Walk (6).png", + "sha256": "cc549f0864920a1a91d0871ff0d4d183d1cf17d83a27ba173b8a0f92e72ffc7f" + }, + { + "path": "assets/dino/Walk (7).png", + "sha256": "59a842c2ec44dfe826e2f21b3fd1dfc2963835add460085b275619eb04f83adb" + }, + { + "path": "assets/dino/Walk (8).png", + "sha256": "3ae05a7c2aaccd4619d55743f07f8ec1fd5c070bba90fedfc7583467f5ccd372" + }, + { + "path": "assets/dino/Walk (9).png", + "sha256": "7346764788de8d010edc91fb22c569ec68305f5238278621115ccf060b31ab0b" + }, + { + "path": "assets/knight/Idle (1).png", + "sha256": "4b6d4d9dbf5e776ec29182e49f10a502706005f4ff16906f9e946c4f58df9a00" + }, + { + "path": "assets/knight/Idle (10).png", + "sha256": "7b9820b9548b1fd8295dc41d1dfdc80f640b3265394828916e8abb9583237303" + }, + { + "path": "assets/knight/Idle (2).png", + "sha256": "8383c766cece063cddad8ff222c75ee2c281a73f4b2ef19f050c5f4a4eef87b0" + }, + { + "path": "assets/knight/Idle (3).png", + "sha256": "2398b3f7adb8dbbdc842905875554d7534544b0b8a5ed5f43365d39fab3dd9a9" + }, + { + "path": "assets/knight/Idle (4).png", + "sha256": "1dba5fc199c72e4b64a46335de38564cb31e3040473acdcfee15d80d5240cfb3" + }, + { + "path": "assets/knight/Idle (5).png", + "sha256": "880d23363c9f98439be163902d33bb22b8e7badb74417c2b4c3e33b2aa43abc9" + }, + { + "path": "assets/knight/Idle (6).png", + "sha256": "98f0596f2e217b30954f387e87158f5f84ba240a8dd7cbbb4317eff0f5cd226a" + }, + { + "path": "assets/knight/Idle (7).png", + "sha256": "9fef5f0f6979017e9ec57c76e2ae5bfb113ec1e94058b1045725144fd1cbb2a9" + }, + { + "path": "assets/knight/Idle (8).png", + "sha256": "ff3607f8ec62a73f2a50701f3bfa0eaf23ccd54b51895f88dbc7faa933e8b539" + }, + { + "path": "assets/knight/Idle (9).png", + "sha256": "87290c26d989986ad165714e66b96f91b13a9e186457703e1c31b4dae5f16daa" + }, + { + "path": "assets/knight/LICENSE", + "sha256": "41ddb588901b4a011ec2c39dc469619fc39dbf24cd9d3d3e705a8d6d9c057a48" + }, + { + "path": "assets/knight/Run (1).png", + "sha256": "583cb89513c8751b93aebb5fb90f1361a6289b38bc7e4edba9daff5211084359" + }, + { + "path": "assets/knight/Run (10).png", + "sha256": "f5a0f7a74f3488e0a653f3755b4c31dde6f271cf38223a78023cadc0b1f6c256" + }, + { + "path": "assets/knight/Run (2).png", + "sha256": "8f28f129a99478b4047680cfd610d1639b02b080a5cbc6e4e43899944af4f807" + }, + { + "path": "assets/knight/Run (3).png", + "sha256": "d15180f29cf929491321fd2cb8dcd4e9070d907e433be3189b3f4126c9d70764" + }, + { + "path": "assets/knight/Run (4).png", + "sha256": "301411a800855e958327dbad85fc03a61b9a8d48c6b498cf5e04edf9a4f2c4cd" + }, + { + "path": "assets/knight/Run (5).png", + "sha256": "ad4364d8efbdf3ebe1f39027db941f132c07f503e2e135a6e0e7e1f425d609bd" + }, + { + "path": "assets/knight/Run (6).png", + "sha256": "277bdd09098e59e931e4cae2725960e2ff043ff4e18723b6a90c164bfb7d77d9" + }, + { + "path": "assets/knight/Run (7).png", + "sha256": "1a29dcc0e4af930e79aa323b6ba6c3389285b385007be1b73b6d155e6fe4128a" + }, + { + "path": "assets/knight/Run (8).png", + "sha256": "12135dad389f2c3e960fcebe8c93a1b63fdd5e31336b0d785ea494e22cb4a2ee" + }, + { + "path": "assets/knight/Run (9).png", + "sha256": "e343327bcf5b00affa1aa3a106a0226d3583fdd189e44c3b80a387572091efc4" + }, + { + "path": "assets/knight/Walk (1).png", + "sha256": "955c15b659e10ed4cebc643c54103b6a44f6416a6939dc5b6d5cc557cb75f9ad" + }, + { + "path": "assets/knight/Walk (10).png", + "sha256": "59ffbc390b816191c77ed43a0413fc787b1f7b8351bf23d4417f999765790392" + }, + { + "path": "assets/knight/Walk (2).png", + "sha256": "5de5cccce717a475601ad3ea15c1be72521c9440510d1b282185c3e1c129e13b" + }, + { + "path": "assets/knight/Walk (3).png", + "sha256": "cf19653994521807a80130ffe57040bc64a5a25389497b6ae959d9e94e8f7d7c" + }, + { + "path": "assets/knight/Walk (4).png", + "sha256": "d7369d0871f658488c771df762559848068677aebe61580e48360e2966eedfac" + }, + { + "path": "assets/knight/Walk (5).png", + "sha256": "4d61315a5b709747e87ef1579e08511a8646b63d19006de627def0685359fcab" + }, + { + "path": "assets/knight/Walk (6).png", + "sha256": "c2085e09e60c936c025c16fb0ff77a2cd5eb652c40d7a057ef57b2abb210f901" + }, + { + "path": "assets/knight/Walk (7).png", + "sha256": "1d142843fc0ac6db840a0914cfdfb5baaf2633af36f11329a28a9d98e5b1a174" + }, + { + "path": "assets/knight/Walk (8).png", + "sha256": "f22d91ce3e47ff33897063f7e968f685233c34718baf0cc567867d43ea6a6798" + }, + { + "path": "assets/knight/Walk (9).png", + "sha256": "ee09f04c688e818aaeac1f1981d492120f92c94a823d3ca0d77f90e5a5721cfe" + }, + { + "path": "assets/ninja/Idle (1).png", + "sha256": "0e8d98d16b056815c84f15bd095d47087c4dceac5880218b0466d37c573b8435" + }, + { + "path": "assets/ninja/Idle (10).png", + "sha256": "d402a6f4ad672e9f010764a426f90ab3ddfe04f924eed09c6eeded42ed98ca82" + }, + { + "path": "assets/ninja/Idle (2).png", + "sha256": "e7089bff695efef7bb2a62e0ead0d2f3334adca21a9adfc61e273010605c1142" + }, + { + "path": "assets/ninja/Idle (3).png", + "sha256": "8573a41086a0b6db1cc4f8f26ff4f525361d1e5a1483159996d7a3f385a6d83c" + }, + { + "path": "assets/ninja/Idle (4).png", + "sha256": "ae706a981eaa808fa29459e73a2f5b783de316f089284295a5857fce0f0c28ba" + }, + { + "path": "assets/ninja/Idle (5).png", + "sha256": "2952a1475585b3577f0643b01c3f713b36416354d5f6dbfb2d3f699fe6df4671" + }, + { + "path": "assets/ninja/Idle (6).png", + "sha256": "45d5e685296a7e1369bd107f0a474efcfca66a86eb0702f58c768b32056b847d" + }, + { + "path": "assets/ninja/Idle (7).png", + "sha256": "ef22c61ee05024cb3eee41a9844f04104f90d650c99038d6463107a5623ae125" + }, + { + "path": "assets/ninja/Idle (8).png", + "sha256": "4b337b7fe5364464b6cc28159609d0931d7d58004c45a59a2051326b4c753aa1" + }, + { + "path": "assets/ninja/Idle (9).png", + "sha256": "8c5805a5174380fc5aba30907c0d3170c91dc014879610cb5e9e6b2c0331983d" + }, + { + "path": "assets/ninja/Run (1).png", + "sha256": "166c069c125c24647cf1ddf8125be7596ff0e343bd672931f4260f4a8adc87ad" + }, + { + "path": "assets/ninja/Run (10).png", + "sha256": "c675b3bb8d58abd12cdc14dbd17f850024938ee747b225d0c8b3f7d4306e18a9" + }, + { + "path": "assets/ninja/Run (2).png", + "sha256": "199ed64724fec0582fa23290f54d6bb81b6f470078cf9d714cf84e75426b530e" + }, + { + "path": "assets/ninja/Run (3).png", + "sha256": "d92601cbae9825843712a2bac073424523910fa50d598f3b989a179d7c4b44a6" + }, + { + "path": "assets/ninja/Run (4).png", + "sha256": "c98bb0e654454674d4a73dda2f0255136a7ddd21424294a3a4ebe69dbb8c3f19" + }, + { + "path": "assets/ninja/Run (5).png", + "sha256": "f4491b94c618545aed63cf6571ddd9cd3b376ae0517653cd5b2a7761e89d0daa" + }, + { + "path": "assets/ninja/Run (6).png", + "sha256": "9003fa5099305f05b5fb269ffdf2f4b961d72353fedad946b05594f5e4c7a939" + }, + { + "path": "assets/ninja/Run (7).png", + "sha256": "fe2bd878b84d0db115dae64656904cf7ac70afdbe1ef70b3acbeb4da797085a9" + }, + { + "path": "assets/ninja/Run (8).png", + "sha256": "b4ab32fd8497c1d9938a97a02705a49da439239261da56d024c9e2eb4a5c994d" + }, + { + "path": "assets/ninja/Run (9).png", + "sha256": "9cec762184ecc45d6f6280dd2fd902d7a3717b77e4f06155ea3923756b8fe31a" + }, + { + "path": "assets/ninja/Walk (1).png", + "sha256": "cdef02a5555f3cd4ef85ad76a6efbf7c91f7b9b1ec78ef65c662db684e7529a0" + }, + { + "path": "assets/ninja/Walk (10).png", + "sha256": "4355a26cad8e9aebe6577d81a387daf0802a7da520e655db93343f568d7a3ebb" + }, + { + "path": "assets/ninja/Walk (2).png", + "sha256": "8013fddefb284075164858edb2ceee216347e265fcff69b374ce4a4264b30897" + }, + { + "path": "assets/ninja/Walk (3).png", + "sha256": "707ddc7fb87b4ddc18c81352cc653b89c3b942ebcb4d9256dea6ba5d2685f00e" + }, + { + "path": "assets/ninja/Walk (4).png", + "sha256": "03d8cd607dc37de0aef1883919bc0313bffee85b445658b18411f52e47ad81e8" + }, + { + "path": "assets/ninja/Walk (5).png", + "sha256": "c5ec5152a19b8fc1ce23ea55dbaa5e293538f09b5b8238ce2717bfdd199c7e85" + }, + { + "path": "assets/ninja/Walk (6).png", + "sha256": "0350f8d5c31c235b79337152908446853245b6b2b2e384b21cb212837794065d" + }, + { + "path": "assets/ninja/Walk (7).png", + "sha256": "1eed321418b4c20c3be3be89ed033d4e02e7fff9c4c637b51bfbdfda9d700a92" + }, + { + "path": "assets/ninja/Walk (8).png", + "sha256": "964d5a8e793750dc800650612a9480e2da91c3d223e7cdcab25f3169469bde40" + }, + { + "path": "assets/ninja/Walk (9).png", + "sha256": "ff8863152a575ef1e1a890006c217585458046cf7f4091c0cf5186c2a74be879" + }, + { + "path": "assets/outback.png", + "sha256": "b4d02cf557f6bdfbd59fd384160a5d583d4adf8b1610d25d1ceeafcb98f26766" + } + ] + }, + { + "id": "demo/tiled", + "kind": "demo", + "source": "src/examples/java/demos/tiled", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer" + ], + "files": [ + { + "path": "Bamboo.class", + "sha256": "c26b6f104820f8af4a28b7c584ce5e3c2a75391779fbe1ea81f5b0061c115af9" + }, + { + "path": "Bamboo.ctxt", + "sha256": "2a39143d1cf20a56edbcdeb1b8cbf854a6a1cd5f5ffcd541bb69cc727fd85413" + }, + { + "path": "Bamboo.java", + "sha256": "46ec44f8d28c5a0eaec1fb30f5c42d35ed9b6962b75a9c08105f770e4ee2df08" + }, + { + "path": "Enemy.class", + "sha256": "8c299d6a3c10413bbba0dbbfa3117fb8a3e3692eb9d5ff16193706512842867e" + }, + { + "path": "Enemy.ctxt", + "sha256": "04c8b38d50c18e54af9910661234395c755647c3abe112b7efd31968c4eea226" + }, + { + "path": "Enemy.java", + "sha256": "936060f67fbea9d35ce80ea0c829c120b7863eca6d775d97aea9fd5b7b7365cf" + }, + { + "path": "Fireball.class", + "sha256": "9295f82784260315454e89e833d3026722a73e7e8c8c66bff92968d84e9f050f" + }, + { + "path": "Fireball.ctxt", + "sha256": "a1c973e135a1b16087b5c274e57b9889ea3608209929261e1faf90f28545689a" + }, + { + "path": "Fireball.java", + "sha256": "9064b7fc0b8f286026ed08125db9c5b4fb77bc15c7add1dc51760732e346ecb2" + }, + { + "path": "GameState.class", + "sha256": "733989ae6ce95a5cd213c8e054479b75d6cb659ce22534907ef5e54f178bd7a0" + }, + { + "path": "GameState.ctxt", + "sha256": "dbb84dad708d630c1742ea7db99de5969e8f8f60b0c02070a874f73f954365dc" + }, + { + "path": "GameState.java", + "sha256": "816c40b0209a5f9dafd418e98238cb1d1f3296998e33b2e5eb397cc1a3be88ae" + }, + { + "path": "I18n.class", + "sha256": "a4d0a154874b6272dd68c86f50f5e6fe7c3cad9b91936118bd1ed0780416d87f" + }, + { + "path": "I18n.ctxt", + "sha256": "60c0ee8f6d6db7e07f6285c40639dffd399a90cc4d70c9ae66a24556e745f505" + }, + { + "path": "I18n.java", + "sha256": "c430cf0eb4d31e17a702971553b6f6bc629085fd197d7ac3bb3444a683920e55" + }, + { + "path": "Item.class", + "sha256": "1143e34a6338a38fb2e06fb68e8d0eb385301cf2eaf89cf670c6b98edc2541a9" + }, + { + "path": "Item.ctxt", + "sha256": "6ba89206c1707eb33b0096dcbbcf3c2fce18c964ed89d8c4f20debcc5d4904c6" + }, + { + "path": "Item.java", + "sha256": "17b9d7b4679d4ffd6f66d0ea0a83cb6e4fb8674b05e0091347bec523add6e276" + }, + { + "path": "Level1.tmx", + "sha256": "d0313669a472f49b6f1caa8d4effc390278176644339b7513819b44bac2c80be" + }, + { + "path": "Level2.tmx", + "sha256": "d3d104297fd78a7c1c85699d295b645ae21b7c8ff0ff0d9e11d556aca88641e3" + }, + { + "path": "Player.class", + "sha256": "495c890aeff50f812eb2c322ce793717e01dee09ba6ae91ea9c56c10a14337e5" + }, + { + "path": "Player.ctxt", + "sha256": "e96a1822d023b73fe3e7360e15793ad9b5a8375af898fad8905c05f4d59a54db" + }, + { + "path": "Player.java", + "sha256": "8731b294011650eb0f9f8e89562a820972c0a0457de6c2e21a73a5560310cc74" + }, + { + "path": "Tiled.class", + "sha256": "ed1dffc627fd2dd3c4e39d00ef788b881397390f11ddc97642399aa9292f5271" + }, + { + "path": "Tiled.ctxt", + "sha256": "ca7d54283b0c374cdd2c95f27fb82b64280c5da3ea3acdeb0f46fa679db94e0e" + }, + { + "path": "Tiled.java", + "sha256": "97c8631d9f363d1939987c86353cb2e34a4e530187fc93231864ba7a8a5bf5d3" + }, + { + "path": "UIItem.java", + "sha256": "f1177f7cfd7c7147ed3ef2e10b475c53c5de228c8ba2ab118bd9058563c17479" + }, + { + "path": "Wall.class", + "sha256": "7673195e6d30d0706583a98faeade7f6c0e64f6b9d2fd16bde130e2fbb8bcf0f" + }, + { + "path": "Wall.ctxt", + "sha256": "68d498fd9b3b2e81b3294aa50951ee9bd8866f4ada25e503badbcb844da84ae7" + }, + { + "path": "Wall.java", + "sha256": "b226bdddba1cc32e7ccabbe3c686161a2b04060acff79b769c34f6af53487bb0" + }, + { + "path": "Warp.class", + "sha256": "13bddf0b6ed387b51f2ceea6d1abe5ed05921867cbf1b92bb795395603d63233" + }, + { + "path": "Warp.ctxt", + "sha256": "103c797aaf7c290b62e01b4ccea36e0f8193d9ac9b30d67fc47133c5b322301c" + }, + { + "path": "Warp.java", + "sha256": "5749bb006f674e1a3aab8c3bb14933dd517edadb4ab1a38d213e7040c9791eab" + }, + { + "path": "Water.class", + "sha256": "1ed25c488dedb5ba53394aec075e1fdd82e0039ef0f132ee84790497754170b9" + }, + { + "path": "Water.ctxt", + "sha256": "2ff25af7e4be086febc0986f6f777cafdabbfbb81ec0966fa0965e7514a3624c" + }, + { + "path": "Water.java", + "sha256": "aee560ddb396dd81e10d84dfa4769b31dbf3cd8433955068886c436581c03b17" + }, + { + "path": "World.class", + "sha256": "993ca3729bd777ad7acec0f648c41c30b8d40a42b94a1584bff5c62f411ea71d" + }, + { + "path": "World.ctxt", + "sha256": "2f2969200a5664660259551bd4ee40aa6a523d8aa5c898c5916da50e2cf9808f" + }, + { + "path": "World.java", + "sha256": "3f0965034fd75e1d6c16501172bd72e53566b1dd8894cd7e8f46cf53ef7576a9" + }, + { + "path": "assets/Bamboo.png", + "sha256": "767a9fe9f5a386fb095471c2e934be15c6725be114a00c731500746ba98247fd" + }, + { + "path": "assets/Fireball.png", + "sha256": "366f2d49d9456c32c0eec2ce96e5487011af35da8007a0ef7cf82788e93a7b75" + }, + { + "path": "assets/Retro Gaming.ttf", + "sha256": "dfd827142124c0fab4b916a4c72dbf4c91a9069a150aa8be71d0566f6d612066" + }, + { + "path": "assets/ScrollFire.png", + "sha256": "899b4bc72a4a95e7c93ba481bfda2c2fd9990159db86523eb33a6dbcc260b69b" + }, + { + "path": "assets/ScrollWater.png", + "sha256": "274a12dd4ec4ccf2a4a4884d647c3880f7a3d7cb499aa573e7ad8d58fa5a3e0e" + }, + { + "path": "assets/Skeleton.png", + "sha256": "81fc368cb542892934400f7e3350433ff506ed966f5b9c95543e2745899ce2fe" + }, + { + "path": "assets/TilesetField.png", + "sha256": "b482b0b257baf09648db4d507ca255231fc4bff2dff89e59a9f70ba66b9e1845" + }, + { + "path": "assets/TilesetFloor.png", + "sha256": "5a4b0208e732a48f16fbe50ced54910cf0cb7ccc5552f426e5fb586829819681" + }, + { + "path": "assets/TilesetWater.png", + "sha256": "3d37d9581179c746fb55bc5e9eb83ed7f2ca6e0ee892cb9c0627250833b02277" + }, + { + "path": "save.json", + "sha256": "ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356" + } + ] + }, + { + "id": "demo/timedDot", + "kind": "demo", + "source": "src/examples/java/demos/timedDot", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "TimedDot.java", + "sha256": "439ceeabb6aeb4997221ad6b862c2e3707954caba15a181998bae51f304bddf3" + } + ] + }, + { + "id": "demo/timer", + "kind": "demo", + "source": "src/examples/java/demos/timer", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "TimerStage.java", + "sha256": "aca34300457121b32f740e294eb0e1589cf487cbe0cad5c431fb0de63402a608" + } + ] + }, + { + "id": "demo/ui", + "kind": "demo", + "source": "src/examples/java/demos/ui", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "UI.java", + "sha256": "864245b75532369c5e9115043ad8615214770401307c3f68611f62f9b1f2a5b2" + }, + { + "path": "bar_round_gloss_large.png", + "sha256": "44fea9186b56afe4c1cfc676b0dcf64fdee42c18ef4843389acc294b5666cbf0" + }, + { + "path": "bar_round_gloss_large_gray.png", + "sha256": "4f5c4d98f462cb38b7e81ad1f45a529a63f224fb032e430eec0df53da1f8fb46" + }, + { + "path": "crosshair_color_c.png", + "sha256": "53ad72c48a8fdb550b1e4cf2b6cf97e2de7a892cdbcb098e73263d804b530127" + }, + { + "path": "metalPanel_greenCorner.png", + "sha256": "8f8b0f856a0da0abb1aad33497331eb1f892bf7ea9f97e945882c8dd83164c70" + } + ] + }, + { + "id": "demo/volume", + "kind": "demo", + "source": "src/examples/java/demos/volume", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Volume.java", + "sha256": "ff6b1b109ab36acb97181fe2309bc0966da5487629ba33815c1a15b483b8d89e" + } + ] + }, + { + "id": "tutorial/Halloween", + "kind": "tutorial", + "source": "docs/archives/Halloween", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "GhostSprite.java", + "sha256": "0384d2d29fd627071a580ffdb91b3ebec648f6a210ba6bce3ffb7959941c3652" + }, + { + "path": "HalloweenStage.java", + "sha256": "b9a53144da5c0108e71af7c34b05094239c67d786923ed239fc0fa16f314e5e8" + }, + { + "path": "HouseSprite.java", + "sha256": "58e61a14d64b70fb3e4b98337a5ce347ee8441af6a39bb0496156c2813e21812" + }, + { + "path": "PumpkinSprite.java", + "sha256": "2437b012ead25f8fdcb8297c0e94b1bbc4ec37037226f5aa8b5113d669e8b27b" + }, + { + "path": "package.bluej", + "sha256": "a9623d91bd998d884124ed3815a659d2195e71377b797edba9b97a0afc15e558" + }, + { + "path": "sounds/background.wav", + "sha256": "36fa67c1a4c199dccfe608b1ff64170551949c73003fb26b9da708cc2e2114b7" + }, + { + "path": "sounds/door.wav", + "sha256": "ee087d54d051f29102b3ea941b37761970780ece13dc11d7aa8a23d68e6d5b0f" + }, + { + "path": "sounds/ghost.wav", + "sha256": "edc570c66f778ea33affa5ab73ea96f059943bcfe412b266295a769ace824e6d" + }, + { + "path": "sprites/background.jpg", + "sha256": "4fe64d2bcdbdbccaeb385e609517fc403a0376f4edce2278000e54c9028b8988" + }, + { + "path": "sprites/castle_off.png", + "sha256": "d269553f298a33879f87523e012ad02d28deead9bf243b55b5df3de4bce49cc6" + }, + { + "path": "sprites/castle_on.png", + "sha256": "24085f67d62563a9aef4c6f0fb2f8a39d17cf2cd1ebecb4320cce0196e30e781" + }, + { + "path": "sprites/ghost/ghost_01.png", + "sha256": "c5347db7381e24b302ec5645672ee51246fa385849f5cc2ff26601eb87fa40dd" + }, + { + "path": "sprites/ghost/ghost_02.png", + "sha256": "cabbc13b4ae8d8c7af666393a780d86b00591bc52022cee4d435c739a388dff0" + }, + { + "path": "sprites/ghost/ghost_03.png", + "sha256": "f2b7f233412b4b71b4cb2917233ff811f75108dbf8efe5adc17e044063b319c6" + }, + { + "path": "sprites/ghost/ghost_04.png", + "sha256": "5640a6c6f320c86ace35f3715ae673580160d6423fc8d109d970180ee936aaa0" + }, + { + "path": "sprites/ghost/ghost_05.png", + "sha256": "d7a7243abf5d99728511d80123d1126f4383f558f1f908c697101417c50ff618" + }, + { + "path": "sprites/ghost/ghost_06.png", + "sha256": "ec2e02c3d1bedcf66f4c1c780f053d9cef17b89e14dcb1a1a5b754597398e90a" + }, + { + "path": "sprites/ghost/ghost_07.png", + "sha256": "042d23019bc143786c00ba551153ab5eb36be365a1252a93467d5922706a81cb" + }, + { + "path": "sprites/ghost/ghost_08.png", + "sha256": "785e28befc1dba98421e4c45e19870b903700963a915a07b7d4c547565373ecd" + }, + { + "path": "sprites/ghost/ghost_09.png", + "sha256": "f83b5c359c13dfcacddd4bc6987bf073fba96f06e080e4f4b2d690e8cd57807c" + }, + { + "path": "sprites/ghost/ghost_10.png", + "sha256": "e155c4ed62aed589a1378613e850ff05ba86e57e82a1e33944efd28b661efc10" + }, + { + "path": "sprites/pumpkin/pumpkin_01.png", + "sha256": "0b2df0a538510e7f6dc941db10e83dafe3ebde7eb23fb0ff3334bd0b427ca3a9" + }, + { + "path": "sprites/pumpkin/pumpkin_02.png", + "sha256": "5db69c37a0bcffbbd81690d1fe0d2e75aea9773bfdec6f64fcfb9c109f9b6a3c" + } + ] + }, + { + "id": "tutorial/bluej-starter", + "kind": "tutorial", + "source": "docs/archives/bluej-starter", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Cat.java", + "sha256": "f5e71d1da4812c7810701eeaf23bc2d8bb455b8c8d607fa0ab04fcebd8df9f2b" + }, + { + "path": "MyStage.java", + "sha256": "cbe0c5ef6165e8ac0194090a50b5085a0b59b22d2b91633980953823aab1152a" + }, + { + "path": "MyWindow.java", + "sha256": "8056b03a70774938863b829c750300549323c4287eb9f9e6350cd77ccb101005" + }, + { + "path": "assets/.gitkeep", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "assets/cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/bouncy-hedgehog", + "kind": "tutorial", + "source": "docs/archives/bouncy-hedgehog", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": ".vscode/extensions.json", + "sha256": "5d6b599db5e395f6c21b38697c7d9d8768f67dbd0eebc36a6e610cc0a3786ef0" + }, + { + "path": ".vscode/settings.json", + "sha256": "516b1cf9e9ebc68be9b9e4df0b89c6c43beaa6b8f75be6ed7f1fadae2d5c8ce9" + }, + { + "path": "BouncyHedgehogStage.java", + "sha256": "483de7f13ab0903792bafecb7be0048edf9c2eb7244ac3493459bfd8a0cb7fda" + }, + { + "path": "HedgehogSprite.java", + "sha256": "8e14206fda7f43637aff1e8b7a43e6c42de2ae14de97af2b86dd6f4ad5d50d7b" + }, + { + "path": "README.md", + "sha256": "a52e43821ba57c053e89735bb8f0fab2cd9f1e039e1f16380405ab14f8654e78" + }, + { + "path": "TrampolineSprite.java", + "sha256": "a7fdb464a46167825abcefb161b93d3560b0bc8a09c0204879791ddb4e8b988f" + }, + { + "path": "hedgehog.png", + "sha256": "731e677d38912bf339a16cda8c61035db1db52489c462181e9be4874bd310db7" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "playground.jpg", + "sha256": "c68f76ab3c5ac54be427706d571cd5b268141c4448b88e7277ebae45c347f0dd" + }, + { + "path": "trampoline.png", + "sha256": "ca11b0fbb8ec2f002f30659bda64a3d979d65f8d0f465629cd19b57c81e18df8" + } + ] + }, + { + "id": "tutorial/bouncy-hedgehog-100", + "kind": "tutorial", + "source": "docs/archives/bouncy-hedgehog-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": ".vscode/extensions.json", + "sha256": "5d6b599db5e395f6c21b38697c7d9d8768f67dbd0eebc36a6e610cc0a3786ef0" + }, + { + "path": ".vscode/settings.json", + "sha256": "516b1cf9e9ebc68be9b9e4df0b89c6c43beaa6b8f75be6ed7f1fadae2d5c8ce9" + }, + { + "path": "BouncyHedgehogStage.java", + "sha256": "f28090be3f0aabf674ebe1870740440d7573773256cae63450517262261f5f59" + }, + { + "path": "HedgehogSprite.java", + "sha256": "ec727a72eac0f5d5ef58ff7093c0852a2031aeb5ea40702b3e7c50af928c8cbf" + }, + { + "path": "README.md", + "sha256": "a52e43821ba57c053e89735bb8f0fab2cd9f1e039e1f16380405ab14f8654e78" + }, + { + "path": "TrampolineSprite.java", + "sha256": "a5f262e0116c12f34e18bdcad56395ac0a1da5f8517266f6b1eaf69321ce9fbc" + }, + { + "path": "hedgehog.png", + "sha256": "731e677d38912bf339a16cda8c61035db1db52489c462181e9be4874bd310db7" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "playground.jpg", + "sha256": "c68f76ab3c5ac54be427706d571cd5b268141c4448b88e7277ebae45c347f0dd" + }, + { + "path": "trampoline.png", + "sha256": "ca11b0fbb8ec2f002f30659bda64a3d979d65f8d0f465629cd19b57c81e18df8" + } + ] + }, + { + "id": "tutorial/cat", + "kind": "tutorial", + "source": "docs/archives/cat", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "CatSprite.java", + "sha256": "f21ff0ec0c7ffa8c269d91fbac2ac0dbce1154ac6ac41cefe9e2cae198c20d3f" + }, + { + "path": "CatStage.java", + "sha256": "59d5a5e628e9e285d9af9462ed37dbb23ca613af0b46d315461ba763c0aad64f" + }, + { + "path": "cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + }, + { + "path": "package.bluej", + "sha256": "d18f1b5e976159b105ce08a72f95f98dffc64cec82f0d618460e73d710040604" + } + ] + }, + { + "id": "tutorial/catch-the-coins-100", + "kind": "tutorial", + "source": "docs/archives/catch-the-coins-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "Basket.java", + "sha256": "7f7aa0c5a52ed0db3e39e1b97f0817103d27d43fd424c16539ed1063bf90657d" + }, + { + "path": "CatchStage.java", + "sha256": "81f4c96b7e2015b381d5845d995d1fcf00369f11197def706b950a86d5f9b630" + }, + { + "path": "Coin.java", + "sha256": "bc0752b8e5509455422e7625613f83bbe0dc4f5c2d8e83cb2d312532a313489f" + }, + { + "path": "README.md", + "sha256": "7867d20f01bf95412d4b307e34210e9a62e0850b2db0eb7453a82c011deab634" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/dodge-the-rocks-100", + "kind": "tutorial", + "source": "docs/archives/dodge-the-rocks-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "Alien.java", + "sha256": "27311fafd34fdba30e4aa0f92d058d3ae6127d8fb48dd82837302ac6bd512be7" + }, + { + "path": "DodgeWindow.java", + "sha256": "2bcec14f90ff80f49281d0baf142d538f1853a14d78d1f299f1161cbfb975732" + }, + { + "path": "GameStage.java", + "sha256": "ab21802ccf2c2a3fe04e1aacadfe02731a8f1a417cb42b1b5b9b54b1442f2956" + }, + { + "path": "README.md", + "sha256": "2222d201aea0e8f6b0531e5344e0ac69a424a45c969f2ad1e29c869d6d7de3bd" + }, + { + "path": "Rock.java", + "sha256": "4d3905160b6a34d732a477a37c74e06edcbc4222440c8d743200de9d382e6318" + }, + { + "path": "TitleStage.java", + "sha256": "370fe74347c426309e2fd77c10589bb71e2c18ced5d638db7a3f8a67922c000d" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/getting-started-100", + "kind": "tutorial", + "source": "docs/archives/getting-started-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "jumper", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "Bunny.java", + "sha256": "a6de1d1ff1505cd507406533201239c548d715e9deb59604e702ae5c49974662" + }, + { + "path": "MyStage.java", + "sha256": "d8b26cf64078f1a2dcc95b033df292282e8271b2b1c14212582b39ed15b6fc10" + }, + { + "path": "README.md", + "sha256": "1cf7971612162c7486cd95894fa740ec9f3e8f8268e01790ef5cb48ed37a0507" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/guess-the-number-100", + "kind": "tutorial", + "source": "docs/archives/guess-the-number-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "GuessStage.java", + "sha256": "9fac29bde01fcfe5248d25e5f069e2a992508f53fd54ee364fb6fc9d8a548e7d" + }, + { + "path": "README.md", + "sha256": "2e83410662b1d66e3b506bc668ecb59ee2651b9fe5344a1b16e0c43b6e0c6d27" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/make-it-walk-100", + "kind": "tutorial", + "source": "docs/archives/make-it-walk-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "README.md", + "sha256": "fabacace7e210742909cd107a230f3e4c47ca68197963b619c1e932fa1464cc0" + }, + { + "path": "WalkStage.java", + "sha256": "c2e5518d8b29b623fd9e85ca5570df179aa1043fcfc13669719cb13bd8ff1414" + }, + { + "path": "Walker.java", + "sha256": "1811c6b4ea7c206ca0d78be206c377cdd470bc9092884f3a94ff8e023d04d1b3" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/red-light-green-light-100", + "kind": "tutorial", + "source": "docs/archives/red-light-green-light-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "README.md", + "sha256": "343be5278ad1ba4f7f23205363319e90239a1b4a4c5f85340d7af3430e5943d3" + }, + { + "path": "RaceStage.java", + "sha256": "a1d264b816b4accf9740b2ed0c8b1e053accc8bee1c2a55c4e74c264f490dee4" + }, + { + "path": "Racer.java", + "sha256": "e5e157f62c18400e22e2eb8aa7aed4020542e45fecca31757e8c3f7c456cc304" + }, + { + "path": "Referee.java", + "sha256": "989580b24499248a299e09d0b5c2ea0fef733a0577a750d5a2fb840bb4792ef2" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/vs-code-starter", + "kind": "tutorial", + "source": "docs/archives/vs-code-starter", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": ".vscode/extensions.json", + "sha256": "c31c30ca102830cd851010c0cd32527c8b943e248a3f73512ee4da7586021183" + }, + { + "path": ".vscode/settings.json", + "sha256": "5ab65d6d595d057a9124aa7fe85e76a3f5bb128f1c7b04a7f49aebd0631a4b0a" + }, + { + "path": "Cat.java", + "sha256": "f5e71d1da4812c7810701eeaf23bc2d8bb455b8c8d607fa0ab04fcebd8df9f2b" + }, + { + "path": "MyStage.java", + "sha256": "cbe0c5ef6165e8ac0194090a50b5085a0b59b22d2b91633980953823aab1152a" + }, + { + "path": "MyWindow.java", + "sha256": "8056b03a70774938863b829c750300549323c4287eb9f9e6350cd77ccb101005" + }, + { + "path": "assets/.gitkeep", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "assets/cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + } + ] + } + ] +} diff --git a/docs/public/compatibility.json b/docs/public/compatibility.json new file mode 100644 index 00000000..d86db44e --- /dev/null +++ b/docs/public/compatibility.json @@ -0,0 +1,14564 @@ +{ + "schemaVersion": 1, + "desktopVersion": "5.7.0", + "browser": { + "version": "5.7.0-browser.2", + "flavors": { + "standard": { + "libraries": [ + "scratch" + ], + "listType": "java.util.List" + }, + "nrw": { + "libraries": [ + "scratch", + "nrw" + ], + "listType": "nrw.List" + } + } + }, + "scope": "Public constructors and method groups documented by the Javadoc doclet. Overload matching uses simple erased parameter names, constructor kind and static/instance kind; qualified parameter and return types are recorded. This is a source compatibility inventory, not a binary compatibility guarantee.", + "limitations": [ + "Availability describes documented member groups and browser declarations. Compilation tests do not prove rendering, timing or complete behavioral parity.", + "Fragment shaders use WebGL. Custom vertex shaders are desktop-only; the browser substitutes its default vertex shader.", + "File-system, pixel-buffer, recorder and Tiled APIs are desktop-only. Browser declarations can be stubs that report the limitation.", + "Reference examples are compiled with the standard flavor. Existing NRW runtime fixtures and a separate declaration inventory cover the NRW flavor.", + "Java compiler dialect differences also apply, including Java package access and unsupported standard-library methods." + ], + "referenceValidation": { + "flavor": "standard", + "examples": 408, + "knownUnsupportedExamples": 0 + }, + "members": [ + { + "id": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "pattern", + "frames" + ], + "parameterDescriptions": [ + "the name of the animation", + "the pattern (@see String#format) of the file names. The frame\n starts from 1.", + "the number of frames in the animation" + ], + "description": "Adds an animation to the sprite.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.util.function.Function", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "builder", + "frame" + ], + "parameterDescriptions": [ + "the name of the animation", + "a function that builds the file names for the animation frames", + "the number of frames in the animation. The frame starts from\n 1." + ], + "description": "Adds an animation to the sprite.\n\nTo add an animation with file names \"walk_1.png\", \"walk_2.png\",\n\"walk_3.png\", you can use the following code:\n\n```java\nsprite.addAnimation(\"walk\", i -> \"walk_\" + i + \".png\", 3);\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height" + ], + "parameterDescriptions": [ + "the name of the animation", + "the path to the animation frames", + "the number of frames in the animation", + "the width of each frame", + "the height of each frame" + ], + "description": "Adds an animation to the sprite.\n\nFor an animation sprite sheet, where each frame is of equal width and height,\nyou can use this method to add an animation by specifying the path to the\nsprite sheet, the number of frames, and the dimensions of each frame.\nFor example, for a four-frame animation arranged in a single row, each frame\nbeing 64x64 pixels, you can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64);\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height", + "row" + ], + "parameterDescriptions": [ + "the name of the animation", + "the path to the animation frames", + "the number of frames in the animation", + "the width of each frame", + "the height of each frame", + "the row of the animation frames" + ], + "description": "Adds an animation to the sprite.\n\nIf the animation frames are arranged in rows in a sprite sheet, you can use\nthis method to specify which row to use for the animation.\n\nFor example, for a four-frame animation arranged in a single row, you want the second, each frame\nbeing 64x64 pixels, you can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64, 2);\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int", + "boolean" + ], + "returns": "void", + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height", + "column", + "useColumns" + ], + "parameterDescriptions": [ + "the name of the animation", + "the path to the animation frames", + "the number of frames in the animation", + "the width of each frame", + "the height of each frame", + "the column of the animation frames", + "whether to use columns or rows" + ], + "description": "Adds an animation to the sprite.\n\nIf the animation frames are arranged in either rows or columns in a sprite\nsheet, you can use this method to specify which column or row to use for the\nanimation. Take four frame animation arranged in a single column. Each frame is\n64x64 pixels. You can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64, 1, true); // use column 1\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/clone", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.AnimatedSprite", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Creates a clone of this sprite with the same animations, playing the same\none, and puts it on the stage right behind this sprite. See\n[Sprite.clone()](../Sprite/clone).", + "returnDescription": "the clone, of the same class as this sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/constructor", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "AnimatedSprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.AnimatedSprite", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "AnimatedSprite", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.AnimatedSprite" + ], + "returns": "org.openpatch.scratch.AnimatedSprite", + "parameterNames": [ + "animatedSprite" + ], + "parameterDescriptions": [ + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/getAnimationFrame", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "getAnimationFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the current animation frame.", + "returnDescription": "the current animation frame", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/getAnimationInterval", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "getAnimationInterval", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the interval between animation frames.", + "returnDescription": "the interval between animation frames", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/isAnimationPlayed", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "isAnimationPlayed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks if the animation is played.", + "returnDescription": "true if the animation is played, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/playAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "playAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the animation to play" + ], + "description": "Plays the animation with the specified name.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "playAnimation", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "boolean" + ], + "returns": "void", + "parameterNames": [ + "name", + "once" + ], + "parameterDescriptions": [ + "the name of the animation to play", + "whether to play the animation once" + ], + "description": "Plays the animation with the specified name.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/resetAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "resetAnimation", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Resets the animation. The animation will start from the first frame.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/setAnimationFrame", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "setAnimationFrame", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "frame" + ], + "parameterDescriptions": [ + "the current animation frame" + ], + "description": "Sets the current animation frame.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/setAnimationInterval", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "setAnimationInterval", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "interval" + ], + "parameterDescriptions": [ + "the interval between animation frames" + ], + "description": "Sets the interval between animation frames.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "AnimatedSprite/toString", + "owner": "org.openpatch.scratch.AnimatedSprite", + "signatures": [ + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns which animation is playing and how far into it.", + "returnDescription": "the sprite as a text", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Circle/constructor", + "owner": "org.openpatch.scratch.Circle", + "signatures": [ + { + "name": "Circle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Circle", + "parameterNames": [ + "x", + "y", + "radius" + ], + "parameterDescriptions": [ + "the x-coordinate of the circle's center", + "the y-coordinate of the circle's center", + "the radius of the circle" + ], + "description": "Creates a circle with no specified position or size.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/constructor", + "owner": "org.openpatch.scratch.Clock", + "signatures": [], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getDay", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getDay", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current day of the month, from 1 to 31.", + "returnDescription": "the day of the month", + "scratchblock": "(current [date v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getDayOfWeek", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getDayOfWeek", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current day of the week, from 1 for Monday to 7 for Sunday.", + "returnDescription": "the day of the week", + "scratchblock": "(current [day of week v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getDaysSince2000", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getDaysSince2000", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the number of days that have passed since the first of January\n2000.", + "returnDescription": "the days since 2000", + "scratchblock": "(days since 2000)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getHour", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getHour", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current hour, from 0 to 23.", + "returnDescription": "the hour", + "scratchblock": "(current [hour v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getMillisecond", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getMillisecond", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the milliseconds of the current second, from 0 to 999.", + "returnDescription": "the millisecond", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getMinute", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getMinute", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current minute, from 0 to 59.", + "returnDescription": "the minute", + "scratchblock": "(current [minute v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getMonth", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getMonth", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current month, from 1 for January to 12 for December.", + "returnDescription": "the month", + "scratchblock": "(current [month v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getSecond", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getSecond", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current second, from 0 to 59.", + "returnDescription": "the second", + "scratchblock": "(current [second v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Clock/getYear", + "owner": "org.openpatch.scratch.Clock", + "signatures": [ + { + "name": "getYear", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current year, for example 2026.", + "returnDescription": "the year", + "scratchblock": "(current [year v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/changeColor", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "A hue value. Could be any positive or negative number." + ], + "description": "Changes the color accordining to a hue value, which is added to the current hue value. When the\nresulting value is greater than 255 it will be reset. For example: 285 => 30.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Color object with default values.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [ + "hexCode" + ], + "parameterDescriptions": [ + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "the hue value" + ], + "description": "Constructs a new Color object with the specified hue value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "the red value", + "the green value", + "the blue value" + ], + "description": "Constructs a new Color object with the specified rgb values.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Color", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "ScratchColor object to copy" + ], + "description": "Copies the received ScratchColor object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/equals", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Object" + ], + "returns": "boolean", + "parameterNames": [ + "other" + ], + "parameterDescriptions": [ + "the object to compare with" + ], + "description": "Two colours are the same when they are the same colour.", + "returnDescription": "whether both are colours with the same red, green and blue", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/get", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "get", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the color value as a hex code. This is useful for comparing pixels.", + "returnDescription": "hex code", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getBlue", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getBlue", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the blue value.", + "returnDescription": "blue value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getGreen", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getGreen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the green value.", + "returnDescription": "green value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getH", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getH", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the hue value.", + "returnDescription": "hue value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getHSB", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getHSB", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the color value on the HSB spectrum.", + "returnDescription": "hue value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getL", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getL", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the luminosity value.", + "returnDescription": "luminosity value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getRed", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getRed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the red value.", + "returnDescription": "red value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/getS", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "getS", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the saturation value.", + "returnDescription": "saturation value [0...255]", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/hashCode", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "hashCode", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "a hash consistent with [equals(Object)](equals)", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/setHSB", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "setHSB", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "A hue value [0...255]" + ], + "description": "Setting the color value after the HSB spectrum. Saturation and Luminosity are fixed at 255.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setHSB", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "h", + "s", + "l" + ], + "parameterDescriptions": [ + "A hue value [0...255]", + "A saturation value [0...255]", + "A luminosity value [0...255]" + ], + "description": "Setting the color value after the HSB spectrum.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/setRGB", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "setRGB", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "A red value [0...255]", + "A green value [0...255]", + "A blue value [0...255]" + ], + "description": "Setting the color value after the RGB spectrum", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Color/toString", + "owner": "org.openpatch.scratch.Color", + "signatures": [ + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "The colour written out, so that printing one says something.\n\nWithout this a `System.out.println(mySprite.getTint())` printed\n`org.openpatch.scratch.Color@35432107`, which tells you nothing about\nthe colour and is the first thing anyone tries when a tint looks wrong.", + "returnDescription": "the colour as `Color[r=255.0, g=128.0, b=0.0]`", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Ellipse/constructor", + "owner": "org.openpatch.scratch.Ellipse", + "signatures": [ + { + "name": "Ellipse", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Ellipse", + "parameterNames": [ + "x", + "y", + "width", + "height" + ], + "parameterDescriptions": [ + "", + "", + "", + "" + ], + "description": "Creates an ellipse with no specified position or size.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/constructor", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "Hitbox", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "org.openpatch.scratch.Hitbox", + "parameterNames": [ + "shape" + ], + "parameterDescriptions": [ + "The shape of the hitbox." + ], + "description": "Constructs a hitbox with the specified shape.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Hitbox", + "constructor": true, + "static": false, + "parameters": [ + "double[]", + "double[]" + ], + "returns": "org.openpatch.scratch.Hitbox", + "parameterNames": [ + "xPoints", + "yPoints" + ], + "parameterDescriptions": [ + "The x-coordinates of the points.", + "The y-coordinates of the points." + ], + "description": "Constructs a hitbox with the specified x and y points.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/contains", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "The x-coordinate of the point.", + "The y-coordinate of the point." + ], + "description": "Checks if the hitbox contains a point.", + "returnDescription": "`true` if the hitbox contains the point, `false`\n otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/getBounds", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the smallest upright rectangle the hitbox fits into.", + "returnDescription": "the bounding box of the hitbox", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/getShape", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "getShape", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shape of the hitbox.", + "returnDescription": "The shape of the hitbox.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/intersects", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Hitbox" + ], + "returns": "boolean", + "parameterNames": [ + "hitbox" + ], + "parameterDescriptions": [ + "The hitbox to check for intersection." + ], + "description": "Checks if the hitbox intersects with another hitbox.", + "returnDescription": "`true` if the hitboxes intersect, `false` otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Hitbox/translateAndRotateAndResize", + "owner": "org.openpatch.scratch.Hitbox", + "signatures": [ + { + "name": "translateAndRotateAndResize", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "degrees", + "originX", + "originY", + "translateX", + "translateY", + "size" + ], + "parameterDescriptions": [ + "The angle in degrees to rotate the shape.", + "The x-coordinate of the rotation origin.", + "The y-coordinate of the rotation origin.", + "The x-coordinate to translate the shape.", + "The y-coordinate to translate the shape.", + "The size to scale the shape, where 100.0 represents the\n original size." + ], + "description": "Transforms the shape by scaling, translating, and rotating it.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "HtmlColor/constructor", + "owner": "org.openpatch.scratch.HtmlColor", + "signatures": [ + { + "name": "HtmlColor", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.HtmlColor", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "HtmlColor/getRandom", + "owner": "org.openpatch.scratch.HtmlColor", + "signatures": [ + { + "name": "getRandom", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a random HTML color.", + "returnDescription": "a random Color from the predefined HTML colors", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/absOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "absOf", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "int", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "returnDescription": "the absolute value", + "scratchblock": "", + "since": "" + }, + { + "name": "absOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "returnDescription": "the absolute value", + "scratchblock": "([abs v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/acosOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "acosOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"acos\" is the abbreviation for \"arccosine\" and is also sometimes written as cos\\u22121. When given\nthe ratio (in decimal form) of the length of the adjacent side and hypotenuse of a right\ntriangle, it finds the angle.", + "returnDescription": "the angle of that value", + "scratchblock": "([acos v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/asinOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "asinOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"asin\" is the abbreviation for \"arcsine\" and is also sometimes written as sin\\u22121. When given the\nratio (in decimal form) of the length of the opposite side and hypotenuse of a right triangle,\nit finds the angle.", + "returnDescription": "the angle of that value", + "scratchblock": "([asin v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/atanOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "atanOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"atan\" is the abbreviation for \"arctangent\" and is also sometimes written as tan\\u22121. When given\nthe ratio (in decimal form) of the length of the opposite side and adjacent side of a right\ntriangle, it finds the angle.", + "returnDescription": "the angle of that value", + "scratchblock": "([atan v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/ceilingOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "ceilingOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "This always rounds the number up to the least whole number greater than or equal to the number.\nFor example, ceiling(3.14) = 4 and ceiling(7.68) = 8.", + "returnDescription": "the ceiling of that value", + "scratchblock": "([ceiling v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/constrain", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "constrain", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "amt", + "low", + "high" + ], + "parameterDescriptions": [ + "the value to constrain", + "minimum limit", + "maximum limit" + ], + "description": "Constrains a value to not exceed a maximum and minimum value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "constrain", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "int", + "parameterNames": [ + "amt", + "low", + "high" + ], + "parameterDescriptions": [ + "the value to constrain", + "minimum limit", + "maximum limit" + ], + "description": "Constrains a value to not exceed a maximum and minimum value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/constructor", + "owner": "org.openpatch.scratch.Operators", + "signatures": [], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/cosOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "cosOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "an angle between [0, ..., 360]" + ], + "description": "\"cos\" is the abbreviation for \"cosine.\" The cosine of an angle is the ratio between the length\nof the side adjacent (next to) it on the triangle and the length of the hypotenuse. In the\npicture above, the cosine of angle A is equal to side \"adjacent\" divided by side \"hypotenuse\".", + "returnDescription": "the cos of the angle", + "scratchblock": "([cos v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/eToThePowerOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "eToThePowerOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"e\" is an abbreviation for \"Euler's number\", which is about 2.718. With the e^ function, e is\nmultiplied by itself the value number of times. For example, if the value is 3, the answer\nwould be e3, or e×e×e, which is about 20.086.", + "returnDescription": "e to the power of that value", + "scratchblock": "([e ^ v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/floorOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "floorOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "This always rounds the number down to the greatest whole number less than or equal to the\nnumber. For example, floor(1.73) = 1 and floor(-2.74) = -3.", + "returnDescription": "the floor of that value", + "scratchblock": "([floor v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/lerp", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "lerp", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "start", + "stop", + "amt" + ], + "parameterDescriptions": [ + "first value", + "second value", + "double between 0.0 and 1.0" + ], + "description": "Calculates a number between two numbers at a specific increment. The amt parameter is\nthe amount to interpolate between the two values where 0.0 equal to the first point, 0.1 is\nvery near the first point, 0.5 is half-way in between, etc. The lerp function is convenient for\ncreating motion along a straight path and for drawing dotted lines.", + "returnDescription": "the interpolated value", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/lnOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "lnOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "ln is \"natural log.\" It figures out how many times e would have to be multiplied by itself to\nget the value. For example, if the value was 148.4, the answer would be about 5 because e5\n(e×e×e×e×e) is around 148.4.", + "returnDescription": "the ln of that value", + "scratchblock": "([ln v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/logOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "logOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"Log\" is short for \"logarithm.\" The log function figures out how many times 10 must be\nmultiplied by itself to get the value. For example, if the value is 100, the answer is 2\nbecause 10×10 is 100.", + "returnDescription": "the log to base 10 of that value", + "scratchblock": "([log v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/map", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "map", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double", + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "value", + "start1", + "stop1", + "start2", + "stop2" + ], + "parameterDescriptions": [ + "the incoming value to be converted", + "lower bound of the value's current range", + "upper bound of the value's current range", + "lower bound of the value's target range", + "upper bound of the value's target range" + ], + "description": "Re-maps a number from one range to another.
\n
\nIn the first example above, the number 25 is converted from a value in the range of 0 to 100\ninto a value that ranges from the left edge of the window (0) to the right edge (width).
\n
\nAs shown in the second example, numbers outside the range are not clamped to the minimum and\nmaximum parameters values, because out-of-range values are often intentional and useful.", + "returnDescription": "the value mapped to the new range", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/max", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "max", + "constructor": false, + "static": true, + "parameters": [ + "double[]" + ], + "returns": "double", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "values" + ], + "description": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "returnDescription": "the maximum", + "scratchblock": "", + "since": "" + }, + { + "name": "max", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "int", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "values" + ], + "description": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "returnDescription": "the maximum", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/min", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "min", + "constructor": false, + "static": true, + "parameters": [ + "double[]" + ], + "returns": "double", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "values" + ], + "description": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "returnDescription": "the minimum", + "scratchblock": "", + "since": "" + }, + { + "name": "min", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "int", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "values" + ], + "description": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "returnDescription": "the minimum", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/mod", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "mod", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "first value", + "second value" + ], + "description": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second.\n\nThe answer takes the sign of the second input, as the Scratch block does, so\n`mod(-7, 3)` is 2 rather than the -1 Java's own `%` would give.\nThat is what makes it useful for wrapping a value into a range: a sprite\nwhose x has gone negative still lands somewhere sensible.", + "returnDescription": "what is left of the first value after dividing by the second", + "scratchblock": "((x) mod (y))", + "since": "" + }, + { + "name": "mod", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int" + ], + "returns": "int", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "first value", + "second value" + ], + "description": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second, with the sign of the second input,\nas the Scratch block does.", + "returnDescription": "what is left of the first value after dividing by the second", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/round", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "round", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "int", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "The standard rules of rounding are followed; decimals that are .5 or higher are rounded up,\nwhereas decimals less than .5 are rounded down.", + "returnDescription": "the rounded value", + "scratchblock": "(round (x))", + "since": "" + }, + { + "name": "round", + "constructor": false, + "static": true, + "parameters": [ + "double", + "int" + ], + "returns": "double", + "parameterNames": [ + "x", + "precision" + ], + "parameterDescriptions": [ + "a value", + "the number of decimal places to round to" + ], + "description": "Rounds a number to a specified number of decimal places.", + "returnDescription": "the rounded value", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/sinOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "sinOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "an angle between [0,...,360]" + ], + "description": "\"sin\" is an abbreviation for \"sine.\" The sine of an angle is the ratio between the length of\nthe side that is opposite (across) the triangle from it and the length of the hypotenuse (the\nside that is across from the right angle). In the picture above, the sine of angle A is equal\nto side \"opposite\" divided by side \"hypotenuse\".", + "returnDescription": "the sin of the angle", + "scratchblock": "([sin v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/sqrtOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "sqrtOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "\"sqrt\" is an abbreviation for \"square root.\" A number that is squared is multiplied by itself.\nFor example, when 2 is squared, the answer is 2×2, which is 4. When a number is square rooted,\nthe answer is the number that was squared to get it. So, the square root of 4 is 2. Similarly,\nthe square root of 2 is about 1.414213562373095 because 1.4142135623730952\n(1.414213562373095\\u202f×\\u202f1.414213562373095) is close to 2.", + "returnDescription": "the square root of the value", + "scratchblock": "([sqrt v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/tanOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "tanOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "an angle between [0, ..., 360]" + ], + "description": "\"tan\" is the abbreviation for \"tangent.\" The tangent of an angle is the ratio between the\nlength of the side adjacent to it and the side opposite of it. In the picture above, the\ntangent of angle A is equal to side \"opposite\" divided by side \"adjacent\".", + "returnDescription": "the tan of the angle", + "scratchblock": "([tan v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Operators/tenToThePowerOf", + "owner": "org.openpatch.scratch.Operators", + "signatures": [ + { + "name": "tenToThePowerOf", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a value" + ], + "description": "The 10^ function multiplies 10 times itself the value number of times. For example, if the\nvalue was 6, the answer would be 106 (that is 10×10×10×10×10×10), which is 1,000,000.", + "returnDescription": "10 to the power of that value", + "scratchblock": "([10 ^ v] of (x))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/changeColor", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "a hue value [0...255]" + ], + "description": "Change color via a hue value, which is added to the current hue value", + "returnDescription": "", + "scratchblock": "change pen [color v] by (c)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/changeSize", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "size" + ], + "parameterDescriptions": [ + "size to change" + ], + "description": "Change the size of the pen", + "returnDescription": "", + "scratchblock": "change pen size by (size)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/changeTransparency", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "the step to change the transparency by" + ], + "description": "Change the transparency by a step", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Pen object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Pen", + "parameterNames": [ + "s" + ], + "parameterDescriptions": [ + "the Sprite object to associate with this Pen" + ], + "description": "Constructs a new Pen object associated with the given Sprite.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Pen", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "org.openpatch.scratch.Pen", + "parameterNames": [ + "p" + ], + "parameterDescriptions": [ + "Pen object to copy" + ], + "description": "Copies a Pen object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/down", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "down", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Set the pen down.", + "returnDescription": "", + "scratchblock": "pen down", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/eraseAll", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "eraseAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Erases all.", + "returnDescription": "", + "scratchblock": "erase all", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/getColor", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "getColor", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current color of the pen.", + "returnDescription": "the color of the pen", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/getSize", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the size of the pen", + "returnDescription": "the size of the pen", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/goToBackground", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "goToBackground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Sets the pen to the background. This method changes the state of the pen to\nindicate that it is\nno longer in the foreground.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/goToForeground", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "goToForeground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the pen to the foreground. This method sets the pen's state to indicate\nthat it is in the\nforeground.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/goToMousePointer", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the object to the current position of the mouse pointer.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/goToRandomPosition", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the object to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/isInBackground", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "isInBackground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns true if the pen is in the background.", + "returnDescription": "true if the pen is in the background", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "color of the pen" + ], + "description": "Set the color of the pen", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "a hue value [0...255]" + ], + "description": "Set color via hue value", + "returnDescription": "", + "scratchblock": "set pen [color v] to (h)", + "since": "" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "a red value [0...255]", + "a green value [0...255]", + "a blue value [0...255]" + ], + "description": "Set color via rgb values", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/setPosition", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "x coordinate", + "y coordinate" + ], + "description": "Set the position if the pen is down.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "the Vector2 object containing the new x and y coordinates" + ], + "description": "Sets the position of the pen using a Vector2 object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/setSize", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "size" + ], + "parameterDescriptions": [ + "size of the pen" + ], + "description": "Set the size of the pen", + "returnDescription": "", + "scratchblock": "set pen size to (size)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/setTransparency", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "transparency" + ], + "parameterDescriptions": [ + "transparency of the pen" + ], + "description": "Set the transparency", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/stamp", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stamps the current sprite onto the canvas. If the sprite is not null, it will\nstamp either to\nthe foreground or the background based on the value of the isForeground flag.", + "returnDescription": "", + "scratchblock": "stamp", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Pen/up", + "owner": "org.openpatch.scratch.Pen", + "signatures": [ + { + "name": "up", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Move the pen up.", + "returnDescription": "", + "scratchblock": "pen up", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Polygon/addPoint", + "owner": "org.openpatch.scratch.Polygon", + "signatures": [ + { + "name": "addPoint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "the x-coordinate", + "the y-coordinate" + ], + "description": "Adds a point to the polygon.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Polygon/constructor", + "owner": "org.openpatch.scratch.Polygon", + "signatures": [ + { + "name": "Polygon", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Polygon", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Creates an empty polygon.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Polygon", + "constructor": true, + "static": false, + "parameters": [ + "double[]", + "double[]" + ], + "returns": "org.openpatch.scratch.Polygon", + "parameterNames": [ + "xPoints", + "yPoints" + ], + "parameterDescriptions": [ + "an array of x-coordinates", + "an array of y-coordinates" + ], + "description": "Creates a polygon with the specified vertices.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/constructor", + "owner": "org.openpatch.scratch.Random", + "signatures": [], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "x-coordinate" + ], + "description": "Returns the Open Simplex noise value at specified coordinates", + "returnDescription": "the noise value between 0 and 1", + "scratchblock": "", + "since": "" + }, + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "x-coordinate", + "y-coordinate" + ], + "description": "Returns the Open Simplex noise value at specified coordinates", + "returnDescription": "the noise value", + "scratchblock": "", + "since": "" + }, + { + "name": "noise", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "x", + "y", + "z" + ], + "parameterDescriptions": [ + "x-coordinate", + "y-coordinate", + "z-coordinate" + ], + "description": "Returns the Open Simplex noise value at specified coordinates", + "returnDescription": "the noise value", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/noiseSeed", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "noiseSeed", + "constructor": false, + "static": true, + "parameters": [ + "long" + ], + "returns": "void", + "parameterNames": [ + "noiseSeed" + ], + "parameterDescriptions": [ + "the seed" + ], + "description": "Sets the seed for the noise method.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/random", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a random double between 0 and 1.", + "returnDescription": "a random double", + "scratchblock": "", + "since": "" + }, + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "max" + ], + "parameterDescriptions": [ + "the maximum double" + ], + "description": "Returns a random double between 0 and max.", + "returnDescription": "a random double", + "scratchblock": "", + "since": "" + }, + { + "name": "random", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "double", + "parameterNames": [ + "min", + "max" + ], + "parameterDescriptions": [ + "the minimum double", + "the maximum double" + ], + "description": "Returns a random double between min and max.", + "returnDescription": "a random double", + "scratchblock": "(pick random (min) to (max))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomInt", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomInt", + "constructor": false, + "static": true, + "parameters": [ + "int" + ], + "returns": "int", + "parameterNames": [ + "max" + ], + "parameterDescriptions": [ + "the maximum integer" + ], + "description": "Returns a random integer between 0 and max.", + "returnDescription": "a random integer", + "scratchblock": "", + "since": "" + }, + { + "name": "randomInt", + "constructor": false, + "static": true, + "parameters": [ + "int", + "int" + ], + "returns": "int", + "parameterNames": [ + "min", + "max" + ], + "parameterDescriptions": [ + "the minimum integer", + "the maximum integer" + ], + "description": "Returns a random integer between min and max.", + "returnDescription": "a random integer", + "scratchblock": "(pick random (min) to (max))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomPosition", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomPosition", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a random position with respect to the width of the window.", + "returnDescription": "a random position vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomSeed", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomSeed", + "constructor": false, + "static": true, + "parameters": [ + "long" + ], + "returns": "void", + "parameterNames": [ + "seed" + ], + "parameterDescriptions": [ + "the seed" + ], + "description": "Sets the seed for the random method.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomVector2", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomVector2", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a random unit vector", + "returnDescription": "a random unit vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomX", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomX", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return a random x coordinate with respect to the width of the window.", + "returnDescription": "a random x coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Random/randomY", + "owner": "org.openpatch.scratch.Random", + "signatures": [ + { + "name": "randomY", + "constructor": false, + "static": true, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return a random y coordinate with respect to the width of the window.", + "returnDescription": "a random y coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Rectangle/constructor", + "owner": "org.openpatch.scratch.Rectangle", + "signatures": [ + { + "name": "Rectangle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Rectangle", + "parameterNames": [ + "x", + "y", + "width", + "height" + ], + "parameterDescriptions": [ + "the x-coordinate of the rectangle's top-left corner", + "the y-coordinate of the rectangle's top-left corner", + "the width of the rectangle", + "the height of the rectangle" + ], + "description": "Creates a rectangle with the specified position and size.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/constructor", + "owner": "org.openpatch.scratch.Shape", + "signatures": [], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/contains", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "contains", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "boolean", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "the x-coordinate of the point", + "the y-coordinate of the point" + ], + "description": "Check if the shape contains a point defined by its x and y coordinates.", + "returnDescription": "true if the shape contains the point, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/getBounds", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "getBounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Bounds", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the bounds of the shape.", + "returnDescription": "a Bounds object representing the bounding box of the shape", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/intersects", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "intersects", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "boolean", + "parameterNames": [ + "other" + ], + "parameterDescriptions": [ + "the other shape to check intersection with" + ], + "description": "Check if the shape intersects with another shape.", + "returnDescription": "true if the shapes intersect, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/rotate", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "rotate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [ + "theta", + "anchorX", + "anchorY" + ], + "parameterDescriptions": [ + "the angle in degrees to rotate", + "the x-coordinate of the anchor point", + "the y-coordinate of the anchor point" + ], + "description": "Rotate the shape by the specified angle around a given anchor point.", + "returnDescription": "a new Shape object that is rotated", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/scale", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "scale", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [ + "scaleX", + "scaleY" + ], + "parameterDescriptions": [ + "", + "" + ], + "description": "Check if the shape is empty.", + "returnDescription": "true if the shape is empty, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Shape/translate", + "owner": "org.openpatch.scratch.Shape", + "signatures": [ + { + "name": "translate", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [ + "dx", + "dy" + ], + "parameterDescriptions": [ + "the distance to translate in the x direction", + "the distance to translate in the y direction" + ], + "description": "Translate the shape by the specified distances in the x and y directions.", + "returnDescription": "a new Shape object that is translated", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a built-in sprite, for example \"bunny1_jump\". Add\n the sheet in front of the name, for example\n \"platformer/grass\", if the same name exists on several sheets." + ], + "description": "Add one of the costumes that ship with Scratch for Java to the sprite. The\ncostume gets the same name as the built-in sprite. If a costume with that\nname already exists do nothing.\n\nExample usage:\n\n```java\nthis.addCostume(\"bunny1_jump\");\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name", + "imagePath" + ], + "parameterDescriptions": [ + "a unique name", + "a image path, or the name of a built-in sprite such as\n \"bunny1_jump\"" + ], + "description": "Add a costume to the sprite. If a costume with the received name already\nexists do nothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addCostume", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "spriteSheetPath", + "x", + "y", + "width", + "height" + ], + "parameterDescriptions": [ + "The name of the costume.", + "The path to the sprite sheet image file.", + "The x-coordinate of the top-left corner of the costume\n in the sprite sheet.", + "The y-coordinate of the top-left corner of the costume\n in the sprite sheet.", + "The width of the costume in the sprite sheet.", + "The height of the costume in the sprite sheet." + ], + "description": "Adds a new costume to the sprite if a costume with the same name does not\nalready exist.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/addCostumes", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "addCostumes", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "prefix", + "spriteSheet", + "tileWidth", + "tileHeight" + ], + "parameterDescriptions": [ + "a prefix for all generated costumes", + "a path to a sprite sheet, or the name of a built-in sprite", + "the width of a single tile", + "the height of a single tile" + ], + "description": "Adds all tiles from a spritesheet as costumes. The costumes will be name by\nthe prefix and the\nindex in the spritesheet. For example if the prefix is \"tile\" and the\nspritesheet contains 4\ntiles, the costumes will be named \"tile0\", \"tile1\", \"tile2\", and \"tile3\".", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/addSound", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name", + "soundPath" + ], + "parameterDescriptions": [ + "a unique name", + "a sound path, or the name of a built-in sound such as\n \"footstep_carpet_000\"" + ], + "description": "Add a sound to the sprite. If a sound with the received name already exists\ndo nothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a built-in sound, for example \"footstep_carpet_000\"" + ], + "description": "Add one of the sounds that ship with Scratch for Java to the sprite. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.\n\nExample usage:\n\n```java\nthis.addSound(\"footstep_carpet_000\");\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/ask", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "question" + ], + "parameterDescriptions": [ + "the question to show" + ], + "description": "Asks a question and waits for an answer to be typed in. The question appears\nat the top of the stage.\n\nUnlike Scratch, this does not pause the sprite. `run()` keeps being called\nwhile the question is on screen, so check [isAsking()](isAsking) or wait for\n[getAnswer()](getAnswer) to change.", + "returnDescription": "", + "scratchblock": "ask [question] and wait", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/broadcast", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "message" + ], + "parameterDescriptions": [ + "The message to broadcast." + ], + "description": "Broadcasts a message to every sprite on the stage, this one included, and\nto the stage itself, as in Scratch. If the sprite is not on a stage, nothing\nhappens.", + "returnDescription": "", + "scratchblock": "broadcast [message v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changePosition", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector representing the change in position" + ], + "description": "Changes the position of the sprite by a given vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "changePosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "how far to move along the x-axis", + "how far to move along the y-axis" + ], + "description": "Changes the position of the sprite by the given amounts.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeSize", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "amount" + ], + "parameterDescriptions": [ + "a percentage [0...100]" + ], + "description": "Changes the size of the sprite by a given percentage.", + "returnDescription": "", + "scratchblock": "change size by (amount)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeTint", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "a step value" + ], + "description": "Changes the tint for the sprite by a step.", + "returnDescription": "", + "scratchblock": "change [color v] effect by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeTransparency", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "a step value" + ], + "description": "Changes how see-through the sprite is by a step. A positive step fades it\nout, a negative one brings it back.", + "returnDescription": "", + "scratchblock": "change [ghost v] effect by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeVolume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "how much to add to the volume, in percent" + ], + "description": "Makes every sound of this sprite louder or quieter.", + "returnDescription": "", + "scratchblock": "change volume by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeX", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "number in pixels" + ], + "description": "Changes x by a certain amount", + "returnDescription": "", + "scratchblock": "change x by (x)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/changeY", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "number in pixels" + ], + "description": "Changes y by a certain amount", + "returnDescription": "", + "scratchblock": "change y by (y)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/clone", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Creates a clone of this sprite, like Scratch's \"create clone of myself\": a\nnew sprite of the same class (a clone of a `Cat` is a `Cat`),\nwith the same costume, position, direction, size and pen, and a copy of\nthe variables of your class. It is put on the stage right behind this\nsprite, and its [whenStartsAsClone()](whenStartsAsClone) runs; the constructor does\nnot run again.\n\nNumbers, text and booleans in your variables are the clone's own. A list\nor another object is shared with the original: give the clone its own in\n[whenStartsAsClone()](whenStartsAsClone) if it needs one.\n\n```java\nBullet bullet = (Bullet) this.clone();\n```", + "returnDescription": "the clone, of the same class as this sprite", + "scratchblock": "create clone of [myself v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Sprite", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Sprite object with default settings.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Sprite", + "parameterNames": [ + "name", + "imagePath" + ], + "parameterDescriptions": [ + "a unique name for the costume", + "a path to an image file, or the name of a built-in sprite\n such as \"slimeGreen\"" + ], + "description": "Constructs a new Sprite object with a specified costume.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Sprite", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Sprite", + "parameterNames": [ + "s" + ], + "parameterDescriptions": [ + "a Sprite object to copy" + ], + "description": "Copies a Sprite object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/debug", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Object[]" + ], + "returns": "void", + "parameterNames": [ + "values" + ], + "parameterDescriptions": [ + "one or more values to print" + ], + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the sprite's class name so you can tell\nwhich sprite it came from.\n\nExample:\n\n```java\nthis.debug(\"x =\", getX(), \"y =\", getY());\n// prints: [CatSprite] x = 100.0 y = 200.0\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/deleteThisClone", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "deleteThisClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Removes this sprite from the stage if it is a clone, like Scratch's\n\"delete this clone\". The original stays.", + "returnDescription": "", + "scratchblock": "delete this clone", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/disableHitbox", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "disableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Disables the hitbox for the sprite. Once the hitbox is disabled, the sprite\nwill no longer\ndetect collisions with other objects.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/distanceToMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "distanceToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Calculates the distance from the current sprite to the mouse pointer.", + "returnDescription": "the distance to the mouse pointer as a double.", + "scratchblock": "(distance to [mouse-pointer v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/distanceToSprite", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "distanceToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "double", + "parameterNames": [ + "sprite" + ], + "parameterDescriptions": [ + "the other sprite to which the distance is calculated" + ], + "description": "Calculates the Euclidean distance between this sprite and another sprite.", + "returnDescription": "the distance between this sprite and the specified sprite", + "scratchblock": "(distance to [sprite v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/enableHitbox", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "enableHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Enables the hitbox for the sprite. This method sets the hitboxDisabled flag\nto false, allowing\nthe sprite to interact with other objects.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getAnswer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the last answer that was typed in.", + "returnDescription": "the answer, or an empty string if nothing has been answered yet", + "scratchblock": "(answer)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getCurrentCostumeIndex", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getCurrentCostumeIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current costume index", + "returnDescription": "a costume index", + "scratchblock": "(costume [number v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getCurrentCostumeName", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getCurrentCostumeName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current costume name", + "returnDescription": "a costume name", + "scratchblock": "(costume [name v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getDeltaTime", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the seconds passed since the last frame.", + "returnDescription": "seconds since last frame", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getDirection", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getDirection", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the direction of the sprite.", + "returnDescription": "the direction [0...360]", + "scratchblock": "(direction)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getHeight", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "returnDescription": "the height of the sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getHitbox", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getHitbox", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Hitbox", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the hitbox of the sprite based on its current costume, position, and\nrotation. If the\nsprite has a hitbox already defined, it updates and returns it. Otherwise, it\ncalculates a new\nhitbox based on the sprite's dimensions and rotation.", + "returnDescription": "the hitbox of the sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getMouse", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current position of the mouse cursor.", + "returnDescription": "a Vector2 object representing the current mouse cursor position, with\n the x-coordinate\n obtained from getMouseX() and the y-coordinate obtained from\n getMouseY().", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getMouseX", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current x-position of the mouse cursor", + "returnDescription": "x-position", + "scratchblock": "(mouse x)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getMouseY", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current y-position of the mouse cursor", + "returnDescription": "y-position", + "scratchblock": "(mouse y)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getPen", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getPen", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Pen", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the pen of the sprite.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getPosition", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current position of the sprite.", + "returnDescription": "A [Vector2](../Vector2/index) object representing the x and y coordinates of the\n sprite.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getShaders", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shaders of this sprite. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.\n\nExample usage:\n\n```java\nthis.getShaders().add(\"blur\", \"blur.frag\", null);\nthis.getShaders().switchTo(\"blur\");\n```", + "returnDescription": "the shaders", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getSize", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the size of the sprite.", + "returnDescription": "size in percentage", + "scratchblock": "(size)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getStage", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current stage associated with this sprite.", + "returnDescription": "the stage associated with this sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getText", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getText", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the text associated with this sprite.", + "returnDescription": "the text associated with this sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getTimer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return the default timer", + "returnDescription": "the default timer", + "scratchblock": "(timer)", + "since": "" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Timer", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "" + ], + "description": "Return a timer by name", + "returnDescription": "a timer", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getTint", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getTint", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the tint value of the current costume.", + "returnDescription": "the tint value of the current costume, or null if there are no\n costumes.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the class object of the type of sprite to check for" + ], + "description": "Returns the first sprite of the specified type that is currently touching\nthis sprite.", + "returnDescription": "the first sprite of the specified type that is touching this sprite,\n or null if no such\n sprite is found", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getTouchingSprites", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getTouchingSprites", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "java.util.List", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the class of the type of sprites to return" + ], + "description": "Returns a list of sprites of the specified type that are currently touching\nthis sprite.", + "returnDescription": "a list of sprites of the specified type that are touching this\n sprite, or null if the\n stage is not set", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getTransparency", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getTransparency", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the transparency of the current costume.", + "returnDescription": "how see-through the sprite is, 0 solid and 100 invisible", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getVolume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns how loud the sounds of this sprite play.", + "returnDescription": "the volume, from 0 to 100", + "scratchblock": "(volume)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getWidth", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "returnDescription": "the width of the sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getX", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the x coordinate of the sprite", + "returnDescription": "a x coordinate", + "scratchblock": "(x position)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/getY", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the y coordinate of the sprite", + "returnDescription": "a y coordinate", + "scratchblock": "(y position)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/glide", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "glide", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "seconds", + "x", + "y" + ], + "parameterDescriptions": [ + "how long the trip should take", + "where to end up", + "where to end up" + ], + "description": "Slides the sprite to a place over the given time, instead of jumping there.\n\nUnlike Scratch this does not hold up the sprite: `run()` keeps being called\nwhile the sprite is on its way. Use [isGliding()](isGliding) to tell whether it\nhas arrived.", + "returnDescription": "", + "scratchblock": "glide (seconds) secs to x: (x) y: (y)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goLayersBackwards", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "number" + ], + "parameterDescriptions": [ + "the number of layers to move the sprite backwards" + ], + "description": "Moves the sprite backwards by a specified number of layers in the stage. If\nthe sprite is not\npart of a stage, the method does nothing.", + "returnDescription": "", + "scratchblock": "go [backward v] (number) layers", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goLayersForwards", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "number" + ], + "parameterDescriptions": [ + "the number of layers to move the sprite forward" + ], + "description": "Moves the sprite forward by a specified number of layers within its stage.", + "returnDescription": "", + "scratchblock": "go [forward v] (number) layers", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goToBackLayer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the sprite to the back layer of the stage. If the sprite is not\nassociated with any\nstage, the method returns without performing any action.", + "returnDescription": "", + "scratchblock": "go to [back v] layer", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goToFrontLayer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves this sprite to the front layer of the stage. If the sprite is not part\nof any stage, the\nmethod does nothing.", + "returnDescription": "", + "scratchblock": "go to [front v] layer", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goToMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goToMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the sprite to the current position of the mouse pointer. This method\nupdates the sprite's\nposition to the coordinates of the mouse cursor.", + "returnDescription": "", + "scratchblock": "go to [mouse-pointer v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goToRandomPosition", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goToRandomPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves the sprite to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "returnDescription": "", + "scratchblock": "go to [random position v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/goToSprite", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "goToSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void", + "parameterNames": [ + "sprite" + ], + "parameterDescriptions": [ + "the sprite to move to" + ], + "description": "Moves this sprite to the position of the specified sprite.", + "returnDescription": "", + "scratchblock": "go to [sprite v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/hide", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "hide", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Hides the sprite. The pen is not effected.", + "returnDescription": "", + "scratchblock": "hide", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/hideVariable", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name the monitor was shown with" + ], + "description": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "returnDescription": "", + "scratchblock": "hide variable [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/ifOnEdgeBounce", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "ifOnEdgeBounce", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks if the sprite is on the edge of the stage and bounces it back if it\nis. The sprite's\ndirection is reversed when it hits the left or right border, and it is\nreversed and rotated by\n180 degrees when it hits the top or bottom border. The method does nothing if\nthe hitbox is\ndisabled or if the sprite is a UI element. It also does nothing if the\nsprite has not been added to a stage yet.", + "returnDescription": "", + "scratchblock": "if on edge, bounce", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isAsking", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks whether a question is on screen and still waiting for an answer.", + "returnDescription": "true while a question is waiting", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isClone", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Whether this sprite is a clone, made by [clone()](clone).", + "returnDescription": "true for a clone, false for the original", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isColorTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isColorTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "returns": "boolean", + "parameterNames": [ + "color", + "other" + ], + "parameterDescriptions": [ + "a colour of this sprite's costume", + "the colour to look for under it" + ], + "description": "Checks whether a colour of the sprite is touching a colour on the stage:\nonly the parts of the costume painted in `color` count. A car whose\nfront bumper is red can ask whether the bumper touches the grass.\n\n```java\nif (this.isColorTouchingColor(HtmlColor.RED, HtmlColor.GREEN)) {\n this.say(\"Off the road!\");\n}\n```", + "returnDescription": "true if the colour touches the other colour", + "scratchblock": "<color [#ff0000] is touching [#00ff00]?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isGliding", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isGliding", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks whether the sprite is still on its way to a place it was told to\nglide to.", + "returnDescription": "true while it is still moving", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isKeyPressed", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "a key" + ], + "description": "Returns true if the key is pressed", + "returnDescription": "key pressed", + "scratchblock": "<key [space v] pressed?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isMouseDown", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns true is the mouse button is down", + "returnDescription": "mouse button down", + "scratchblock": "<mouse down?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isSoundPlaying", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "boolean", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "Name of the sound" + ], + "description": "Returns true if the sound if playing", + "returnDescription": "playing", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "boolean", + "parameterNames": [ + "color" + ], + "parameterDescriptions": [ + "the colour to look for" + ], + "description": "Checks whether the sprite is touching a colour: whether anything it paints\nlies over that colour on the stage - on the backdrop, on what the pen drew,\nor on another sprite.\n\nAs in Scratch, colours that are nearly the same count, so anti-aliased\nedges still match. Only what is under the painted part of the costume\ncounts, not the empty space around it, and not the hitbox.\n\n```java\nif (this.isTouchingColor(HtmlColor.RED)) {\n this.say(\"Ouch!\");\n}\n```\n\nThe time it takes grows with the size of the sprite, not of the stage.", + "returnDescription": "true if the sprite is touching the colour", + "scratchblock": "<touching color [#ff0000]?>", + "since": "" + }, + { + "name": "isTouchingColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "boolean", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "the red part [0...255]", + "the green part [0...255]", + "the blue part [0...255]" + ], + "description": "Checks whether the sprite is touching a colour given by its red, green and\nblue parts.", + "returnDescription": "true if the sprite is touching the colour", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isTouchingEdge", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isTouchingEdge", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns true if the rectangle which contains the image is outside of the\nstage", + "returnDescription": "true if outside", + "scratchblock": "<touching [edge v]?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isTouchingMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isTouchingMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns true is the mouse pointer is touching the hitbox of the sprite.", + "returnDescription": "true if touching", + "scratchblock": "<touching [mouse-pointer v]?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "boolean", + "parameterNames": [ + "sprite" + ], + "parameterDescriptions": [ + "The sprite to check for collision with." + ], + "description": "Checks if this sprite is touching another sprite.", + "returnDescription": "true if this sprite is touching the specified sprite, false\n otherwise. Returns false if\n the specified sprite is the same as this sprite, if the stage is\n null, if the specified\n sprite is null, not shown, or has its hitbox disabled.", + "scratchblock": "<touching [sprite v]?>", + "since": "" + }, + { + "name": "isTouchingSprite", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "boolean", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the class type of the sprite to check for collision" + ], + "description": "Checks if this sprite is touching any sprite of the specified class type.", + "returnDescription": "true if this sprite is touching any sprite of the specified class\n type, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/isVisible", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "isVisible", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns if the sprite is visible", + "returnDescription": "is visible", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/move", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "steps" + ], + "parameterDescriptions": [ + "a number of pixels" + ], + "description": "Moves the sprite towards the current rotation by the received steps.", + "returnDescription": "", + "scratchblock": "move (steps) steps", + "since": "" + }, + { + "name": "move", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Moves the sprite in the direction of the given vector. The length of the\nvector determines how\nmove the sprite will move in this direction.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/nextCostume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "nextCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switch to the next costume.", + "returnDescription": "", + "scratchblock": "next costume", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/pickRandom", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int", + "parameterNames": [ + "from", + "to" + ], + "parameterDescriptions": [ + "the lower bound of the range (inclusive)", + "the upper bound of the range (exclusive)" + ], + "description": "Returns a random integer between the specified range.", + "returnDescription": "a random integer between the specified range", + "scratchblock": "(pick random (from) to (to))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/playSound", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the sound name" + ], + "description": "Plays a sound.\n\nEvery sprite plays its own copy, so ten sprites playing the same sound are\nheard ten times at once. One sprite only plays a sound once at a time:\nplaying it again while it is still going does nothing.", + "returnDescription": "", + "scratchblock": "start sound [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/pointInDirection", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "degrees" + ], + "parameterDescriptions": [ + "The direction in degrees to point the sprite. 0 degrees is up,\n 90 degrees is to the right, 180 degrees is down, and 270\n degrees is to the left." + ], + "description": "Points the sprite in the specified direction.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "pointInDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "the target vector to point towards" + ], + "description": "Points the sprite in the direction of the given vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/pointTowardsMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "pointTowardsMousePointer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Points the sprite towards the current position of the mouse pointer. This\nmethod calculates the\nangle between the sprite's current position and the mouse pointer's position,\nthen sets the\nsprite's direction accordingly.", + "returnDescription": "", + "scratchblock": "point towards [mouse-pointer v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/pointTowardsSprite", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "pointTowardsSprite", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void", + "parameterNames": [ + "s" + ], + "parameterDescriptions": [ + "the sprite to point towards" + ], + "description": "Points the current sprite towards the specified sprite.", + "returnDescription": "", + "scratchblock": "point towards [sprite v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/previousCostume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "previousCostume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switch to the previous costume.", + "returnDescription": "", + "scratchblock": "switch costume to (previous costume)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/remove", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Removes this sprite from its current stage. For \"delete this clone\", see\n[deleteThisClone()](deleteThisClone).", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/run", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is intended to be overridden by subclasses to define the behavior\nof the sprite\nwhen it is run. By default, this method does nothing.\n\nIt is called every frame.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/say", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "The text to be displayed in the speech bubble." + ], + "description": "Makes the sprite display a speech bubble with the specified text.", + "returnDescription": "", + "scratchblock": "say [text]", + "since": "" + }, + { + "name": "say", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "text", + "millis" + ], + "parameterDescriptions": [ + "The message to be displayed.", + "The duration in milliseconds for which the message will be\n displayed." + ], + "description": "Displays a text message for a specified duration.", + "returnDescription": "", + "scratchblock": "say [text] for (millis) seconds", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setDirection", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "degrees" + ], + "parameterDescriptions": [ + "between 0 and 360" + ], + "description": "Sets the direction of the sprite to a given degrees. When this value is 0 the\nsprite moves\nup, when it is 180 it moves down.", + "returnDescription": "", + "scratchblock": "point in direction (degrees)", + "since": "" + }, + { + "name": "setDirection", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Sets the direction of the sprite to the direction of a given vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setHitbox", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "double[]" + ], + "returns": "void", + "parameterNames": [ + "points" + ], + "parameterDescriptions": [ + "an array of integers representing the x and y coordinates of\n the hitbox vertices.\n The length of the array should be even, with each pair of\n integers representing a point (x,\n y)." + ], + "description": "Sets the hitbox for the sprite using the provided points. The points should\nbe provided in\npairs representing the x and y coordinates.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setHitbox", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Shape" + ], + "returns": "void", + "parameterNames": [ + "shape" + ], + "parameterDescriptions": [ + "the shape to be used for the hitbox" + ], + "description": "Sets the hitbox for the sprite using the specified shape.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setPosition", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "a x coordinate", + "a y coordinate" + ], + "description": "Sets the position of the sprite", + "returnDescription": "", + "scratchblock": "go to x: (x) y: (y)", + "since": "" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Sets the position of the sprite based on the coordinates of a given vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setRotationCenter", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setRotationCenter", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "the x-coordinate in the costume, from its left edge", + "the y-coordinate in the costume, from its top edge" + ], + "description": "Sets the point of the costume the sprite turns around - Scratch's rotation\ncenter. It is also the point that sits at the sprite's position, so it is\nwhere the pen draws from and what `goTo` puts in place.\n\nThe point is given in the costume's own pixels, counted from its top left\ncorner, the same way as [setHitbox(double...)](setHitbox): a sword whose hilt\nis 12 pixels from the left and 60 from the top swings around the hilt with\n`setRotationCenter(12, 60)`. It grows and shrinks with the sprite's\nsize and holds for every costume of the sprite. Without it, a sprite turns\naround the middle of its costume.\n\n```java\nthis.addCostume(\"hand\", \"assets/clock-hand.png\");\nthis.setRotationCenter(8, 100); // the end of the hand\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setRotationStyle", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setRotationStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.RotationStyle" + ], + "returns": "void", + "parameterNames": [ + "style" + ], + "parameterDescriptions": [ + "the rotation style to be set" + ], + "description": "Sets the rotation style for the sprite.", + "returnDescription": "", + "scratchblock": "set rotation style [left-right v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setSize", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setSize", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "percentage" + ], + "parameterDescriptions": [ + "a percentage [0...100]" + ], + "description": "Sets the size of the sprite.", + "returnDescription": "", + "scratchblock": "set size to (percentage) %", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "a color object" + ], + "description": "Sets the tint for the sprite with an color object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "a red value [0...255]", + "a green value [0...255]", + "a blue value [0...255]" + ], + "description": "Sets the tint for the sprite with rgb.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "a hue value [0...255]" + ], + "description": "Sets the tint for the sprite with a hue.", + "returnDescription": "", + "scratchblock": "set [color v] effect to (h)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setTransparency", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "transparency" + ], + "parameterDescriptions": [ + "[0...100], 0 solid and 100 invisible" + ], + "description": "Sets how see-through the sprite is, as Scratch's ghost effect does: 0 is the\nsolid sprite you start with and 100 is invisible. Anything outside that is\npinned to it.", + "returnDescription": "", + "scratchblock": "set [ghost v] effect to (transparency)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setVolume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "percent" + ], + "parameterDescriptions": [ + "0 for silent, 100 for full volume" + ], + "description": "Sets how loud every sound of this sprite plays.", + "returnDescription": "", + "scratchblock": "set volume to (percent) %", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setX", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a x coordinate" + ], + "description": "Sets the x coordinate", + "returnDescription": "", + "scratchblock": "set x to (x)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/setY", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "a y coordinate" + ], + "description": "Sets the y coordinate", + "returnDescription": "", + "scratchblock": "set y to (y)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/show", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "show", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Shows the sprite.", + "returnDescription": "", + "scratchblock": "show", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/showVariable", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.util.function.Supplier" + ], + "returns": "void", + "parameterNames": [ + "name", + "value" + ], + "parameterDescriptions": [ + "the variable's name, shown after the sprite's", + "gives the value to show; asked for it every frame" + ], + "description": "Shows a monitor for one of this sprite's variables in the top left corner\nof the stage, like Scratch's variable monitors: \"Cat: score\" and the\ncurrent value, updated every frame. Showing the same name again replaces\nthe monitor; it goes away with the sprite.\n\n```java\npublic Cat() {\n this.addCostume(\"cat\", \"bunny1_stand\");\n this.showVariable(\"lives\", () -> lives);\n}\n```", + "returnDescription": "", + "scratchblock": "show variable [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/stamp", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stamps the current sprite to the background. A stamp is a non interactive\nversion of the sprite.", + "returnDescription": "", + "scratchblock": "stamp", + "since": "" + }, + { + "name": "stamp", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Layer" + ], + "returns": "void", + "parameterNames": [ + "layer" + ], + "parameterDescriptions": [ + "which layer to stamp onto" + ], + "description": "Stamps the sprite onto one of the stage's layers. A stamp is a picture of\nthe sprite that stays where it is put, and is not interactive.\n\nExample usage:\n\n```java\nthis.stamp(Layer.UI);\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/stopAllSounds", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops the playing of all sounds of the sprite.", + "returnDescription": "", + "scratchblock": "stop all sounds", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/stopSound", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "Name of the sound" + ], + "description": "Stops the playing of the sound with the given name", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/switchCostume", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a costume" + ], + "description": "Switch to a costume by name.", + "returnDescription": "", + "scratchblock": "switch costume to [name v]", + "since": "" + }, + { + "name": "switchCostume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "index" + ], + "parameterDescriptions": [ + "The index of the costume to switch to." + ], + "description": "Switches the current costume of the sprite to the costume at the specified\nindex.", + "returnDescription": "", + "scratchblock": "switch costume to (index)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/think", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "The text to be displayed in the thought bubble." + ], + "description": "Displays a thought bubble with the specified text.", + "returnDescription": "", + "scratchblock": "think [text]", + "since": "" + }, + { + "name": "think", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "text", + "millis" + ], + "parameterDescriptions": [ + "The text to be displayed in the thought bubble.", + "The duration in milliseconds for which the thought bubble will\n be displayed." + ], + "description": "Displays a thought bubble with the specified text for a given duration.", + "returnDescription": "", + "scratchblock": "think [text] for (millis) seconds", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/turnLeft", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "turnLeft", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "degrees" + ], + "parameterDescriptions": [ + "between 0 and 360" + ], + "description": "Rotates the sprite by a certain degrees to the left.", + "returnDescription": "", + "scratchblock": "turn left (degrees) degrees", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/turnRight", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "turnRight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "degrees" + ], + "parameterDescriptions": [ + "between 0 and 360" + ], + "description": "Rotates the sprite by a certain degrees to the right.", + "returnDescription": "", + "scratchblock": "turn right (degrees) degrees", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenAddedToStage", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the sprite is added to the stage. Override this\nmethod to define\ncustom behavior when the sprite is added to the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenBackdropSwitches", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the backdrop to switch to" + ], + "description": "This method is called when the backdrop switches to the specified name.\nOverride this method to\ndefine custom behavior.", + "returnDescription": "", + "scratchblock": "when backdrop switches to [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenClicked", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenClicked", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the sprite is clicked. Override this method to\ndefine custom\nbehavior for the sprite when it is clicked.", + "returnDescription": "", + "scratchblock": "when this sprite clicked", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenIReceive", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "message" + ], + "parameterDescriptions": [ + "The message that is received." + ], + "description": "This method is called when a message is received. Override this method to\ndefine custom\nbehavior.", + "returnDescription": "", + "scratchblock": "when I receive [message v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenKeyPressed", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "the key that was pressed" + ], + "description": "This method is called when a key is pressed. Override this method to define\ncustom behavior.", + "returnDescription": "", + "scratchblock": "when [space v] key pressed", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenKeyReleased", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "the key that was released" + ], + "description": "This method is called when a key is released. Override this method to define\ncustom behavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenMouseClicked", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void", + "parameterNames": [ + "mouseCode" + ], + "parameterDescriptions": [ + "The code representing the mouse button that was clicked." + ], + "description": "This method is called when a mouse click event occurs. Override this method\nto define custom\nbehavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenMouseMoved", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenMouseMoved", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "The x-coordinate of the mouse pointer.", + "The y-coordinate of the mouse pointer." + ], + "description": "This method is called when the mouse is moved. Override this method to define\ncustom behavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the sprite is removed from the stage. Override\nthis method to define\ncustom behavior when the sprite is removed.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Sprite/whenStartsAsClone", + "owner": "org.openpatch.scratch.Sprite", + "signatures": [ + { + "name": "whenStartsAsClone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Runs when this sprite was just made as a clone, like Scratch's \"when I\nstart as a clone\". Override it to give clones their own behaviour, for\nexample to send a bullet on its way.\n\n```java\npublic void whenStartsAsClone() {\n this.show();\n this.goToRandomPosition();\n}\n```", + "returnDescription": "", + "scratchblock": "when I start as a clone", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void", + "parameterNames": [ + "sprite" + ], + "parameterDescriptions": [ + "the sprite to add" + ], + "description": "Adds a sprite to the stage. Sprites are drawn in the order they were added, so a sprite added\nlater is drawn on top of one added earlier.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "a text" + ], + "description": "Add a text object to the stage", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "void", + "parameterNames": [ + "pen" + ], + "parameterDescriptions": [ + "the Pen object to be added to the stage" + ], + "description": "Adds a Pen object to the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "boolean" + ], + "returns": "void", + "parameterNames": [ + "name", + "imagePath", + "stretch" + ], + "parameterDescriptions": [ + "a unique name", + "a image path, or the name of a built-in sprite such as\n \"bg_castle\"", + "stretch image to window size" + ], + "description": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name", + "imagePath" + ], + "parameterDescriptions": [ + "a unique name", + "a image path, or the name of a built-in sprite such as\n \"bg_castle\"" + ], + "description": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a built-in sprite, for example \"bg_castle\". Add the\n sheet in front of the name, for example \"platformer/grass\", if\n the same name exists on several sheets." + ], + "description": "Add one of the backdrops that ship with Scratch for Java to the stage. The\nbackdrop gets the same name as the built-in sprite. If a backdrop with that\nname already exists do nothing.\n\nExample usage:\n\n```java\nthis.addBackdrop(\"bg_castle\");\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/addSound", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name", + "soundPath" + ], + "parameterDescriptions": [ + "a unique name", + "a sound path, or the name of a built-in sound such as\n \"footstep_carpet_000\"" + ], + "description": "Add a sound to the stage. If a sound with the received name already exists do\nnothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "addSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a built-in sound, for example \"footstep_carpet_000\"" + ], + "description": "Add one of the sounds that ship with Scratch for Java to the stage. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.\n\nExample usage:\n\n```java\nthis.addSound(\"footstep_carpet_000\");\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/ask", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "ask", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "question" + ], + "parameterDescriptions": [ + "the question to show" + ], + "description": "Asks a question and waits for an answer to be typed in. A box appears at the\nbottom of the stage; whatever is typed goes into it until Enter is pressed.\n\nUnlike Scratch, this does not pause anything. Your `run()` keeps being\ncalled while the question is on screen, so check [isAsking()](isAsking) or wait\nfor [getAnswer()](getAnswer) to change:\n\n```java\npublic void run() {\n if (!this.isAsking() && this.getAnswer().isEmpty()) {\n this.ask(\"What is your name?\");\n }\n if (!this.getAnswer().isEmpty()) {\n this.display(\"Hello \" + this.getAnswer() + \"!\");\n }\n}\n```", + "returnDescription": "", + "scratchblock": "ask [question] and wait", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/broadcast", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "broadcast", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "message" + ], + "parameterDescriptions": [ + "The message to broadcast." + ], + "description": "Broadcasts a message to every sprite on the stage and to the stage itself,\nas in Scratch. Each of them runs its `whenIReceive` method with the\nmessage.", + "returnDescription": "", + "scratchblock": "broadcast [message v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/changeColor", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "changeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "a step value" + ], + "description": "Changes the background color by adding a step to the hue value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/changeTint", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "changeTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "a step value" + ], + "description": "Changes the colour the backdrop is tinted with by a step.", + "returnDescription": "", + "scratchblock": "change [color v] effect by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/changeTransparency", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "changeTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "a step value" + ], + "description": "Changes how see-through the backdrop is by a step. A positive step fades it\nout, a negative one brings it back.", + "returnDescription": "", + "scratchblock": "change [ghost v] effect by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/changeVolume", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "changeVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "step" + ], + "parameterDescriptions": [ + "how much to add to the volume, in percent" + ], + "description": "Makes every sound of this stage louder or quieter.", + "returnDescription": "", + "scratchblock": "change volume by (step)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Stage with default dimensions. The default width is 480\npixels and the default\nheight is 360 pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [ + "width", + "height" + ], + "parameterDescriptions": [ + "the width of the stage", + "the height of the stage" + ], + "description": "Constructs a new Stage with the specified width and height.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Stage", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [ + "width", + "height", + "assets" + ], + "parameterDescriptions": [ + "the width of the stage", + "the height of the stage", + "the path to the assets directory" + ], + "description": "Constructs a new Stage with the specified width, height, and assets path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/count", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "count", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "int", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the class of the sprites to count" + ], + "description": "Returns the number of sprites of the specified class.", + "returnDescription": "the number of sprites of the specified class", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/debug", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Object[]" + ], + "returns": "void", + "parameterNames": [ + "values" + ], + "parameterDescriptions": [ + "one or more values to print" + ], + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the stage's class name so you can tell\nwhich stage it came from.\n\nExample:\n\n```java\nthis.debug(\"score =\", score, \"lives =\", lives);\n// prints: [MyStage] score = 5 lives = 3\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/display", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "display", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "the text to be displayed" + ], + "description": "Displays the given text on the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "display", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "text", + "millis" + ], + "parameterDescriptions": [ + "The text to be displayed.", + "The duration in milliseconds for which the text will be\n displayed." + ], + "description": "Displays the given text on the screen for a specified duration.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/eraseAll", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "eraseAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Erases all lines on the pen layer.", + "returnDescription": "", + "scratchblock": "erase all", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/exit", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "exit", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Close the window and therefore the whole application.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/find", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "find", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "java.util.List", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "Class" + ], + "description": "Find sprites of a given class.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getAll", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.util.List", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves a list of all sprites in the current stage.", + "returnDescription": "a list containing all sp", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getAnswer", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getAnswer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the last answer that was typed in.", + "returnDescription": "the answer, or an empty string if nothing has been answered yet", + "scratchblock": "(answer)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getCamera", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getCamera", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.camera.Camera", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current camera instance associated with this stage.", + "returnDescription": "the current Camera object.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getColor", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getColor", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Color", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current color of the stage.", + "returnDescription": "the current color", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getCurrentBackdropIndex", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getCurrentBackdropIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current backdrop index", + "returnDescription": "a backdrop index", + "scratchblock": "(backdrop [number v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getCurrentBackdropName", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getCurrentBackdropName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current backdrop name", + "returnDescription": "a backdrop name", + "scratchblock": "(backdrop [name v])", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getDeltaTime", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the seconds passed since the last frame.", + "returnDescription": "secons since last frame", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getFrameRate", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getFrameRate", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Get the frame rate of the application.", + "returnDescription": "the frame rate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getHeight", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "returnDescription": "the height of the sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getMouse", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getMouse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current position of the mouse cursor as a Vector2", + "returnDescription": "mouse position", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getMouseX", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getMouseX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current x-position of the mouse cursor", + "returnDescription": "x-position", + "scratchblock": "(mouse x)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getMouseY", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getMouseY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the current y-position of the mouse cursor", + "returnDescription": "y-position", + "scratchblock": "(mouse y)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getPixels", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getPixels", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.pixels.Pixels", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the colours of everything this stage has drawn.\n\nExample usage:\n\n```java\nint[] colours = this.getPixels().main();\n```", + "returnDescription": "the pixels", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "The desktop pixel buffer is not exposed by the browser renderer.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getShaders", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getShaders", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shaders", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shaders of this stage. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.\n\nExample usage:\n\n```java\nthis.getShaders().add(\"blur\", \"blur.frag\", null);\nthis.getShaders().switchTo(\"blur\");\n```", + "returnDescription": "the shaders", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getSorting", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getSorting", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.sorting.Sorting", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the order in which the sprites of this stage are drawn.\n\nExample usage:\n\n```java\nthis.getSorting().byY();\n```", + "returnDescription": "the sorting", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getTimer", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the timer", + "returnDescription": "the timer", + "scratchblock": "(timer)", + "since": "" + }, + { + "name": "getTimer", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Timer", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "a name" + ], + "description": "Returns a timer by name", + "returnDescription": "the timer", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getVolume", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getVolume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns how loud the sounds of this stage play.", + "returnDescription": "the volume, from 0 to 100", + "scratchblock": "(volume)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/getWidth", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "returnDescription": "the width of the sprite", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/hideVariable", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "hideVariable", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name the monitor was shown with" + ], + "description": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "returnDescription": "", + "scratchblock": "hide variable [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/isAsking", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "isAsking", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks whether a question is on screen and still waiting for an answer.", + "returnDescription": "true while a question is waiting", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/isDebug", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "isDebug", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks if the application is in debug mode.", + "returnDescription": "true if the application is in debug mode, false otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/isKeyPressed", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "isKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "boolean", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "a key" + ], + "description": "Returns true if the key is pressed", + "returnDescription": "key pressed", + "scratchblock": "<key [space v] pressed?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/isMouseDown", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "isMouseDown", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns true is the mouse button is down", + "returnDescription": "mouse button down", + "scratchblock": "<mouse down?>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/isSoundPlaying", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "isSoundPlaying", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "boolean", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "" + ], + "description": "Returns true if the sound if playing", + "returnDescription": "playing", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/nextBackdrop", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "nextBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switch to the next backdrop.", + "returnDescription": "", + "scratchblock": "next backdrop", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/pickRandom", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "pickRandom", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "int", + "parameterNames": [ + "from", + "to" + ], + "parameterDescriptions": [ + "the lower bound of the range (inclusive)", + "the upper bound of the range (inclusive)" + ], + "description": "Returns a random integer between the specified range (inclusive).", + "returnDescription": "a random integer between `from` and `to` (inclusive)", + "scratchblock": "(pick random (from) to (to))", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/playSound", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "playSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the sound name" + ], + "description": "Plays a sound.", + "returnDescription": "", + "scratchblock": "start sound [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/previousBackdrop", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "previousBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switch to the previous backdrop.", + "returnDescription": "", + "scratchblock": "switch backdrop to [previous backdrop v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/randomBackdrop", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "randomBackdrop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switch to a random backdrop.", + "returnDescription": "", + "scratchblock": "switch backdrop to [random backdrop v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "void", + "parameterNames": [ + "sprite" + ], + "parameterDescriptions": [ + "the sprite to be removed" + ], + "description": "Removes the specified sprite from the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Pen" + ], + "returns": "void", + "parameterNames": [ + "pen" + ], + "parameterDescriptions": [ + "the pen to be removed" + ], + "description": "Removes the specified pen from the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "the text to be removed" + ], + "description": "Removes the specified text from the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Class" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the class of the sprites to remove" + ], + "description": "Removes all sprites of the specified class from the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/removeAll", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "removeAll", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Removes all elements from the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/run", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "run", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Executes the main logic of the stage. This method should be overridden by\nsubclasses to define\nthe specific behavior of the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "a hue value [0...255]" + ], + "description": "Sets the background color via a hue value", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "a red value [0...255]", + "a green value [0...255]", + "a blue value [0...255]" + ], + "description": "Sets the background color via a rgb value", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the new color to be set" + ], + "description": "Sets the color of the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setCursor", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setCursor", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "path" + ], + "parameterDescriptions": [ + "a path to an image file, or the name of a built-in sprite" + ], + "description": "Sets the cursor image for the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setCursor", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "path", + "x", + "y" + ], + "parameterDescriptions": [ + "a path to an image file, or the name of a built-in sprite", + "the x-coordinate of the cursor's active spot", + "the y-coordinate of the cursor's active spot" + ], + "description": "Sets the cursor image and its active spot coordinates.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setDebug", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setDebug", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void", + "parameterNames": [ + "debug" + ], + "parameterDescriptions": [ + "a boolean value where `true` enables debug mode and\n `false` disables\n it." + ], + "description": "Enables or disables the debug mode for the application.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setTint", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "a red value [0...255]", + "a green value [0...255]", + "a blue value [0...255]" + ], + "description": "Sets the colour the backdrop is tinted with.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setTint", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "" + ], + "description": "Sets the colour the backdrop is tinted with, as a hue.", + "returnDescription": "", + "scratchblock": "set [color v] effect to (h)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setTransparency", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setTransparency", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "transparency" + ], + "parameterDescriptions": [ + "[0...100], 0 solid and 100 invisible" + ], + "description": "Sets how see-through the backdrop is, as Scratch's ghost effect does: 0 is\nthe solid backdrop you start with and 100 is invisible.", + "returnDescription": "", + "scratchblock": "set [ghost v] effect to (transparency)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/setVolume", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "setVolume", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "percent" + ], + "parameterDescriptions": [ + "0 for silent, 100 for full volume" + ], + "description": "Sets how loud every sound of this stage plays.", + "returnDescription": "", + "scratchblock": "set volume to (percent) %", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/showVariable", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "showVariable", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.util.function.Supplier" + ], + "returns": "void", + "parameterNames": [ + "name", + "value" + ], + "parameterDescriptions": [ + "what the monitor says", + "gives the value to show; asked for it every frame" + ], + "description": "Shows a monitor for a variable in the top left corner of the stage, like\nScratch's variable monitors: the name and the current value, updated every\nframe. Showing the same name again replaces the monitor.\n\n```java\nthis.showVariable(\"score\", () -> score);\n```", + "returnDescription": "", + "scratchblock": "show variable [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/stopAllSounds", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "stopAllSounds", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops the playing of all sounds of the stage.", + "returnDescription": "", + "scratchblock": "stop all sounds", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/stopSound", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "stopSound", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "Name of the sound" + ], + "description": "Stops the playing of the sound with the given name", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/switchBackdrop", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "switchBackdrop", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of a backdrop" + ], + "description": "Switch to a backdrop by name.", + "returnDescription": "", + "scratchblock": "switch backdrop to [name v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/wait", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "wait", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "millis" + ], + "parameterDescriptions": [ + "Milliseconds" + ], + "description": "Stop the execution of the whole applications for the given milliseconds.", + "returnDescription": "", + "scratchblock": "wait (millis) seconds", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/waitUntil", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "waitUntil", + "constructor": false, + "static": false, + "parameters": [ + "java.util.function.BooleanSupplier" + ], + "returns": "void", + "parameterNames": [ + "condition" + ], + "parameterDescriptions": [ + "checked over and over until it is true" + ], + "description": "Waits until something becomes true, then carries on.\n\nLike [wait(int)](wait) this holds up the code that calls it, not the whole\nprogram: sprites keep running and the stage keeps drawing while it waits.\nThat makes it useful for setting a scene up in a constructor, and a bad idea\ninside `run()`, which is called once per frame and should return quickly.\n\n```java\nthis.ask(\"What is your name?\");\nthis.waitUntil(() -> !this.isAsking());\nthis.display(\"Hello \" + this.getAnswer() + \"!\");\n```", + "returnDescription": "", + "scratchblock": "wait until <condition>", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenBackdropSwitches", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenBackdropSwitches", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the backdrop to switch to" + ], + "description": "This method is called when the backdrop switches to the specified name.\nOverride this method to\nadd custom behavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenIReceive", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenIReceive", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "message" + ], + "parameterDescriptions": [ + "The message that triggers this method." + ], + "description": "This method is called when a specific message is received. Override this\nmethod to add custom\nbehavior.", + "returnDescription": "", + "scratchblock": "when I receive [message v]", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenKeyPressed", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenKeyPressed", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "the key that was pressed" + ], + "description": "This method is called when a key is pressed. Override this method to add\ncustom behavior.", + "returnDescription": "", + "scratchblock": "when [space v] key pressed", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenKeyReleased", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenKeyReleased", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.KeyCode" + ], + "returns": "void", + "parameterNames": [ + "keyCode" + ], + "parameterDescriptions": [ + "the key that was released" + ], + "description": "This method is called when a key is released. Override this method to add\ncustom behavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenMouseClicked", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenMouseClicked", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.MouseCode" + ], + "returns": "void", + "parameterNames": [ + "mouseEvent" + ], + "parameterDescriptions": [ + "The mouse event that triggered this method." + ], + "description": "This method is called when a mouse click event occurs. Overwrite this method\nto add custom\nbehavior.", + "returnDescription": "", + "scratchblock": "when stage clicked", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Stage/whenMouseWheelMoved", + "owner": "org.openpatch.scratch.Stage", + "signatures": [ + { + "name": "whenMouseWheelMoved", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "steps" + ], + "parameterDescriptions": [ + "the number of steps the mouse wheel has moved. Positive values\n indicate movement\n away from the user, while negative values indicate movement\n towards the user." + ], + "description": "This method is called when the mouse wheel is moved. Overwrite this method to\nadd custom\nbehavior.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/addFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "addFont", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name", + "path" + ], + "parameterDescriptions": [ + "the name of the font to be added", + "the path to the font file" + ], + "description": "Adds a new font to the list of fonts if it does not already exist.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Text object with default values. The text is initialized to an empty string,\npositioned at (0, 0), with a default size of 0. The text style is set to plain and the text\nis centred on its position, as every text is. Call [setAlign(TextAlign)](setAlign) for anything\nelse.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Sprite" + ], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [ + "s" + ], + "parameterDescriptions": [ + "the Sprite to associate with this Text object" + ], + "description": "Constructs a new Text object associated with a given Sprite.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [ + "text", + "x", + "y", + "width" + ], + "parameterDescriptions": [ + "the text to be displayed", + "the x-coordinate of the text's position", + "the y-coordinate of the text's position", + "the width of the text" + ], + "description": "Constructs a new Text object with the specified text, position, and width.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "double", + "double", + "double", + "org.openpatch.scratch.TextStyle" + ], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [ + "text", + "x", + "y", + "width", + "style" + ], + "parameterDescriptions": [ + "the text content to be displayed", + "the x-coordinate of the text's position", + "the y-coordinate of the text's position", + "the width of the text area", + "the style to be applied to the text" + ], + "description": "Constructs a new Text object with the specified text, position, width, and style.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Text", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Text" + ], + "returns": "org.openpatch.scratch.Text", + "parameterNames": [ + "t" + ], + "parameterDescriptions": [ + "the Text object to copy" + ], + "description": "Copy constructor for the Text class. Creates a new Text object by copying the properties of the\ngiven Text object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getAlign", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getAlign", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.TextAlign", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns where the text sits relative to its position.", + "returnDescription": "the alignment", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getCurrentFontIndex", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getCurrentFontIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the index of the current font.", + "returnDescription": "the index of the current font", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getCurrentFontName", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getCurrentFontName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the name of the current font.", + "returnDescription": "the name of the current font, or `null` if no fonts are available.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getDefaultFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getDefaultFont", + "constructor": false, + "static": true, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the font that text is written in by default.", + "returnDescription": "the path to the font file", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getDefaultFontSize", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getDefaultFontSize", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the size text is written in by default.", + "returnDescription": "the font size", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getFont", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the name of the font.", + "returnDescription": "the name of the font as a String.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getPosition", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current position as a Vector2 object.", + "returnDescription": "a Vector2 object representing the current x and y coordinates.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getStage", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current stage associated with this object.", + "returnDescription": "the current stage", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getStyle", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getStyle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.TextStyle", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the style the text is drawn in.", + "returnDescription": "the style, never null", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getTextSize", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getTextSize", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the size of the text.", + "returnDescription": "the size of the text as an integer", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getWidth", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the width of the text.", + "returnDescription": "the width of the text as a double", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getX", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the x-coordinate of this object.", + "returnDescription": "the x-coordinate as a double", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/getY", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the y-coordinate of this object.", + "returnDescription": "the y-coordinate as a double", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/goLayersBackwards", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "goLayersBackwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "number" + ], + "parameterDescriptions": [ + "the number of layers to move the text backwards" + ], + "description": "Moves the text backwards by a specified number of layers in the stage. If\nthe text is not on a stage, the method does nothing.", + "returnDescription": "", + "scratchblock": "go [backward v] (number) layers", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/goLayersForwards", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "goLayersForwards", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "number" + ], + "parameterDescriptions": [ + "the number of layers to move the text forward" + ], + "description": "Moves the text forward by a specified number of layers within its stage. If\nthe text is not on a stage, the method does nothing.", + "returnDescription": "", + "scratchblock": "go [forward v] (number) layers", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/goToBackLayer", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "goToBackLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves this text to the back layer of the stage, behind every other text on\nit. If the text is not on a stage, the method does nothing.\n\nTexts are drawn on top of the sprites, so this orders a text against the\nother texts rather than against the sprites.", + "returnDescription": "", + "scratchblock": "go to [back v] layer", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/goToFrontLayer", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "goToFrontLayer", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Moves this text to the front layer of the stage, in front of every other\ntext on it. If the text is not on a stage, the method does nothing.\n\nTexts are drawn on top of the sprites, so this orders a text against the\nother texts rather than against the sprites.", + "returnDescription": "", + "scratchblock": "go to [front v] layer", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/isUI", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "isUI", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks if the current instance is a UI element.", + "returnDescription": "`true` if this instance is a UI element, `false` otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/nextFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "nextFont", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Advances to the next font in the list of available fonts. The current font index is incremented\nby one and wraps around to the beginning of the list if it exceeds the number of available\nfonts.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/remove", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "remove", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Removes this object from its current stage if it is associated with one. If the object is not\nassociated with any stage, this method does nothing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setAlign", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setAlign", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.TextAlign" + ], + "returns": "void", + "parameterNames": [ + "align" + ], + "parameterDescriptions": [ + "where the text should sit relative to its position" + ], + "description": "Sets the alignment of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "the red component of the color (0-255)", + "the green component of the color (0-255)", + "the blue component of the color (0-255)" + ], + "description": "Sets the background color using the specified RGB values.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "the hue value for the background color" + ], + "description": "Sets the background color using the specified hue value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setBackgroundColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the new background color to be set" + ], + "description": "Sets the background color of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setFont", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the font to be set" + ], + "description": "Sets the font name for the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setIsUI", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setIsUI", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void", + "parameterNames": [ + "isUI" + ], + "parameterDescriptions": [ + "a boolean indicating whether this object is part of the UI" + ], + "description": "Sets the UI status of this object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setPosition", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "a x coordinate", + "a y coordinate" + ], + "description": "Sets the position of the text", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "the Vector2 object containing the x and y coordinates" + ], + "description": "Sets the position of the text object using a Vector2 object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "the red component of the color (0-255)", + "the green component of the color (0-255)", + "the blue component of the color (0-255)" + ], + "description": "Sets the stroke color using the specified RGB values.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "the hue value for the stroke color" + ], + "description": "Sets the stroke color using the specified hue value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setStrokeColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the color to set as the stroke color" + ], + "description": "Sets the stroke color for the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setStyle", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setStyle", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.TextStyle" + ], + "returns": "void", + "parameterNames": [ + "style" + ], + "parameterDescriptions": [ + "the TextStyle to be applied to the text" + ], + "description": "Sets the style of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "r", + "g", + "b" + ], + "parameterDescriptions": [ + "the red component of the color (0-255)", + "the green component of the color (0-255)", + "the blue component of the color (0-255)" + ], + "description": "Sets the text color using RGB values.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "h" + ], + "parameterDescriptions": [ + "the hue value for the text color" + ], + "description": "Sets the text color using the specified hue value.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setTextColor", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "c" + ], + "parameterDescriptions": [ + "the new color to be set for the text" + ], + "description": "Sets the color of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setTextSize", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setTextSize", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "void", + "parameterNames": [ + "size" + ], + "parameterDescriptions": [ + "the new size of the text" + ], + "description": "Sets the size of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setWidth", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "width" + ], + "parameterDescriptions": [ + "the new width to set" + ], + "description": "Sets the width of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setX", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "the new x-coordinate value" + ], + "description": "Sets the x-coordinate for this object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/setY", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "the new Y coordinate value" + ], + "description": "Sets the Y coordinate of the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/showText", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "showText", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "The text to be displayed. If the text is null or empty, the text will be set to\n null." + ], + "description": "Displays the specified text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "showText", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "text", + "millis" + ], + "parameterDescriptions": [ + "The text to be displayed.", + "The duration in milliseconds for which the text should be displayed." + ], + "description": "Displays the specified text for a given duration.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/switchFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "switchFont", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the font to switch to" + ], + "description": "Switches the current font to the font with the specified name.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/useFont", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "useFont", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "path", + "size" + ], + "parameterDescriptions": [ + "the path to a .ttf or .otf file", + "the size to write in" + ], + "description": "Chooses the font all text is written in, and how big it is.\n\nCall it before the first stage is created. The font is loaded while the\nwindow starts up, so choosing one later is not reliable.\n\n```java\npublic static void main(String[] args) {\n Text.useFont(\"assets/Retro Gaming.ttf\", 11);\n new MyStage();\n}\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "useFont", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "path" + ], + "parameterDescriptions": [ + "the path to a .ttf or .otf file" + ], + "description": "Chooses the font all text is written in, keeping the current size.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/useFontSizes", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "useFontSizes", + "constructor": false, + "static": true, + "parameters": [ + "int[]" + ], + "returns": "void", + "parameterNames": [ + "sizes" + ], + "parameterDescriptions": [ + "the sizes to prepare" + ], + "description": "Prepares several sizes of the font in advance. Only needed when text is\nshown at more than one size, so that every size looks sharp.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/useSmoothing", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "useSmoothing", + "constructor": false, + "static": true, + "parameters": [ + "boolean" + ], + "returns": "void", + "parameterNames": [ + "smooth" + ], + "parameterDescriptions": [ + "true to smooth the letters" + ], + "description": "Chooses whether letters are smoothed. Turn it off for pixel fonts.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/whenAddedToStage", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the object is added to the stage. Override this method to define\ncustom behavior when the object is added to the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "whenAddedToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void", + "parameterNames": [ + "stage" + ], + "parameterDescriptions": [ + "The stage to which the text is added." + ], + "description": "This method is called when the text is added to the stage. Override this method to define\ncustom behavior when the text.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Text/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Text", + "signatures": [ + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the object is removed from the stage. Override this method to define\ncustom behavior that should occur when the object is no longer part of the stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "whenRemovedFromStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void", + "parameterNames": [ + "stage" + ], + "parameterDescriptions": [ + "The stage from which the text is removed." + ], + "description": "This method is called when the text is removed from the stage. Override this method to define\ncustom behavior that should occur.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/afterMillis", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "afterMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean", + "parameterNames": [ + "millis" + ], + "parameterDescriptions": [ + "the number of milliseconds to check against" + ], + "description": "Checks if the specified number of milliseconds has passed since the method was first called.", + "returnDescription": "true if the specified number of milliseconds has passed since the method was first\n called, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/constructor", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "Timer", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Timer", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Timer object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/everyMillis", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "everyMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean", + "parameterNames": [ + "millis" + ], + "parameterDescriptions": [ + "The number of milliseconds to wait before returning true." + ], + "description": "Checks if the specified number of milliseconds has passed since the last time this method\nreturned true.", + "returnDescription": "true if the specified number of milliseconds has passed since the last call that\n returned true, false otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/forMillis", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "forMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean", + "parameterNames": [ + "millis" + ], + "parameterDescriptions": [ + "the number of milliseconds to check against" + ], + "description": "Checks if the specified amount of milliseconds has passed since the method was first called. If\nthe method is called for the first time, it initializes the start time.", + "returnDescription": "true if the current time is less than the start time plus the specified milliseconds,\n false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int" + ], + "returns": "boolean", + "parameterNames": [ + "millis" + ], + "parameterDescriptions": [ + "the interval in milliseconds to check" + ], + "description": "Checks if the specified interval in milliseconds has passed.", + "returnDescription": "true if the interval has passed, false otherwise", + "scratchblock": "", + "since": "" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "boolean" + ], + "returns": "boolean", + "parameterNames": [ + "millis", + "skipFirst" + ], + "parameterDescriptions": [ + "the interval in milliseconds to check", + "if true, the first interval will be skipped" + ], + "description": "Checks if the specified interval in milliseconds has passed.", + "returnDescription": "true if the interval has passed, false otherwise", + "scratchblock": "", + "since": "" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "boolean", + "parameterNames": [ + "millis1", + "millis2" + ], + "parameterDescriptions": [ + "the first interval in milliseconds to check", + "the second interval in milliseconds to check" + ], + "description": "Checks if the specified interval in milliseconds has passed.", + "returnDescription": "true if the interval has passed, false otherwise", + "scratchblock": "", + "since": "" + }, + { + "name": "intervalMillis", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "boolean" + ], + "returns": "boolean", + "parameterNames": [ + "millis1", + "millis2", + "skipFirst" + ], + "parameterDescriptions": [ + "the first interval in milliseconds to check", + "the second interval in milliseconds to check", + "if true, the first interval will be skipped" + ], + "description": "Checks if the specified interval in milliseconds has passed.", + "returnDescription": "true if the interval has passed, false otherwise", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/millis", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "millis", + "constructor": false, + "static": true, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the number of milliseconds of game time since the program started.\nGame time stands still while the game is paused and runs slower or faster\nwith the game speed (see [Window.pause()](../Window/pause) and\n[Window.setGameSpeed(double)](../Window/setGameSpeed)); without either, it is the real time.", + "returnDescription": "the milliseconds of game time since the program started", + "scratchblock": "(timer)", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Timer/reset", + "owner": "org.openpatch.scratch.Timer", + "signatures": [ + { + "name": "reset", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Resets the timer.", + "returnDescription": "", + "scratchblock": "reset timer", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Triangle/constructor", + "owner": "org.openpatch.scratch.Triangle", + "signatures": [ + { + "name": "Triangle", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "returns": "org.openpatch.scratch.Triangle", + "parameterNames": [ + "x1", + "y1", + "x2", + "y2", + "x3", + "y3" + ], + "parameterDescriptions": [ + "the x-coordinate of the first vertex", + "the y-coordinate of the first vertex", + "the x-coordinate of the second vertex", + "the y-coordinate of the second vertex", + "the x-coordinate of the third vertex", + "the y-coordinate of the third vertex" + ], + "description": "Creates a triangle with the specified vertices.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/changeHeight", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "changeHeight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "amount" + ], + "parameterDescriptions": [ + "how many pixels to add to the height" + ], + "description": "Changes the height of the sprite by the given number of pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/changeWidth", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "changeWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "amount" + ], + "parameterDescriptions": [ + "how many pixels to add to the width" + ], + "description": "Changes the width of the sprite by the given number of pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/constructor", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "UISprite", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.UISprite", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Creates a sprite that is drawn as part of the user interface.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/disableNineSlice", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "disableNineSlice", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Lets the whole costume stretch again.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/setHeight", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "setHeight", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "height" + ], + "parameterDescriptions": [ + "the height in pixels" + ], + "description": "Sets the height of the sprite in pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/setNineSlice", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "setNineSlice", + "constructor": false, + "static": false, + "parameters": [ + "int", + "int", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "top", + "right", + "bottom", + "left" + ], + "parameterDescriptions": [ + "how many pixels of the costume belong to the top edge", + "how many pixels of the costume belong to the right edge", + "how many pixels of the costume belong to the bottom edge", + "how many pixels of the costume belong to the left edge" + ], + "description": "Keeps the corners and edges of the costume from stretching when the sprite\nis resized, so that a button costume can be made any size.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "UISprite/setWidth", + "owner": "org.openpatch.scratch.UISprite", + "signatures": [ + { + "name": "setWidth", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "width" + ], + "parameterDescriptions": [ + "the width in pixels" + ], + "description": "Sets the width of the sprite in pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/add", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "" + ], + "description": "Adds another vector and returns the result", + "returnDescription": "the sum", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/angle", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "angle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the angle of the vector.", + "returnDescription": "the angle", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/clone", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "clone", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Creates a clone of the vector", + "returnDescription": "the cloned vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructor for the null vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "x-coordinate", + "y-coordinate" + ], + "description": "Constructor for a 2D vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Vector2", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Copy constructor for copying a vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/distance", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "distance", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Calculates the distance to another vector.", + "returnDescription": "the distance", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/distanceSq", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "distanceSq", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Calculates the squared distance to another vector.", + "returnDescription": "the squared distance", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/dot", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "dot", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "double", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Calculates the dot product.", + "returnDescription": "the dot product", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/equals", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "equals", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Object" + ], + "returns": "boolean", + "parameterNames": [ + "obj" + ], + "parameterDescriptions": [ + "the object to compare with" + ], + "description": "Compares this vector with another object.", + "returnDescription": "true if the other object is a vector with the same x- and y-coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/fromPolar", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "fromPolar", + "constructor": false, + "static": true, + "parameters": [ + "double", + "double" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "magnitude", + "angle" + ], + "parameterDescriptions": [ + "of the vector", + "of the vector" + ], + "description": "Constructor method for constructing a vector based on polar coordinates.", + "returnDescription": "a vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/getX", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the x coordinate of the vector", + "returnDescription": "the x coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/getY", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the y coordinate of the vector", + "returnDescription": "the y coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/hashCode", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "hashCode", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the hash code of the vector. Vectors that are equal have the same hash code, which is\nwhat lets them be used as keys in a `HashMap`.", + "returnDescription": "the hash code of the vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/length", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "length", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Calculates the length of the vector.", + "returnDescription": "the length of the vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/lengthSq", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "lengthSq", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Calculates the squared length of the vector.", + "returnDescription": "the squared length of the vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/multiply", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "multiply", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "scalar" + ], + "parameterDescriptions": [ + "a scalar" + ], + "description": "Multiplies a scalar and return the result.", + "returnDescription": "the vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/normalVector", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "normalVector", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the normal vector, which is perpendicular to the vector.", + "returnDescription": "a normal vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/reverse", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "reverse", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Reverses a vector and returns the result.", + "returnDescription": "the reversed vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/rotateBy", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "rotateBy", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "angle" + ], + "parameterDescriptions": [ + "an angle between [0, ..., 360]" + ], + "description": "Rotates the vector by an angle and returns the result.", + "returnDescription": "the rotated vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/rotateTo", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "rotateTo", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "angle" + ], + "parameterDescriptions": [ + "an angle between [0,...,360]" + ], + "description": "Rotates the vector to a given angle and returns the result.", + "returnDescription": "the rotated vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/sub", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "sub", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "" + ], + "description": "Substracts another vector and returns the result", + "returnDescription": "the difference", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/toString", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the vector as a text, for example `Vector2[60.0, 80.0]`.", + "returnDescription": "the vector as a text", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Vector2/unitVector", + "owner": "org.openpatch.scratch.Vector2", + "signatures": [ + { + "name": "unitVector", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the unit vector.", + "returnDescription": "a unit vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Window", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Window with default dimensions. The default width is 480\npixels and the\ndefault height is 360 pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Window", + "parameterNames": [ + "assets" + ], + "parameterDescriptions": [ + "the path to the assets to be used in the window" + ], + "description": "Constructs a new Window with the specified assets. The window will have a\ndefault width of 480\npixels and a height of 360 pixels.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int" + ], + "returns": "org.openpatch.scratch.Window", + "parameterNames": [ + "width", + "height" + ], + "parameterDescriptions": [ + "the width of the window", + "the height of the window" + ], + "description": "Constructs a new Window with the specified width and height.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Window", + "constructor": true, + "static": false, + "parameters": [ + "int", + "int", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.Window", + "parameterNames": [ + "width", + "height", + "assets" + ], + "parameterDescriptions": [ + "the width of the window", + "the height of the window", + "the path to the assets" + ], + "description": "Constructs a new Window with the specified width, height, and assets path.\nEnsures that only\none instance of Window can be created.\n\nThe single exception is the window Java builds by itself: a class that\nextends Window and has a `main` method which is not static is\ninstantiated by the JVM before `main` is called, so the\n`new MyWindow()` in that `main` would be the second window. That\none reuses the first instead of failing.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/debug", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "debug", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.Object[]" + ], + "returns": "void", + "parameterNames": [ + "values" + ], + "parameterDescriptions": [ + "one or more values to print" + ], + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the window's class name.\n\nExample:\n\n```java\nthis.debug(\"fps =\", getFps());\n// prints: [MyWindow] fps = 60\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/exit", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "exit", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Exits the application by invoking the `whenExits` method and then calling the\n`exit` method on\nthe `Applet` instance.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getDeltaTime", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getDeltaTime", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Gets the seconds of game time passed since the last frame. While the game\nis paused this is 0, and at half speed half the real time.", + "returnDescription": "seconds since last frame", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getGameSpeed", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getGameSpeed", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "The game speed set with [setGameSpeed(double)](setGameSpeed).", + "returnDescription": "1 for normal speed", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getHeight", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getHeight", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the height of the current window.", + "returnDescription": "the height of the window in pixels", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getInstance", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getInstance", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.Window", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the singleton instance of the Window class.", + "returnDescription": "the singleton instance of Window", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getLibraryTitle", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getLibraryTitle", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the title of the library.", + "returnDescription": "the title of the library as a String", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getLibraryVersion", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getLibraryVersion", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the version of the library.", + "returnDescription": "the version of the library as a String", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getStage", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getStage", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Stage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the current stage from the Applet instance.", + "returnDescription": "the current Stage object", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getTextureSampling", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getTextureSampling", + "constructor": false, + "static": true, + "parameters": [], + "returns": "org.openpatch.scratch.TextureSampling", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns how pictures are being smoothed.", + "returnDescription": "the current setting", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/getWidth", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "getWidth", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Retrieves the width of the current window.", + "returnDescription": "the width of the window in pixels", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/isDebug", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "isDebug", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks if the application is in debug mode.\n\nDebug mode can be toggled at runtime by pressing F12.", + "returnDescription": "true if the application is in debug mode, false otherwise.", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/isPaused", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "isPaused", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Whether the game is paused.", + "returnDescription": "true while paused", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/pause", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "pause", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Pauses the game: `run()` is no longer called, and timers, gliding\nand animations stand still. The window keeps drawing, so the paused\npicture stays visible, and keys and clicks still reach methods like\n`whenKeyPressed`, so a key can [resume()](resume) the game.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/resume", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "resume", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Lets a paused game go on where it stopped.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/setDebug", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "setDebug", + "constructor": false, + "static": false, + "parameters": [ + "boolean" + ], + "returns": "void", + "parameterNames": [ + "debug" + ], + "parameterDescriptions": [ + "a boolean value where `true` enables debug mode and\n `false` disables\n it." + ], + "description": "Enables or disables the debug mode for the application.\n\nDebug mode shows sprite positions, hitboxes, and other debug information.\nIt can also be toggled at runtime by pressing F12.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/setGameSpeed", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "setGameSpeed", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "speed" + ], + "parameterDescriptions": [ + "1 for normal speed, smaller for slower, larger for faster" + ], + "description": "Makes the game run slower or faster: 1 is normal, 0.5 half as fast, 2\ntwice as fast. `run()`, timers, gliding and animations all follow,\nso the whole game looks like slow motion; the window keeps drawing\nsmoothly.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/setStage", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "setStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage" + ], + "returns": "void", + "parameterNames": [ + "stage" + ], + "parameterDescriptions": [ + "the new stage to be set" + ], + "description": "Sets the current stage of the application.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/step", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "step", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "While the game is paused: runs it for exactly one frame (every\n`run()` once) and pauses again. Useful to watch closely what\nhappens, for example when two sprites touch.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/transitionToStage", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "transitionToStage", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Stage", + "int" + ], + "returns": "void", + "parameterNames": [ + "stage", + "duration" + ], + "parameterDescriptions": [ + "the new stage to transition to", + "the duration of the transition in milliseconds" + ], + "description": "Transitions to a new stage with a specified duration.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/useFullScreen", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "useFullScreen", + "constructor": false, + "static": true, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Makes the window fill the whole screen.\n\nCall it before the first stage is created, because the size of the window is\nsettled the moment it opens:\n\n```java\npublic static void main(String[] args) {\n Window.useFullScreen();\n new MyStage();\n}\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "The embedded browser output uses its enclosing page; this desktop window option only reports a limitation.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/useSplashLogo", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "useSplashLogo", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "path" + ], + "parameterDescriptions": [ + "a path to an image file or the name of a built-in sprite, or\n `null` for the Scratch for Java logo" + ], + "description": "Puts your own picture on the loading screen in place of the Scratch for Java\nlogo. The picture fades in while your project starts and fades out again\nonce it is ready.\n\nIt is shrunk to fit if it is large, and never enlarged, so a picture of\nroughly 300 by 300 looks right in a window of the usual size.\n\nCall it before the first stage is created, because the loading screen is the\nfirst thing the window draws:\n\n```java\npublic static void main(String[] args) {\n Window.useSplashLogo(\"assets/logo.png\");\n new MyStage();\n}\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "The browser has no desktop splash window. This option only reports a limitation.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/useTextureSampling", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "useTextureSampling", + "constructor": false, + "static": true, + "parameters": [ + "org.openpatch.scratch.TextureSampling" + ], + "returns": "void", + "parameterNames": [ + "sampling" + ], + "parameterDescriptions": [ + "how to smooth pictures" + ], + "description": "Chooses how pictures are smoothed when they are drawn larger or smaller than\nthey really are. Pixel art usually wants [TextureSampling.POINT](../TextureSampling/POINT).\n\nCall it before the first stage is created.\n\n```java\nWindow.useTextureSampling(TextureSampling.POINT);\nnew MyStage();\n```", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "Window/whenExits", + "owner": "org.openpatch.scratch.Window", + "signatures": [ + { + "name": "whenExits", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "This method is called when the window exits. Override this method to define\ncustom behavior\nwhen the window is closed.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/changeX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "changeX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "number in pixels" + ], + "description": "Changes x by a certain amount", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/changeY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "changeY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "number in pixels" + ], + "description": "Changes y by a certain amount", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/changeZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "changeZoom", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "dz" + ], + "parameterDescriptions": [ + "the amount to change the zoom level by" + ], + "description": "Changes the zoom level by a certain amount", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/constructor", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "Camera", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.camera.Camera", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Constructs a new Camera with default values. The default position is (0, 0) and the default\nzoom level is 100.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/getPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "getPosition", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the position of the sprite", + "returnDescription": "a vector", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/getX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "getX", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the x coordinate of the sprite", + "returnDescription": "a x coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/getY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "getY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the y coordinate of the sprite", + "returnDescription": "a y coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/getZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "getZoom", + "constructor": false, + "static": false, + "parameters": [], + "returns": "double", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the zoom level", + "returnDescription": "the zoom level", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/resetZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "resetZoom", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Resets the zoom level to 100", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/setPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "x", + "y" + ], + "parameterDescriptions": [ + "a x coordinate", + "a y coordinate" + ], + "description": "Sets the position of the sprite", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "setPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "a vector" + ], + "description": "Sets the position of the sprite based on the coordinates of a given vector.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/setX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "setX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "a x coordinate" + ], + "description": "Sets the x coordinate", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/setY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "setY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "a y coordinate" + ], + "description": "Sets the y coordinate", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/setZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "setZoom", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "zoom" + ], + "parameterDescriptions": [ + "the zoom level" + ], + "description": "Sets the zoom", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/setZoomLimit", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "setZoomLimit", + "constructor": false, + "static": false, + "parameters": [ + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "low", + "high" + ], + "parameterDescriptions": [ + "the lower limit", + "the upper limit" + ], + "description": "Sets the zoom limits", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toGlobalPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toGlobalPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "local camera coordinates" + ], + "description": "Converts local camera coordinates to screen coordinates", + "returnDescription": "screen coordinates", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toGlobalX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toGlobalX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "local camera x coordinate" + ], + "description": "Converts local camera x coordinate to screen x coordinate", + "returnDescription": "screen x coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toGlobalY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toGlobalY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "local camera y coordinate" + ], + "description": "Converts local camera y coordinate to screen y coordinate", + "returnDescription": "screen y coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toLocalPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toLocalPosition", + "constructor": false, + "static": false, + "parameters": [ + "org.openpatch.scratch.Vector2" + ], + "returns": "org.openpatch.scratch.Vector2", + "parameterNames": [ + "v" + ], + "parameterDescriptions": [ + "screen coordinates" + ], + "description": "Converts screen coordinates to local camera coordinates", + "returnDescription": "local coordinates", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toLocalX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toLocalX", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "x" + ], + "parameterDescriptions": [ + "screen x coordinate" + ], + "description": "Converts screen x coordinate to local camera x coordinate", + "returnDescription": "local x coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/camera/Camera/toLocalY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "signatures": [ + { + "name": "toLocalY", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "double", + "parameterNames": [ + "y" + ], + "parameterDescriptions": [ + "screen y coordinate" + ], + "description": "Converts screen y coordinate to local camera y coordinate", + "returnDescription": "local y coordinate", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/fs/File/constructor", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "File", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.fs.File", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "File", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.fs.File", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/load", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "load", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the file from which the object is to be loaded", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from a file at the given path.", + "returnDescription": "the loaded object of the specified class", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "load", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the file from which the object is to be loaded", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from a file at the given path.", + "returnDescription": "the loaded object of the specified class", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/loadOrCreate", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "loadOrCreate", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the file from which the object is to be loaded", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from a file at the given path, or\ncreates a new one if the file does not exist.", + "returnDescription": "the loaded object of the specified class, or a new instance if the\n file does not exist", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "loadOrCreate", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the file from which the object is to be loaded", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from a file at the given path, or\ncreates a new one if the file does not exist.", + "returnDescription": "the loaded object of the specified class, or a new instance if the\n file does not exist", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/loadXML", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "loadXML", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the XML file", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from an XML file at the given path.", + "returnDescription": "the object loaded from the XML file", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "loadXML", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the XML file", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from an XML file at the given path.", + "returnDescription": "the object loaded from the XML file", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/loadXMLOrCreate", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "loadXMLOrCreate", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the XML file", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from an XML file at the given path,\nor creates a new one if the file does not exist.", + "returnDescription": "the object loaded from the XML file, or a new instance if the file\n does not exist", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "loadXMLOrCreate", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "java.lang.Class" + ], + "returns": "T", + "parameterNames": [ + "path", + "cls" + ], + "parameterDescriptions": [ + "the path to the XML file", + "the class of the object to be loaded" + ], + "description": "Loads an object of the specified class from an XML file at the given path,\nor creates a new one if the file does not exist.", + "returnDescription": "the object loaded from the XML file, or a new instance if the file\n does not exist", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/save", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "save", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "T" + ], + "returns": "void", + "parameterNames": [ + "path", + "obj" + ], + "parameterDescriptions": [ + "the path where the object should be saved", + "the object to be saved" + ], + "description": "Saves the given object to the specified path in the default file type (JSON).", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "save", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "T" + ], + "returns": "void", + "parameterNames": [ + "path", + "obj" + ], + "parameterDescriptions": [ + "the path where the object should be saved", + "the object to be saved" + ], + "description": "Saves the given object to the specified path in the default file type (JSON).", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/fs/File/saveXML", + "owner": "org.openpatch.scratch.extensions.fs.File", + "signatures": [ + { + "name": "saveXML", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "T" + ], + "returns": "void", + "parameterNames": [ + "path", + "obj" + ], + "parameterDescriptions": [ + "the path where the XML file will be saved", + "the object to be saved as XML" + ], + "description": "Saves the given object as an XML file at the specified path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "saveXML", + "constructor": false, + "static": true, + "parameters": [ + "java.lang.String", + "T" + ], + "returns": "void", + "parameterNames": [ + "path", + "obj" + ], + "parameterDescriptions": [ + "the path where the XML file will be saved", + "the object to be saved as XML" + ], + "description": "Saves the given object as an XML file at the specified path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/pixels/Pixels/background", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "signatures": [ + { + "name": "background", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the pixels of the background layer, where the pen and stamps draw.", + "returnDescription": "one colour per pixel", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/pixels/Pixels/constructor", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "signatures": [ + { + "name": "Pixels", + "constructor": true, + "static": false, + "parameters": [ + "processing.core.PGraphics", + "processing.core.PGraphics", + "processing.core.PGraphics" + ], + "returns": "org.openpatch.scratch.extensions.pixels.Pixels", + "parameterNames": [ + "mainBuffer", + "backgroundBuffer", + "foregroundBuffer" + ], + "parameterDescriptions": [ + "where the sprites are drawn", + "where the background is drawn", + "where the foreground is drawn" + ], + "description": "Creates the pixel access for a stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "Pixels", + "constructor": true, + "static": false, + "parameters": [ + "processing.core.PGraphics", + "processing.core.PGraphics", + "processing.core.PGraphics" + ], + "returns": "org.openpatch.scratch.extensions.pixels.Pixels", + "parameterNames": [ + "mainBuffer", + "backgroundBuffer", + "foregroundBuffer" + ], + "parameterDescriptions": [ + "where the sprites are drawn", + "where the background is drawn", + "where the foreground is drawn" + ], + "description": "Creates the pixel access for a stage.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/pixels/Pixels/foreground", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "signatures": [ + { + "name": "foreground", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the pixels of the foreground layer.", + "returnDescription": "one colour per pixel", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/pixels/Pixels/main", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "signatures": [ + { + "name": "main", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int[]", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the pixels of the layer the sprites are drawn on.", + "returnDescription": "one colour per pixel", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/FFmpegRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "signatures": [ + { + "name": "FFmpegRecorder", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "parameterNames": [ + "path" + ], + "parameterDescriptions": [ + "the path where the recording will be saved\n \n\nThis constructor initializes the FFmpegRecorder by creating a temporary directory and\n setting up a pattern for temporary PNG files. If the temporary directory cannot be created,\n an error message is printed to the console." + ], + "description": "Constructs an FFmpegRecorder object with the specified path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/FFmpegRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "signatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame using the specified pattern.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame using the specified pattern.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/FFmpegRecorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "signatures": [ + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops the recording process and converts the recorded frames into a video file using FFmpeg.\n\nThis method overrides the `stop` method from the superclass. It first calls the superclass's\n`stop` method, then checks if the temporary directory (`tmpDir`) is not null. If it is not\nnull, it constructs a command to run FFmpeg, which converts the recorded frames (stored as PNG\nfiles) into a video file with the specified frame rate and codec.\n\nThe FFmpeg command is executed, and a message is printed to the console indicating that the\nvideo conversion is in progress. If there is an error during the execution of the command, the\nerror message is printed to the console.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/FrameRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "signatures": [ + { + "name": "FrameRecorder", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "parameterNames": [ + "outputFolder" + ], + "parameterDescriptions": [ + "the folder where the recorded frames will be saved" + ], + "description": "Constructs a new FrameRecorder with the specified output folder.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/FrameRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "signatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame of the applet to the specified output folder. The frame is saved as a\nPNG file with a filename pattern \"#######.png\". The exact filename will be generated based on\nthe current frame number.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame of the applet to the specified output folder. The frame is saved as a\nPNG file with a filename pattern \"#######.png\". The exact filename will be generated based on\nthe current frame number.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/FrameRecorder/snapshot", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "signatures": [ + { + "name": "snapshot", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "filename" + ], + "parameterDescriptions": [ + "the name of the file to save the snapshot to" + ], + "description": "Takes a snapshot of the current frame and saves it to the specified filename.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "snapshot", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "filename" + ], + "parameterDescriptions": [ + "the name of the file to save the snapshot to" + ], + "description": "Takes a snapshot of the current frame and saves it to the specified filename.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/GifRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "signatures": [ + { + "name": "GifRecorder", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "parameterNames": [ + "filePath" + ], + "parameterDescriptions": [ + "the path where the GIF file will be saved" + ], + "description": "Constructs a new GifRecorder object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/GifRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "signatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame of the applet as a GIF image.\n\nThis method captures the current frame from the applet, sets the frame rate, and adds the\nframe to the GIF encoder. If the applet's pixels are null, the frame is not saved.\n\nNote: This method catches and ignores any NullPointerException that may occur.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame of the applet as a GIF image.\n\nThis method captures the current frame from the applet, sets the frame rate, and adds the\nframe to the GIF encoder. If the applet's pixels are null, the frame is not saved.\n\nNote: This method catches and ignores any NullPointerException that may occur.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/GifRecorder/snapshot", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "signatures": [ + { + "name": "snapshot", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Captures a snapshot and saves it as a GIF. This method starts the GIF encoder, saves the\ncurrent frame, and then finishes the encoding process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "snapshot", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Captures a snapshot and saves it as a GIF. This method starts the GIF encoder, saves the\ncurrent frame, and then finishes the encoding process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/GifRecorder/start", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "signatures": [ + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Starts the GIF recording process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/GifRecorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "signatures": [ + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops the GIF recording process and finalizes the GIF file.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/Recorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "signatures": [ + { + "name": "Recorder", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.Recorder", + "parameterNames": [ + "path", + "ext" + ], + "parameterDescriptions": [ + "the file path where the recording will be saved", + "the file extension to be used for the recording" + ], + "description": "Constructs a new Recorder object with the specified file path and extension. If the provided\npath does not end with the specified extension, the extension is appended to the path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "Recorder", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.recorder.Recorder", + "parameterNames": [ + "path", + "ext" + ], + "parameterDescriptions": [ + "the file path where the recording will be saved", + "the file extension to be used for the recording" + ], + "description": "Constructs a new Recorder object with the specified file path and extension. If the provided\npath does not end with the specified extension, the extension is appended to the path.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/Recorder/post", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "signatures": [ + { + "name": "post", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Called after each frame is drawn. This method is registered with the Applet class to ensure\nthat frames are saved at the appropriate time during the recording process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "post", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Called after each frame is drawn. This method is registered with the Applet class to ensure\nthat frames are saved at the appropriate time during the recording process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/Recorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "signatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame. This method should be implemented by subclasses to define the specific\nbehavior for saving a frame.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "saveFrame", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Saves the current frame. This method should be implemented by subclasses to define the specific\nbehavior for saving a frame.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/recorder/Recorder/start", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "signatures": [ + { + "name": "start", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Starts the recording process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/recorder/Recorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "signatures": [ + { + "name": "stop", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops the recording process.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shader/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "signatures": [ + { + "name": "Shader", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader", + "parameterNames": [ + "name", + "fragmentShaderPath", + "vertexShaderPath" + ], + "parameterDescriptions": [ + "unique name", + "path to the fragment shader file", + "path to the vertex shader file, or null for Processing's default one" + ], + "description": "Constructor", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Shader", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.extensions.shader.Shader" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader", + "parameterNames": [ + "shader" + ], + "parameterDescriptions": [ + "shader" + ], + "description": "Copy constructor", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shader/getName", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "signatures": [ + { + "name": "getName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the name", + "returnDescription": "the name", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shader/getPShader", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "signatures": [ + { + "name": "getPShader", + "constructor": false, + "static": false, + "parameters": [], + "returns": "processing.opengl.PShader", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shader", + "returnDescription": "the shader", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "Processing's PShader object belongs to the desktop renderer. The browser uses WebGL filters.", + "missingBrowserSignatures": [ + { + "name": "getPShader", + "constructor": false, + "static": false, + "parameters": [], + "returns": "processing.opengl.PShader", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shader", + "returnDescription": "the shader", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "signatures": [ + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "x" + ], + "parameterDescriptions": [ + "the name of the uniform in the shader file", + "the value" + ], + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "boolean" + ], + "returns": "void", + "parameterNames": [ + "name", + "x" + ], + "parameterDescriptions": [ + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "double" + ], + "returns": "void", + "parameterNames": [ + "name", + "x" + ], + "parameterDescriptions": [ + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "x", + "y" + ], + "parameterDescriptions": [ + "", + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "boolean", + "boolean" + ], + "returns": "void", + "parameterNames": [ + "name", + "x", + "y" + ], + "parameterDescriptions": [ + "", + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "double", + "double" + ], + "returns": "void", + "parameterNames": [ + "name", + "x", + "y" + ], + "parameterDescriptions": [ + "", + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "org.openpatch.scratch.Vector2" + ], + "returns": "void", + "parameterNames": [ + "name", + "vec" + ], + "parameterDescriptions": [ + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "int[]", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "values", + "ncoords" + ], + "parameterDescriptions": [ + "", + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "double[]", + "int" + ], + "returns": "void", + "parameterNames": [ + "name", + "values", + "ncoords" + ], + "parameterDescriptions": [ + "", + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "set", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "org.openpatch.scratch.Color" + ], + "returns": "void", + "parameterNames": [ + "name", + "c" + ], + "parameterDescriptions": [ + "", + "" + ], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shader/setName", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "signatures": [ + { + "name": "setName", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "unique name" + ], + "description": "Sets the name", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/add", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "add", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader", + "parameterNames": [ + "name", + "fragmentShaderPath", + "vertexShaderPath" + ], + "parameterDescriptions": [ + "a unique name", + "the path to the fragment shader", + "the path to the vertex shader, may be null" + ], + "description": "Adds a shader. If a shader with the given name already exists, that one is\nreturned instead.\n\nThe first shader added is drawn with right away; the ones after it wait\nuntil [switchTo(String)](switchTo) or [next()](next) picks them.\n\nThe vertex shader is usually `null`, which uses Processing's default\none. In the browser any other vertex shader is ignored.", + "returnDescription": "the shader", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "Shaders", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shaders", + "parameterNames": [ + "owner" + ], + "parameterDescriptions": [ + "what the shaders belong to, used in error messages: \"sprite\" or\n \"stage\"" + ], + "description": "Creates an empty set of shaders.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "Shaders", + "constructor": true, + "static": false, + "parameters": [ + "org.openpatch.scratch.extensions.shader.Shaders" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shaders", + "parameterNames": [ + "s" + ], + "parameterDescriptions": [ + "the shaders to copy" + ], + "description": "Copies a set of shaders.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/get", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "get", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.shader.Shader", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the shader" + ], + "description": "Returns a shader by name.", + "returnDescription": "the shader, or null if there is none with that name", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/getCurrent", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "getCurrent", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.shader.Shader", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the shader currently drawn with.", + "returnDescription": "the current shader, or null if there is none", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/getCurrentIndex", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "getCurrentIndex", + "constructor": false, + "static": false, + "parameters": [], + "returns": "int", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the position of the current shader.", + "returnDescription": "the position, or -1 if no shader is in use", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/getCurrentName", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "getCurrentName", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the name of the current shader.", + "returnDescription": "the name, or null if no shader is in use", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/next", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "next", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Switches to the next shader, in the order they were added. After the last\none comes the first one again.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/reset", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "reset", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Stops drawing with a shader, so the sprite or stage looks as it does\nwithout one. The shaders are kept: [switchTo(String)](switchTo) or\n[next()](next) brings one back.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/shader/Shaders/switchTo", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "signatures": [ + { + "name": "switchTo", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the shader" + ], + "description": "Switches to the shader with the given name, or with the given position in\nthe order the shaders were added. A name that is not there leaves the\ncurrent shader and prints which ones there are.", + "returnDescription": "", + "scratchblock": "", + "since": "" + }, + { + "name": "switchTo", + "constructor": false, + "static": false, + "parameters": [ + "double" + ], + "returns": "void", + "parameterNames": [ + "index" + ], + "parameterDescriptions": [ + "the position of the shader" + ], + "description": "Switches to the shader at the given position.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/sorting/Sorting/by", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "by", + "constructor": false, + "static": false, + "parameters": [ + "java.util.Comparator" + ], + "returns": "void", + "parameterNames": [ + "comparator" + ], + "parameterDescriptions": [ + "decides which of two sprites is drawn first" + ], + "description": "Draws sprites in an order of your own.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "by", + "constructor": false, + "static": false, + "parameters": [ + "java.util.Comparator" + ], + "returns": "void", + "parameterNames": [ + "comparator" + ], + "parameterDescriptions": [ + "decides which of two sprites is drawn first" + ], + "description": "Draws sprites in an order of your own.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/sorting/Sorting/byY", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "byY", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Draws sprites that are further down the stage in front of sprites that are\nfurther up, which is what a view from above usually wants.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/sorting/Sorting/constructor", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "Sorting", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.sorting.Sorting", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/sorting/Sorting/getComparator", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "getComparator", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.util.Comparator", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the order currently used.", + "returnDescription": "the comparator, or null if the sprites are not sorted", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "getComparator", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.util.Comparator", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns the order currently used.", + "returnDescription": "the comparator, or null if the sprites are not sorted", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/sorting/Sorting/isOn", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "isOn", + "constructor": false, + "static": false, + "parameters": [], + "returns": "boolean", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Checks whether the sprites are being sorted.", + "returnDescription": "true if an order is set", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/sorting/Sorting/off", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "signatures": [ + { + "name": "off", + "constructor": false, + "static": false, + "parameters": [], + "returns": "void", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Draws sprites in the order they were added, which is the default.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "implemented", + "reason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/MapObject/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "MapObject", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.MapObject", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "MapObject", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.MapObject", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/tiled/MapObject/getProperty", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "getProperty", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "java.lang.String", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the property to retrieve" + ], + "description": "Retrieves the value of a property with the specified name from the properties\nlist.", + "returnDescription": "the value of the property with the specified name", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/MapObject/getPropertyBoolean", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "getPropertyBoolean", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "boolean", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the property to retrieve" + ], + "description": "Retrieves the value of the specified property as a boolean.", + "returnDescription": "the boolean value of the property, or false if the property is not\n found or cannot be\n parsed as a boolean", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/MapObject/getPropertyFloat", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "getPropertyFloat", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "float", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the property to retrieve" + ], + "description": "Retrieves the value of a specified property as a float.", + "returnDescription": "the float value of the specified property", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/MapObject/getPropertyInt", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "getPropertyInt", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "int", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the property to retrieve" + ], + "description": "Retrieves the value of a property with the specified name and converts it to\nan integer.", + "returnDescription": "the integer value of the property", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/MapObject/getShape", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "getShape", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a Shape object representing the current map object. The type of Shape\nreturned depends\non the properties of the map object: - If the object is a point, a 1x1\nrectangle is returned. -\nIf the object is an ellipse, an Ellipse2D object with the specified width and\nheight is\nreturned. - If the object is a polygon, a Polygon object with the specified\npoints is returned.\n- If none of the above conditions are met, a rectangle with the specified\nwidth and height is\nreturned.", + "returnDescription": "a Shape object representing the current map object.", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "getShape", + "constructor": false, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.Shape", + "parameterNames": [], + "parameterDescriptions": [], + "description": "Returns a Shape object representing the current map object. The type of Shape\nreturned depends\non the properties of the map object: - If the object is a point, a 1x1\nrectangle is returned. -\nIf the object is an ellipse, an Ellipse2D object with the specified width and\nheight is\nreturned. - If the object is a polygon, a Polygon object with the specified\npoints is returned.\n- If none of the above conditions are met, a rectangle with the specified\nwidth and height is\nreturned.", + "returnDescription": "a Shape object representing the current map object.", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/tiled/MapObject/setClassName", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "signatures": [ + { + "name": "setClassName", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "className" + ], + "parameterDescriptions": [ + "" + ], + "description": "Tiled 1.9 renamed an object's type to class; both end up in [type](type)\n(an explicit type wins).", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "setClassName", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "className" + ], + "parameterDescriptions": [ + "" + ], + "description": "Tiled 1.9 renamed an object's type to class; both end up in [type](type)\n(an explicit type wins).", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/tiled/Property/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.Property", + "signatures": [ + { + "name": "Property", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.Property", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "Property", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.Property", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/tiled/Property/setText", + "owner": "org.openpatch.scratch.extensions.tiled.Property", + "signatures": [ + { + "name": "setText", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "the element text" + ], + "description": "Multi-line strings are written as the element's text instead of a value\nattribute.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "setText", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "text" + ], + "parameterDescriptions": [ + "the element text" + ], + "description": "Multi-line strings are written as the element's text instead of a value\nattribute.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + }, + { + "id": "extensions/tiled/TiledMap/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "signatures": [ + { + "name": "TiledMap", + "constructor": true, + "static": false, + "parameters": [ + "java.lang.String", + "org.openpatch.scratch.Stage" + ], + "returns": "org.openpatch.scratch.extensions.tiled.TiledMap", + "parameterNames": [ + "path", + "stage" + ], + "parameterDescriptions": [ + "the file path to the Tiled map XML file", + "the stage to which this Tiled map belongs" + ], + "description": "Constructs a new TiledMap object.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/TiledMap/getObjectsFromLayer", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "signatures": [ + { + "name": "getObjectsFromLayer", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "org.openpatch.scratch.extensions.tiled.MapObject[]", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the layer from which to retrieve objects" + ], + "description": "Retrieves the objects from a specified layer in the tiled map.", + "returnDescription": "an array of MapObject from the specified layer, or null if the layer\n does not exist", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/TiledMap/stampLayerToBackground", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "signatures": [ + { + "name": "stampLayerToBackground", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the layer to be stamped onto the background" + ], + "description": "Stamps a specified layer onto the background.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/TiledMap/stampLayerToForeground", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "signatures": [ + { + "name": "stampLayerToForeground", + "constructor": false, + "static": false, + "parameters": [ + "java.lang.String" + ], + "returns": "void", + "parameterNames": [ + "name" + ], + "parameterDescriptions": [ + "the name of the layer to be stamped to the foreground" + ], + "description": "Stamps the specified layer to the foreground.", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/TiledMap/toString", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "signatures": [ + { + "name": "toString", + "constructor": false, + "static": false, + "parameters": [], + "returns": "java.lang.String", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [] + }, + { + "id": "extensions/tiled/TilesetImage/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.TilesetImage", + "signatures": [ + { + "name": "TilesetImage", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.TilesetImage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ], + "status": "desktop-only", + "reason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "missingBrowserSignatures": [ + { + "name": "TilesetImage", + "constructor": true, + "static": false, + "parameters": [], + "returns": "org.openpatch.scratch.extensions.tiled.TilesetImage", + "parameterNames": [], + "parameterDescriptions": [], + "description": "", + "returnDescription": "", + "scratchblock": "", + "since": "" + } + ] + } + ] +} diff --git a/docs/templates/class-constructor.md.hbs b/docs/templates/class-constructor.md.hbs index eae95c54..20fa0121 100644 --- a/docs/templates/class-constructor.md.hbs +++ b/docs/templates/class-constructor.md.hbs @@ -8,13 +8,14 @@ hide: true # {{ name }} -{{#if desktopOnly}} +{{#if browser.unavailable}} :::alert{info} -This class works in a project you run on your own computer, but not in the -examples you can start here in the browser. There is no file system, no video -encoder and no OpenGL behind a web page, so calling it there tells you as much -and does nothing. +Browser availability: **{{ browser.status }}**. + +{{ browser.reason }} + +See [browser compatibility](/compatibility) for versions and supported library flavors. ::: {{/if}} @@ -26,6 +27,7 @@ and does nothing. {{#each examples}} {{#if online}} +{{#if browserRunnable}} :::onlineide{height="460px" libraries="scratch"} {{#each onlineFiles}} @@ -38,6 +40,19 @@ and does nothing. ::: {{else}} +This example requires the desktop runtime in the current browser revision. + +```java Example.java +{{{ online }}} +``` +{{#each browserFiles}} + +```java {{ name }} +{{{ source }}} +``` +{{/each}} +{{/if}} +{{else}} {{#if preview}} ![]({{ concat "/reference/" preview }}) {{/if}} diff --git a/docs/templates/class-method.md.hbs b/docs/templates/class-method.md.hbs index 9e5bfede..d622ff29 100644 --- a/docs/templates/class-method.md.hbs +++ b/docs/templates/class-method.md.hbs @@ -10,13 +10,14 @@ hide: true # {{ class }}::{{ name }} -{{#if desktopOnly}} +{{#if browser.unavailable}} :::alert{info} -This works in a project you run on your own computer, but not in the examples -you can start here in the browser. There is no file system, no video encoder and -no OpenGL behind a web page, so calling it there tells you as much and does -nothing. +Browser availability: **{{ browser.status }}**. + +{{ browser.reason }} + +See [browser compatibility](/compatibility) for versions and supported library flavors. ::: {{/if}} @@ -28,6 +29,7 @@ nothing. {{#each examples}} {{#if online}} +{{#if browserRunnable}} :::onlineide{height="460px" libraries="scratch"} {{#each onlineFiles}} @@ -40,6 +42,19 @@ nothing. ::: {{else}} +This example requires the desktop runtime in the current browser revision. + +```java Example.java +{{{ online }}} +``` +{{#each browserFiles}} + +```java {{ name }} +{{{ source }}} +``` +{{/each}} +{{/if}} +{{else}} {{#if preview}} ![]({{ concat "/reference/" preview }}) {{/if}} diff --git a/scripts/browser-compatibility.py b/scripts/browser-compatibility.py new file mode 100644 index 00000000..81ddeb0b --- /dev/null +++ b/scripts/browser-compatibility.py @@ -0,0 +1,194 @@ +#!/usr/bin/env python3 +"""Generate the browser contract, reference fixtures and documentation from Javadoc. + +Run mvn -DskipTests prepare-package first. --online-ide accepts any checkout path; +without it, documentation builds use the committed browser declaration snapshot. +--check is read-only and fails on missing inputs or stale generated artifacts. +""" +import argparse +import json +import re +import sys +import xml.etree.ElementTree as ET +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +COMPAT = ROOT / "compatibility" +REFERENCE = ROOT / "docs/book/reference" +STATES = {"implemented", "desktop-only", "awaiting-browser-support"} + + +def load(file): + return json.loads(file.read_text(encoding="utf-8")) + + +def encoded(value): + return json.dumps(value, indent=2, ensure_ascii=False) + "\n" + + +def simple_type(value): + # Erased parameter types identify overloads. Keep array dimensions and + # primitive types; generic bounds and return types remain in the contract. + out, depth = "", 0 + for char in value: + if char == "<": + depth += 1 + elif char == ">": + depth -= 1 + elif not depth: + out += char + out = re.sub(r"\b(?:\w+\.)+(\w+)", r"\1", out) + return out.replace(" ", "").replace("...", "[]").replace("string", "String") + + +def signature_key(signature): + return (signature["name"], signature["constructor"], signature["static"], + tuple(simple_type(p) for p in signature["parameters"])) + + +def generate(policy, inventory, accepted): + members, examples, annotated = [], [], {} + seen_overrides, seen_accepted = set(), set() + for file in sorted(REFERENCE.rglob("*.md.json")): + page = load(file) + if page.get("template") not in {"class-method", "class-constructor"}: + continue + if "api" not in page: + raise ValueError(f"{file}: API metadata missing; regenerate with mvn prepare-package") + member_id = file.relative_to(REFERENCE).as_posix().removesuffix(".md.json") + api = page["api"] + if not api["owner"].startswith("org.openpatch.scratch."): + continue + declared = inventory["standard"].get(api["owner"], []) + declared_keys = {signature_key(signature) for signature in declared} + missing = [signature for signature in api["signatures"] if signature_key(signature) not in declared_keys] + if page.get("desktopOnly"): + status, reason = "desktop-only", "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation." + elif missing or api["owner"] not in inventory["standard"]: + status, reason = "awaiting-browser-support", "Some desktop overloads are not declared by the browser. See the missing signatures in the compatibility contract." + else: + status, reason = "implemented", "Declared by the browser; behavioral limitations and compiler dialect differences still apply." + if member_id in policy["overrides"]: + override = policy["overrides"][member_id] + status, reason = override["status"], override["reason"] + seen_overrides.add(member_id) + if status not in STATES or not reason: + raise ValueError(f"Invalid availability for {member_id}") + member = {"id": member_id, **api, "status": status, "reason": reason, + "missingBrowserSignatures": missing} + members.append(member) + page["browser"] = {"status": status, "reason": reason, "unavailable": status != "implemented"} + for index, example in enumerate(page.get("examples", [])): + if not example.get("online"): + continue + example_id = f"{member_id}#{index}" + expected = accepted.get(example_id, []) + if expected: + if member_id not in policy["overrides"] or status != "awaiting-browser-support": + raise ValueError(f"{example_id}: expected errors need an explicit awaiting-support policy") + seen_accepted.add(example_id) + files = [{"name": "Example.java", "source": example["online"]}] + for name in example.get("onlineFiles", []): + if name.endswith(".java"): + source = ROOT / "docs/public/reference" / name + files.append({"name": name, "source": source.read_text(encoding="utf-8")}) + example["browserFiles"] = files[1:] + # A compiling example can still demonstrate unimplemented behavior, + # as clone() does. Keep it readable, without an interactive runner. + runnable = status != "desktop-only" and not expected and ( + status == "implemented" or member_id not in policy["overrides"]) + example["browserRunnable"] = runnable + examples.append({"id": example_id, "member": member_id, "runnable": runnable, + "files": files, "expectedDiagnostics": expected}) + annotated[file] = encoded(page) + if not members or not examples: + raise ValueError("Generated reference is missing or empty; run mvn prepare-package") + if seen_overrides != set(policy["overrides"]): + raise ValueError(f"Stale availability overrides: {set(policy['overrides']) - seen_overrides}") + if seen_accepted != set(accepted): + raise ValueError(f"Stale diagnostic exceptions: {set(accepted) - seen_accepted}") + contract = { + "schemaVersion": policy["schemaVersion"], "desktopVersion": policy["desktopVersion"], + "browser": {"version": policy["browserVersion"], "flavors": policy["flavors"]}, + "scope": "Public constructors and method groups documented by the Javadoc doclet. Overload matching uses simple erased parameter names, constructor kind and static/instance kind; qualified parameter and return types are recorded. This is a source compatibility inventory, not a binary compatibility guarantee.", + "limitations": policy["limitations"], + "referenceValidation": {"flavor": "standard", "examples": len(examples), + "knownUnsupportedExamples": len(accepted)}, + "members": members, + } + return contract, examples, annotated + + +def table(contract): + lines = ["---", "name: Browser compatibility", "---", "", "# Browser compatibility", "", + f"Desktop library: **{contract['desktopVersion']}**. Browser implementation: **{contract['browser']['version']}**.", "", + "Generated by `scripts/browser-compatibility.py`. [Download the machine-readable contract](/compatibility.json).", "", + contract["scope"], "", "## Library flavors", "", + "| Flavor | Embedded libraries | List type |", "| --- | --- | --- |"] + for name, flavor in contract["browser"]["flavors"].items(): + lines.append(f"| {name} | `{', '.join(flavor['libraries'])}` | `{flavor['listType']}` |") + lines += ["", "## Limits of this revision", ""] + lines += [f"- {limit}" for limit in contract["limitations"]] + lines += ["", "## Documented API", "", + "An implemented entry has its documented overloads declared in the browser. The reference compilation gate checks the code examples; rendering and timing need separate runtime tests.", "", + "| API group | Browser availability | Details |", "| --- | --- | --- |"] + for member in contract["members"]: + lines.append(f"| [{member['id']}](/reference/{member['id']}) | {member['status']} | {member['reason']} |") + return "\n".join(lines) + "\n" + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--online-ide", type=Path, help="explicit browser checkout to synchronize or check") + parser.add_argument("--check", action="store_true", help="fail on stale generated artifacts") + args = parser.parse_args() + policy = load(COMPAT / "browser-policy.json") + version = ET.parse(ROOT / "pom.xml").findtext("{http://maven.apache.org/POM/4.0.0}version") + if policy["desktopVersion"] != version: + raise ValueError("Desktop version changed; review the browser policy/version before regenerating") + inventory_file = COMPAT / "browser-api.json" + inventory = load(args.online_ide / "public/scratch-api.json" if args.online_ide else inventory_file) + if set(inventory) != set(policy["flavors"]): + raise ValueError("Browser inventory does not cover the declared library flavors") + accepted = load(COMPAT / "browser-reference-diagnostics.json") + contract, examples, annotated = generate(policy, inventory, accepted) + outputs = { + inventory_file: encoded(inventory), + COMPAT / "contract.json": encoded(contract), + ROOT / "docs/public/compatibility.json": encoded(contract), + ROOT / "docs/book/compatibility.md": table(contract), + } + if args.online_ide: + outputs[args.online_ide / "public/scratch-compatibility.json"] = encoded(contract) + outputs[args.online_ide / "src/compiler/java/runtime/graphics/scratch/ScratchCompatibility.ts"] = ( + "// GENERATED by scratch-for-java/scripts/browser-compatibility.py.\n" + + "export const scratchBrowserVersion = " + json.dumps(policy["browserVersion"]) + ";\n" + + "export const scratchDesktopVersion = " + json.dumps(version) + ";\n" + + "export const scratchBrowserMembers = " + encoded([ + {key: member[key] for key in ("id", "status", "reason")} for member in contract["members"] + ]).rstrip() + ";\n") + for name in ("LifecycleProbe.java", "lifecycle-expected.txt"): + outputs[args.online_ide / "src/test/browser" / name] = (COMPAT / "probes" / name).read_text(encoding="utf-8") + outputs[args.online_ide / "src/test/fixtures/scratch-reference-examples.json"] = encoded({ + "desktopVersion": version, "browserVersion": policy["browserVersion"], "examples": examples}) + if not args.check: + outputs.update(annotated) + stale = [] + for file, content in outputs.items(): + if args.check: + if not file.exists() or file.read_text(encoding="utf-8") != content: + stale.append(str(file)) + else: + file.parent.mkdir(parents=True, exist_ok=True) + file.write_text(content, encoding="utf-8") + if stale: + raise ValueError("Generated artifacts are missing or stale:\n" + "\n".join(stale)) + print(f"browser-compatibility: {len(contract['members'])} API groups, {len(examples)} examples, " + f"{len(accepted)} explicit unsupported examples; {'checked' if args.check else 'generated'}.") + + +if __name__ == "__main__": + try: + main() + except (OSError, ValueError, KeyError) as error: + sys.exit(f"browser-compatibility: {error}") diff --git a/scripts/build-course-pack.py b/scripts/build-course-pack.py new file mode 100644 index 00000000..4d7116a7 --- /dev/null +++ b/scripts/build-course-pack.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python3 +"""Build ordinary project starters/checkpoints and offline teaching material. + +--curriculum adds the selected Spielwerkstatt checkpoints from an explicit +checkout. The basic seven-tutorial pack needs only this library repository. +""" +import argparse +import base64 +import importlib.util +import json +from pathlib import Path +import re +import sys +import zipfile + +ROOT = Path(__file__).resolve().parents[1] +LESSONS = [ + ("getting-started", "Stage, Sprite, costume", "Add a rabbit and explain why this.add is needed."), + ("make-it-walk", "Frames, costumes, timers", "Animate movement without blocking the next frame."), + ("catch-the-coins", "Score, randomness, collisions", "Catch coins and test when the score changes."), + ("red-light-green-light", "Messages and shared state", "Coordinate sprites through a broadcast and explain its order."), + ("guess-the-number", "Input, conditions, feedback", "Read an answer and give useful feedback for several guesses."), + ("bouncy-hedgehog", "A game with imported assets", "Build and test the hedgehog bounce using the supplied project."), + ("dodge-the-rocks", "Stages and game over", "Switch stages when a collision ends the game."), +] +SELECTED = ["spielwerkstatt", "spielwerkstatt-ef-02-variablen", + "spielwerkstatt-ef-05-felder", "spielwerkstatt-q-07-testen"] + + +def start_class(files): + candidates = [] + for name, source in files.items(): + if not name.endswith(".java"): + continue + source = source.decode("utf-8") + for kind in ("Window", "Stage"): + match = re.search(r"\bclass\s+(\w+)\s+extends\s+" + kind + r"\b", source) + if match: + candidates.append((0 if kind == "Window" else 1, match[1])) + if re.search(r"\bvoid\s+main\s*\(", source): + candidates.append((2, Path(name).stem)) + return min(candidates)[1] if candidates else "" + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--curriculum", type=Path) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + version = json.loads((ROOT / "catalogs/examples.json").read_text())["libraryVersion"] + projects, files = [], {} + + def add(identifier, title, sources, lesson, checkpoint, flavour="standard", metadata=None): + path = "projects/" + identifier + settings = {"version": 1, "portableVersion": 1, "libraryVersion": version, + "flavour": flavour, "startStage": start_class(sources), "lesson": lesson, + "checkpoint": checkpoint, "sourceEnvironment": "studio", + "browserFeatures": [], "externalDependencies": [], **(metadata or {}), "libraryVersion": version} + for name, content in sources.items(): + files[path + "/" + name] = content + files[path + "/.scratch4j/project.json"] = (json.dumps(settings, ensure_ascii=False, indent=2) + "\n").encode() + test_classes = [Path(name).stem for name, source in sources.items() + if name.endswith(".java") and re.search(rb"@Test\b", source)] + if test_classes: + files[path + "/.scratch4j/checks.json"] = (json.dumps({ + "schemaVersion": 1, "mode": "logic", "classes": test_classes}, indent=2) + "\n").encode() + projects.append({"path": path, "title": title, "lesson": lesson, "checkpoint": checkpoint, "flavour": flavour}) + + previous = {"MyStage.java": b'import org.openpatch.scratch.*;\npublic class MyStage extends Stage {\n' + b' public MyStage() { super(480, 360); }\n' + b' // TODO: create a Sprite, add its bunny1_stand costume, then add it to this stage.\n' + b' public static void main(String[] args) { new MyStage(); }\n}\n'} + for index, (lesson, concepts, task) in enumerate(LESSONS, 1): + folder = ROOT / "docs/archives" / (lesson + "-100") + checkpoint = {p.relative_to(folder).as_posix(): p.read_bytes() for p in sorted(folder.rglob("*")) + if p.is_file() and "+libs" not in p.relative_to(folder).parts and p.suffix not in {".class", ".ctxt"}} + starter = dict(previous) + if lesson == "bouncy-hedgehog": + folder = ROOT / "docs/archives/bouncy-hedgehog" + starter = {p.relative_to(folder).as_posix(): p.read_bytes() for p in sorted(folder.rglob("*")) + if p.is_file() and "+libs" not in p.relative_to(folder).parts and p.suffix not in {".class", ".ctxt"}} + task_text = ("# " + str(index) + ". " + lesson + "\n\nConcepts: " + concepts + "\n\n" + task + + "\n\nStart from the previous project and adapt it, or compare the supplied checkpoint." + + "\n\nReflection: What changed? What evidence shows it works? Why did you choose this approach?" + + "\n\nSave a ZIP, reopen it in the other environment, and record one compatibility observation.\n") + starter["TASK.md"] = task_text.encode() + add(f"{index:02}-{lesson}-starter", lesson + " — starter", starter, lesson, "starter") + checkpoint["TASK.md"] = task_text.encode() + add(f"{index:02}-{lesson}-checkpoint", lesson + " — checkpoint", checkpoint, lesson, "complete") + previous = checkpoint + files["lessons/" + lesson + ".md"] = (ROOT / "docs/book/tutorials" / (lesson + ".md")).read_bytes() + + if args.curriculum: + generator = args.curriculum / "tools/spielwerkstatt/erzeuge_checkpoints.py" + spec = importlib.util.spec_from_file_location("course_checkpoints", generator) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + for identifier in SELECTED: + workspace = module.workspace(identifier, module.CHECKPOINTS[identifier]) + sources = {} + for entry in workspace["modules"]: + text = entry["text"] + sources[entry["name"]] = base64.b64decode(text.split(",", 1)[1]) if text.startswith("data:") else text.encode() + sources["TASK.md"] = ("# Spielwerkstatt\n\nChoose one mechanic from the chapter or invent your own." + "\n\nKeep the Entwicklertagebuch: What changed? How did you test it? Why this approach?" + "\n\nThe original reflection questions are retained in lessons/spielwerkstatt.\n").encode() + metadata = workspace["settings"]["scratchProject"] + metadata = {**metadata, "sourceEnvironment": "studio"} + add(identifier, module.CHECKPOINTS[identifier], sources, "spielwerkstatt", identifier, "nrw", metadata) + for page in sorted((args.curriculum / "book/projekte/spielwerkstatt").glob("*.md*")): + files["lessons/spielwerkstatt/" + page.name] = page.read_bytes() + + manifest = {"schemaVersion": 1, "id": "scratch-to-java", "libraryVersion": version, + "javaLibraryMinimum": 17, "javaStudio": 25, "projects": projects} + files[".scratch4j/course.json"] = (json.dumps(manifest, ensure_ascii=False, indent=2) + "\n").encode() + for name in ("teacher-notes.md", "assessment.md", "pilot.md"): + files[name] = (ROOT / "course" / name).read_bytes() + files["README.md"] = (b"# Scratch to Java course pack\n\n" + b"Open this ZIP using Studio's Import course pack command. Projects are ordinary Java folders.\n" + b"Studio copies its bundled standard/NRW library into each project; no downloads are needed.\n" + b"Other Java IDEs need Scratch for Java " + version.encode() + b".\n\n" + b"Starters begin with the previous lesson's project; checkpoints show a complete solution.\n" + b"Read TASK.md, teacher-notes.md and assessment.md. Keep the original reflection activities.\n" + b"Asset license notices are retained in the projects' README files; respect their conditions.\n" + b"Pilot results have not been collected. Use pilot.md to record actual classroom observations.\n") + args.output.parent.mkdir(parents=True, exist_ok=True) + with zipfile.ZipFile(args.output, "w", zipfile.ZIP_DEFLATED) as archive: + for name, content in sorted(files.items()): + entry = zipfile.ZipInfo(name, (1980, 1, 1, 0, 0, 0)) + entry.compress_type = zipfile.ZIP_DEFLATED + archive.writestr(entry, content) + print(f"Course pack: {len(projects)} projects / {len(files)} files -> {args.output}") + + +if __name__ == "__main__": + main() diff --git a/scripts/lifecycle-parity.sh b/scripts/lifecycle-parity.sh new file mode 100644 index 00000000..d32465db --- /dev/null +++ b/scripts/lifecycle-parity.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# The identical Java source is run in Chromium by online-ide's test:browser. +set -euo pipefail +cd "$(dirname "$0")/.." +probe_dir="$(mktemp -d)" +trap 'rm -rf "$probe_dir"' EXIT +mvn -q -DskipTests compile dependency:build-classpath "-Dmdep.outputFile=$probe_dir/classpath" +cat > "$probe_dir/DesktopLifecycleLauncher.java" <<'JAVA' +public class DesktopLifecycleLauncher { + public static void main(String[] args) { + LifecycleProbe.main(args); + org.openpatch.scratch.Window.getInstance().exit(); + System.exit(0); + } +} +JAVA +probe_cp="target/classes:$(cat "$probe_dir/classpath")" +javac -cp "$probe_cp" -d "$probe_dir" compatibility/probes/LifecycleProbe.java "$probe_dir/DesktopLifecycleLauncher.java" +timeout 30s xvfb-run -a java -cp "$probe_dir:$probe_cp" DesktopLifecycleLauncher > "$probe_dir/output" 2> "$probe_dir/stderr" +diff -u compatibility/probes/lifecycle-expected.txt "$probe_dir/output" +echo 'Desktop clone lifecycle, removal, broadcasts and geometry: passed' diff --git a/scripts/parity-fixture.py b/scripts/parity-fixture.py index b44e6c29..0c442389 100755 --- a/scripts/parity-fixture.py +++ b/scripts/parity-fixture.py @@ -2,15 +2,16 @@ """ Carries ParityProbe and its expected values into the online IDE's test suite. -The desktop probe is the original. The browser cannot run it as it stands - there -are no packages, no imports and no main() in that dialect - so the statements are -lifted out and the print helper is inlined. Doing that by hand would let the two +The desktop probe is the original. The synchronous Node test harness runs its +stage-free statements with an inline print helper. Doing that by hand would let the two drift, which is the very thing the probe exists to catch, so it is done here and the result is generated, never edited. python3 scripts/parity-fixture.py write the fixture python3 scripts/parity-fixture.py --check fail if the committed one is stale """ +import argparse +import os import re import sys from pathlib import Path @@ -18,7 +19,6 @@ ROOT = Path(__file__).resolve().parent.parent PROBE = ROOT / "src/examples/java/parity/ParityProbe.java" EXPECTED = ROOT / "src/test/resources/parity/expected.txt" -FIXTURE = ROOT.parent / "online-ide/src/test/java/ScratchParityTest.java" def statements() -> list[str]: """ @@ -108,25 +108,31 @@ def build() -> str: def main() -> None: - check = "--check" in sys.argv - if not FIXTURE.parent.exists(): - message = f"the online IDE is not beside this repository ({FIXTURE.parent})" - if check: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--check", action="store_true") + parser.add_argument("--online-ide", type=Path, default=ROOT.parent / "online-ide") + parser.add_argument("--strict", action="store_true", help="fail if the required browser checkout is absent (automatic in CI)") + args = parser.parse_args() + fixture = args.online_ide / "src/test/java/ScratchParityTest.java" + strict = args.strict or os.environ.get("CI", "").lower() in {"1", "true"} + if not fixture.parent.exists(): + message = f"required browser checkout is missing ({fixture.parent})" + if args.check and not strict: print(f"parity-fixture: skipped, {message}") return sys.exit(f"parity-fixture: {message}") wanted = build() - if check: - current = FIXTURE.read_text() if FIXTURE.exists() else "" + if args.check: + current = fixture.read_text() if fixture.exists() else "" if current != wanted: sys.exit("parity-fixture: the online IDE's copy is out of date - " "run python3 scripts/parity-fixture.py") print("parity-fixture: the online IDE's copy is up to date.") return - FIXTURE.write_text(wanted) - print(f"parity-fixture: wrote {FIXTURE} " + fixture.write_text(wanted) + print(f"parity-fixture: wrote {fixture} " f"({len(statements())} lines, {len(keys())} of " f"{len(EXPECTED.read_text().splitlines())} values)") diff --git a/scripts/release-catalogs.py b/scripts/release-catalogs.py new file mode 100644 index 00000000..62871012 --- /dev/null +++ b/scripts/release-catalogs.py @@ -0,0 +1,269 @@ +#!/usr/bin/env python3 +"""Generate versioned release catalogs; --check never writes. + +Run after mvn prepare-package and browser-compatibility.py. Consumers may use +the committed artifacts without a sibling checkout. Explicit --studio and +--online-ide paths synchronize or check their offline snapshots. +""" +import argparse +from collections import Counter +import hashlib +import json +from pathlib import Path +import re +import sys +import xml.etree.ElementTree as ET +import zipfile + +ROOT = Path(__file__).resolve().parents[1] +CATALOGS = ROOT / "catalogs" +def sheets(): + registry = (ROOT / "src/main/java/org/openpatch/scratch/internal/BuiltinAssets.java").read_text() + declaration = re.search(r'String\[\]\s+SHEETS\s*=\s*\{([^}]+)\}', registry) + if not declaration: + raise ValueError("Cannot discover the library's atlas lookup order") + return re.findall(r'"([^"]+)"', declaration[1]) + + +def encoded(value): + return json.dumps(value, ensure_ascii=False, indent=2) + "\n" + + +def simple(value): + return re.sub(r"\b(?:\w+\.)+(\w+)", r"\1", value) + + +def erase(value): + while re.search(r"<[^<>]*>", value): + value = re.sub(r"<[^<>]*>", "", value) + return simple(value).replace(" ", "").replace("string", "String") + + +def identity(group, parameters): + return group + "(" + ",".join(erase(p) for p in parameters) + ")" + + +def browser_descriptions(checkout): + """Seed overrides once from existing translations, keyed by public identity.""" + folder = checkout / "src/compiler/java/runtime/graphics/scratch" + comments = (folder / "ScratchLibraryComments.ts").read_text() + german = {} + for name, body in re.findall(r"static\s+(\w+)\s*=\s*\(\)\s*=>\s*lm\(\{(.*?)\}\)", comments, re.S): + match = re.search(r'"de":\s*("(?:[^"\\]|\\.)*")', body) + if match: + german[name] = json.loads(match[1]) + out = {} + for source in sorted(folder.glob("*.ts")): + text = source.read_text() + owner = "" + for match in re.finditer(r'\{[^{}]*?\bsignature:\s*(["\'])(.*?)\1[^{}]*?\bcomment:\s*SRC\.(\w+)[^{}]*?\}', text, re.S): + signature, comment = match.group(2), match.group(3) + declaration = re.search(r"\b(?:class|enum|interface)\s+(\w+)", signature) + if declaration: + owner = declaration[1] + continue + method = re.search(r"(\w+)\s*\((.*?)\)", signature) + if not owner or not method or comment not in german: + continue + parameters = [] + # Types may contain generics; commas at depth zero separate parameters. + depth, part = 0, "" + for char in method[2] + ",": + depth += (char == "<") - (char == ">") + if char == "," and depth == 0: + if part.strip(): + parameters.append(part.strip().rsplit(" ", 1)[0]) + part = "" + else: + part += char + name = "constructor" if method[1] == owner else method[1] + out[identity(owner + "/" + name, parameters)] = {"de": {"description": german[comment]}} + return out + + +def generate(translations): + contract = json.loads((ROOT / "compatibility/contract.json").read_text()) + version = contract["desktopVersion"] + header = {"schemaVersion": 1, "libraryVersion": version, + "browserVersion": contract["browser"]["version"]} + availability = {member["id"]: member for member in contract["members"]} + methods = [] + for path in sorted((ROOT / "docs/book/reference").rglob("*.md.json")): + page = json.loads(path.read_text()) + if "api" not in page or not page["api"]["owner"].startswith("org.openpatch.scratch."): + continue + group = path.relative_to(ROOT / "docs/book/reference").as_posix().removesuffix(".md.json") + for signature in page["api"]["signatures"]: + if "parameterNames" not in signature: + raise ValueError("Regenerate Javadoc metadata with mvn prepare-package") + identifier = identity(group, signature["parameters"]) + description = signature["description"] or page["description"] + methods.append({ + "id": identifier, "memberId": group, "owner": page["api"]["owner"], + "className": page["api"]["owner"].split(".")[-1], + "methodName": "constructor" if signature["constructor"] else signature["name"], + "static": signature["static"], "returnType": simple(signature["returns"]), + "parameterTypes": signature["parameters"], "parameterNames": signature["parameterNames"], + "params": [simple(t) + " " + n for t, n in zip(signature["parameters"], signature["parameterNames"])], + "summary": description.split("\n\n")[0], "description": description, + "scratchblock": signature["scratchblock"] or None, + "paramDocs": [n + ": " + d for n, d in zip(signature["parameterNames"], signature["parameterDescriptions"])], + "returns": signature.get("returnDescription") or None, "since": signature["since"], + "docsUrl": "https://scratch4j.openpatch.org/reference/" + group, + "availability": availability[group]["status"], + "availabilityReason": availability[group]["reason"], + "translations": translations.get(identifier, {}), + }) + identifiers = {m["id"] for m in methods} + if len(identifiers) != len(methods): + raise ValueError("Duplicate API identifiers") + stale = set(translations) - identifiers + if stale: + raise ValueError("Stale translation overrides: " + ", ".join(sorted(stale))) + images = [] + for sheet in sheets(): + for element in ET.parse(ROOT / "src/main/resources/images" / (sheet + ".xml")).getroot(): + name = Path(element.get("name")).stem + images.append({"id": sheet + "/" + name, "name": name, "sheet": sheet, + "sheetPath": "images/" + sheet + ".png", + **{key: int(element.get(key)) for key in ("x", "y", "width", "height")}, + "direction": float(element.get("direction", "90"))}) + # Match the library registry: the first qualified entry and first bare name win. + unique = {} + for image in images: + unique.setdefault(image["id"].lower(), image) + images = list(unique.values()) + bare = set() + for image in images: + image["referenceName"] = image["id"] if image["name"].lower() in bare else image["name"] + bare.add(image["name"].lower()) + sounds = [{"id": p.stem, "path": p.relative_to(ROOT / "src/main/resources").as_posix()} + for p in sorted((ROOT / "src/main/resources/sounds").rglob("*")) + if p.suffix.lower() in {".ogg", ".wav", ".aiff", ".au"}] + examples = [] + for kind, folder in [("demo", ROOT / "src/examples/java/demos"), + ("tutorial", ROOT / "docs/archives")]: + for project in sorted(folder.iterdir()): + if not project.is_dir() or not list(project.glob("*.java")): + continue + files = [p for p in sorted(project.rglob("*")) if p.is_file() + and not any(part in {"+libs", ".git", "target", ".scratch4j"} for part in p.relative_to(project).parts)] + examples.append({"id": kind + "/" + project.name, "kind": kind, + "source": project.relative_to(ROOT).as_posix(), + "libraryVersion": version, "flavour": "standard", + "requiredSheets": required_sheets(files, images), + "files": [{"path": p.relative_to(project).as_posix(), + "sha256": hashlib.sha256(p.read_bytes()).hexdigest()} for p in files]}) + return {"api.json": {**header, "methods": methods}, + "assets.json": {**header, "license": "CC0", "images": images, "sounds": sounds}, + "examples.json": {**header, "examples": examples}} + + +def required_sheets(files, images): + literals = [] + for file in files: + if file.suffix == ".java": + literals.extend(re.findall(r'"([^"\n]+)"', file.read_text())) + required = set() + for value in literals: + pattern = re.escape(value).replace("%d", r"\d+") + for image in images: + if re.fullmatch(pattern, image["name"]) or re.fullmatch(pattern, image["id"]): + required.add(image["sheet"]) + return sorted(required) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--check", action="store_true") + parser.add_argument("--online-ide", type=Path) + parser.add_argument("--studio", type=Path) + parser.add_argument("--seed-translations", action="store_true") + parser.add_argument("--archive", type=Path, help="Write a versioned release artifact including ordinary example files") + args = parser.parse_args() + translations_path = CATALOGS / "translations.json" + if args.seed_translations: + if args.check or not args.online_ide: + raise ValueError("Seeding requires --online-ide and cannot be used with --check") + contract = json.loads((ROOT / "compatibility/contract.json").read_text()) + known = {identity(m["id"], s["parameters"]) for m in contract["members"] for s in m["signatures"]} + translations = {key: value for key, value in browser_descriptions(args.online_ide).items() if key in known} + CATALOGS.mkdir(exist_ok=True) + translations_path.write_text(encoded(translations)) + translations = json.loads(translations_path.read_text()) + catalogs = generate(translations) + outputs = {} + lines = ["---", "name: Release catalogs", "---", "", "# Release catalogs", "", + "Library " + catalogs["api.json"]["libraryVersion"] + "; browser " + catalogs["api.json"]["browserVersion"] + ".", "", + "Generated release metadata is available offline inside the library JAR and Studio.", "", + "- [API signatures, documentation and translations](/catalogs/api.json)", + "- [Images, atlas geometry and sounds](/catalogs/assets.json)", + "- [Examples and source checksums](/catalogs/examples.json)", "", + "## Examples", "", "| Example | Flavor | Library |", "| --- | --- | --- |"] + for example in catalogs["examples.json"]["examples"]: + lines.append("| " + example["id"] + " | " + example["flavour"] + " | " + example["libraryVersion"] + " |") + outputs[ROOT / "docs/book/catalogs.md"] = "\n".join(lines) + "\n" + for name, content in catalogs.items(): + for folder in [CATALOGS, ROOT / "src/main/resources/catalogs", ROOT / "docs/public/catalogs"]: + outputs[folder / name] = encoded(content) + if args.studio: + if not (args.studio / "core/pom.xml").is_file(): + raise ValueError("Studio checkout is missing: " + str(args.studio)) + outputs[args.studio / "core/src/main/resources/catalogs" / name] = encoded(content) + if args.online_ide: + if not (args.online_ide / "package.json").is_file(): + raise ValueError("Browser checkout is missing: " + str(args.online_ide)) + outputs[args.online_ide / "src/compiler/java/runtime/graphics/scratch/catalogs" / name] = encoded(content) + outputs[args.online_ide / "public/catalogs" / name] = encoded(content) + checks = (ROOT / "compatibility/checks/PortableBehaviorChecks.java").read_text() + outputs[ROOT / "src/test/java/portable/PortableBehaviorChecks.java"] = "package portable;\n\n" + checks + if args.online_ide: + outputs[args.online_ide / "src/test/browser/PortableBehaviorChecks.java"] = checks + binary_outputs = {} + for sheet in sheets(): + source = ROOT / "src/main/resources/images" / (sheet + ".png") + if args.online_ide: + binary_outputs[args.online_ide / "assets/graphics/scratch" / source.name] = source.read_bytes() + if args.studio: + binary_outputs[args.studio / "core/src/main/resources/images" / source.name] = source.read_bytes() + stale = [] + for path, content in binary_outputs.items(): + if args.check: + if not path.exists() or path.read_bytes() != content: + stale.append(str(path)) + else: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(content) + for path, content in outputs.items(): + if args.check: + if not path.exists() or path.read_text() != content: + stale.append(str(path)) + else: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content) + if stale: + raise ValueError("Stale catalogs:\n" + "\n".join(stale)) + if args.archive: + if args.check: + raise ValueError("--check cannot write an archive") + args.archive.parent.mkdir(parents=True, exist_ok=True) + with zipfile.ZipFile(args.archive, "w", zipfile.ZIP_DEFLATED) as archive: + for name, value in catalogs.items(): + archive.writestr("catalogs/" + name, encoded(value)) + for resource in sorted((ROOT / "src/main/resources/images").iterdir()): + if resource.suffix in {".png", ".xml", ".txt"}: + archive.write(resource, resource.relative_to(ROOT / "src/main/resources").as_posix()) + for example in catalogs["examples.json"]["examples"]: + for entry in example["files"]: + file = ROOT / example["source"] / entry["path"] + archive.writestr("examples/" + example["id"] + "/" + entry["path"], file.read_bytes()) + print("release-catalogs:", len(catalogs["api.json"]["methods"]), "API overloads,", + len(catalogs["assets.json"]["images"]), "images,", len(catalogs["assets.json"]["sounds"]), + "sounds,", len(catalogs["examples.json"]["examples"]), "examples; checked" if args.check else "examples; generated") + + +if __name__ == "__main__": + try: + main() + except (OSError, ValueError, KeyError) as error: + sys.exit("release-catalogs: " + str(error)) diff --git a/src/examples/java/demos/catPlatformer/Bean.java b/src/examples/java/demos/catPlatformer/Bean.java new file mode 100644 index 00000000..452362f3 --- /dev/null +++ b/src/examples/java/demos/catPlatformer/Bean.java @@ -0,0 +1,18 @@ +package demos.catPlatformer; + +import org.openpatch.scratch.AnimatedSprite; + +/** A spinning coffee bean to collect. */ +public class Bean extends AnimatedSprite { + + public Bean(double x, double y) { + this.addAnimation("spin", "coffee_bean_%d", 4); + this.setAnimationInterval(120); + this.setX(x); + this.setY(y); + } + + public void run() { + this.playAnimation("spin"); + } +} diff --git a/src/examples/java/demos/catPlatformer/Bug.java b/src/examples/java/demos/catPlatformer/Bug.java new file mode 100644 index 00000000..562f8cfd --- /dev/null +++ b/src/examples/java/demos/catPlatformer/Bug.java @@ -0,0 +1,54 @@ +package demos.catPlatformer; + +import org.openpatch.scratch.AnimatedSprite; +import org.openpatch.scratch.RotationStyle; + +/** A bug walking to and fro. Jump on it or punch it - but do not walk into it. */ +public class Bug extends AnimatedSprite { + + /** The costume is 32 pixels high, the legs end 3 pixels above its bottom. */ + private static final double FEET = 13; + + private final double minX; + private final double maxX; + private boolean squished = false; + private int squishedFrames = 0; + + public Bug(double minX, double maxX, double floor) { + this.addAnimation("walk", "bug_walk_%d", 4); + this.addAnimation("squished", "bug_squished_%d", 2); + this.setAnimationInterval(120); + this.setRotationStyle(RotationStyle.LEFT_RIGHT); + this.minX = minX; + this.maxX = maxX; + this.setX(minX); + this.setY(floor + FEET); + } + + public boolean isSquished() { + return this.squished; + } + + public void squish() { + this.squished = true; + this.resetAnimation(); + } + + public void run() { + if (this.squished) { + this.playAnimation("squished", true); + this.squishedFrames += 1; + if (this.squishedFrames > 30) { + this.remove(); + } + return; + } + this.playAnimation("walk"); + this.move(1); + if (this.getX() > this.maxX) { + this.setDirection(-90); + } else if (this.getX() < this.minX) { + this.setDirection(90); + } + } +} diff --git a/src/examples/java/demos/catPlatformer/Cat.java b/src/examples/java/demos/catPlatformer/Cat.java new file mode 100644 index 00000000..1d331e05 --- /dev/null +++ b/src/examples/java/demos/catPlatformer/Cat.java @@ -0,0 +1,257 @@ +package demos.catPlatformer; + +import org.openpatch.scratch.AnimatedSprite; +import org.openpatch.scratch.KeyCode; +import org.openpatch.scratch.RotationStyle; + +/** The Scratch for Java cat. Every one of its animations is on the built-in cat sheet. */ +public class Cat extends AnimatedSprite { + + /** The costumes are 64 pixels high with the feet on the bottom row. */ + private static final double FEET = 32; + + private static final double SPEED = 3; + private static final double CLIMB_SPEED = 2; + private static final double JUMP_STRENGTH = 10.5; + private static final double GRAVITY = 0.5; + + private double fallSpeed = 0; + private boolean onGround = true; + private boolean climbing = false; + private boolean punching = false; + private boolean dead = false; + private boolean won = false; + /** Frames left until the cat can be hurt again. */ + private int hurtFrames = 0; + /** Frames left of the landing squat. */ + private int landFrames = 0; + private String animation = ""; + + public Cat() { + // "cat_walk_%d" stands for cat_walk_1 to cat_walk_6. + this.addAnimation("idle", "cat_idle_%d", 26); + this.addAnimation("walk", "cat_walk_%d", 6); + this.addAnimation("crouch", "cat_crouch_%d", 4); + this.addAnimation("jump", "cat_jump_%d", 3); + this.addAnimation("fall", "cat_fall_%d", 2); + this.addAnimation("land", "cat_land_%d", 2); + this.addAnimation("punch", "cat_punch_%d", 6); + this.addAnimation("hurt", "cat_hurt_%d", 3); + this.addAnimation("ko", "cat_ko_%d", 5); + this.addAnimation("cheer", "cat_cheer_%d", 4); + this.addAnimation("climb", "cat_climb_%d", 4); + this.setAnimationInterval(100); + this.addSound("footstep_grass_000"); + this.addSound("impactPunch_medium_004"); + this.addSound("impactSoft_heavy_000"); + this.addSound("handleCoins"); + + this.setRotationStyle(RotationStyle.LEFT_RIGHT); + this.setX(-360); + this.setY(CatPlatformer.GROUND_TOP + FEET); + } + + /** Plays an animation, starting it from its first frame when it changes. */ + private void play(String name, boolean once) { + if (!name.equals(this.animation)) { + this.animation = name; + this.resetAnimation(); + } + this.playAnimation(name, once); + } + + private CatPlatformer level() { + return (CatPlatformer) this.getStage(); + } + + private double feet() { + return this.getY() - FEET; + } + + public void whenKeyPressed(KeyCode keyCode) { + if (this.dead || this.won) { + return; + } + if (keyCode == KeyCode.SPACE && (this.onGround || this.climbing)) { + this.fallSpeed = JUMP_STRENGTH; + this.onGround = false; + this.climbing = false; + this.playSound("footstep_grass_000"); + } + if (keyCode == KeyCode.X && this.onGround && !this.punching) { + this.punching = true; + } + } + + public void run() { + if (this.dead) { + this.fall(); + this.play("ko", true); + return; + } + if (this.won) { + this.play("cheer", false); + return; + } + + boolean walking = this.walk(); + if (!this.climb()) { + this.fall(); + } + this.meetBugs(); + + Bean bean = this.getTouchingSprite(Bean.class); + if (bean != null) { + this.playSound("handleCoins"); + bean.remove(); + this.level().collectBean(); + } + if (this.isTouchingSprite(Goal.class) && this.onGround) { + this.won = true; + this.setTransparency(0); + this.level().win(); + } + + this.animate(walking); + } + + /** Left and right; returns whether the cat is walking. */ + private boolean walk() { + if (this.punching || this.isKeyPressed(KeyCode.DOWN) && this.onGround && !this.isTouchingSprite(Ladder.class)) { + return false; + } + if (this.isKeyPressed(KeyCode.LEFT)) { + this.setDirection(-90); + this.changeX(-SPEED); + } else if (this.isKeyPressed(KeyCode.RIGHT)) { + this.setDirection(90); + this.changeX(SPEED); + } else { + return false; + } + this.climbing = false; + this.setX(Math.max(-380, Math.min(380, this.getX()))); + return true; + } + + /** Up and down a ladder; returns whether the cat is on one. */ + private boolean climb() { + boolean onLadder = this.isTouchingSprite(Ladder.class); + boolean up = this.isKeyPressed(KeyCode.UP); + boolean down = this.isKeyPressed(KeyCode.DOWN); + if (onLadder && (up || down) && !this.punching) { + this.climbing = true; + } + if (!onLadder) { + this.climbing = false; + } + + if (this.climbing) { + this.fallSpeed = 0; + if (up) { + this.changeY(CLIMB_SPEED); + } else if (down) { + this.changeY(-CLIMB_SPEED); + } + // At the top of the ladder the cat steps onto the platform, at the + // bottom onto the ground. + if (this.feet() >= CatPlatformer.LADDER_TOP) { + this.setY(CatPlatformer.LADDER_TOP + FEET); + this.climbing = false; + this.onGround = true; + } else if (this.feet() <= CatPlatformer.GROUND_TOP) { + this.setY(CatPlatformer.GROUND_TOP + FEET); + this.climbing = false; + this.onGround = true; + } else { + this.onGround = false; + } + } + return this.climbing; + } + + /** Falls until the feet meet a platform or the ground. */ + private void fall() { + double before = this.feet(); + this.fallSpeed -= GRAVITY; + this.changeY(this.fallSpeed); + double landing = this.level().landingHeight(this.getX(), before, this.feet()); + if (!Double.isNaN(landing) && this.fallSpeed <= 0) { + if (!this.onGround && this.fallSpeed < -4) { + this.landFrames = 8; + } + this.setY(landing + FEET); + this.fallSpeed = 0; + this.onGround = true; + } else { + this.onGround = false; + } + } + + private void meetBugs() { + if (this.hurtFrames > 0) { + this.hurtFrames -= 1; + // blink while it cannot be hurt + this.setTransparency(this.hurtFrames / 5 % 2 == 0 ? 0 : 60); + } + for (Bug bug : this.getTouchingSprites(Bug.class)) { + if (bug.isSquished()) { + continue; + } + boolean inFront = (bug.getX() - this.getX()) * (this.getDirection() > 0 ? 1 : -1) > 0; + if (this.fallSpeed < 0 && this.feet() > bug.getY()) { + // landed on it + bug.squish(); + this.fallSpeed = 6; + this.playSound("impactPunch_medium_004"); + } else if (this.punching && inFront && this.getAnimationFrame() >= 3) { + bug.squish(); + this.playSound("impactPunch_medium_004"); + } else if (this.hurtFrames == 0) { + this.getHurt(bug); + } + } + } + + private void getHurt(Bug bug) { + this.playSound("impactSoft_heavy_000"); + this.punching = false; + this.hurtFrames = 60; + // knocked back, away from the bug + this.changeX(this.getX() < bug.getX() ? -24 : 24); + this.fallSpeed = 5; + this.onGround = false; + if (this.level().loseHeart() == 0) { + this.dead = true; + this.setTransparency(0); + this.level().lose(); + } + } + + private void animate(boolean walking) { + if (this.hurtFrames > 40) { + this.play("hurt", true); + } else if (this.punching) { + this.play("punch", true); + if (this.isAnimationPlayed()) { + this.punching = false; + } + } else if (this.climbing) { + // only move the arms and legs while climbing + if (this.isKeyPressed(KeyCode.UP) || this.isKeyPressed(KeyCode.DOWN)) { + this.play("climb", false); + } + } else if (!this.onGround) { + this.play(this.fallSpeed > 0 ? "jump" : "fall", true); + } else if (this.landFrames > 0) { + this.landFrames -= 1; + this.play("land", true); + } else if (this.isKeyPressed(KeyCode.DOWN)) { + this.play("crouch", false); + } else if (walking) { + this.play("walk", false); + } else { + this.play("idle", false); + } + } +} diff --git a/src/examples/java/demos/catPlatformer/CatPlatformer.java b/src/examples/java/demos/catPlatformer/CatPlatformer.java new file mode 100644 index 00000000..b8dc69b6 --- /dev/null +++ b/src/examples/java/demos/catPlatformer/CatPlatformer.java @@ -0,0 +1,161 @@ +package demos.catPlatformer; + +import java.util.ArrayList; +import java.util.List; + +import org.openpatch.scratch.Stage; +import org.openpatch.scratch.Text; + +/** + * The Scratch for Java cat in a small platformer: collect the coffee beans, + * jump on the bugs (or punch them) and climb up to the steaming mug. + * + *

+ * Arrow keys walk, climb and crouch, space jumps, X punches. Like the coin + * collector, it only uses assets built into Scratch for Java - the cat, the + * beans, the bugs, the mug and the hearts are on the built-in cat sheet, the + * tiles and the sounds are Kenney's. + */ +public class CatPlatformer extends Stage { + + /** The height the ground reaches up to. */ + public static final double GROUND_TOP = -176; + + /** Where the ladder ends: the top of the platform with the mug. */ + public static final double LADDER_TOP = 112; + + private final List platforms = new ArrayList<>(); + private final Heart[] hearts = new Heart[3]; + + private Text score; + private int beans = 0; + private int totalBeans = 0; + + public CatPlatformer() { + super(800, 480); + this.addBackdrop("background"); + + // The ground, one grass tile at a time. + for (int x = -400; x < 400; x += 64) { + this.add(new Ground(x + 32)); + } + + // A ladder from the ground up to the highest platform, added before the + // platform so it is drawn behind it. + for (double y = GROUND_TOP + 32; y < LADDER_TOP - 32; y += 64) { + this.add(new Ladder(232, y, false)); + } + this.add(new Ladder(232, LADDER_TOP - 32, true)); + + // Three platforms, each from its left edge, its top and a number of tiles. + this.addPlatform(-260, -80, 2); + this.addPlatform(-40, 16, 2); + this.addPlatform(200, LADDER_TOP, 3); + + this.addBean(-330, GROUND_TOP + 40); + this.addBean(-60, GROUND_TOP + 40); + this.addBean(-196, -80 + 40); + this.addBean(24, 16 + 40); + this.addBean(232, -40); + this.addBean(300, LADDER_TOP + 40); + + this.add(new Bug(-170, -20, GROUND_TOP)); + this.add(new Bug(40, 160, GROUND_TOP)); + this.add(new Bug(280, 340, LADDER_TOP)); + + this.add(new Goal(372, LADDER_TOP)); + this.add(new Cat()); + + for (int i = 0; i < this.hearts.length; i++) { + this.hearts[i] = new Heart(-370 + i * 34, 210); + this.add(this.hearts[i]); + } + this.score = new Text(); + this.score.setPosition(-180, 210); + this.score.setTextSize(24); + this.add(this.score); + this.showScore(); + } + + private void addPlatform(double left, double top, int tiles) { + for (int i = 0; i < tiles; i++) { + String costume = i == 0 ? "grassHalf_left" : i == tiles - 1 ? "grassHalf_right" : "grassHalf_mid"; + Platform tile = new Platform(costume, left + 32 + i * 64, top); + this.platforms.add(tile); + this.add(tile); + } + } + + private void addBean(double x, double y) { + this.add(new Bean(x, y)); + this.totalBeans += 1; + } + + private void showScore() { + this.score.showText("Beans: " + this.beans + " / " + this.totalBeans); + } + + /** + * Finds what a falling sprite lands on. Between two frames its feet went + * from feetBefore down to feetAfter; if a platform top (or the ground) lies + * in between, below x, that is where it stands. + * + * @return the height of what it lands on, or NaN while it is still falling + */ + public double landingHeight(double x, double feetBefore, double feetAfter) { + double best = Double.NaN; + for (Platform platform : this.platforms) { + boolean above = x > platform.getLeft() && x < platform.getRight(); + double top = platform.getTop(); + if (above && feetBefore >= top && feetAfter <= top && !(best >= top)) { + best = top; + } + } + if (Double.isNaN(best) && feetAfter <= GROUND_TOP) { + best = GROUND_TOP; + } + return best; + } + + /** Called by a bean when the cat picks it up. */ + public void collectBean() { + this.beans += 1; + this.showScore(); + } + + /** Called by the cat when it gets hurt; returns how many hearts are left. */ + public int loseHeart() { + int left = 0; + for (Heart heart : this.hearts) { + if (heart.isFull()) { + left += 1; + } + } + if (left > 0) { + this.hearts[left - 1].empty(); + left -= 1; + } + return left; + } + + public void win() { + this.playSound("jingles_NES00"); + this.showMessage("You made it! " + this.beans + " / " + this.totalBeans + " beans"); + } + + public void lose() { + this.showMessage("Game over"); + } + + private void showMessage(String message) { + Text text = new Text(); + text.setPosition(0, 60); + text.setTextSize(40); + text.showText(message); + this.add(text); + } + + public static void main(String[] args) { + new CatPlatformer(); + } +} diff --git a/src/examples/java/demos/catPlatformer/Goal.java b/src/examples/java/demos/catPlatformer/Goal.java new file mode 100644 index 00000000..0878d9a8 --- /dev/null +++ b/src/examples/java/demos/catPlatformer/Goal.java @@ -0,0 +1,19 @@ +package demos.catPlatformer; + +import org.openpatch.scratch.AnimatedSprite; + +/** The steaming mug at the end of the level. */ +public class Goal extends AnimatedSprite { + + public Goal(double x, double floor) { + this.addAnimation("steam", "goal_mug_%d", 4); + this.setAnimationInterval(150); + this.setX(x); + // the mug stands on the bottom two rows of its 32 pixel costume + this.setY(floor + 14); + } + + public void run() { + this.playAnimation("steam"); + } +} diff --git a/src/examples/java/demos/catPlatformer/Ground.java b/src/examples/java/demos/catPlatformer/Ground.java new file mode 100644 index 00000000..45b5f11b --- /dev/null +++ b/src/examples/java/demos/catPlatformer/Ground.java @@ -0,0 +1,15 @@ +package demos.catPlatformer; + +import org.openpatch.scratch.Sprite; + +/** One grass tile of the ground. */ +public class Ground extends Sprite { + + public Ground(double x) { + this.addCostume("grassMid"); + this.setSize(50); + this.setX(x); + // The tile is 64 pixels high at size 50, so its middle sits 32 below its top. + this.setY(CatPlatformer.GROUND_TOP - 32); + } +} diff --git a/src/examples/java/demos/catPlatformer/Heart.java b/src/examples/java/demos/catPlatformer/Heart.java new file mode 100644 index 00000000..8ec9e416 --- /dev/null +++ b/src/examples/java/demos/catPlatformer/Heart.java @@ -0,0 +1,22 @@ +package demos.catPlatformer; + +import org.openpatch.scratch.Sprite; + +/** One of the cat's lives, shown in the top left corner. */ +public class Heart extends Sprite { + + public Heart(double x, double y) { + this.addCostume("heart_full"); + this.addCostume("heart_empty"); + this.setX(x); + this.setY(y); + } + + public boolean isFull() { + return this.getCurrentCostumeName().equals("heart_full"); + } + + public void empty() { + this.switchCostume("heart_empty"); + } +} diff --git a/src/examples/java/demos/catPlatformer/Ladder.java b/src/examples/java/demos/catPlatformer/Ladder.java new file mode 100644 index 00000000..a95afe77 --- /dev/null +++ b/src/examples/java/demos/catPlatformer/Ladder.java @@ -0,0 +1,14 @@ +package demos.catPlatformer; + +import org.openpatch.scratch.Sprite; + +/** One piece of the ladder. Touching it, the cat can climb with the up and down keys. */ +public class Ladder extends Sprite { + + public Ladder(double x, double y, boolean top) { + this.addCostume(top ? "ladderTop" : "ladderMid"); + this.setSize(50); + this.setX(x); + this.setY(y); + } +} diff --git a/src/examples/java/demos/catPlatformer/Platform.java b/src/examples/java/demos/catPlatformer/Platform.java new file mode 100644 index 00000000..3b634e2f --- /dev/null +++ b/src/examples/java/demos/catPlatformer/Platform.java @@ -0,0 +1,30 @@ +package demos.catPlatformer; + +import org.openpatch.scratch.Sprite; + +/** One tile of a platform the cat can stand on. */ +public class Platform extends Sprite { + + private final double top; + + public Platform(String costume, double x, double top) { + this.addCostume(costume); + this.setSize(50); + this.top = top; + this.setX(x); + // The grass of a half tile starts at the top of its 64 pixel costume. + this.setY(top - 32); + } + + public double getTop() { + return this.top; + } + + public double getLeft() { + return this.getX() - 32; + } + + public double getRight() { + return this.getX() + 32; + } +} diff --git a/src/main/java/org/openpatch/scratch/internal/BuiltinAssets.java b/src/main/java/org/openpatch/scratch/internal/BuiltinAssets.java index c041f506..c8a41950 100644 --- a/src/main/java/org/openpatch/scratch/internal/BuiltinAssets.java +++ b/src/main/java/org/openpatch/scratch/internal/BuiltinAssets.java @@ -16,8 +16,10 @@ * Registry for the sprite sheets that ship inside the Scratch for Java jar. * *

- * The bundled artwork comes from kenney.nl and - * is released under CC0, so it can be used for any purpose without attribution. + * The bundled artwork comes from kenney.nl, apart + * from the cat sheet with the Scratch for Java mascot and the props of its + * platformer, which was drawn for this library. All of it is released under + * CC0, so it can be used for any purpose without attribution. * Each sheet has an XML atlas next to it describing where every single sprite * sits on the sheet; this class reads those atlases and lets a sprite be * addressed by plain name: @@ -51,7 +53,7 @@ private BuiltinAssets() { * The bundled sheets, in lookup order. When the same bare name exists on * several sheets, the one listed first wins. */ - private static final String[] SHEETS = { "platformer", "jumper", "space_shooter", "tappy_plane" }; + private static final String[] SHEETS = { "platformer", "jumper", "space_shooter", "tappy_plane", "cat" }; private static final String BASE = "images/"; diff --git a/src/main/java/org/openpatch/scratch/internal/GameClock.java b/src/main/java/org/openpatch/scratch/internal/GameClock.java index dcca5309..ad29d242 100644 --- a/src/main/java/org/openpatch/scratch/internal/GameClock.java +++ b/src/main/java/org/openpatch/scratch/internal/GameClock.java @@ -66,7 +66,7 @@ public void step() { /** 1 is normal, 0.5 half as fast, 2 twice as fast; never below 0. */ public void setSpeed(double speed) { - this.speed = Math.max(0, speed); + this.speed = Double.isFinite(speed) ? Math.max(0, speed) : 0; } public double getSpeed() { @@ -89,7 +89,7 @@ public int frame(double realSeconds) { this.stepSeconds = 0; return 0; } - this.owed += realSeconds * this.speed; + this.owed += Math.max(0, realSeconds) * this.speed; this.credit += this.speed; int steps = (int) Math.min(Math.floor(this.credit), MAX_STEPS_PER_FRAME); if (steps == 0) { diff --git a/src/main/resources/catalogs/api.json b/src/main/resources/catalogs/api.json new file mode 100644 index 00000000..bb9e7bd9 --- /dev/null +++ b/src/main/resources/catalogs/api.json @@ -0,0 +1,17575 @@ +{ + "schemaVersion": 1, + "libraryVersion": "5.7.0", + "browserVersion": "5.7.0-browser.2", + "methods": [ + { + "id": "AnimatedSprite/addAnimation(String,String,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int" + ], + "parameterNames": [ + "name", + "pattern", + "frames" + ], + "params": [ + "String name", + "String pattern", + "int frames" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "pattern: the pattern (@see String#format) of the file names. The frame\n starts from 1.", + "frames: the number of frames in the animation" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt eine Animation hinzu. %d im Muster wird durch 1..frames ersetzt, z.B. bunny1_walk%d" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,Function,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.util.function.Function", + "int" + ], + "parameterNames": [ + "name", + "builder", + "frame" + ], + "params": [ + "String name", + "Function builder", + "int frame" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nTo add an animation with file names \"walk_1.png\", \"walk_2.png\",\n\"walk_3.png\", you can use the following code:\n\n```java\nsprite.addAnimation(\"walk\", i -> \"walk_\" + i + \".png\", 3);\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "builder: a function that builds the file names for the animation frames", + "frame: the number of frames in the animation. The frame starts from\n 1." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt eine Animation an; builder liefert zu 1..frames jeweils den Bildpfad" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,String,int,int,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int" + ], + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height" + ], + "params": [ + "String name", + "String path", + "int frames", + "int width", + "int height" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nFor an animation sprite sheet, where each frame is of equal width and height,\nyou can use this method to add an animation by specifying the path to the\nsprite sheet, the number of frames, and the dimensions of each frame.\nFor example, for a four-frame animation arranged in a single row, each frame\nbeing 64x64 pixels, you can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64);\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "path: the path to the animation frames", + "frames: the number of frames in the animation", + "width: the width of each frame", + "height: the height of each frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zerlegt ein Bild in gleich große Einzelbilder und legt daraus eine Animation an" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,String,int,int,int,int)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int" + ], + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height", + "row" + ], + "params": [ + "String name", + "String path", + "int frames", + "int width", + "int height", + "int row" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nIf the animation frames are arranged in rows in a sprite sheet, you can use\nthis method to specify which row to use for the animation.\n\nFor example, for a four-frame animation arranged in a single row, you want the second, each frame\nbeing 64x64 pixels, you can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64, 2);\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "path: the path to the animation frames", + "frames: the number of frames in the animation", + "width: the width of each frame", + "height: the height of each frame", + "row: the row of the animation frames" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wie addAnimation(name, imagePath, frames, width, height), beginnt aber in der angegebenen Zeile" + } + } + }, + { + "id": "AnimatedSprite/addAnimation(String,String,int,int,int,int,boolean)", + "memberId": "AnimatedSprite/addAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "addAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int", + "boolean" + ], + "parameterNames": [ + "name", + "path", + "frames", + "width", + "height", + "column", + "useColumns" + ], + "params": [ + "String name", + "String path", + "int frames", + "int width", + "int height", + "int column", + "boolean useColumns" + ], + "summary": "Adds an animation to the sprite.", + "description": "Adds an animation to the sprite.\n\nIf the animation frames are arranged in either rows or columns in a sprite\nsheet, you can use this method to specify which column or row to use for the\nanimation. Take four frame animation arranged in a single column. Each frame is\n64x64 pixels. You can add the animation using the following code:\n\n```java\nsprite.addAnimation(\"walk\", \"assets/walk.png\", 4, 64, 64, 1, true); // use column 1\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation", + "path: the path to the animation frames", + "frames: the number of frames in the animation", + "width: the width of each frame", + "height: the height of each frame", + "column: the column of the animation frames", + "useColumns: whether to use columns or rows" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/addAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt eine Animation aus einer Spalte des Bildes an" + } + } + }, + { + "id": "AnimatedSprite/clone()", + "memberId": "AnimatedSprite/clone", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "clone", + "static": false, + "returnType": "AnimatedSprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a clone of this sprite with the same animations, playing the same\none, and puts it on the stage right behind this sprite. See\n[Sprite.clone()](../Sprite/clone).", + "description": "Creates a clone of this sprite with the same animations, playing the same\none, and puts it on the stage right behind this sprite. See\n[Sprite.clone()](../Sprite/clone).", + "scratchblock": null, + "paramDocs": [], + "returns": "the clone, of the same class as this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/clone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie dieser Figur" + } + } + }, + { + "id": "AnimatedSprite/constructor()", + "memberId": "AnimatedSprite/constructor", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "constructor", + "static": false, + "returnType": "AnimatedSprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.", + "description": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.\n\nExample usage:\n\n```java\nAnimatedSprite sprite = new AnimatedSprite();\nsprite.addCostume(\"idle\", \"assets/idle.png\");\nsprite.addAnimation(\"walk\", \"assets/walk_%d.png\", 4);\nsprite.playAnimation(\"walk\");\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine neue animierte Figur" + } + } + }, + { + "id": "AnimatedSprite/constructor(AnimatedSprite)", + "memberId": "AnimatedSprite/constructor", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "constructor", + "static": false, + "returnType": "AnimatedSprite", + "parameterTypes": [ + "org.openpatch.scratch.AnimatedSprite" + ], + "parameterNames": [ + "animatedSprite" + ], + "params": [ + "AnimatedSprite animatedSprite" + ], + "summary": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.", + "description": "The AnimatedSprite class represents a sprite that can play animations. It\nextends the Sprite\nclass and provides methods to add animations, play animations, set the\ninterval between animation\nframes, and reset the animation.\n\nExample usage:\n\n```java\nAnimatedSprite sprite = new AnimatedSprite();\nsprite.addCostume(\"idle\", \"assets/idle.png\");\nsprite.addAnimation(\"walk\", \"assets/walk_%d.png\", 4);\nsprite.playAnimation(\"walk\");\n```", + "scratchblock": null, + "paramDocs": [ + "animatedSprite: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der angegebenen animierten Figur" + } + } + }, + { + "id": "AnimatedSprite/getAnimationFrame()", + "memberId": "AnimatedSprite/getAnimationFrame", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "getAnimationFrame", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the current animation frame.", + "description": "Gets the current animation frame.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current animation frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/getAnimationFrame", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer des aktuellen Einzelbildes zurück" + } + } + }, + { + "id": "AnimatedSprite/getAnimationInterval()", + "memberId": "AnimatedSprite/getAnimationInterval", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "getAnimationInterval", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the interval between animation frames.", + "description": "Gets the interval between animation frames.", + "scratchblock": null, + "paramDocs": [], + "returns": "the interval between animation frames", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/getAnimationInterval", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt zurück, wie viele Millisekunden ein Einzelbild angezeigt wird" + } + } + }, + { + "id": "AnimatedSprite/isAnimationPlayed()", + "memberId": "AnimatedSprite/isAnimationPlayed", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "isAnimationPlayed", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the animation is played.", + "description": "Checks if the animation is played.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the animation is played, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/isAnimationPlayed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine mit once gestartete Animation durchgelaufen ist" + } + } + }, + { + "id": "AnimatedSprite/playAnimation(String)", + "memberId": "AnimatedSprite/playAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "playAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Plays the animation with the specified name.", + "description": "Plays the animation with the specified name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation to play" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/playAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt die Animation in einer Schleife ab" + } + } + }, + { + "id": "AnimatedSprite/playAnimation(String,boolean)", + "memberId": "AnimatedSprite/playAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "playAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "boolean" + ], + "parameterNames": [ + "name", + "once" + ], + "params": [ + "String name", + "boolean once" + ], + "summary": "Plays the animation with the specified name.", + "description": "Plays the animation with the specified name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the animation to play", + "once: whether to play the animation once" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/playAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt die Animation ab; bei once == true nur ein einziges Mal" + } + } + }, + { + "id": "AnimatedSprite/resetAnimation()", + "memberId": "AnimatedSprite/resetAnimation", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "resetAnimation", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Resets the animation. The animation will start from the first frame.", + "description": "Resets the animation. The animation will start from the first frame.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/resetAnimation", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Animation auf das erste Einzelbild zurück" + } + } + }, + { + "id": "AnimatedSprite/setAnimationFrame(int)", + "memberId": "AnimatedSprite/setAnimationFrame", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "setAnimationFrame", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "frame" + ], + "params": [ + "int frame" + ], + "summary": "Sets the current animation frame.", + "description": "Sets the current animation frame.", + "scratchblock": null, + "paramDocs": [ + "frame: the current animation frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/setAnimationFrame", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Springt zum Einzelbild mit der angegebenen Nummer" + } + } + }, + { + "id": "AnimatedSprite/setAnimationInterval(int)", + "memberId": "AnimatedSprite/setAnimationInterval", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "setAnimationInterval", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "interval" + ], + "params": [ + "int interval" + ], + "summary": "Sets the interval between animation frames.", + "description": "Sets the interval between animation frames.", + "scratchblock": null, + "paramDocs": [ + "interval: the interval between animation frames" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/setAnimationInterval", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie viele Millisekunden ein Einzelbild angezeigt wird" + } + } + }, + { + "id": "AnimatedSprite/toString()", + "memberId": "AnimatedSprite/toString", + "owner": "org.openpatch.scratch.AnimatedSprite", + "className": "AnimatedSprite", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns which animation is playing and how far into it.", + "description": "Returns which animation is playing and how far into it.", + "scratchblock": null, + "paramDocs": [], + "returns": "the sprite as a text", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/AnimatedSprite/toString", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Figur als Zeichenkette zurück" + } + } + }, + { + "id": "Circle/constructor(double,double,double)", + "memberId": "Circle/constructor", + "owner": "org.openpatch.scratch.Circle", + "className": "Circle", + "methodName": "constructor", + "static": false, + "returnType": "Circle", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "radius" + ], + "params": [ + "double x", + "double y", + "double radius" + ], + "summary": "Creates a circle with no specified position or size.", + "description": "Creates a circle with no specified position or size.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate of the circle's center", + "y: the y-coordinate of the circle's center", + "radius: the radius of the circle" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Circle/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Kreis um (x, y) mit dem angegebenen Radius" + } + } + }, + { + "id": "Clock/getDay()", + "memberId": "Clock/getDay", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getDay", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current day of the month, from 1 to 31.", + "description": "Returns the current day of the month, from 1 to 31.", + "scratchblock": "(current [date v])", + "paramDocs": [], + "returns": "the day of the month", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getDay", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den aktuellen Tag im Monat zurück" + } + } + }, + { + "id": "Clock/getDayOfWeek()", + "memberId": "Clock/getDayOfWeek", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getDayOfWeek", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current day of the week, from 1 for Monday to 7 for Sunday.", + "description": "Returns the current day of the week, from 1 for Monday to 7 for Sunday.", + "scratchblock": "(current [day of week v])", + "paramDocs": [], + "returns": "the day of the week", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getDayOfWeek", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Wochentag zurück (1 = Montag, 7 = Sonntag)" + } + } + }, + { + "id": "Clock/getDaysSince2000()", + "memberId": "Clock/getDaysSince2000", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getDaysSince2000", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the number of days that have passed since the first of January\n2000.", + "description": "Returns the number of days that have passed since the first of January\n2000.", + "scratchblock": "(days since 2000)", + "paramDocs": [], + "returns": "the days since 2000", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getDaysSince2000", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Anzahl der Tage seit dem 1. Januar 2000 zurück" + } + } + }, + { + "id": "Clock/getHour()", + "memberId": "Clock/getHour", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getHour", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current hour, from 0 to 23.", + "description": "Returns the current hour, from 0 to 23.", + "scratchblock": "(current [hour v])", + "paramDocs": [], + "returns": "the hour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getHour", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Stunde zurück" + } + } + }, + { + "id": "Clock/getMillisecond()", + "memberId": "Clock/getMillisecond", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getMillisecond", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the milliseconds of the current second, from 0 to 999.", + "description": "Returns the milliseconds of the current second, from 0 to 999.", + "scratchblock": null, + "paramDocs": [], + "returns": "the millisecond", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getMillisecond", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Millisekunde zurück" + } + } + }, + { + "id": "Clock/getMinute()", + "memberId": "Clock/getMinute", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getMinute", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current minute, from 0 to 59.", + "description": "Returns the current minute, from 0 to 59.", + "scratchblock": "(current [minute v])", + "paramDocs": [], + "returns": "the minute", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getMinute", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Minute zurück" + } + } + }, + { + "id": "Clock/getMonth()", + "memberId": "Clock/getMonth", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getMonth", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current month, from 1 for January to 12 for December.", + "description": "Returns the current month, from 1 for January to 12 for December.", + "scratchblock": "(current [month v])", + "paramDocs": [], + "returns": "the month", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getMonth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den aktuellen Monat zurück (1 = Januar)" + } + } + }, + { + "id": "Clock/getSecond()", + "memberId": "Clock/getSecond", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getSecond", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current second, from 0 to 59.", + "description": "Returns the current second, from 0 to 59.", + "scratchblock": "(current [second v])", + "paramDocs": [], + "returns": "the second", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getSecond", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Sekunde zurück" + } + } + }, + { + "id": "Clock/getYear()", + "memberId": "Clock/getYear", + "owner": "org.openpatch.scratch.Clock", + "className": "Clock", + "methodName": "getYear", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current year, for example 2026.", + "description": "Returns the current year, for example 2026.", + "scratchblock": "(current [year v])", + "paramDocs": [], + "returns": "the year", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Clock/getYear", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das aktuelle Jahr zurück" + } + } + }, + { + "id": "Color/changeColor(double)", + "memberId": "Color/changeColor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "changeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Changes the color accordining to a hue value, which is added to the current hue value. When the\nresulting value is greater than 255 it will be reset. For example: 285 => 30.", + "description": "Changes the color accordining to a hue value, which is added to the current hue value. When the\nresulting value is greater than 255 it will be reset. For example: 285 => 30.", + "scratchblock": null, + "paramDocs": [ + "h: A hue value. Could be any positive or negative number." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/changeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton um den angegebenen Wert" + } + } + }, + { + "id": "Color/constructor()", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Color object with default values.", + "description": "Constructs a new Color object with default values.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt die Farbe Weiß" + } + } + }, + { + "id": "Color/constructor(String)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "hexCode" + ], + "params": [ + "String hexCode" + ], + "summary": "The Color class represents a color in the Scratch environment. It supports various\nfunctionalities such as setting color values in the RGB and HSB spectrum, changing the color\nbased on a hue value, and converting between RGB and HSB color codes.", + "description": "The Color class represents a color in the Scratch environment. It supports various\nfunctionalities such as setting color values in the RGB and HSB spectrum, changing the color\nbased on a hue value, and converting between RGB and HSB color codes.", + "scratchblock": null, + "paramDocs": [ + "hexCode: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Farbe aus einem Hex-Code, z.B. #ff0000" + } + } + }, + { + "id": "Color/constructor(double)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Constructs a new Color object with the specified hue value.", + "description": "Constructs a new Color object with the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Farbe mit dem angegebenen Farbton (0 bis 255)" + } + } + }, + { + "id": "Color/constructor(double,double,double)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Constructs a new Color object with the specified rgb values.", + "description": "Constructs a new Color object with the specified rgb values.", + "scratchblock": null, + "paramDocs": [ + "r: the red value", + "g: the green value", + "b: the blue value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Farbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Color/constructor(Color)", + "memberId": "Color/constructor", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "constructor", + "static": false, + "returnType": "Color", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Copies the received ScratchColor object.", + "description": "Copies the received ScratchColor object.", + "scratchblock": null, + "paramDocs": [ + "c: ScratchColor object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der übergebenen Farbe" + } + } + }, + { + "id": "Color/equals(Object)", + "memberId": "Color/equals", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "equals", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.Object" + ], + "parameterNames": [ + "other" + ], + "params": [ + "Object other" + ], + "summary": "Two colours are the same when they are the same colour.", + "description": "Two colours are the same when they are the same colour.", + "scratchblock": null, + "paramDocs": [ + "other: the object to compare with" + ], + "returns": "whether both are colours with the same red, green and blue", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/equals", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob es dieselbe Farbe ist" + } + } + }, + { + "id": "Color/get()", + "memberId": "Color/get", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "get", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the color value as a hex code. This is useful for comparing pixels.", + "description": "Get the color value as a hex code. This is useful for comparing pixels.", + "scratchblock": null, + "paramDocs": [], + "returns": "hex code", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/get", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Farbe als ganze Zahl zurück" + } + } + }, + { + "id": "Color/getBlue()", + "memberId": "Color/getBlue", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getBlue", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the blue value.", + "description": "Get the blue value.", + "scratchblock": null, + "paramDocs": [], + "returns": "blue value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getBlue", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Blauanteil zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getGreen()", + "memberId": "Color/getGreen", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getGreen", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the green value.", + "description": "Get the green value.", + "scratchblock": null, + "paramDocs": [], + "returns": "green value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getGreen", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Grünanteil zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getH()", + "memberId": "Color/getH", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getH", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the hue value.", + "description": "Get the hue value.", + "scratchblock": null, + "paramDocs": [], + "returns": "hue value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getH", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Farbton zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getHSB()", + "memberId": "Color/getHSB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getHSB", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the color value on the HSB spectrum.", + "description": "Get the color value on the HSB spectrum.", + "scratchblock": null, + "paramDocs": [], + "returns": "hue value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getHSB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Farbton zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getL()", + "memberId": "Color/getL", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getL", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the luminosity value.", + "description": "Get the luminosity value.", + "scratchblock": null, + "paramDocs": [], + "returns": "luminosity value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getL", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Helligkeit zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getRed()", + "memberId": "Color/getRed", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getRed", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the red value.", + "description": "Get the red value.", + "scratchblock": null, + "paramDocs": [], + "returns": "red value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getRed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rotanteil zurück (0 bis 255)" + } + } + }, + { + "id": "Color/getS()", + "memberId": "Color/getS", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "getS", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the saturation value.", + "description": "Get the saturation value.", + "scratchblock": null, + "paramDocs": [], + "returns": "saturation value [0...255]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/getS", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Sättigung zurück (0 bis 255)" + } + } + }, + { + "id": "Color/hashCode()", + "memberId": "Color/hashCode", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "hashCode", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "", + "description": "", + "scratchblock": null, + "paramDocs": [], + "returns": "a hash consistent with [equals(Object)](equals)", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/hashCode", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Color/setHSB(double)", + "memberId": "Color/setHSB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "setHSB", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Setting the color value after the HSB spectrum. Saturation and Luminosity are fixed at 255.", + "description": "Setting the color value after the HSB spectrum. Saturation and Luminosity are fixed at 255.", + "scratchblock": null, + "paramDocs": [ + "h: A hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/setHSB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Farbton (0 bis 255)" + } + } + }, + { + "id": "Color/setHSB(double,double,double)", + "memberId": "Color/setHSB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "setHSB", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "h", + "s", + "l" + ], + "params": [ + "double h", + "double s", + "double l" + ], + "summary": "Setting the color value after the HSB spectrum.", + "description": "Setting the color value after the HSB spectrum.", + "scratchblock": null, + "paramDocs": [ + "h: A hue value [0...255]", + "s: A saturation value [0...255]", + "l: A luminosity value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/setHSB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt Farbton, Sättigung und Helligkeit (jeweils 0 bis 255)" + } + } + }, + { + "id": "Color/setRGB(double,double,double)", + "memberId": "Color/setRGB", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "setRGB", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Setting the color value after the RGB spectrum", + "description": "Setting the color value after the RGB spectrum", + "scratchblock": null, + "paramDocs": [ + "r: A red value [0...255]", + "g: A green value [0...255]", + "b: A blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/setRGB", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Color/toString()", + "memberId": "Color/toString", + "owner": "org.openpatch.scratch.Color", + "className": "Color", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The colour written out, so that printing one says something.", + "description": "The colour written out, so that printing one says something.\n\nWithout this a `System.out.println(mySprite.getTint())` printed\n`org.openpatch.scratch.Color@35432107`, which tells you nothing about\nthe colour and is the first thing anyone tries when a tint looks wrong.", + "scratchblock": null, + "paramDocs": [], + "returns": "the colour as `Color[r=255.0, g=128.0, b=0.0]`", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Color/toString", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Farbe als Text aus" + } + } + }, + { + "id": "Ellipse/constructor(double,double,double,double)", + "memberId": "Ellipse/constructor", + "owner": "org.openpatch.scratch.Ellipse", + "className": "Ellipse", + "methodName": "constructor", + "static": false, + "returnType": "Ellipse", + "parameterTypes": [ + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "width", + "height" + ], + "params": [ + "double x", + "double y", + "double width", + "double height" + ], + "summary": "Creates an ellipse with no specified position or size.", + "description": "Creates an ellipse with no specified position or size.", + "scratchblock": null, + "paramDocs": [ + "x: ", + "y: ", + "width: ", + "height: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Ellipse/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Ellipse im angegebenen Rechteck" + } + } + }, + { + "id": "Hitbox/constructor(Shape)", + "memberId": "Hitbox/constructor", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "constructor", + "static": false, + "returnType": "Hitbox", + "parameterTypes": [ + "org.openpatch.scratch.Shape" + ], + "parameterNames": [ + "shape" + ], + "params": [ + "Shape shape" + ], + "summary": "Constructs a hitbox with the specified shape.", + "description": "Constructs a hitbox with the specified shape.", + "scratchblock": null, + "paramDocs": [ + "shape: The shape of the hitbox." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Umriss aus einer Form" + } + } + }, + { + "id": "Hitbox/constructor(double[],double[])", + "memberId": "Hitbox/constructor", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "constructor", + "static": false, + "returnType": "Hitbox", + "parameterTypes": [ + "double[]", + "double[]" + ], + "parameterNames": [ + "xPoints", + "yPoints" + ], + "params": [ + "double[] xPoints", + "double[] yPoints" + ], + "summary": "Constructs a hitbox with the specified x and y points.", + "description": "Constructs a hitbox with the specified x and y points.", + "scratchblock": null, + "paramDocs": [ + "xPoints: The x-coordinates of the points.", + "yPoints: The y-coordinates of the points." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Umriss aus x- und y-Koordinaten" + } + } + }, + { + "id": "Hitbox/contains(double,double)", + "memberId": "Hitbox/contains", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "contains", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Checks if the hitbox contains a point.", + "description": "Checks if the hitbox contains a point.", + "scratchblock": null, + "paramDocs": [ + "x: The x-coordinate of the point.", + "y: The y-coordinate of the point." + ], + "returns": "`true` if the hitbox contains the point, `false`\n otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/contains", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Punkt im Umriss liegt" + } + } + }, + { + "id": "Hitbox/getBounds()", + "memberId": "Hitbox/getBounds", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "getBounds", + "static": false, + "returnType": "Bounds", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the smallest upright rectangle the hitbox fits into.", + "description": "Returns the smallest upright rectangle the hitbox fits into.", + "scratchblock": null, + "paramDocs": [], + "returns": "the bounding box of the hitbox", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/getBounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das umschließende Rechteck zurück" + } + } + }, + { + "id": "Hitbox/getShape()", + "memberId": "Hitbox/getShape", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "getShape", + "static": false, + "returnType": "Shape", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shape of the hitbox.", + "description": "Returns the shape of the hitbox.", + "scratchblock": null, + "paramDocs": [], + "returns": "The shape of the hitbox.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/getShape", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Umriss als Form zurück" + } + } + }, + { + "id": "Hitbox/intersects(Hitbox)", + "memberId": "Hitbox/intersects", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "intersects", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Hitbox" + ], + "parameterNames": [ + "hitbox" + ], + "params": [ + "Hitbox hitbox" + ], + "summary": "Checks if the hitbox intersects with another hitbox.", + "description": "Checks if the hitbox intersects with another hitbox.", + "scratchblock": null, + "paramDocs": [ + "hitbox: The hitbox to check for intersection." + ], + "returns": "`true` if the hitboxes intersect, `false` otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/intersects", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich beide Umrisse überlappen" + } + } + }, + { + "id": "Hitbox/translateAndRotateAndResize(double,double,double,double,double,double)", + "memberId": "Hitbox/translateAndRotateAndResize", + "owner": "org.openpatch.scratch.Hitbox", + "className": "Hitbox", + "methodName": "translateAndRotateAndResize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "degrees", + "originX", + "originY", + "translateX", + "translateY", + "size" + ], + "params": [ + "double degrees", + "double originX", + "double originY", + "double translateX", + "double translateY", + "double size" + ], + "summary": "Transforms the shape by scaling, translating, and rotating it.", + "description": "Transforms the shape by scaling, translating, and rotating it.", + "scratchblock": null, + "paramDocs": [ + "degrees: The angle in degrees to rotate the shape.", + "originX: The x-coordinate of the rotation origin.", + "originY: The y-coordinate of the rotation origin.", + "translateX: The x-coordinate to translate the shape.", + "translateY: The y-coordinate to translate the shape.", + "size: The size to scale the shape, where 100.0 represents the\n original size." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Hitbox/translateAndRotateAndResize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt, dreht und skaliert den Umriss" + } + } + }, + { + "id": "HtmlColor/constructor()", + "memberId": "HtmlColor/constructor", + "owner": "org.openpatch.scratch.HtmlColor", + "className": "HtmlColor", + "methodName": "constructor", + "static": false, + "returnType": "HtmlColor", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Provides predefined HTML colors as Color objects.", + "description": "Provides predefined HTML colors as Color objects.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/HtmlColor/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige der benannten Farben zurück" + } + } + }, + { + "id": "HtmlColor/getRandom()", + "memberId": "HtmlColor/getRandom", + "owner": "org.openpatch.scratch.HtmlColor", + "className": "HtmlColor", + "methodName": "getRandom", + "static": true, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random HTML color.", + "description": "Returns a random HTML color.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random Color from the predefined HTML colors", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/HtmlColor/getRandom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/absOf(int)", + "memberId": "Operators/absOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "absOf", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "x" + ], + "params": [ + "int x" + ], + "summary": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "description": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "scratchblock": null, + "paramDocs": [ + "x: a value" + ], + "returns": "the absolute value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/absOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Betrag zurück" + } + } + }, + { + "id": "Operators/absOf(double)", + "memberId": "Operators/absOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "absOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "description": "\"abs\" is an abbreviation for \"absolute value.\" The absolute value of a number is its distance\nfrom 0. A simpler way to describe an absolute value is that it makes any number positive. If it\nis negative, it becomes positive, and if it is positive, it stays the same.", + "scratchblock": "([abs v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the absolute value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/absOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Betrag zurück" + } + } + }, + { + "id": "Operators/acosOf(double)", + "memberId": "Operators/acosOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "acosOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"acos\" is the abbreviation for \"arccosine\" and is also sometimes written as cos\\u22121. When given\nthe ratio (in decimal form) of the length of the adjacent side and hypotenuse of a right\ntriangle, it finds the angle.", + "description": "\"acos\" is the abbreviation for \"arccosine\" and is also sometimes written as cos\\u22121. When given\nthe ratio (in decimal form) of the length of the adjacent side and hypotenuse of a right\ntriangle, it finds the angle.", + "scratchblock": "([acos v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the angle of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/acosOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Arkuskosinus von x, Ergebnis in Grad" + } + } + }, + { + "id": "Operators/asinOf(double)", + "memberId": "Operators/asinOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "asinOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"asin\" is the abbreviation for \"arcsine\" and is also sometimes written as sin\\u22121. When given the\nratio (in decimal form) of the length of the opposite side and hypotenuse of a right triangle,\nit finds the angle.", + "description": "\"asin\" is the abbreviation for \"arcsine\" and is also sometimes written as sin\\u22121. When given the\nratio (in decimal form) of the length of the opposite side and hypotenuse of a right triangle,\nit finds the angle.", + "scratchblock": "([asin v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the angle of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/asinOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Arkussinus von x, Ergebnis in Grad" + } + } + }, + { + "id": "Operators/atanOf(double)", + "memberId": "Operators/atanOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "atanOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"atan\" is the abbreviation for \"arctangent\" and is also sometimes written as tan\\u22121. When given\nthe ratio (in decimal form) of the length of the opposite side and adjacent side of a right\ntriangle, it finds the angle.", + "description": "\"atan\" is the abbreviation for \"arctangent\" and is also sometimes written as tan\\u22121. When given\nthe ratio (in decimal form) of the length of the opposite side and adjacent side of a right\ntriangle, it finds the angle.", + "scratchblock": "([atan v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the angle of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/atanOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Arkustangens von x, Ergebnis in Grad" + } + } + }, + { + "id": "Operators/ceilingOf(double)", + "memberId": "Operators/ceilingOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "ceilingOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "This always rounds the number up to the least whole number greater than or equal to the number.\nFor example, ceiling(3.14) = 4 and ceiling(7.68) = 8.", + "description": "This always rounds the number up to the least whole number greater than or equal to the number.\nFor example, ceiling(3.14) = 4 and ceiling(7.68) = 8.", + "scratchblock": "([ceiling v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the ceiling of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/ceilingOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet auf" + } + } + }, + { + "id": "Operators/constrain(double,double,double)", + "memberId": "Operators/constrain", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "constrain", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "amt", + "low", + "high" + ], + "params": [ + "double amt", + "double low", + "double high" + ], + "summary": "Constrains a value to not exceed a maximum and minimum value.", + "description": "Constrains a value to not exceed a maximum and minimum value.", + "scratchblock": null, + "paramDocs": [ + "amt: the value to constrain", + "low: minimum limit", + "high: maximum limit" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/constrain", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Begrenzt den Wert auf den Bereich zwischen low und high" + } + } + }, + { + "id": "Operators/constrain(int,int,int)", + "memberId": "Operators/constrain", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "constrain", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "amt", + "low", + "high" + ], + "params": [ + "int amt", + "int low", + "int high" + ], + "summary": "Constrains a value to not exceed a maximum and minimum value.", + "description": "Constrains a value to not exceed a maximum and minimum value.", + "scratchblock": null, + "paramDocs": [ + "amt: the value to constrain", + "low: minimum limit", + "high: maximum limit" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/constrain", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Begrenzt den Wert auf den Bereich zwischen low und high" + } + } + }, + { + "id": "Operators/cosOf(double)", + "memberId": "Operators/cosOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "cosOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"cos\" is the abbreviation for \"cosine.\" The cosine of an angle is the ratio between the length\nof the side adjacent (next to) it on the triangle and the length of the hypotenuse. In the\npicture above, the cosine of angle A is equal to side \"adjacent\" divided by side \"hypotenuse\".", + "description": "\"cos\" is the abbreviation for \"cosine.\" The cosine of an angle is the ratio between the length\nof the side adjacent (next to) it on the triangle and the length of the hypotenuse. In the\npicture above, the cosine of angle A is equal to side \"adjacent\" divided by side \"hypotenuse\".", + "scratchblock": "([cos v] of (x))", + "paramDocs": [ + "x: an angle between [0, ..., 360]" + ], + "returns": "the cos of the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/cosOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Kosinus des Winkels x, x in Grad" + } + } + }, + { + "id": "Operators/eToThePowerOf(double)", + "memberId": "Operators/eToThePowerOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "eToThePowerOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"e\" is an abbreviation for \"Euler's number\", which is about 2.718. With the e^ function, e is\nmultiplied by itself the value number of times. For example, if the value is 3, the answer\nwould be e3, or e×e×e, which is about 20.086.", + "description": "\"e\" is an abbreviation for \"Euler's number\", which is about 2.718. With the e^ function, e is\nmultiplied by itself the value number of times. For example, if the value is 3, the answer\nwould be e3, or e×e×e, which is about 20.086.", + "scratchblock": "([e ^ v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "e to the power of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/eToThePowerOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt e hoch x zurück" + } + } + }, + { + "id": "Operators/floorOf(double)", + "memberId": "Operators/floorOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "floorOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "This always rounds the number down to the greatest whole number less than or equal to the\nnumber. For example, floor(1.73) = 1 and floor(-2.74) = -3.", + "description": "This always rounds the number down to the greatest whole number less than or equal to the\nnumber. For example, floor(1.73) = 1 and floor(-2.74) = -3.", + "scratchblock": "([floor v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the floor of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/floorOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet ab" + } + } + }, + { + "id": "Operators/lerp(double,double,double)", + "memberId": "Operators/lerp", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "lerp", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "start", + "stop", + "amt" + ], + "params": [ + "double start", + "double stop", + "double amt" + ], + "summary": "Calculates a number between two numbers at a specific increment. The amt parameter is\nthe amount to interpolate between the two values where 0.0 equal to the first point, 0.1 is\nvery near the first point, 0.5 is half-way in between, etc. The lerp function is convenient for\ncreating motion along a straight path and for drawing dotted lines.", + "description": "Calculates a number between two numbers at a specific increment. The amt parameter is\nthe amount to interpolate between the two values where 0.0 equal to the first point, 0.1 is\nvery near the first point, 0.5 is half-way in between, etc. The lerp function is convenient for\ncreating motion along a straight path and for drawing dotted lines.", + "scratchblock": null, + "paramDocs": [ + "start: first value", + "stop: second value", + "amt: double between 0.0 and 1.0" + ], + "returns": "the interpolated value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/lerp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Interpoliert linear zwischen start und stop; amt liegt zwischen 0 und 1" + } + } + }, + { + "id": "Operators/lnOf(double)", + "memberId": "Operators/lnOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "lnOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "ln is \"natural log.\" It figures out how many times e would have to be multiplied by itself to\nget the value. For example, if the value was 148.4, the answer would be about 5 because e5\n(e×e×e×e×e) is around 148.4.", + "description": "ln is \"natural log.\" It figures out how many times e would have to be multiplied by itself to\nget the value. For example, if the value was 148.4, the answer would be about 5 because e5\n(e×e×e×e×e) is around 148.4.", + "scratchblock": "([ln v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the ln of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/lnOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Natürlicher Logarithmus von x" + } + } + }, + { + "id": "Operators/logOf(double)", + "memberId": "Operators/logOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "logOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"Log\" is short for \"logarithm.\" The log function figures out how many times 10 must be\nmultiplied by itself to get the value. For example, if the value is 100, the answer is 2\nbecause 10×10 is 100.", + "description": "\"Log\" is short for \"logarithm.\" The log function figures out how many times 10 must be\nmultiplied by itself to get the value. For example, if the value is 100, the answer is 2\nbecause 10×10 is 100.", + "scratchblock": "([log v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the log to base 10 of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/logOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zehnerlogarithmus von x" + } + } + }, + { + "id": "Operators/map(double,double,double,double,double)", + "memberId": "Operators/map", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "map", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "value", + "start1", + "stop1", + "start2", + "stop2" + ], + "params": [ + "double value", + "double start1", + "double stop1", + "double start2", + "double stop2" + ], + "summary": "Re-maps a number from one range to another.
\n
\nIn the first example above, the number 25 is converted from a value in the range of 0 to 100\ninto a value that ranges from the left edge of the window (0) to the right edge (width).
\n
\nAs shown in the second example, numbers outside the range are not clamped to the minimum and\nmaximum parameters values, because out-of-range values are often intentional and useful.", + "description": "Re-maps a number from one range to another.
\n
\nIn the first example above, the number 25 is converted from a value in the range of 0 to 100\ninto a value that ranges from the left edge of the window (0) to the right edge (width).
\n
\nAs shown in the second example, numbers outside the range are not clamped to the minimum and\nmaximum parameters values, because out-of-range values are often intentional and useful.", + "scratchblock": null, + "paramDocs": [ + "value: the incoming value to be converted", + "start1: lower bound of the value's current range", + "stop1: upper bound of the value's current range", + "start2: lower bound of the value's target range", + "stop2: upper bound of the value's target range" + ], + "returns": "the value mapped to the new range", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/map", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rechnet einen Wert aus dem Bereich start1..stop1 in den Bereich start2..stop2 um" + } + } + }, + { + "id": "Operators/max(double[])", + "memberId": "Operators/max", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "max", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "double[] v" + ], + "summary": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the maximum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/max", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/max(int[])", + "memberId": "Operators/max", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "max", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "int[] v" + ], + "summary": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the largest value in a sequence of numbers, and then returns that value.\nmax() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the maximum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/max", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/min(double[])", + "memberId": "Operators/min", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "min", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "double[] v" + ], + "summary": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the minimum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/min", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/min(int[])", + "memberId": "Operators/min", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "min", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int[]" + ], + "parameterNames": [ + "v" + ], + "params": [ + "int[] v" + ], + "summary": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "description": "Determines the smallest value in a sequence of numbers, and then returns that value.\nmin() accepts either two or three double or int values as parameters, or\nan array of any length.", + "scratchblock": null, + "paramDocs": [ + "v: values" + ], + "returns": "the minimum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/min", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Operators/mod(double,double)", + "memberId": "Operators/mod", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "mod", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second.", + "description": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second.\n\nThe answer takes the sign of the second input, as the Scratch block does, so\n`mod(-7, 3)` is 2 rather than the -1 Java's own `%` would give.\nThat is what makes it useful for wrapping a value into a range: a sprite\nwhose x has gone negative still lands somewhere sensible.", + "scratchblock": "((x) mod (y))", + "paramDocs": [ + "x: first value", + "y: second value" + ], + "returns": "what is left of the first value after dividing by the second", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/mod", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rest der Division x geteilt durch y zurück" + } + } + }, + { + "id": "Operators/mod(int,int)", + "memberId": "Operators/mod", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "mod", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "int x", + "int y" + ], + "summary": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second, with the sign of the second input,\nas the Scratch block does.", + "description": "\"mod\" is an abbreviation for \"modulo\". Modulo returns what is left over when\nthe first input is divided by the second, with the sign of the second input,\nas the Scratch block does.", + "scratchblock": null, + "paramDocs": [ + "x: first value", + "y: second value" + ], + "returns": "what is left of the first value after dividing by the second", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/mod", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rest der Division x geteilt durch y zurück" + } + } + }, + { + "id": "Operators/round(double)", + "memberId": "Operators/round", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "round", + "static": true, + "returnType": "int", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "The standard rules of rounding are followed; decimals that are .5 or higher are rounded up,\nwhereas decimals less than .5 are rounded down.", + "description": "The standard rules of rounding are followed; decimals that are .5 or higher are rounded up,\nwhereas decimals less than .5 are rounded down.", + "scratchblock": "(round (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the rounded value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/round", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet auf eine ganze Zahl" + } + } + }, + { + "id": "Operators/round(double,int)", + "memberId": "Operators/round", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "round", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "int" + ], + "parameterNames": [ + "x", + "precision" + ], + "params": [ + "double x", + "int precision" + ], + "summary": "Rounds a number to a specified number of decimal places.", + "description": "Rounds a number to a specified number of decimal places.", + "scratchblock": null, + "paramDocs": [ + "x: a value", + "precision: the number of decimal places to round to" + ], + "returns": "the rounded value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/round", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Rundet auf die angegebene Anzahl Nachkommastellen" + } + } + }, + { + "id": "Operators/sinOf(double)", + "memberId": "Operators/sinOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "sinOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"sin\" is an abbreviation for \"sine.\" The sine of an angle is the ratio between the length of\nthe side that is opposite (across) the triangle from it and the length of the hypotenuse (the\nside that is across from the right angle). In the picture above, the sine of angle A is equal\nto side \"opposite\" divided by side \"hypotenuse\".", + "description": "\"sin\" is an abbreviation for \"sine.\" The sine of an angle is the ratio between the length of\nthe side that is opposite (across) the triangle from it and the length of the hypotenuse (the\nside that is across from the right angle). In the picture above, the sine of angle A is equal\nto side \"opposite\" divided by side \"hypotenuse\".", + "scratchblock": "([sin v] of (x))", + "paramDocs": [ + "x: an angle between [0,...,360]" + ], + "returns": "the sin of the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/sinOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Sinus des Winkels x, x in Grad" + } + } + }, + { + "id": "Operators/sqrtOf(double)", + "memberId": "Operators/sqrtOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "sqrtOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"sqrt\" is an abbreviation for \"square root.\" A number that is squared is multiplied by itself.\nFor example, when 2 is squared, the answer is 2×2, which is 4. When a number is square rooted,\nthe answer is the number that was squared to get it. So, the square root of 4 is 2. Similarly,\nthe square root of 2 is about 1.414213562373095 because 1.4142135623730952\n(1.414213562373095\\u202f×\\u202f1.414213562373095) is close to 2.", + "description": "\"sqrt\" is an abbreviation for \"square root.\" A number that is squared is multiplied by itself.\nFor example, when 2 is squared, the answer is 2×2, which is 4. When a number is square rooted,\nthe answer is the number that was squared to get it. So, the square root of 4 is 2. Similarly,\nthe square root of 2 is about 1.414213562373095 because 1.4142135623730952\n(1.414213562373095\\u202f×\\u202f1.414213562373095) is close to 2.", + "scratchblock": "([sqrt v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "the square root of the value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/sqrtOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Quadratwurzel zurück" + } + } + }, + { + "id": "Operators/tanOf(double)", + "memberId": "Operators/tanOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "tanOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "\"tan\" is the abbreviation for \"tangent.\" The tangent of an angle is the ratio between the\nlength of the side adjacent to it and the side opposite of it. In the picture above, the\ntangent of angle A is equal to side \"opposite\" divided by side \"adjacent\".", + "description": "\"tan\" is the abbreviation for \"tangent.\" The tangent of an angle is the ratio between the\nlength of the side adjacent to it and the side opposite of it. In the picture above, the\ntangent of angle A is equal to side \"opposite\" divided by side \"adjacent\".", + "scratchblock": "([tan v] of (x))", + "paramDocs": [ + "x: an angle between [0, ..., 360]" + ], + "returns": "the tan of the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/tanOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Tangens des Winkels x, x in Grad" + } + } + }, + { + "id": "Operators/tenToThePowerOf(double)", + "memberId": "Operators/tenToThePowerOf", + "owner": "org.openpatch.scratch.Operators", + "className": "Operators", + "methodName": "tenToThePowerOf", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "The 10^ function multiplies 10 times itself the value number of times. For example, if the\nvalue was 6, the answer would be 106 (that is 10×10×10×10×10×10), which is 1,000,000.", + "description": "The 10^ function multiplies 10 times itself the value number of times. For example, if the\nvalue was 6, the answer would be 106 (that is 10×10×10×10×10×10), which is 1,000,000.", + "scratchblock": "([10 ^ v] of (x))", + "paramDocs": [ + "x: a value" + ], + "returns": "10 to the power of that value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Operators/tenToThePowerOf", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt 10 hoch x zurück" + } + } + }, + { + "id": "Pen/changeColor(double)", + "memberId": "Pen/changeColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "changeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "c" + ], + "params": [ + "double c" + ], + "summary": "Change color via a hue value, which is added to the current hue value", + "description": "Change color via a hue value, which is added to the current hue value", + "scratchblock": "change pen [color v] by (c)", + "paramDocs": [ + "c: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/changeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton des Stifts um den angegebenen Wert" + } + } + }, + { + "id": "Pen/changeSize(double)", + "memberId": "Pen/changeSize", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "changeSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "size" + ], + "params": [ + "double size" + ], + "summary": "Change the size of the pen", + "description": "Change the size of the pen", + "scratchblock": "change pen size by (size)", + "paramDocs": [ + "size: size to change" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/changeSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Strichstärke um den angegebenen Wert" + } + } + }, + { + "id": "Pen/changeTransparency(double)", + "memberId": "Pen/changeTransparency", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "changeTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Change the transparency by a step", + "description": "Change the transparency by a step", + "scratchblock": null, + "paramDocs": [ + "step: the step to change the transparency by" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/changeTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Deckkraft um den angegebenen Wert" + } + } + }, + { + "id": "Pen/constructor()", + "memberId": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "constructor", + "static": false, + "returnType": "Pen", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Pen object.", + "description": "Constructs a new Pen object.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen neuen Stift" + } + } + }, + { + "id": "Pen/constructor(Sprite)", + "memberId": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "constructor", + "static": false, + "returnType": "Pen", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Constructs a new Pen object associated with the given Sprite.", + "description": "Constructs a new Pen object associated with the given Sprite.", + "scratchblock": null, + "paramDocs": [ + "s: the Sprite object to associate with this Pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Senkt den Stift ab, so dass er beim Bewegen zeichnet" + } + } + }, + { + "id": "Pen/constructor(Pen)", + "memberId": "Pen/constructor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "constructor", + "static": false, + "returnType": "Pen", + "parameterTypes": [ + "org.openpatch.scratch.Pen" + ], + "parameterNames": [ + "p" + ], + "params": [ + "Pen p" + ], + "summary": "Copies a Pen object.", + "description": "Copies a Pen object.", + "scratchblock": null, + "paramDocs": [ + "p: Pen object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Pen/down()", + "memberId": "Pen/down", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "down", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Set the pen down.", + "description": "Set the pen down.", + "scratchblock": "pen down", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/down", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Pen/eraseAll()", + "memberId": "Pen/eraseAll", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "eraseAll", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Erases all.", + "description": "Erases all.", + "scratchblock": "erase all", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/eraseAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Löscht alles Gezeichnete" + } + } + }, + { + "id": "Pen/getColor()", + "memberId": "Pen/getColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "getColor", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current color of the pen.", + "description": "Retrieves the current color of the pen.", + "scratchblock": null, + "paramDocs": [], + "returns": "the color of the pen", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/getColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Stiftfarbe zurück" + } + } + }, + { + "id": "Pen/getSize()", + "memberId": "Pen/getSize", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "getSize", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size of the pen", + "description": "Returns the size of the pen", + "scratchblock": null, + "paramDocs": [], + "returns": "the size of the pen", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/getSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Strichstärke zurück" + } + } + }, + { + "id": "Pen/goToBackground()", + "memberId": "Pen/goToBackground", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToBackground", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Sets the pen to the background. This method changes the state of the pen to\nindicate that it is\nno longer in the foreground.", + "description": "Sets the pen to the background. This method changes the state of the pen to\nindicate that it is\nno longer in the foreground.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToBackground", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeichnet hinter den Figuren" + } + } + }, + { + "id": "Pen/goToForeground()", + "memberId": "Pen/goToForeground", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToForeground", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the pen to the foreground. This method sets the pen's state to indicate\nthat it is in the\nforeground.", + "description": "Moves the pen to the foreground. This method sets the pen's state to indicate\nthat it is in the\nforeground.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToForeground", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeichnet vor den Figuren" + } + } + }, + { + "id": "Pen/goToMousePointer()", + "memberId": "Pen/goToMousePointer", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToMousePointer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the object to the current position of the mouse pointer.", + "description": "Moves the object to the current position of the mouse pointer.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift auf die Position des Mauszeigers" + } + } + }, + { + "id": "Pen/goToRandomPosition()", + "memberId": "Pen/goToRandomPosition", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "goToRandomPosition", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the object to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "description": "Moves the object to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/goToRandomPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift an eine zufällige Position der Bühne" + } + } + }, + { + "id": "Pen/isInBackground()", + "memberId": "Pen/isInBackground", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "isInBackground", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true if the pen is in the background.", + "description": "Returns true if the pen is in the background.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the pen is in the background", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/isInBackground", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Stift hinter den Figuren zeichnet" + } + } + }, + { + "id": "Pen/setColor(Color)", + "memberId": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Set the color of the pen", + "description": "Set the color of the pen", + "scratchblock": null, + "paramDocs": [ + "c: color of the pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Stiftfarbe" + } + } + }, + { + "id": "Pen/setColor(double)", + "memberId": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Set color via hue value", + "description": "Set color via hue value", + "scratchblock": "set pen [color v] to (h)", + "paramDocs": [ + "h: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Stiftfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Pen/setColor(double,double,double)", + "memberId": "Pen/setColor", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Set color via rgb values", + "description": "Set color via rgb values", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Stiftfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Pen/setPosition(double,double)", + "memberId": "Pen/setPosition", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Set the position if the pen is down.", + "description": "Set the position if the pen is down.", + "scratchblock": null, + "paramDocs": [ + "x: x coordinate", + "y: y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift an die angegebene Position; bei abgesenktem Stift wird eine Linie gezeichnet" + } + } + }, + { + "id": "Pen/setPosition(Vector2)", + "memberId": "Pen/setPosition", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the pen using a Vector2 object.", + "description": "Sets the position of the pen using a Vector2 object.", + "scratchblock": null, + "paramDocs": [ + "v: the Vector2 object containing the new x and y coordinates" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Stift an die angegebene Position; bei abgesenktem Stift wird eine Linie gezeichnet" + } + } + }, + { + "id": "Pen/setSize(double)", + "memberId": "Pen/setSize", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "size" + ], + "params": [ + "double size" + ], + "summary": "Set the size of the pen", + "description": "Set the size of the pen", + "scratchblock": "set pen size to (size)", + "paramDocs": [ + "size: size of the pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Strichstärke" + } + } + }, + { + "id": "Pen/setTransparency(double)", + "memberId": "Pen/setTransparency", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "setTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "transparency" + ], + "params": [ + "double transparency" + ], + "summary": "Set the transparency", + "description": "Set the transparency", + "scratchblock": null, + "paramDocs": [ + "transparency: transparency of the pen" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/setTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Deckkraft von 0 (unsichtbar) bis 255 (deckend)" + } + } + }, + { + "id": "Pen/stamp()", + "memberId": "Pen/stamp", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "stamp", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stamps the current sprite onto the canvas. If the sprite is not null, it will\nstamp either to\nthe foreground or the background based on the value of the isForeground flag.", + "description": "Stamps the current sprite onto the canvas. If the sprite is not null, it will\nstamp either to\nthe foreground or the background based on the value of the isForeground flag.", + "scratchblock": "stamp", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/stamp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Druckt ein Abbild der zugehörigen Figur auf die Bühne" + } + } + }, + { + "id": "Pen/up()", + "memberId": "Pen/up", + "owner": "org.openpatch.scratch.Pen", + "className": "Pen", + "methodName": "up", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Move the pen up.", + "description": "Move the pen up.", + "scratchblock": "pen up", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Pen/up", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Hebt den Stift an, so dass er nicht mehr zeichnet" + } + } + }, + { + "id": "Polygon/addPoint(double,double)", + "memberId": "Polygon/addPoint", + "owner": "org.openpatch.scratch.Polygon", + "className": "Polygon", + "methodName": "addPoint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Adds a point to the polygon.", + "description": "Adds a point to the polygon.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate", + "y: the y-coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Polygon/addPoint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt dem Vieleck einen Punkt hinzu" + } + } + }, + { + "id": "Polygon/constructor()", + "memberId": "Polygon/constructor", + "owner": "org.openpatch.scratch.Polygon", + "className": "Polygon", + "methodName": "constructor", + "static": false, + "returnType": "Polygon", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates an empty polygon.", + "description": "Creates an empty polygon.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Polygon/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein leeres Vieleck; Punkte kommen mit addPoint() dazu" + } + } + }, + { + "id": "Polygon/constructor(double[],double[])", + "memberId": "Polygon/constructor", + "owner": "org.openpatch.scratch.Polygon", + "className": "Polygon", + "methodName": "constructor", + "static": false, + "returnType": "Polygon", + "parameterTypes": [ + "double[]", + "double[]" + ], + "parameterNames": [ + "xPoints", + "yPoints" + ], + "params": [ + "double[] xPoints", + "double[] yPoints" + ], + "summary": "Creates a polygon with the specified vertices.", + "description": "Creates a polygon with the specified vertices.", + "scratchblock": null, + "paramDocs": [ + "xPoints: an array of x-coordinates", + "yPoints: an array of y-coordinates" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Polygon/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Vieleck aus x- und y-Koordinaten" + } + } + }, + { + "id": "Random/noise(double)", + "memberId": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noise", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Returns the Open Simplex noise value at specified coordinates", + "description": "Returns the Open Simplex noise value at specified coordinates", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate" + ], + "returns": "the noise value between 0 and 1", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noise", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle x zurück" + } + } + }, + { + "id": "Random/noise(double,double)", + "memberId": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noise", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Returns the Open Simplex noise value at specified coordinates", + "description": "Returns the Open Simplex noise value at specified coordinates", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate", + "y: y-coordinate" + ], + "returns": "the noise value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noise", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle (x, y) zurück" + } + } + }, + { + "id": "Random/noise(double,double,double)", + "memberId": "Random/noise", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noise", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "z" + ], + "params": [ + "double x", + "double y", + "double z" + ], + "summary": "Returns the Open Simplex noise value at specified coordinates", + "description": "Returns the Open Simplex noise value at specified coordinates", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate", + "y: y-coordinate", + "z: z-coordinate" + ], + "returns": "the noise value", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noise", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Rauschwert (Open Simplex Noise) an der Stelle (x, y, z) zurück" + } + } + }, + { + "id": "Random/noiseSeed(long)", + "memberId": "Random/noiseSeed", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "noiseSeed", + "static": true, + "returnType": "void", + "parameterTypes": [ + "long" + ], + "parameterNames": [ + "noiseSeed" + ], + "params": [ + "long noiseSeed" + ], + "summary": "Sets the seed for the noise method.", + "description": "Sets the seed for the noise method.", + "scratchblock": null, + "paramDocs": [ + "noiseSeed: the seed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/noiseSeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Startwert für das Rauschen" + } + } + }, + { + "id": "Random/random()", + "memberId": "Random/random", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "random", + "static": true, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random double between 0 and 1.", + "description": "Returns a random double between 0 and 1.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/random", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen 0 und 1 zurück" + } + } + }, + { + "id": "Random/random(double)", + "memberId": "Random/random", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "random", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "max" + ], + "params": [ + "double max" + ], + "summary": "Returns a random double between 0 and max.", + "description": "Returns a random double between 0 and max.", + "scratchblock": null, + "paramDocs": [ + "max: the maximum double" + ], + "returns": "a random double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/random", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen 0 und max zurück" + } + } + }, + { + "id": "Random/random(double,double)", + "memberId": "Random/random", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "random", + "static": true, + "returnType": "double", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "min", + "max" + ], + "params": [ + "double min", + "double max" + ], + "summary": "Returns a random double between min and max.", + "description": "Returns a random double between min and max.", + "scratchblock": "(pick random (min) to (max))", + "paramDocs": [ + "min: the minimum double", + "max: the maximum double" + ], + "returns": "a random double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/random", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen min und max zurück" + } + } + }, + { + "id": "Random/randomInt(int)", + "memberId": "Random/randomInt", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomInt", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "max" + ], + "params": [ + "int max" + ], + "summary": "Returns a random integer between 0 and max.", + "description": "Returns a random integer between 0 and max.", + "scratchblock": null, + "paramDocs": [ + "max: the maximum integer" + ], + "returns": "a random integer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomInt", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine ganze Zufallszahl zwischen 0 und max zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Random/randomInt(int,int)", + "memberId": "Random/randomInt", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomInt", + "static": true, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "min", + "max" + ], + "params": [ + "int min", + "int max" + ], + "summary": "Returns a random integer between min and max.", + "description": "Returns a random integer between min and max.", + "scratchblock": "(pick random (min) to (max))", + "paramDocs": [ + "min: the minimum integer", + "max: the maximum integer" + ], + "returns": "a random integer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomInt", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine ganze Zufallszahl zwischen min und max zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Random/randomPosition()", + "memberId": "Random/randomPosition", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomPosition", + "static": true, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random position with respect to the width of the window.", + "description": "Returns a random position with respect to the width of the window.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random position vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige Position auf der Bühne zurück" + } + } + }, + { + "id": "Random/randomSeed(long)", + "memberId": "Random/randomSeed", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomSeed", + "static": true, + "returnType": "void", + "parameterTypes": [ + "long" + ], + "parameterNames": [ + "seed" + ], + "params": [ + "long seed" + ], + "summary": "Sets the seed for the random method.", + "description": "Sets the seed for the random method.", + "scratchblock": null, + "paramDocs": [ + "seed: the seed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomSeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Startwert für die Zufallszahlen; danach wiederholt sich dieselbe Folge" + } + } + }, + { + "id": "Random/randomVector2()", + "memberId": "Random/randomVector2", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomVector2", + "static": true, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a random unit vector", + "description": "Returns a random unit vector", + "scratchblock": null, + "paramDocs": [], + "returns": "a random unit vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomVector2", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen zufälligen Vektor der Länge 1 zurück" + } + } + }, + { + "id": "Random/randomX()", + "memberId": "Random/randomX", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomX", + "static": true, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return a random x coordinate with respect to the width of the window.", + "description": "Return a random x coordinate with respect to the width of the window.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige x-Koordinate innerhalb der Bühne zurück" + } + } + }, + { + "id": "Random/randomY()", + "memberId": "Random/randomY", + "owner": "org.openpatch.scratch.Random", + "className": "Random", + "methodName": "randomY", + "static": true, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return a random y coordinate with respect to the width of the window.", + "description": "Return a random y coordinate with respect to the width of the window.", + "scratchblock": null, + "paramDocs": [], + "returns": "a random y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Random/randomY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine zufällige y-Koordinate innerhalb der Bühne zurück" + } + } + }, + { + "id": "Rectangle/constructor(double,double,double,double)", + "memberId": "Rectangle/constructor", + "owner": "org.openpatch.scratch.Rectangle", + "className": "Rectangle", + "methodName": "constructor", + "static": false, + "returnType": "Rectangle", + "parameterTypes": [ + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "x", + "y", + "width", + "height" + ], + "params": [ + "double x", + "double y", + "double width", + "double height" + ], + "summary": "Creates a rectangle with the specified position and size.", + "description": "Creates a rectangle with the specified position and size.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate of the rectangle's top-left corner", + "y: the y-coordinate of the rectangle's top-left corner", + "width: the width of the rectangle", + "height: the height of the rectangle" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Rectangle/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Rechteck mit der linken oberen Ecke bei (x, y)" + } + } + }, + { + "id": "Shape/contains(double,double)", + "memberId": "Shape/contains", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "contains", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Check if the shape contains a point defined by its x and y coordinates.", + "description": "Check if the shape contains a point defined by its x and y coordinates.", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate of the point", + "y: the y-coordinate of the point" + ], + "returns": "true if the shape contains the point, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/contains", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Punkt in der Form liegt" + } + } + }, + { + "id": "Shape/getBounds()", + "memberId": "Shape/getBounds", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "getBounds", + "static": false, + "returnType": "Bounds", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the bounds of the shape.", + "description": "Get the bounds of the shape.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Bounds object representing the bounding box of the shape", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/getBounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das umschließende Rechteck zurück" + } + } + }, + { + "id": "Shape/intersects(Shape)", + "memberId": "Shape/intersects", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "intersects", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Shape" + ], + "parameterNames": [ + "other" + ], + "params": [ + "Shape other" + ], + "summary": "Check if the shape intersects with another shape.", + "description": "Check if the shape intersects with another shape.", + "scratchblock": null, + "paramDocs": [ + "other: the other shape to check intersection with" + ], + "returns": "true if the shapes intersect, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/intersects", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich beide Formen überlappen" + } + } + }, + { + "id": "Shape/rotate(double,double,double)", + "memberId": "Shape/rotate", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "rotate", + "static": false, + "returnType": "Shape", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "theta", + "anchorX", + "anchorY" + ], + "params": [ + "double theta", + "double anchorX", + "double anchorY" + ], + "summary": "Rotate the shape by the specified angle around a given anchor point.", + "description": "Rotate the shape by the specified angle around a given anchor point.", + "scratchblock": null, + "paramDocs": [ + "theta: the angle in degrees to rotate", + "anchorX: the x-coordinate of the anchor point", + "anchorY: the y-coordinate of the anchor point" + ], + "returns": "a new Shape object that is rotated", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/rotate", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die um theta Grad gedrehte Form als neue Form zurück" + } + } + }, + { + "id": "Shape/scale(double,double)", + "memberId": "Shape/scale", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "scale", + "static": false, + "returnType": "Shape", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "scaleX", + "scaleY" + ], + "params": [ + "double scaleX", + "double scaleY" + ], + "summary": "Check if the shape is empty.", + "description": "Check if the shape is empty.", + "scratchblock": null, + "paramDocs": [ + "scaleX: ", + "scaleY: " + ], + "returns": "true if the shape is empty, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/scale", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die skalierte Form als neue Form zurück" + } + } + }, + { + "id": "Shape/translate(double,double)", + "memberId": "Shape/translate", + "owner": "org.openpatch.scratch.Shape", + "className": "Shape", + "methodName": "translate", + "static": false, + "returnType": "Shape", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "dx", + "dy" + ], + "params": [ + "double dx", + "double dy" + ], + "summary": "Translate the shape by the specified distances in the x and y directions.", + "description": "Translate the shape by the specified distances in the x and y directions.", + "scratchblock": null, + "paramDocs": [ + "dx: the distance to translate in the x direction", + "dy: the distance to translate in the y direction" + ], + "returns": "a new Shape object that is translated", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Shape/translate", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die verschobene Form als neue Form zurück" + } + } + }, + { + "id": "Sprite/addCostume(String)", + "memberId": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the costumes that ship with Scratch for Java to the sprite. The\ncostume gets the same name as the built-in sprite. If a costume with that\nname already exists do nothing.", + "description": "Add one of the costumes that ship with Scratch for Java to the sprite. The\ncostume gets the same name as the built-in sprite. If a costume with that\nname already exists do nothing.\n\nExample usage:\n\n```java\nthis.addCostume(\"bunny1_jump\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sprite, for example \"bunny1_jump\". Add\n the sheet in front of the name, for example\n \"platformer/grass\", if the same name exists on several sheets." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt eines der eingebauten Kostüme hinzu" + } + } + }, + { + "id": "Sprite/addCostume(String,String)", + "memberId": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "imagePath" + ], + "params": [ + "String name", + "String imagePath" + ], + "summary": "Add a costume to the sprite. If a costume with the received name already\nexists do nothing.", + "description": "Add a costume to the sprite. If a costume with the received name already\nexists do nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "imagePath: a image path, or the name of a built-in sprite such as\n \"bunny1_jump\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt ein Kostüm unter eigenem Namen hinzu" + } + } + }, + { + "id": "Sprite/addCostume(String,String,int,int,int,int)", + "memberId": "Sprite/addCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int", + "int", + "int" + ], + "parameterNames": [ + "name", + "spriteSheetPath", + "x", + "y", + "width", + "height" + ], + "params": [ + "String name", + "String spriteSheetPath", + "int x", + "int y", + "int width", + "int height" + ], + "summary": "Adds a new costume to the sprite if a costume with the same name does not\nalready exist.", + "description": "Adds a new costume to the sprite if a costume with the same name does not\nalready exist.", + "scratchblock": null, + "paramDocs": [ + "name: The name of the costume.", + "spriteSheetPath: The path to the sprite sheet image file.", + "x: The x-coordinate of the top-left corner of the costume\n in the sprite sheet.", + "y: The y-coordinate of the top-left corner of the costume\n in the sprite sheet.", + "width: The width of the costume in the sprite sheet.", + "height: The height of the costume in the sprite sheet." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schneidet ein Kostüm aus einem Bild aus" + } + } + }, + { + "id": "Sprite/addCostumes(String,String,int,int)", + "memberId": "Sprite/addCostumes", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addCostumes", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int" + ], + "parameterNames": [ + "prefix", + "spriteSheet", + "tileWidth", + "tileHeight" + ], + "params": [ + "String prefix", + "String spriteSheet", + "int tileWidth", + "int tileHeight" + ], + "summary": "Adds all tiles from a spritesheet as costumes. The costumes will be name by\nthe prefix and the\nindex in the spritesheet. For example if the prefix is \"tile\" and the\nspritesheet contains 4\ntiles, the costumes will be named \"tile0\", \"tile1\", \"tile2\", and \"tile3\".", + "description": "Adds all tiles from a spritesheet as costumes. The costumes will be name by\nthe prefix and the\nindex in the spritesheet. For example if the prefix is \"tile\" and the\nspritesheet contains 4\ntiles, the costumes will be named \"tile0\", \"tile1\", \"tile2\", and \"tile3\".", + "scratchblock": null, + "paramDocs": [ + "prefix: a prefix for all generated costumes", + "spriteSheet: a path to a sprite sheet, or the name of a built-in sprite", + "tileWidth: the width of a single tile", + "tileHeight: the height of a single tile" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addCostumes", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zerschneidet ein Bild in gleich große Kacheln und fügt sie als Kostüme hinzu" + } + } + }, + { + "id": "Sprite/addSound(String,String)", + "memberId": "Sprite/addSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "soundPath" + ], + "params": [ + "String name", + "String soundPath" + ], + "summary": "Add a sound to the sprite. If a sound with the received name already exists\ndo nothing.", + "description": "Add a sound to the sprite. If a sound with the received name already exists\ndo nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "soundPath: a sound path, or the name of a built-in sound such as\n \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Klang unter eigenem Namen hinzu" + } + } + }, + { + "id": "Sprite/addSound(String)", + "memberId": "Sprite/addSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the sounds that ship with Scratch for Java to the sprite. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.", + "description": "Add one of the sounds that ship with Scratch for Java to the sprite. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.\n\nExample usage:\n\n```java\nthis.addSound(\"footstep_carpet_000\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sound, for example \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen der eingebauten Klänge hinzu" + } + } + }, + { + "id": "Sprite/ask(String)", + "memberId": "Sprite/ask", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "ask", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "question" + ], + "params": [ + "String question" + ], + "summary": "Asks a question and waits for an answer to be typed in. The question appears\nat the top of the stage.", + "description": "Asks a question and waits for an answer to be typed in. The question appears\nat the top of the stage.\n\nUnlike Scratch, this does not pause the sprite. `run()` keeps being called\nwhile the question is on screen, so check [isAsking()](isAsking) or wait for\n[getAnswer()](getAnswer) to change.", + "scratchblock": "ask [question] and wait", + "paramDocs": [ + "question: the question to show" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/ask", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stellt eine Frage; die Antwort wird über getAnswer() abgeholt" + } + } + }, + { + "id": "Sprite/broadcast(String)", + "memberId": "Sprite/broadcast", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "broadcast", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "Broadcasts a message to every sprite on the stage, this one included, and\nto the stage itself, as in Scratch. If the sprite is not on a stage, nothing\nhappens.", + "description": "Broadcasts a message to every sprite on the stage, this one included, and\nto the stage itself, as in Scratch. If the sprite is not on a stage, nothing\nhappens.", + "scratchblock": "broadcast [message v]", + "paramDocs": [ + "message: The message to broadcast." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/broadcast", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Sendet eine Nachricht an alle Figuren und die Bühne" + } + } + }, + { + "id": "Sprite/changePosition(Vector2)", + "memberId": "Sprite/changePosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changePosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Changes the position of the sprite by a given vector.", + "description": "Changes the position of the sprite by a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector representing the change in position" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changePosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt die Figur um den angegebenen Vektor" + } + } + }, + { + "id": "Sprite/changePosition(double,double)", + "memberId": "Sprite/changePosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changePosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Changes the position of the sprite by the given amounts.", + "description": "Changes the position of the sprite by the given amounts.", + "scratchblock": null, + "paramDocs": [ + "x: how far to move along the x-axis", + "y: how far to move along the y-axis" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changePosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt die Figur um die angegebenen Werte" + } + } + }, + { + "id": "Sprite/changeSize(double)", + "memberId": "Sprite/changeSize", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "amount" + ], + "params": [ + "double amount" + ], + "summary": "Changes the size of the sprite by a given percentage.", + "description": "Changes the size of the sprite by a given percentage.", + "scratchblock": "change size by (amount)", + "paramDocs": [ + "amount: a percentage [0...100]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Größe um den angegebenen Wert in Prozent" + } + } + }, + { + "id": "Sprite/changeTint(double)", + "memberId": "Sprite/changeTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes the tint for the sprite by a step.", + "description": "Changes the tint for the sprite by a step.", + "scratchblock": "change [color v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton der Einfärbung um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeTransparency(double)", + "memberId": "Sprite/changeTransparency", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes how see-through the sprite is by a step. A positive step fades it\nout, a negative one brings it back.", + "description": "Changes how see-through the sprite is by a step. A positive step fades it\nout, a negative one brings it back.", + "scratchblock": "change [ghost v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Transparenz um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeVolume(double)", + "memberId": "Sprite/changeVolume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Makes every sound of this sprite louder or quieter.", + "description": "Makes every sound of this sprite louder or quieter.", + "scratchblock": "change volume by (step)", + "paramDocs": [ + "step: how much to add to the volume, in percent" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Lautstärke um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeX(double)", + "memberId": "Sprite/changeX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Changes x by a certain amount", + "description": "Changes x by a certain amount", + "scratchblock": "change x by (x)", + "paramDocs": [ + "x: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die x-Position um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/changeY(double)", + "memberId": "Sprite/changeY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "changeY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Changes y by a certain amount", + "description": "Changes y by a certain amount", + "scratchblock": "change y by (y)", + "paramDocs": [ + "y: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/changeY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die y-Position um den angegebenen Wert" + } + } + }, + { + "id": "Sprite/clone()", + "memberId": "Sprite/clone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "clone", + "static": false, + "returnType": "Sprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a clone of this sprite, like Scratch's \"create clone of myself\": a\nnew sprite of the same class (a clone of a `Cat` is a `Cat`),\nwith the same costume, position, direction, size and pen, and a copy of\nthe variables of your class. It is put on the stage right behind this\nsprite, and its [whenStartsAsClone()](whenStartsAsClone) runs; the constructor does\nnot run again.", + "description": "Creates a clone of this sprite, like Scratch's \"create clone of myself\": a\nnew sprite of the same class (a clone of a `Cat` is a `Cat`),\nwith the same costume, position, direction, size and pen, and a copy of\nthe variables of your class. It is put on the stage right behind this\nsprite, and its [whenStartsAsClone()](whenStartsAsClone) runs; the constructor does\nnot run again.\n\nNumbers, text and booleans in your variables are the clone's own. A list\nor another object is shared with the original: give the clone its own in\n[whenStartsAsClone()](whenStartsAsClone) if it needs one.\n\n```java\nBullet bullet = (Bullet) this.clone();\n```", + "scratchblock": "create clone of [myself v]", + "paramDocs": [], + "returns": "the clone, of the same class as this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/clone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/constructor()", + "memberId": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "constructor", + "static": false, + "returnType": "Sprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Sprite object with default settings.", + "description": "Constructs a new Sprite object with default settings.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine neue Figur" + } + } + }, + { + "id": "Sprite/constructor(String,String)", + "memberId": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "constructor", + "static": false, + "returnType": "Sprite", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "imagePath" + ], + "params": [ + "String name", + "String imagePath" + ], + "summary": "Constructs a new Sprite object with a specified costume.", + "description": "Constructs a new Sprite object with a specified costume.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name for the costume", + "imagePath: a path to an image file, or the name of a built-in sprite\n such as \"slimeGreen\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Figur mit einem ersten Kostüm" + } + } + }, + { + "id": "Sprite/constructor(Sprite)", + "memberId": "Sprite/constructor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "constructor", + "static": false, + "returnType": "Sprite", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Copies a Sprite object.", + "description": "Copies a Sprite object.", + "scratchblock": null, + "paramDocs": [ + "s: a Sprite object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der angegebenen Figur" + } + } + }, + { + "id": "Sprite/debug(Object[])", + "memberId": "Sprite/debug", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "debug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Object[]" + ], + "parameterNames": [ + "values" + ], + "params": [ + "Object[] values" + ], + "summary": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the sprite's class name so you can tell\nwhich sprite it came from.", + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the sprite's class name so you can tell\nwhich sprite it came from.\n\nExample:\n\n```java\nthis.debug(\"x =\", getX(), \"y =\", getY());\n// prints: [CatSprite] x = 100.0 y = 200.0\n```", + "scratchblock": null, + "paramDocs": [ + "values: one or more values to print" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/debug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/deleteThisClone()", + "memberId": "Sprite/deleteThisClone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "deleteThisClone", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes this sprite from the stage if it is a clone, like Scratch's\n\"delete this clone\". The original stays.", + "description": "Removes this sprite from the stage if it is a clone, like Scratch's\n\"delete this clone\". The original stays.", + "scratchblock": "delete this clone", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/deleteThisClone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/disableHitbox()", + "memberId": "Sprite/disableHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "disableHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Disables the hitbox for the sprite. Once the hitbox is disabled, the sprite\nwill no longer\ndetect collisions with other objects.", + "description": "Disables the hitbox for the sprite. Once the hitbox is disabled, the sprite\nwill no longer\ndetect collisions with other objects.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/disableHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Berührungserkennung aus" + } + } + }, + { + "id": "Sprite/distanceToMousePointer()", + "memberId": "Sprite/distanceToMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "distanceToMousePointer", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Calculates the distance from the current sprite to the mouse pointer.", + "description": "Calculates the distance from the current sprite to the mouse pointer.", + "scratchblock": "(distance to [mouse-pointer v])", + "paramDocs": [], + "returns": "the distance to the mouse pointer as a double.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/distanceToMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Abstand zum Mauszeiger zurück" + } + } + }, + { + "id": "Sprite/distanceToSprite(Sprite)", + "memberId": "Sprite/distanceToSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "distanceToSprite", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Calculates the Euclidean distance between this sprite and another sprite.", + "description": "Calculates the Euclidean distance between this sprite and another sprite.", + "scratchblock": "(distance to [sprite v])", + "paramDocs": [ + "sprite: the other sprite to which the distance is calculated" + ], + "returns": "the distance between this sprite and the specified sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/distanceToSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Abstand zu einer anderen Figur zurück" + } + } + }, + { + "id": "Sprite/enableHitbox()", + "memberId": "Sprite/enableHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "enableHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Enables the hitbox for the sprite. This method sets the hitboxDisabled flag\nto false, allowing\nthe sprite to interact with other objects.", + "description": "Enables the hitbox for the sprite. This method sets the hitboxDisabled flag\nto false, allowing\nthe sprite to interact with other objects.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/enableHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Berührungserkennung wieder ein" + } + } + }, + { + "id": "Sprite/getAnswer()", + "memberId": "Sprite/getAnswer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getAnswer", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the last answer that was typed in.", + "description": "Returns the last answer that was typed in.", + "scratchblock": "(answer)", + "paramDocs": [], + "returns": "the answer, or an empty string if nothing has been answered yet", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getAnswer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die zuletzt eingegebene Antwort zurück, sonst eine leere Zeichenkette" + } + } + }, + { + "id": "Sprite/getCurrentCostumeIndex()", + "memberId": "Sprite/getCurrentCostumeIndex", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getCurrentCostumeIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current costume index", + "description": "Returns the current costume index", + "scratchblock": "(costume [number v])", + "paramDocs": [], + "returns": "a costume index", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getCurrentCostumeIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer des aktuellen Kostüms zurück" + } + } + }, + { + "id": "Sprite/getCurrentCostumeName()", + "memberId": "Sprite/getCurrentCostumeName", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getCurrentCostumeName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current costume name", + "description": "Returns the current costume name", + "scratchblock": "(costume [name v])", + "paramDocs": [], + "returns": "a costume name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getCurrentCostumeName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen des aktuellen Kostüms zurück" + } + } + }, + { + "id": "Sprite/getDeltaTime()", + "memberId": "Sprite/getDeltaTime", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getDeltaTime", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the seconds passed since the last frame.", + "description": "Gets the seconds passed since the last frame.", + "scratchblock": null, + "paramDocs": [], + "returns": "seconds since last frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getDeltaTime", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + } + }, + { + "id": "Sprite/getDirection()", + "memberId": "Sprite/getDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getDirection", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the direction of the sprite.", + "description": "Returns the direction of the sprite.", + "scratchblock": "(direction)", + "paramDocs": [], + "returns": "the direction [0...360]", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Blickrichtung in Grad zurück (90 = rechts, 0 = oben)" + } + } + }, + { + "id": "Sprite/getHeight()", + "memberId": "Sprite/getHeight", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getHeight", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the height of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Höhe der Figur in Pixeln zurück" + } + } + }, + { + "id": "Sprite/getHitbox()", + "memberId": "Sprite/getHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getHitbox", + "static": false, + "returnType": "Hitbox", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the hitbox of the sprite based on its current costume, position, and\nrotation. If the\nsprite has a hitbox already defined, it updates and returns it. Otherwise, it\ncalculates a new\nhitbox based on the sprite's dimensions and rotation.", + "description": "Returns the hitbox of the sprite based on its current costume, position, and\nrotation. If the\nsprite has a hitbox already defined, it updates and returns it. Otherwise, it\ncalculates a new\nhitbox based on the sprite's dimensions and rotation.", + "scratchblock": null, + "paramDocs": [], + "returns": "the hitbox of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Trefferfläche der Figur zurück" + } + } + }, + { + "id": "Sprite/getMouse()", + "memberId": "Sprite/getMouse", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getMouse", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current position of the mouse cursor.", + "description": "Retrieves the current position of the mouse cursor.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Vector2 object representing the current mouse cursor position, with\n the x-coordinate\n obtained from getMouseX() and the y-coordinate obtained from\n getMouseY().", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getMouse", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position des Mauszeigers zurück" + } + } + }, + { + "id": "Sprite/getMouseX()", + "memberId": "Sprite/getMouseX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getMouseX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current x-position of the mouse cursor", + "description": "Returns the current x-position of the mouse cursor", + "scratchblock": "(mouse x)", + "paramDocs": [], + "returns": "x-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getMouseX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Sprite/getMouseY()", + "memberId": "Sprite/getMouseY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getMouseY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current y-position of the mouse cursor", + "description": "Returns the current y-position of the mouse cursor", + "scratchblock": "(mouse y)", + "paramDocs": [], + "returns": "y-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getMouseY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Sprite/getPen()", + "memberId": "Sprite/getPen", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getPen", + "static": false, + "returnType": "Pen", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pen of the sprite.", + "description": "Returns the pen of the sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getPen", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Stift dieser Figur zurück; mit ihm kann sie eine Spur zeichnen" + } + } + }, + { + "id": "Sprite/getPosition()", + "memberId": "Sprite/getPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current position of the sprite.", + "description": "Retrieves the current position of the sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": "A [Vector2](../Vector2/index) object representing the x and y coordinates of the\n sprite.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position der Figur zurück" + } + } + }, + { + "id": "Sprite/getShaders()", + "memberId": "Sprite/getShaders", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getShaders", + "static": false, + "returnType": "Shaders", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shaders of this sprite. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.", + "description": "Returns the shaders of this sprite. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.\n\nExample usage:\n\n```java\nthis.getShaders().add(\"blur\", \"blur.frag\", null);\nthis.getShaders().switchTo(\"blur\");\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the shaders", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getShaders", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Shader dieser Figur zurück" + } + } + }, + { + "id": "Sprite/getSize()", + "memberId": "Sprite/getSize", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getSize", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size of the sprite.", + "description": "Returns the size of the sprite.", + "scratchblock": "(size)", + "paramDocs": [], + "returns": "size in percentage", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Größe in Prozent zurück" + } + } + }, + { + "id": "Sprite/getStage()", + "memberId": "Sprite/getStage", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getStage", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current stage associated with this sprite.", + "description": "Retrieves the current stage associated with this sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": "the stage associated with this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Bühne zurück, auf der die Figur steht" + } + } + }, + { + "id": "Sprite/getText()", + "memberId": "Sprite/getText", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getText", + "static": false, + "returnType": "Text", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the text associated with this sprite.", + "description": "Retrieves the text associated with this sprite.", + "scratchblock": null, + "paramDocs": [], + "returns": "the text associated with this sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getText", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Text zurück, der über der Figur angezeigt wird" + } + } + }, + { + "id": "Sprite/getTimer()", + "memberId": "Sprite/getTimer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the default timer", + "description": "Return the default timer", + "scratchblock": "(timer)", + "paramDocs": [], + "returns": "the default timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Standard-Timer dieser Figur zurück" + } + } + }, + { + "id": "Sprite/getTimer(String)", + "memberId": "Sprite/getTimer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Return a timer by name", + "description": "Return a timer by name", + "scratchblock": null, + "paramDocs": [ + "name: " + ], + "returns": "a timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Timer mit dem angegebenen Namen zurück und legt ihn bei Bedarf an" + } + } + }, + { + "id": "Sprite/getTint()", + "memberId": "Sprite/getTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTint", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the tint value of the current costume.", + "description": "Retrieves the tint value of the current costume.", + "scratchblock": null, + "paramDocs": [], + "returns": "the tint value of the current costume, or null if there are no\n costumes.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Farbe der Einfärbung zurück" + } + } + }, + { + "id": "Sprite/getTouchingSprite(Class)", + "memberId": "Sprite/getTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTouchingSprite", + "static": false, + "returnType": "T", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Returns the first sprite of the specified type that is currently touching\nthis sprite.", + "description": "Returns the first sprite of the specified type that is currently touching\nthis sprite.", + "scratchblock": null, + "paramDocs": [ + "c: the class object of the type of sprite to check for" + ], + "returns": "the first sprite of the specified type that is touching this sprite,\n or null if no such\n sprite is found", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTouchingSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die erste berührte Figur dieser Klasse zurück, sonst null" + } + } + }, + { + "id": "Sprite/getTouchingSprites(Class)", + "memberId": "Sprite/getTouchingSprites", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTouchingSprites", + "static": false, + "returnType": "List", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Returns a list of sprites of the specified type that are currently touching\nthis sprite.", + "description": "Returns a list of sprites of the specified type that are currently touching\nthis sprite.", + "scratchblock": null, + "paramDocs": [ + "c: the class of the type of sprites to return" + ], + "returns": "a list of sprites of the specified type that are touching this\n sprite, or null if the\n stage is not set", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTouchingSprites", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle berührten Figuren dieser Klasse zurück" + } + } + }, + { + "id": "Sprite/getTransparency()", + "memberId": "Sprite/getTransparency", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getTransparency", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the transparency of the current costume.", + "description": "Gets the transparency of the current costume.", + "scratchblock": null, + "paramDocs": [], + "returns": "how see-through the sprite is, 0 solid and 100 invisible", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Transparenz in Prozent zurück" + } + } + }, + { + "id": "Sprite/getVolume()", + "memberId": "Sprite/getVolume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getVolume", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns how loud the sounds of this sprite play.", + "description": "Returns how loud the sounds of this sprite play.", + "scratchblock": "(volume)", + "paramDocs": [], + "returns": "the volume, from 0 to 100", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Lautstärke in Prozent zurück" + } + } + }, + { + "id": "Sprite/getWidth()", + "memberId": "Sprite/getWidth", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getWidth", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite der Figur in Pixeln zurück" + } + } + }, + { + "id": "Sprite/getX()", + "memberId": "Sprite/getX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x coordinate of the sprite", + "description": "Returns the x coordinate of the sprite", + "scratchblock": "(x position)", + "paramDocs": [], + "returns": "a x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position zurück (Mitte der Bühne ist 0)" + } + } + }, + { + "id": "Sprite/getY()", + "memberId": "Sprite/getY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y coordinate of the sprite", + "description": "Returns the y coordinate of the sprite", + "scratchblock": "(y position)", + "paramDocs": [], + "returns": "a y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position zurück (Mitte der Bühne ist 0, nach oben positiv)" + } + } + }, + { + "id": "Sprite/glide(double,double,double)", + "memberId": "Sprite/glide", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "glide", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "seconds", + "x", + "y" + ], + "params": [ + "double seconds", + "double x", + "double y" + ], + "summary": "Slides the sprite to a place over the given time, instead of jumping there.", + "description": "Slides the sprite to a place over the given time, instead of jumping there.\n\nUnlike Scratch this does not hold up the sprite: `run()` keeps being called\nwhile the sprite is on its way. Use [isGliding()](isGliding) to tell whether it\nhas arrived.", + "scratchblock": "glide (seconds) secs to x: (x) y: (y)", + "paramDocs": [ + "seconds: how long the trip should take", + "x: where to end up", + "y: where to end up" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/glide", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gleitet in der angegebenen Zeit zur Zielposition" + } + } + }, + { + "id": "Sprite/goLayersBackwards(int)", + "memberId": "Sprite/goLayersBackwards", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goLayersBackwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the sprite backwards by a specified number of layers in the stage. If\nthe sprite is not\npart of a stage, the method does nothing.", + "description": "Moves the sprite backwards by a specified number of layers in the stage. If\nthe sprite is not\npart of a stage, the method does nothing.", + "scratchblock": "go [backward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the sprite backwards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goLayersBackwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt die Figur um die angegebene Anzahl Ebenen nach hinten" + } + } + }, + { + "id": "Sprite/goLayersForwards(int)", + "memberId": "Sprite/goLayersForwards", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goLayersForwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the sprite forward by a specified number of layers within its stage.", + "description": "Moves the sprite forward by a specified number of layers within its stage.", + "scratchblock": "go [forward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the sprite forward" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goLayersForwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt die Figur um die angegebene Anzahl Ebenen nach vorne" + } + } + }, + { + "id": "Sprite/goToBackLayer()", + "memberId": "Sprite/goToBackLayer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToBackLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the sprite to the back layer of the stage. If the sprite is not\nassociated with any\nstage, the method returns without performing any action.", + "description": "Moves the sprite to the back layer of the stage. If the sprite is not\nassociated with any\nstage, the method returns without performing any action.", + "scratchblock": "go to [back v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToBackLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt die Figur ganz nach hinten" + } + } + }, + { + "id": "Sprite/goToFrontLayer()", + "memberId": "Sprite/goToFrontLayer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToFrontLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves this sprite to the front layer of the stage. If the sprite is not part\nof any stage, the\nmethod does nothing.", + "description": "Moves this sprite to the front layer of the stage. If the sprite is not part\nof any stage, the\nmethod does nothing.", + "scratchblock": "go to [front v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToFrontLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt die Figur ganz nach vorne" + } + } + }, + { + "id": "Sprite/goToMousePointer()", + "memberId": "Sprite/goToMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToMousePointer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the sprite to the current position of the mouse pointer. This method\nupdates the sprite's\nposition to the coordinates of the mouse cursor.", + "description": "Moves the sprite to the current position of the mouse pointer. This method\nupdates the sprite's\nposition to the coordinates of the mouse cursor.", + "scratchblock": "go to [mouse-pointer v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an die Position des Mauszeigers" + } + } + }, + { + "id": "Sprite/goToRandomPosition()", + "memberId": "Sprite/goToRandomPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToRandomPosition", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves the sprite to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "description": "Moves the sprite to a random position within the boundaries of the stage. The\nnew position is\ndetermined by generating random coordinates within the width and height of\nthe stage.", + "scratchblock": "go to [random position v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToRandomPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an eine zufällige Position auf der Bühne" + } + } + }, + { + "id": "Sprite/goToSprite(Sprite)", + "memberId": "Sprite/goToSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "goToSprite", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Moves this sprite to the position of the specified sprite.", + "description": "Moves this sprite to the position of the specified sprite.", + "scratchblock": "go to [sprite v]", + "paramDocs": [ + "sprite: the sprite to move to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/goToSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur auf die Position einer anderen Figur" + } + } + }, + { + "id": "Sprite/hide()", + "memberId": "Sprite/hide", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "hide", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Hides the sprite. The pen is not effected.", + "description": "Hides the sprite. The pen is not effected.", + "scratchblock": "hide", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/hide", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Macht die Figur unsichtbar" + } + } + }, + { + "id": "Sprite/hideVariable(String)", + "memberId": "Sprite/hideVariable", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "hideVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "description": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "scratchblock": "hide variable [name v]", + "paramDocs": [ + "name: the name the monitor was shown with" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/hideVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/ifOnEdgeBounce()", + "memberId": "Sprite/ifOnEdgeBounce", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "ifOnEdgeBounce", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the sprite is on the edge of the stage and bounces it back if it\nis. The sprite's\ndirection is reversed when it hits the left or right border, and it is\nreversed and rotated by\n180 degrees when it hits the top or bottom border. The method does nothing if\nthe hitbox is\ndisabled or if the sprite is a UI element. It also does nothing if the\nsprite has not been added to a stage yet.", + "description": "Checks if the sprite is on the edge of the stage and bounces it back if it\nis. The sprite's\ndirection is reversed when it hits the left or right border, and it is\nreversed and rotated by\n180 degrees when it hits the top or bottom border. The method does nothing if\nthe hitbox is\ndisabled or if the sprite is a UI element. It also does nothing if the\nsprite has not been added to a stage yet.", + "scratchblock": "if on edge, bounce", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/ifOnEdgeBounce", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Lässt die Figur am Bühnenrand abprallen" + } + } + }, + { + "id": "Sprite/isAsking()", + "memberId": "Sprite/isAsking", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isAsking", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether a question is on screen and still waiting for an answer.", + "description": "Checks whether a question is on screen and still waiting for an answer.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while a question is waiting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isAsking", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn noch auf eine Antwort gewartet wird" + } + } + }, + { + "id": "Sprite/isClone()", + "memberId": "Sprite/isClone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isClone", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Whether this sprite is a clone, made by [clone()](clone).", + "description": "Whether this sprite is a clone, made by [clone()](clone).", + "scratchblock": null, + "paramDocs": [], + "returns": "true for a clone, false for the original", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isClone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie der Figur" + } + } + }, + { + "id": "Sprite/isColorTouchingColor(Color,Color)", + "memberId": "Sprite/isColorTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isColorTouchingColor", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Color", + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "color", + "other" + ], + "params": [ + "Color color", + "Color other" + ], + "summary": "Checks whether a colour of the sprite is touching a colour on the stage:\nonly the parts of the costume painted in `color` count. A car whose\nfront bumper is red can ask whether the bumper touches the grass.", + "description": "Checks whether a colour of the sprite is touching a colour on the stage:\nonly the parts of the costume painted in `color` count. A car whose\nfront bumper is red can ask whether the bumper touches the grass.\n\n```java\nif (this.isColorTouchingColor(HtmlColor.RED, HtmlColor.GREEN)) {\n this.say(\"Off the road!\");\n}\n```", + "scratchblock": "<color [#ff0000] is touching [#00ff00]?>", + "paramDocs": [ + "color: a colour of this sprite's costume", + "other: the colour to look for under it" + ], + "returns": "true if the colour touches the other colour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isColorTouchingColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob die Teile der Figur in der Farbe color über der Farbe other liegen" + } + } + }, + { + "id": "Sprite/isGliding()", + "memberId": "Sprite/isGliding", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isGliding", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether the sprite is still on its way to a place it was told to\nglide to.", + "description": "Checks whether the sprite is still on its way to a place it was told to\nglide to.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while it is still moving", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isGliding", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur gerade gleitet" + } + } + }, + { + "id": "Sprite/isKeyPressed(KeyCode)", + "memberId": "Sprite/isKeyPressed", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isKeyPressed", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "Returns true if the key is pressed", + "description": "Returns true if the key is pressed", + "scratchblock": "<key [space v] pressed?>", + "paramDocs": [ + "keyCode: a key" + ], + "returns": "key pressed", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Taste gerade gedrückt ist" + } + } + }, + { + "id": "Sprite/isMouseDown()", + "memberId": "Sprite/isMouseDown", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isMouseDown", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true is the mouse button is down", + "description": "Returns true is the mouse button is down", + "scratchblock": "<mouse down?>", + "paramDocs": [], + "returns": "mouse button down", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isMouseDown", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine Maustaste gedrückt ist" + } + } + }, + { + "id": "Sprite/isSoundPlaying(String)", + "memberId": "Sprite/isSoundPlaying", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isSoundPlaying", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns true if the sound if playing", + "description": "Returns true if the sound if playing", + "scratchblock": null, + "paramDocs": [ + "name: Name of the sound" + ], + "returns": "playing", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isSoundPlaying", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Klang gerade abgespielt wird" + } + } + }, + { + "id": "Sprite/isTouchingColor(Color)", + "memberId": "Sprite/isTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingColor", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "color" + ], + "params": [ + "Color color" + ], + "summary": "Checks whether the sprite is touching a colour: whether anything it paints\nlies over that colour on the stage - on the backdrop, on what the pen drew,\nor on another sprite.", + "description": "Checks whether the sprite is touching a colour: whether anything it paints\nlies over that colour on the stage - on the backdrop, on what the pen drew,\nor on another sprite.\n\nAs in Scratch, colours that are nearly the same count, so anti-aliased\nedges still match. Only what is under the painted part of the costume\ncounts, not the empty space around it, and not the hitbox.\n\n```java\nif (this.isTouchingColor(HtmlColor.RED)) {\n this.say(\"Ouch!\");\n}\n```\n\nThe time it takes grows with the size of the sprite, not of the stage.", + "scratchblock": "<touching color [#ff0000]?>", + "paramDocs": [ + "color: the colour to look for" + ], + "returns": "true if the sprite is touching the colour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob etwas, das die Figur malt, über dieser Farbe auf der Bühne liegt — auf dem Bühnenbild, auf dem, was der Stift gezeichnet hat, oder auf einer anderen Figur. Fast gleiche Farben zählen wie in Scratch." + } + } + }, + { + "id": "Sprite/isTouchingColor(double,double,double)", + "memberId": "Sprite/isTouchingColor", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingColor", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Checks whether the sprite is touching a colour given by its red, green and\nblue parts.", + "description": "Checks whether the sprite is touching a colour given by its red, green and\nblue parts.", + "scratchblock": null, + "paramDocs": [ + "r: the red part [0...255]", + "g: the green part [0...255]", + "b: the blue part [0...255]" + ], + "returns": "true if the sprite is touching the colour", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Prüft, ob die Figur eine Farbe berührt, angegeben durch Rot, Grün und Blau [0...255]" + } + } + }, + { + "id": "Sprite/isTouchingEdge()", + "memberId": "Sprite/isTouchingEdge", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingEdge", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true if the rectangle which contains the image is outside of the\nstage", + "description": "Returns true if the rectangle which contains the image is outside of the\nstage", + "scratchblock": "<touching [edge v]?>", + "paramDocs": [], + "returns": "true if outside", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingEdge", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur den Bühnenrand berührt" + } + } + }, + { + "id": "Sprite/isTouchingMousePointer()", + "memberId": "Sprite/isTouchingMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingMousePointer", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true is the mouse pointer is touching the hitbox of the sprite.", + "description": "Returns true is the mouse pointer is touching the hitbox of the sprite.", + "scratchblock": "<touching [mouse-pointer v]?>", + "paramDocs": [], + "returns": "true if touching", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Mauszeiger auf der Figur liegt" + } + } + }, + { + "id": "Sprite/isTouchingSprite(Sprite)", + "memberId": "Sprite/isTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingSprite", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Checks if this sprite is touching another sprite.", + "description": "Checks if this sprite is touching another sprite.", + "scratchblock": "<touching [sprite v]?>", + "paramDocs": [ + "sprite: The sprite to check for collision with." + ], + "returns": "true if this sprite is touching the specified sprite, false\n otherwise. Returns false if\n the specified sprite is the same as this sprite, if the stage is\n null, if the specified\n sprite is null, not shown, or has its hitbox disabled.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn sich die Figuren berühren" + } + } + }, + { + "id": "Sprite/isTouchingSprite(Class)", + "memberId": "Sprite/isTouchingSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isTouchingSprite", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Checks if this sprite is touching any sprite of the specified class type.", + "description": "Checks if this sprite is touching any sprite of the specified class type.", + "scratchblock": null, + "paramDocs": [ + "c: the class type of the sprite to check for collision" + ], + "returns": "true if this sprite is touching any sprite of the specified class\n type, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isTouchingSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur eine Figur dieser Klasse berührt, z.B. isTouchingSprite(Apfel.class)" + } + } + }, + { + "id": "Sprite/isVisible()", + "memberId": "Sprite/isVisible", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "isVisible", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns if the sprite is visible", + "description": "Returns if the sprite is visible", + "scratchblock": null, + "paramDocs": [], + "returns": "is visible", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/isVisible", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Figur sichtbar ist" + } + } + }, + { + "id": "Sprite/move(double)", + "memberId": "Sprite/move", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "move", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "steps" + ], + "params": [ + "double steps" + ], + "summary": "Moves the sprite towards the current rotation by the received steps.", + "description": "Moves the sprite towards the current rotation by the received steps.", + "scratchblock": "move (steps) steps", + "paramDocs": [ + "steps: a number of pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/move", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bewegt die Figur um die angegebene Schrittzahl in ihre Blickrichtung" + } + } + }, + { + "id": "Sprite/move(Vector2)", + "memberId": "Sprite/move", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "move", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Moves the sprite in the direction of the given vector. The length of the\nvector determines how\nmove the sprite will move in this direction.", + "description": "Moves the sprite in the direction of the given vector. The length of the\nvector determines how\nmove the sprite will move in this direction.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/move", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Verschiebt die Figur um den Vektor" + } + } + }, + { + "id": "Sprite/nextCostume()", + "memberId": "Sprite/nextCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "nextCostume", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the next costume.", + "description": "Switch to the next costume.", + "scratchblock": "next costume", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/nextCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum nächsten Kostüm" + } + } + }, + { + "id": "Sprite/pickRandom(int,int)", + "memberId": "Sprite/pickRandom", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pickRandom", + "static": false, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "from", + "to" + ], + "params": [ + "int from", + "int to" + ], + "summary": "Returns a random integer between the specified range.", + "description": "Returns a random integer between the specified range.", + "scratchblock": "(pick random (from) to (to))", + "paramDocs": [ + "from: the lower bound of the range (inclusive)", + "to: the upper bound of the range (exclusive)" + ], + "returns": "a random integer between the specified range", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pickRandom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen from und to zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Sprite/playSound(String)", + "memberId": "Sprite/playSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "playSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Plays a sound.", + "description": "Plays a sound.\n\nEvery sprite plays its own copy, so ten sprites playing the same sound are\nheard ten times at once. One sprite only plays a sound once at a time:\nplaying it again while it is still going does nothing.", + "scratchblock": "start sound [name v]", + "paramDocs": [ + "name: the sound name" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/playSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt einen zuvor hinzugefügten Klang ab" + } + } + }, + { + "id": "Sprite/pointInDirection(double)", + "memberId": "Sprite/pointInDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointInDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Points the sprite in the specified direction.", + "description": "Points the sprite in the specified direction.", + "scratchblock": null, + "paramDocs": [ + "degrees: The direction in degrees to point the sprite. 0 degrees is up,\n 90 degrees is to the right, 180 degrees is down, and 270\n degrees is to the left." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointInDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Blickrichtung in Grad (90 = rechts, 0 = oben)" + } + } + }, + { + "id": "Sprite/pointInDirection(Vector2)", + "memberId": "Sprite/pointInDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointInDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Points the sprite in the direction of the given vector.", + "description": "Points the sprite in the direction of the given vector.", + "scratchblock": null, + "paramDocs": [ + "v: the target vector to point towards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointInDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Richtet die Figur entlang des angegebenen Vektors aus" + } + } + }, + { + "id": "Sprite/pointTowardsMousePointer()", + "memberId": "Sprite/pointTowardsMousePointer", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointTowardsMousePointer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Points the sprite towards the current position of the mouse pointer. This\nmethod calculates the\nangle between the sprite's current position and the mouse pointer's position,\nthen sets the\nsprite's direction accordingly.", + "description": "Points the sprite towards the current position of the mouse pointer. This\nmethod calculates the\nangle between the sprite's current position and the mouse pointer's position,\nthen sets the\nsprite's direction accordingly.", + "scratchblock": "point towards [mouse-pointer v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointTowardsMousePointer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Richtet die Figur zum Mauszeiger aus" + } + } + }, + { + "id": "Sprite/pointTowardsSprite(Sprite)", + "memberId": "Sprite/pointTowardsSprite", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "pointTowardsSprite", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Points the current sprite towards the specified sprite.", + "description": "Points the current sprite towards the specified sprite.", + "scratchblock": "point towards [sprite v]", + "paramDocs": [ + "s: the sprite to point towards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/pointTowardsSprite", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Richtet die Figur zu einer anderen Figur aus" + } + } + }, + { + "id": "Sprite/previousCostume()", + "memberId": "Sprite/previousCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "previousCostume", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the previous costume.", + "description": "Switch to the previous costume.", + "scratchblock": "switch costume to (previous costume)", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/previousCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum vorherigen Kostüm" + } + } + }, + { + "id": "Sprite/remove()", + "memberId": "Sprite/remove", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes this sprite from its current stage. For \"delete this clone\", see\n[deleteThisClone()](deleteThisClone).", + "description": "Removes this sprite from its current stage. For \"delete this clone\", see\n[deleteThisClone()](deleteThisClone).", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt die Figur von der Bühne" + } + } + }, + { + "id": "Sprite/run()", + "memberId": "Sprite/run", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "run", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is intended to be overridden by subclasses to define the behavior\nof the sprite\nwhen it is run. By default, this method does nothing.", + "description": "This method is intended to be overridden by subclasses to define the behavior\nof the sprite\nwhen it is run. By default, this method does nothing.\n\nIt is called every frame.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/run", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird in jedem Frame aufgerufen" + } + } + }, + { + "id": "Sprite/say(String)", + "memberId": "Sprite/say", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "say", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Makes the sprite display a speech bubble with the specified text.", + "description": "Makes the sprite display a speech bubble with the specified text.", + "scratchblock": "say [text]", + "paramDocs": [ + "text: The text to be displayed in the speech bubble." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/say", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Sprechblase an" + } + } + }, + { + "id": "Sprite/say(String,int)", + "memberId": "Sprite/say", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "say", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays a text message for a specified duration.", + "description": "Displays a text message for a specified duration.", + "scratchblock": "say [text] for (millis) seconds", + "paramDocs": [ + "text: The message to be displayed.", + "millis: The duration in milliseconds for which the message will be\n displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/say", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Sprechblase für die angegebene Zeit in Millisekunden" + } + } + }, + { + "id": "Sprite/setDirection(double)", + "memberId": "Sprite/setDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Sets the direction of the sprite to a given degrees. When this value is 0 the\nsprite moves\nup, when it is 180 it moves down.", + "description": "Sets the direction of the sprite to a given degrees. When this value is 0 the\nsprite moves\nup, when it is 180 it moves down.", + "scratchblock": "point in direction (degrees)", + "paramDocs": [ + "degrees: between 0 and 360" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Blickrichtung in Grad (90 = rechts, 0 = oben)" + } + } + }, + { + "id": "Sprite/setDirection(Vector2)", + "memberId": "Sprite/setDirection", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setDirection", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the direction of the sprite to the direction of a given vector.", + "description": "Sets the direction of the sprite to the direction of a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setDirection", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Blickrichtung auf die Richtung des Vektors" + } + } + }, + { + "id": "Sprite/setHitbox(double[])", + "memberId": "Sprite/setHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double[]" + ], + "parameterNames": [ + "points" + ], + "params": [ + "double[] points" + ], + "summary": "Sets the hitbox for the sprite using the provided points. The points should\nbe provided in\npairs representing the x and y coordinates.", + "description": "Sets the hitbox for the sprite using the provided points. The points should\nbe provided in\npairs representing the x and y coordinates.", + "scratchblock": null, + "paramDocs": [ + "points: an array of integers representing the x and y coordinates of\n the hitbox vertices.\n The length of the array should be even, with each pair of\n integers representing a point (x,\n y)." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/setHitbox(Shape)", + "memberId": "Sprite/setHitbox", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setHitbox", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Shape" + ], + "parameterNames": [ + "shape" + ], + "params": [ + "Shape shape" + ], + "summary": "Sets the hitbox for the sprite using the specified shape.", + "description": "Sets the hitbox for the sprite using the specified shape.", + "scratchblock": null, + "paramDocs": [ + "shape: the shape to be used for the hitbox" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setHitbox", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Trefferfläche auf die angegebene Form; (0/0) ist die Mitte der Figur" + } + } + }, + { + "id": "Sprite/setPosition(double,double)", + "memberId": "Sprite/setPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the position of the sprite", + "description": "Sets the position of the sprite", + "scratchblock": "go to x: (x) y: (y)", + "paramDocs": [ + "x: a x coordinate", + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Sprite/setPosition(Vector2)", + "memberId": "Sprite/setPosition", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the sprite based on the coordinates of a given vector.", + "description": "Sets the position of the sprite based on the coordinates of a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Figur an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Sprite/setRotationCenter(double,double)", + "memberId": "Sprite/setRotationCenter", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setRotationCenter", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the point of the costume the sprite turns around - Scratch's rotation\ncenter. It is also the point that sits at the sprite's position, so it is\nwhere the pen draws from and what `goTo` puts in place.", + "description": "Sets the point of the costume the sprite turns around - Scratch's rotation\ncenter. It is also the point that sits at the sprite's position, so it is\nwhere the pen draws from and what `goTo` puts in place.\n\nThe point is given in the costume's own pixels, counted from its top left\ncorner, the same way as [setHitbox(double...)](setHitbox): a sword whose hilt\nis 12 pixels from the left and 60 from the top swings around the hilt with\n`setRotationCenter(12, 60)`. It grows and shrinks with the sprite's\nsize and holds for every costume of the sprite. Without it, a sprite turns\naround the middle of its costume.\n\n```java\nthis.addCostume(\"hand\", \"assets/clock-hand.png\");\nthis.setRotationCenter(8, 100); // the end of the hand\n```", + "scratchblock": null, + "paramDocs": [ + "x: the x-coordinate in the costume, from its left edge", + "y: the y-coordinate in the costume, from its top edge" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setRotationCenter", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Punkt des Kostüms, um den sich die Figur dreht (Drehpunkt). Er sitzt an der Position der Figur. Angegeben in Pixeln des Kostüms von seiner linken oberen Ecke aus, wie bei setHitbox; er wächst mit der Größe und gilt für alle Kostüme." + } + } + }, + { + "id": "Sprite/setRotationStyle(RotationStyle)", + "memberId": "Sprite/setRotationStyle", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setRotationStyle", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.RotationStyle" + ], + "parameterNames": [ + "style" + ], + "params": [ + "RotationStyle style" + ], + "summary": "Sets the rotation style for the sprite.", + "description": "Sets the rotation style for the sprite.", + "scratchblock": "set rotation style [left-right v]", + "paramDocs": [ + "style: the rotation style to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setRotationStyle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie sich die Figur beim Drehen verhält" + } + } + }, + { + "id": "Sprite/setSize(double)", + "memberId": "Sprite/setSize", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "percentage" + ], + "params": [ + "double percentage" + ], + "summary": "Sets the size of the sprite.", + "description": "Sets the size of the sprite.", + "scratchblock": "set size to (percentage) %", + "paramDocs": [ + "percentage: a percentage [0...100]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Größe in Prozent (100 = Originalgröße)" + } + } + }, + { + "id": "Sprite/setTint(Color)", + "memberId": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the tint for the sprite with an color object.", + "description": "Sets the tint for the sprite with an color object.", + "scratchblock": null, + "paramDocs": [ + "c: a color object" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt die Figur mit der angegebenen Farbe ein" + } + } + }, + { + "id": "Sprite/setTint(double,double,double)", + "memberId": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Sets the tint for the sprite with rgb.", + "description": "Sets the tint for the sprite with rgb.", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt die Figur mit der angegebenen Farbe ein (Anteile jeweils 0 bis 255)" + } + } + }, + { + "id": "Sprite/setTint(double)", + "memberId": "Sprite/setTint", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the tint for the sprite with a hue.", + "description": "Sets the tint for the sprite with a hue.", + "scratchblock": "set [color v] effect to (h)", + "paramDocs": [ + "h: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt die Figur mit dem angegebenen Farbton ein (0 bis 255)" + } + } + }, + { + "id": "Sprite/setTransparency(double)", + "memberId": "Sprite/setTransparency", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "transparency" + ], + "params": [ + "double transparency" + ], + "summary": "Sets how see-through the sprite is, as Scratch's ghost effect does: 0 is the\nsolid sprite you start with and 100 is invisible. Anything outside that is\npinned to it.", + "description": "Sets how see-through the sprite is, as Scratch's ghost effect does: 0 is the\nsolid sprite you start with and 100 is invisible. Anything outside that is\npinned to it.", + "scratchblock": "set [ghost v] effect to (transparency)", + "paramDocs": [ + "transparency: [0...100], 0 solid and 100 invisible" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Transparenz in Prozent (0 = deckend, 100 = unsichtbar)" + } + } + }, + { + "id": "Sprite/setVolume(double)", + "memberId": "Sprite/setVolume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "percent" + ], + "params": [ + "double percent" + ], + "summary": "Sets how loud every sound of this sprite plays.", + "description": "Sets how loud every sound of this sprite plays.", + "scratchblock": "set volume to (percent) %", + "paramDocs": [ + "percent: 0 for silent, 100 for full volume" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Lautstärke aller Klänge dieser Figur in Prozent" + } + } + }, + { + "id": "Sprite/setX(double)", + "memberId": "Sprite/setX", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Sets the x coordinate", + "description": "Sets the x coordinate", + "scratchblock": "set x to (x)", + "paramDocs": [ + "x: a x coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die x-Position" + } + } + }, + { + "id": "Sprite/setY(double)", + "memberId": "Sprite/setY", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "setY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Sets the y coordinate", + "description": "Sets the y coordinate", + "scratchblock": "set y to (y)", + "paramDocs": [ + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/setY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die y-Position" + } + } + }, + { + "id": "Sprite/show()", + "memberId": "Sprite/show", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "show", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Shows the sprite.", + "description": "Shows the sprite.", + "scratchblock": "show", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/show", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Macht die Figur sichtbar" + } + } + }, + { + "id": "Sprite/showVariable(String,Supplier)", + "memberId": "Sprite/showVariable", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "showVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.util.function.Supplier" + ], + "parameterNames": [ + "name", + "value" + ], + "params": [ + "String name", + "Supplier value" + ], + "summary": "Shows a monitor for one of this sprite's variables in the top left corner\nof the stage, like Scratch's variable monitors: \"Cat: score\" and the\ncurrent value, updated every frame. Showing the same name again replaces\nthe monitor; it goes away with the sprite.", + "description": "Shows a monitor for one of this sprite's variables in the top left corner\nof the stage, like Scratch's variable monitors: \"Cat: score\" and the\ncurrent value, updated every frame. Showing the same name again replaces\nthe monitor; it goes away with the sprite.\n\n```java\npublic Cat() {\n this.addCostume(\"cat\", \"bunny1_stand\");\n this.showVariable(\"lives\", () -> lives);\n}\n```", + "scratchblock": "show variable [name v]", + "paramDocs": [ + "name: the variable's name, shown after the sprite's", + "value: gives the value to show; asked for it every frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/showVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Sprite/stamp()", + "memberId": "Sprite/stamp", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stamp", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stamps the current sprite to the background. A stamp is a non interactive\nversion of the sprite.", + "description": "Stamps the current sprite to the background. A stamp is a non interactive\nversion of the sprite.", + "scratchblock": "stamp", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stamp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Druckt ein unbewegliches Abbild der Figur auf die Bühne" + } + } + }, + { + "id": "Sprite/stamp(Layer)", + "memberId": "Sprite/stamp", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stamp", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Layer" + ], + "parameterNames": [ + "layer" + ], + "params": [ + "Layer layer" + ], + "summary": "Stamps the sprite onto one of the stage's layers. A stamp is a picture of\nthe sprite that stays where it is put, and is not interactive.", + "description": "Stamps the sprite onto one of the stage's layers. A stamp is a picture of\nthe sprite that stays where it is put, and is not interactive.\n\nExample usage:\n\n```java\nthis.stamp(Layer.UI);\n```", + "scratchblock": null, + "paramDocs": [ + "layer: which layer to stamp onto" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stamp", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Druckt ein unbewegliches Abbild der Figur auf die angegebene Ebene" + } + } + }, + { + "id": "Sprite/stopAllSounds()", + "memberId": "Sprite/stopAllSounds", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stopAllSounds", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the playing of all sounds of the sprite.", + "description": "Stops the playing of all sounds of the sprite.", + "scratchblock": "stop all sounds", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stopAllSounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt alle Klänge dieser Figur" + } + } + }, + { + "id": "Sprite/stopSound(String)", + "memberId": "Sprite/stopSound", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "stopSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stops the playing of the sound with the given name", + "description": "Stops the playing of the sound with the given name", + "scratchblock": null, + "paramDocs": [ + "name: Name of the sound" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/stopSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt den Klang mit dem angegebenen Namen" + } + } + }, + { + "id": "Sprite/switchCostume(String)", + "memberId": "Sprite/switchCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "switchCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switch to a costume by name.", + "description": "Switch to a costume by name.", + "scratchblock": "switch costume to [name v]", + "paramDocs": [ + "name: the name of a costume" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/switchCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum Kostüm mit dem Namen" + } + } + }, + { + "id": "Sprite/switchCostume(double)", + "memberId": "Sprite/switchCostume", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "switchCostume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "index" + ], + "params": [ + "double index" + ], + "summary": "Switches the current costume of the sprite to the costume at the specified\nindex.", + "description": "Switches the current costume of the sprite to the costume at the specified\nindex.", + "scratchblock": "switch costume to (index)", + "paramDocs": [ + "index: The index of the costume to switch to." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/switchCostume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum Kostüm mit der angegebenen Nummer" + } + } + }, + { + "id": "Sprite/think(String)", + "memberId": "Sprite/think", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "think", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Displays a thought bubble with the specified text.", + "description": "Displays a thought bubble with the specified text.", + "scratchblock": "think [text]", + "paramDocs": [ + "text: The text to be displayed in the thought bubble." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/think", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Denkblase an" + } + } + }, + { + "id": "Sprite/think(String,int)", + "memberId": "Sprite/think", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "think", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays a thought bubble with the specified text for a given duration.", + "description": "Displays a thought bubble with the specified text for a given duration.", + "scratchblock": "think [text] for (millis) seconds", + "paramDocs": [ + "text: The text to be displayed in the thought bubble.", + "millis: The duration in milliseconds for which the thought bubble will\n be displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/think", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt eine Denkblase für die angegebene Zeit in Millisekunden" + } + } + }, + { + "id": "Sprite/turnLeft(double)", + "memberId": "Sprite/turnLeft", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "turnLeft", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Rotates the sprite by a certain degrees to the left.", + "description": "Rotates the sprite by a certain degrees to the left.", + "scratchblock": "turn left (degrees) degrees", + "paramDocs": [ + "degrees: between 0 and 360" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/turnLeft", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Dreht die Figur um die angegebene Gradzahl nach links" + } + } + }, + { + "id": "Sprite/turnRight(double)", + "memberId": "Sprite/turnRight", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "turnRight", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "degrees" + ], + "params": [ + "double degrees" + ], + "summary": "Rotates the sprite by a certain degrees to the right.", + "description": "Rotates the sprite by a certain degrees to the right.", + "scratchblock": "turn right (degrees) degrees", + "paramDocs": [ + "degrees: between 0 and 360" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/turnRight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Dreht die Figur um die angegebene Gradzahl nach rechts" + } + } + }, + { + "id": "Sprite/whenAddedToStage()", + "memberId": "Sprite/whenAddedToStage", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenAddedToStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the sprite is added to the stage. Override this\nmethod to define\ncustom behavior when the sprite is added to the stage.", + "description": "This method is called when the sprite is added to the stage. Override this\nmethod to define\ncustom behavior when the sprite is added to the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenAddedToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Figur der Bühne hinzugefügt wird" + } + } + }, + { + "id": "Sprite/whenBackdropSwitches(String)", + "memberId": "Sprite/whenBackdropSwitches", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenBackdropSwitches", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "This method is called when the backdrop switches to the specified name.\nOverride this method to\ndefine custom behavior.", + "description": "This method is called when the backdrop switches to the specified name.\nOverride this method to\ndefine custom behavior.", + "scratchblock": "when backdrop switches to [name v]", + "paramDocs": [ + "name: the name of the backdrop to switch to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenBackdropSwitches", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Hintergrund gewechselt wird" + } + } + }, + { + "id": "Sprite/whenClicked()", + "memberId": "Sprite/whenClicked", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenClicked", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the sprite is clicked. Override this method to\ndefine custom\nbehavior for the sprite when it is clicked.", + "description": "This method is called when the sprite is clicked. Override this method to\ndefine custom\nbehavior for the sprite when it is clicked.", + "scratchblock": "when this sprite clicked", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenClicked", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Figur angeklickt wird" + } + } + }, + { + "id": "Sprite/whenIReceive(String)", + "memberId": "Sprite/whenIReceive", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenIReceive", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "This method is called when a message is received. Override this method to\ndefine custom\nbehavior.", + "description": "This method is called when a message is received. Override this method to\ndefine custom\nbehavior.", + "scratchblock": "when I receive [message v]", + "paramDocs": [ + "message: The message that is received." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenIReceive", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Bühne eine Nachricht sendet" + } + } + }, + { + "id": "Sprite/whenKeyPressed(KeyCode)", + "memberId": "Sprite/whenKeyPressed", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenKeyPressed", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is pressed. Override this method to define\ncustom behavior.", + "description": "This method is called when a key is pressed. Override this method to define\ncustom behavior.", + "scratchblock": "when [space v] key pressed", + "paramDocs": [ + "keyCode: the key that was pressed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Drücken einer Taste aufgerufen" + } + } + }, + { + "id": "Sprite/whenKeyReleased(KeyCode)", + "memberId": "Sprite/whenKeyReleased", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenKeyReleased", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is released. Override this method to define\ncustom behavior.", + "description": "This method is called when a key is released. Override this method to define\ncustom behavior.", + "scratchblock": null, + "paramDocs": [ + "keyCode: the key that was released" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenKeyReleased", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Loslassen einer Taste aufgerufen" + } + } + }, + { + "id": "Sprite/whenMouseClicked(MouseCode)", + "memberId": "Sprite/whenMouseClicked", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenMouseClicked", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.MouseCode" + ], + "parameterNames": [ + "mouseCode" + ], + "params": [ + "MouseCode mouseCode" + ], + "summary": "This method is called when a mouse click event occurs. Override this method\nto define custom\nbehavior.", + "description": "This method is called when a mouse click event occurs. Override this method\nto define custom\nbehavior.", + "scratchblock": null, + "paramDocs": [ + "mouseCode: The code representing the mouse button that was clicked." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenMouseClicked", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei einem Mausklick aufgerufen, egal wo" + } + } + }, + { + "id": "Sprite/whenMouseMoved(double,double)", + "memberId": "Sprite/whenMouseMoved", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenMouseMoved", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "This method is called when the mouse is moved. Override this method to define\ncustom behavior.", + "description": "This method is called when the mouse is moved. Override this method to define\ncustom behavior.", + "scratchblock": null, + "paramDocs": [ + "x: The x-coordinate of the mouse pointer.", + "y: The y-coordinate of the mouse pointer." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenMouseMoved", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei jeder Mausbewegung aufgerufen; x und y sind Bühnenkoordinaten" + } + } + }, + { + "id": "Sprite/whenRemovedFromStage()", + "memberId": "Sprite/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenRemovedFromStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the sprite is removed from the stage. Override\nthis method to define\ncustom behavior when the sprite is removed.", + "description": "This method is called when the sprite is removed from the stage. Override\nthis method to define\ncustom behavior when the sprite is removed.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenRemovedFromStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn die Figur von der Bühne entfernt wird" + } + } + }, + { + "id": "Sprite/whenStartsAsClone()", + "memberId": "Sprite/whenStartsAsClone", + "owner": "org.openpatch.scratch.Sprite", + "className": "Sprite", + "methodName": "whenStartsAsClone", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Runs when this sprite was just made as a clone, like Scratch's \"when I\nstart as a clone\". Override it to give clones their own behaviour, for\nexample to send a bullet on its way.", + "description": "Runs when this sprite was just made as a clone, like Scratch's \"when I\nstart as a clone\". Override it to give clones their own behaviour, for\nexample to send a bullet on its way.\n\n```java\npublic void whenStartsAsClone() {\n this.show();\n this.goToRandomPosition();\n}\n```", + "scratchblock": "when I start as a clone", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Sprite/whenStartsAsClone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/add(Sprite)", + "memberId": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "add", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Adds a sprite to the stage. Sprites are drawn in the order they were added, so a sprite added\nlater is drawn on top of one added earlier.", + "description": "Adds a sprite to the stage. Sprites are drawn in the order they were added, so a sprite added\nlater is drawn on top of one added earlier.", + "scratchblock": null, + "paramDocs": [ + "sprite: the sprite to add" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt der Bühne eine Figur hinzu" + } + } + }, + { + "id": "Stage/add(Text)", + "memberId": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "add", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Text" + ], + "parameterNames": [ + "text" + ], + "params": [ + "Text text" + ], + "summary": "Add a text object to the stage", + "description": "Add a text object to the stage", + "scratchblock": null, + "paramDocs": [ + "text: a text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt der Bühne einen Text hinzu" + } + } + }, + { + "id": "Stage/add(Pen)", + "memberId": "Stage/add", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "add", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Pen" + ], + "parameterNames": [ + "pen" + ], + "params": [ + "Pen pen" + ], + "summary": "Adds a Pen object to the stage.", + "description": "Adds a Pen object to the stage.", + "scratchblock": null, + "paramDocs": [ + "pen: the Pen object to be added to the stage" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt der Bühne einen Stift hinzu" + } + } + }, + { + "id": "Stage/addBackdrop(String,String,boolean)", + "memberId": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "boolean" + ], + "parameterNames": [ + "name", + "imagePath", + "stretch" + ], + "params": [ + "String name", + "String imagePath", + "boolean stretch" + ], + "summary": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "description": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "imagePath: a image path, or the name of a built-in sprite such as\n \"bg_castle\"", + "stretch: stretch image to window size" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Hintergrund hinzu; bei stretch == true wird er auf Bühnengröße gedehnt" + } + } + }, + { + "id": "Stage/addBackdrop(String,String)", + "memberId": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "imagePath" + ], + "params": [ + "String name", + "String imagePath" + ], + "summary": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "description": "Add a backdrop to the stage. If a backdrop with the received name already\nexists do nothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "imagePath: a image path, or the name of a built-in sprite such as\n \"bg_castle\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Hintergrund unter eigenem Namen hinzu" + } + } + }, + { + "id": "Stage/addBackdrop(String)", + "memberId": "Stage/addBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the backdrops that ship with Scratch for Java to the stage. The\nbackdrop gets the same name as the built-in sprite. If a backdrop with that\nname already exists do nothing.", + "description": "Add one of the backdrops that ship with Scratch for Java to the stage. The\nbackdrop gets the same name as the built-in sprite. If a backdrop with that\nname already exists do nothing.\n\nExample usage:\n\n```java\nthis.addBackdrop(\"bg_castle\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sprite, for example \"bg_castle\". Add the\n sheet in front of the name, for example \"platformer/grass\", if\n the same name exists on several sheets." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen der eingebauten Hintergründe hinzu" + } + } + }, + { + "id": "Stage/addSound(String,String)", + "memberId": "Stage/addSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "soundPath" + ], + "params": [ + "String name", + "String soundPath" + ], + "summary": "Add a sound to the stage. If a sound with the received name already exists do\nnothing.", + "description": "Add a sound to the stage. If a sound with the received name already exists do\nnothing.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "soundPath: a sound path, or the name of a built-in sound such as\n \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen Klang unter eigenem Namen hinzu" + } + } + }, + { + "id": "Stage/addSound(String)", + "memberId": "Stage/addSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "addSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Add one of the sounds that ship with Scratch for Java to the stage. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.", + "description": "Add one of the sounds that ship with Scratch for Java to the stage. The\nsound gets the same name as the built-in sound. If a sound with that name\nalready exists do nothing.\n\nExample usage:\n\n```java\nthis.addSound(\"footstep_carpet_000\");\n```", + "scratchblock": null, + "paramDocs": [ + "name: the name of a built-in sound, for example \"footstep_carpet_000\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/addSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt einen der eingebauten Klänge hinzu" + } + } + }, + { + "id": "Stage/ask(String)", + "memberId": "Stage/ask", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "ask", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "question" + ], + "params": [ + "String question" + ], + "summary": "Asks a question and waits for an answer to be typed in. A box appears at the\nbottom of the stage; whatever is typed goes into it until Enter is pressed.", + "description": "Asks a question and waits for an answer to be typed in. A box appears at the\nbottom of the stage; whatever is typed goes into it until Enter is pressed.\n\nUnlike Scratch, this does not pause anything. Your `run()` keeps being\ncalled while the question is on screen, so check [isAsking()](isAsking) or wait\nfor [getAnswer()](getAnswer) to change:\n\n```java\npublic void run() {\n if (!this.isAsking() && this.getAnswer().isEmpty()) {\n this.ask(\"What is your name?\");\n }\n if (!this.getAnswer().isEmpty()) {\n this.display(\"Hello \" + this.getAnswer() + \"!\");\n }\n}\n```", + "scratchblock": "ask [question] and wait", + "paramDocs": [ + "question: the question to show" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/ask", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stellt eine Frage; die Antwort wird über getAnswer() abgeholt" + } + } + }, + { + "id": "Stage/broadcast(String)", + "memberId": "Stage/broadcast", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "broadcast", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "Broadcasts a message to every sprite on the stage and to the stage itself,\nas in Scratch. Each of them runs its `whenIReceive` method with the\nmessage.", + "description": "Broadcasts a message to every sprite on the stage and to the stage itself,\nas in Scratch. Each of them runs its `whenIReceive` method with the\nmessage.", + "scratchblock": "broadcast [message v]", + "paramDocs": [ + "message: The message to broadcast." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/broadcast", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Sendet eine Nachricht an alle whenIReceive-Empfänger" + } + } + }, + { + "id": "Stage/changeColor(double)", + "memberId": "Stage/changeColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Changes the background color by adding a step to the hue value.", + "description": "Changes the background color by adding a step to the hue value.", + "scratchblock": null, + "paramDocs": [ + "h: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton des Hintergrunds um den angegebenen Wert" + } + } + }, + { + "id": "Stage/changeTint(double)", + "memberId": "Stage/changeTint", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes the colour the backdrop is tinted with by a step.", + "description": "Changes the colour the backdrop is tinted with by a step.", + "scratchblock": "change [color v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert den Farbton der Einfärbung um den angegebenen Wert" + } + } + }, + { + "id": "Stage/changeTransparency(double)", + "memberId": "Stage/changeTransparency", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Changes how see-through the backdrop is by a step. A positive step fades it\nout, a negative one brings it back.", + "description": "Changes how see-through the backdrop is by a step. A positive step fades it\nout, a negative one brings it back.", + "scratchblock": "change [ghost v] effect by (step)", + "paramDocs": [ + "step: a step value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Transparenz des Hintergrunds" + } + } + }, + { + "id": "Stage/changeVolume(double)", + "memberId": "Stage/changeVolume", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "changeVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "step" + ], + "params": [ + "double step" + ], + "summary": "Makes every sound of this stage louder or quieter.", + "description": "Makes every sound of this stage louder or quieter.", + "scratchblock": "change volume by (step)", + "paramDocs": [ + "step: how much to add to the volume, in percent" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/changeVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Lautstärke um den angegebenen Wert" + } + } + }, + { + "id": "Stage/constructor()", + "memberId": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "constructor", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Stage with default dimensions. The default width is 480\npixels and the default\nheight is 360 pixels.", + "description": "Constructs a new Stage with default dimensions. The default width is 480\npixels and the default\nheight is 360 pixels.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Bühne der Größe 480 x 360" + } + } + }, + { + "id": "Stage/constructor(int,int)", + "memberId": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "constructor", + "static": false, + "returnType": "Stage", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "width", + "height" + ], + "params": [ + "int width", + "int height" + ], + "summary": "Constructs a new Stage with the specified width and height.", + "description": "Constructs a new Stage with the specified width and height.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the stage", + "height: the height of the stage" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/constructor(int,int,String)", + "memberId": "Stage/constructor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "constructor", + "static": false, + "returnType": "Stage", + "parameterTypes": [ + "int", + "int", + "java.lang.String" + ], + "parameterNames": [ + "width", + "height", + "assets" + ], + "params": [ + "int width", + "int height", + "String assets" + ], + "summary": "Constructs a new Stage with the specified width, height, and assets path.", + "description": "Constructs a new Stage with the specified width, height, and assets path.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the stage", + "height: the height of the stage", + "assets: the path to the assets directory" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Bühne der angegebenen Größe. Der Asset-Pfad wird im Browser ignoriert" + } + } + }, + { + "id": "Stage/count(Class)", + "memberId": "Stage/count", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "count", + "static": false, + "returnType": "int", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Returns the number of sprites of the specified class.", + "description": "Returns the number of sprites of the specified class.", + "scratchblock": null, + "paramDocs": [ + "c: the class of the sprites to count" + ], + "returns": "the number of sprites of the specified class", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/count", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Anzahl der Figuren dieser Klasse zurück, z.B. count(Apfel.class)" + } + } + }, + { + "id": "Stage/debug(Object[])", + "memberId": "Stage/debug", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "debug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Object[]" + ], + "parameterNames": [ + "values" + ], + "params": [ + "Object[] values" + ], + "summary": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the stage's class name so you can tell\nwhich stage it came from.", + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the stage's class name so you can tell\nwhich stage it came from.\n\nExample:\n\n```java\nthis.debug(\"score =\", score, \"lives =\", lives);\n// prints: [MyStage] score = 5 lives = 3\n```", + "scratchblock": null, + "paramDocs": [ + "values: one or more values to print" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/debug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/display(String)", + "memberId": "Stage/display", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "display", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Displays the given text on the stage.", + "description": "Displays the given text on the stage.", + "scratchblock": null, + "paramDocs": [ + "text: the text to be displayed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/display", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt einen Text am unteren Rand der Bühne an" + } + } + }, + { + "id": "Stage/display(String,int)", + "memberId": "Stage/display", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "display", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays the given text on the screen for a specified duration.", + "description": "Displays the given text on the screen for a specified duration.", + "scratchblock": null, + "paramDocs": [ + "text: The text to be displayed.", + "millis: The duration in milliseconds for which the text will be\n displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/display", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt einen Text für die angegebene Zeit in Millisekunden an" + } + } + }, + { + "id": "Stage/eraseAll()", + "memberId": "Stage/eraseAll", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "eraseAll", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Erases all lines on the pen layer.", + "description": "Erases all lines on the pen layer.", + "scratchblock": "erase all", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/eraseAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Löscht alles, was mit Stiften gezeichnet wurde" + } + } + }, + { + "id": "Stage/exit()", + "memberId": "Stage/exit", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "exit", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Close the window and therefore the whole application.", + "description": "Close the window and therefore the whole application.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/exit", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Beendet das Programm" + } + } + }, + { + "id": "Stage/find(Class)", + "memberId": "Stage/find", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "find", + "static": false, + "returnType": "List", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Find sprites of a given class.", + "description": "Find sprites of a given class.", + "scratchblock": null, + "paramDocs": [ + "c: Class" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/find", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle Figuren dieser Klasse zurück, z.B. find(Apfel.class)" + } + } + }, + { + "id": "Stage/getAll()", + "memberId": "Stage/getAll", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getAll", + "static": false, + "returnType": "List", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves a list of all sprites in the current stage.", + "description": "Retrieves a list of all sprites in the current stage.", + "scratchblock": null, + "paramDocs": [], + "returns": "a list containing all sp", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle Figuren auf der Bühne zurück" + } + } + }, + { + "id": "Stage/getAnswer()", + "memberId": "Stage/getAnswer", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getAnswer", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the last answer that was typed in.", + "description": "Returns the last answer that was typed in.", + "scratchblock": "(answer)", + "paramDocs": [], + "returns": "the answer, or an empty string if nothing has been answered yet", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getAnswer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die zuletzt eingegebene Antwort zurück, sonst eine leere Zeichenkette" + } + } + }, + { + "id": "Stage/getCamera()", + "memberId": "Stage/getCamera", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getCamera", + "static": false, + "returnType": "Camera", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current camera instance associated with this stage.", + "description": "Retrieves the current camera instance associated with this stage.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current Camera object.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getCamera", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Kamera der Bühne zurück" + } + } + }, + { + "id": "Stage/getColor()", + "memberId": "Stage/getColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getColor", + "static": false, + "returnType": "Color", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current color of the stage.", + "description": "Returns the current color of the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current color", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Hintergrundfarbe zurück" + } + } + }, + { + "id": "Stage/getCurrentBackdropIndex()", + "memberId": "Stage/getCurrentBackdropIndex", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getCurrentBackdropIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current backdrop index", + "description": "Returns the current backdrop index", + "scratchblock": "(backdrop [number v])", + "paramDocs": [], + "returns": "a backdrop index", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getCurrentBackdropIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer des aktuellen Hintergrunds zurück" + } + } + }, + { + "id": "Stage/getCurrentBackdropName()", + "memberId": "Stage/getCurrentBackdropName", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getCurrentBackdropName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current backdrop name", + "description": "Returns the current backdrop name", + "scratchblock": "(backdrop [name v])", + "paramDocs": [], + "returns": "a backdrop name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getCurrentBackdropName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen des aktuellen Hintergrunds zurück" + } + } + }, + { + "id": "Stage/getDeltaTime()", + "memberId": "Stage/getDeltaTime", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getDeltaTime", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the seconds passed since the last frame.", + "description": "Gets the seconds passed since the last frame.", + "scratchblock": null, + "paramDocs": [], + "returns": "secons since last frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getDeltaTime", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + } + }, + { + "id": "Stage/getFrameRate()", + "memberId": "Stage/getFrameRate", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getFrameRate", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Get the frame rate of the application.", + "description": "Get the frame rate of the application.", + "scratchblock": null, + "paramDocs": [], + "returns": "the frame rate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getFrameRate", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die aktuelle Bildrate zurück" + } + } + }, + { + "id": "Stage/getHeight()", + "memberId": "Stage/getHeight", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getHeight", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the height of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the height of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Höhe der Bühne in Pixeln zurück" + } + } + }, + { + "id": "Stage/getMouse()", + "memberId": "Stage/getMouse", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getMouse", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current position of the mouse cursor as a Vector2", + "description": "Returns the current position of the mouse cursor as a Vector2", + "scratchblock": null, + "paramDocs": [], + "returns": "mouse position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getMouse", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position des Mauszeigers zurück" + } + } + }, + { + "id": "Stage/getMouseX()", + "memberId": "Stage/getMouseX", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getMouseX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current x-position of the mouse cursor", + "description": "Returns the current x-position of the mouse cursor", + "scratchblock": "(mouse x)", + "paramDocs": [], + "returns": "x-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getMouseX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Stage/getMouseY()", + "memberId": "Stage/getMouseY", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getMouseY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the current y-position of the mouse cursor", + "description": "Returns the current y-position of the mouse cursor", + "scratchblock": "(mouse y)", + "paramDocs": [], + "returns": "y-position", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getMouseY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position des Mauszeigers zurück" + } + } + }, + { + "id": "Stage/getPixels()", + "memberId": "Stage/getPixels", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getPixels", + "static": false, + "returnType": "Pixels", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the colours of everything this stage has drawn.", + "description": "Returns the colours of everything this stage has drawn.\n\nExample usage:\n\n```java\nint[] colours = this.getPixels().main();\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the pixels", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getPixels", + "availability": "desktop-only", + "availabilityReason": "The desktop pixel buffer is not exposed by the browser renderer.", + "translations": { + "de": { + "description": "Nur in der Desktop-Version: Zugriff auf einzelne Bildpunkte" + } + } + }, + { + "id": "Stage/getShaders()", + "memberId": "Stage/getShaders", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getShaders", + "static": false, + "returnType": "Shaders", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shaders of this stage. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.", + "description": "Returns the shaders of this stage. Shader handling lives behind this one\nmethod so that it does not crowd the everyday API.\n\nExample usage:\n\n```java\nthis.getShaders().add(\"blur\", \"blur.frag\", null);\nthis.getShaders().switchTo(\"blur\");\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the shaders", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getShaders", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Shader der Bühne zurück; sie verändern das ganze Bild ohne die UI" + } + } + }, + { + "id": "Stage/getSorting()", + "memberId": "Stage/getSorting", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getSorting", + "static": false, + "returnType": "Sorting", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the order in which the sprites of this stage are drawn.", + "description": "Returns the order in which the sprites of this stage are drawn.\n\nExample usage:\n\n```java\nthis.getSorting().byY();\n```", + "scratchblock": null, + "paramDocs": [], + "returns": "the sorting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getSorting", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Sortierung der Bühne zurück. Mit getSorting().byY() werden Figuren weiter unten vor denen weiter oben gezeichnet." + } + } + }, + { + "id": "Stage/getTimer()", + "memberId": "Stage/getTimer", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the timer", + "description": "Returns the timer", + "scratchblock": "(timer)", + "paramDocs": [], + "returns": "the timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Standard-Timer der Bühne zurück" + } + } + }, + { + "id": "Stage/getTimer(String)", + "memberId": "Stage/getTimer", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getTimer", + "static": false, + "returnType": "Timer", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns a timer by name", + "description": "Returns a timer by name", + "scratchblock": null, + "paramDocs": [ + "name: a name" + ], + "returns": "the timer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getTimer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Timer mit dem angegebenen Namen zurück und legt ihn bei Bedarf an" + } + } + }, + { + "id": "Stage/getVolume()", + "memberId": "Stage/getVolume", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getVolume", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns how loud the sounds of this stage play.", + "description": "Returns how loud the sounds of this stage play.", + "scratchblock": "(volume)", + "paramDocs": [], + "returns": "the volume, from 0 to 100", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Lautstärke in Prozent zurück" + } + } + }, + { + "id": "Stage/getWidth()", + "memberId": "Stage/getWidth", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "getWidth", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "description": "Return the width of the current costume or the pen size, when no costume is\navailable.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the sprite", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite der Bühne in Pixeln zurück" + } + } + }, + { + "id": "Stage/hideVariable(String)", + "memberId": "Stage/hideVariable", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "hideVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "description": "Hides the monitor of a variable that [showVariable(String,\njava.util.function.Supplier)](showVariable(String,\njava.util.function.Supplier)) showed.", + "scratchblock": "hide variable [name v]", + "paramDocs": [ + "name: the name the monitor was shown with" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/hideVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Stage/isAsking()", + "memberId": "Stage/isAsking", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isAsking", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether a question is on screen and still waiting for an answer.", + "description": "Checks whether a question is on screen and still waiting for an answer.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while a question is waiting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isAsking", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn noch auf eine Antwort gewartet wird" + } + } + }, + { + "id": "Stage/isDebug()", + "memberId": "Stage/isDebug", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isDebug", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the application is in debug mode.", + "description": "Checks if the application is in debug mode.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the application is in debug mode, false otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Fehlersuche eingeschaltet ist" + } + } + }, + { + "id": "Stage/isKeyPressed(KeyCode)", + "memberId": "Stage/isKeyPressed", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isKeyPressed", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "Returns true if the key is pressed", + "description": "Returns true if the key is pressed", + "scratchblock": "<key [space v] pressed?>", + "paramDocs": [ + "keyCode: a key" + ], + "returns": "key pressed", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Taste gerade gedrückt ist" + } + } + }, + { + "id": "Stage/isMouseDown()", + "memberId": "Stage/isMouseDown", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isMouseDown", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns true is the mouse button is down", + "description": "Returns true is the mouse button is down", + "scratchblock": "<mouse down?>", + "paramDocs": [], + "returns": "mouse button down", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isMouseDown", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn eine Maustaste gedrückt ist" + } + } + }, + { + "id": "Stage/isSoundPlaying(String)", + "memberId": "Stage/isSoundPlaying", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "isSoundPlaying", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns true if the sound if playing", + "description": "Returns true if the sound if playing", + "scratchblock": null, + "paramDocs": [ + "name: " + ], + "returns": "playing", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/isSoundPlaying", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Klang gerade abgespielt wird" + } + } + }, + { + "id": "Stage/nextBackdrop()", + "memberId": "Stage/nextBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "nextBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the next backdrop.", + "description": "Switch to the next backdrop.", + "scratchblock": "next backdrop", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/nextBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum nächsten Hintergrund" + } + } + }, + { + "id": "Stage/pickRandom(int,int)", + "memberId": "Stage/pickRandom", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "pickRandom", + "static": false, + "returnType": "int", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "from", + "to" + ], + "params": [ + "int from", + "int to" + ], + "summary": "Returns a random integer between the specified range (inclusive).", + "description": "Returns a random integer between the specified range (inclusive).", + "scratchblock": "(pick random (from) to (to))", + "paramDocs": [ + "from: the lower bound of the range (inclusive)", + "to: the upper bound of the range (inclusive)" + ], + "returns": "a random integer between `from` and `to` (inclusive)", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/pickRandom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Zufallszahl zwischen from und to zurück (beide eingeschlossen)" + } + } + }, + { + "id": "Stage/playSound(String)", + "memberId": "Stage/playSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "playSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Plays a sound.", + "description": "Plays a sound.", + "scratchblock": "start sound [name v]", + "paramDocs": [ + "name: the sound name" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/playSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Spielt einen zuvor hinzugefügten Klang ab" + } + } + }, + { + "id": "Stage/previousBackdrop()", + "memberId": "Stage/previousBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "previousBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to the previous backdrop.", + "description": "Switch to the previous backdrop.", + "scratchblock": "switch backdrop to [previous backdrop v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/previousBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum vorherigen Hintergrund" + } + } + }, + { + "id": "Stage/randomBackdrop()", + "memberId": "Stage/randomBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "randomBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switch to a random backdrop.", + "description": "Switch to a random backdrop.", + "scratchblock": "switch backdrop to [random backdrop v]", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/randomBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zu einem zufälligen Hintergrund" + } + } + }, + { + "id": "Stage/remove(Sprite)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "sprite" + ], + "params": [ + "Sprite sprite" + ], + "summary": "Removes the specified sprite from the stage.", + "description": "Removes the specified sprite from the stage.", + "scratchblock": null, + "paramDocs": [ + "sprite: the sprite to be removed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt die Figur von der Bühne" + } + } + }, + { + "id": "Stage/remove(Pen)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Pen" + ], + "parameterNames": [ + "pen" + ], + "params": [ + "Pen pen" + ], + "summary": "Removes the specified pen from the stage.", + "description": "Removes the specified pen from the stage.", + "scratchblock": null, + "paramDocs": [ + "pen: the pen to be removed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt den Stift von der Bühne" + } + } + }, + { + "id": "Stage/remove(Text)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Text" + ], + "parameterNames": [ + "text" + ], + "params": [ + "Text text" + ], + "summary": "Removes the specified text from the stage.", + "description": "Removes the specified text from the stage.", + "scratchblock": null, + "paramDocs": [ + "text: the text to be removed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt den Text von der Bühne" + } + } + }, + { + "id": "Stage/remove(Class)", + "memberId": "Stage/remove", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Class" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Class c" + ], + "summary": "Removes all sprites of the specified class from the stage.", + "description": "Removes all sprites of the specified class from the stage.", + "scratchblock": null, + "paramDocs": [ + "c: the class of the sprites to remove" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt alle Figuren dieser Klasse von der Bühne, z.B. remove(Apfel.class)" + } + } + }, + { + "id": "Stage/removeAll()", + "memberId": "Stage/removeAll", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "removeAll", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes all elements from the stage.", + "description": "Removes all elements from the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/removeAll", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt alle Figuren von der Bühne" + } + } + }, + { + "id": "Stage/run()", + "memberId": "Stage/run", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "run", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Executes the main logic of the stage. This method should be overridden by\nsubclasses to define\nthe specific behavior of the stage.", + "description": "Executes the main logic of the stage. This method should be overridden by\nsubclasses to define\nthe specific behavior of the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/run", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird in jedem Frame aufgerufen" + } + } + }, + { + "id": "Stage/setColor(double)", + "memberId": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the background color via a hue value", + "description": "Sets the background color via a hue value", + "scratchblock": null, + "paramDocs": [ + "h: a hue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Stage/setColor(double,double,double)", + "memberId": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Sets the background color via a rgb value", + "description": "Sets the background color via a rgb value", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Stage/setColor(Color)", + "memberId": "Stage/setColor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the color of the stage.", + "description": "Sets the color of the stage.", + "scratchblock": null, + "paramDocs": [ + "c: the new color to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe" + } + } + }, + { + "id": "Stage/setCursor(String)", + "memberId": "Stage/setCursor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setCursor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Sets the cursor image for the stage.", + "description": "Sets the cursor image for the stage.", + "scratchblock": null, + "paramDocs": [ + "path: a path to an image file, or the name of a built-in sprite" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setCursor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt das Mauszeigerbild" + } + } + }, + { + "id": "Stage/setCursor(String,int,int)", + "memberId": "Stage/setCursor", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setCursor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int", + "int" + ], + "parameterNames": [ + "path", + "x", + "y" + ], + "params": [ + "String path", + "int x", + "int y" + ], + "summary": "Sets the cursor image and its active spot coordinates.", + "description": "Sets the cursor image and its active spot coordinates.", + "scratchblock": null, + "paramDocs": [ + "path: a path to an image file, or the name of a built-in sprite", + "x: the x-coordinate of the cursor's active spot", + "y: the y-coordinate of the cursor's active spot" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setCursor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt das Mauszeigerbild mit eigenem Aktivpunkt" + } + } + }, + { + "id": "Stage/setDebug(boolean)", + "memberId": "Stage/setDebug", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setDebug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "debug" + ], + "params": [ + "boolean debug" + ], + "summary": "Enables or disables the debug mode for the application.", + "description": "Enables or disables the debug mode for the application.", + "scratchblock": null, + "paramDocs": [ + "debug: a boolean value where `true` enables debug mode and\n `false` disables\n it." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Ausgabe von debug() ein oder aus" + } + } + }, + { + "id": "Stage/setTint(double,double,double)", + "memberId": "Stage/setTint", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double", + "double" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "double r", + "double g", + "double b" + ], + "summary": "Sets the colour the backdrop is tinted with.", + "description": "Sets the colour the backdrop is tinted with.", + "scratchblock": null, + "paramDocs": [ + "r: a red value [0...255]", + "g: a green value [0...255]", + "b: a blue value [0...255]" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt den Hintergrund ein (Anteile jeweils 0 bis 255)" + } + } + }, + { + "id": "Stage/setTint(double)", + "memberId": "Stage/setTint", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setTint", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the colour the backdrop is tinted with, as a hue.", + "description": "Sets the colour the backdrop is tinted with, as a hue.", + "scratchblock": "set [color v] effect to (h)", + "paramDocs": [ + "h: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setTint", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Färbt den Hintergrund mit dem angegebenen Farbton ein (0 bis 255)" + } + } + }, + { + "id": "Stage/setTransparency(double)", + "memberId": "Stage/setTransparency", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setTransparency", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "transparency" + ], + "params": [ + "double transparency" + ], + "summary": "Sets how see-through the backdrop is, as Scratch's ghost effect does: 0 is\nthe solid backdrop you start with and 100 is invisible.", + "description": "Sets how see-through the backdrop is, as Scratch's ghost effect does: 0 is\nthe solid backdrop you start with and 100 is invisible.", + "scratchblock": "set [ghost v] effect to (transparency)", + "paramDocs": [ + "transparency: [0...100], 0 solid and 100 invisible" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setTransparency", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Transparenz des Hintergrunds in Prozent" + } + } + }, + { + "id": "Stage/setVolume(double)", + "memberId": "Stage/setVolume", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "setVolume", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "percent" + ], + "params": [ + "double percent" + ], + "summary": "Sets how loud every sound of this stage plays.", + "description": "Sets how loud every sound of this stage plays.", + "scratchblock": "set volume to (percent) %", + "paramDocs": [ + "percent: 0 for silent, 100 for full volume" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/setVolume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Lautstärke in Prozent" + } + } + }, + { + "id": "Stage/showVariable(String,Supplier)", + "memberId": "Stage/showVariable", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "showVariable", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.util.function.Supplier" + ], + "parameterNames": [ + "name", + "value" + ], + "params": [ + "String name", + "Supplier value" + ], + "summary": "Shows a monitor for a variable in the top left corner of the stage, like\nScratch's variable monitors: the name and the current value, updated every\nframe. Showing the same name again replaces the monitor.", + "description": "Shows a monitor for a variable in the top left corner of the stage, like\nScratch's variable monitors: the name and the current value, updated every\nframe. Showing the same name again replaces the monitor.\n\n```java\nthis.showVariable(\"score\", () -> score);\n```", + "scratchblock": "show variable [name v]", + "paramDocs": [ + "name: what the monitor says", + "value: gives the value to show; asked for it every frame" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/showVariable", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Bühne mit der angegebenen Breite und Höhe" + } + } + }, + { + "id": "Stage/stopAllSounds()", + "memberId": "Stage/stopAllSounds", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "stopAllSounds", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the playing of all sounds of the stage.", + "description": "Stops the playing of all sounds of the stage.", + "scratchblock": "stop all sounds", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/stopAllSounds", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt alle Klänge der Bühne" + } + } + }, + { + "id": "Stage/stopSound(String)", + "memberId": "Stage/stopSound", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "stopSound", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stops the playing of the sound with the given name", + "description": "Stops the playing of the sound with the given name", + "scratchblock": null, + "paramDocs": [ + "name: Name of the sound" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/stopSound", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Stoppt den Klang mit dem angegebenen Namen" + } + } + }, + { + "id": "Stage/switchBackdrop(String)", + "memberId": "Stage/switchBackdrop", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "switchBackdrop", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switch to a backdrop by name.", + "description": "Switch to a backdrop by name.", + "scratchblock": "switch backdrop to [name v]", + "paramDocs": [ + "name: the name of a backdrop" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/switchBackdrop", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zum Hintergrund mit dem angegebenen Namen" + } + } + }, + { + "id": "Stage/wait(int)", + "memberId": "Stage/wait", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "wait", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Stop the execution of the whole applications for the given milliseconds.", + "description": "Stop the execution of the whole applications for the given milliseconds.", + "scratchblock": "wait (millis) seconds", + "paramDocs": [ + "millis: Milliseconds" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/wait", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Pausiert das Programm für die angegebene Zeit in Millisekunden" + } + } + }, + { + "id": "Stage/waitUntil(BooleanSupplier)", + "memberId": "Stage/waitUntil", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "waitUntil", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.util.function.BooleanSupplier" + ], + "parameterNames": [ + "condition" + ], + "params": [ + "BooleanSupplier condition" + ], + "summary": "Waits until something becomes true, then carries on.", + "description": "Waits until something becomes true, then carries on.\n\nLike [wait(int)](wait) this holds up the code that calls it, not the whole\nprogram: sprites keep running and the stage keeps drawing while it waits.\nThat makes it useful for setting a scene up in a constructor, and a bad idea\ninside `run()`, which is called once per frame and should return quickly.\n\n```java\nthis.ask(\"What is your name?\");\nthis.waitUntil(() -> !this.isAsking());\nthis.display(\"Hello \" + this.getAnswer() + \"!\");\n```", + "scratchblock": "wait until <condition>", + "paramDocs": [ + "condition: checked over and over until it is true" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/waitUntil", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wartet, bis die Bedingung erfüllt ist" + } + } + }, + { + "id": "Stage/whenBackdropSwitches(String)", + "memberId": "Stage/whenBackdropSwitches", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenBackdropSwitches", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "This method is called when the backdrop switches to the specified name.\nOverride this method to\nadd custom behavior.", + "description": "This method is called when the backdrop switches to the specified name.\nOverride this method to\nadd custom behavior.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the backdrop to switch to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenBackdropSwitches", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Wechsel des Hintergrunds aufgerufen" + } + } + }, + { + "id": "Stage/whenIReceive(String)", + "memberId": "Stage/whenIReceive", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenIReceive", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "message" + ], + "params": [ + "String message" + ], + "summary": "This method is called when a specific message is received. Override this\nmethod to add custom\nbehavior.", + "description": "This method is called when a specific message is received. Override this\nmethod to add custom\nbehavior.", + "scratchblock": "when I receive [message v]", + "paramDocs": [ + "message: The message that triggers this method." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenIReceive", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei broadcast(message) aufgerufen" + } + } + }, + { + "id": "Stage/whenKeyPressed(KeyCode)", + "memberId": "Stage/whenKeyPressed", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenKeyPressed", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is pressed. Override this method to add\ncustom behavior.", + "description": "This method is called when a key is pressed. Override this method to add\ncustom behavior.", + "scratchblock": "when [space v] key pressed", + "paramDocs": [ + "keyCode: the key that was pressed" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenKeyPressed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Drücken der Taste aufgerufen" + } + } + }, + { + "id": "Stage/whenKeyReleased(KeyCode)", + "memberId": "Stage/whenKeyReleased", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenKeyReleased", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.KeyCode" + ], + "parameterNames": [ + "keyCode" + ], + "params": [ + "KeyCode keyCode" + ], + "summary": "This method is called when a key is released. Override this method to add\ncustom behavior.", + "description": "This method is called when a key is released. Override this method to add\ncustom behavior.", + "scratchblock": null, + "paramDocs": [ + "keyCode: the key that was released" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenKeyReleased", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Loslassen der Taste aufgerufen" + } + } + }, + { + "id": "Stage/whenMouseClicked(MouseCode)", + "memberId": "Stage/whenMouseClicked", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenMouseClicked", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.MouseCode" + ], + "parameterNames": [ + "mouseEvent" + ], + "params": [ + "MouseCode mouseEvent" + ], + "summary": "This method is called when a mouse click event occurs. Overwrite this method\nto add custom\nbehavior.", + "description": "This method is called when a mouse click event occurs. Overwrite this method\nto add custom\nbehavior.", + "scratchblock": "when stage clicked", + "paramDocs": [ + "mouseEvent: The mouse event that triggered this method." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenMouseClicked", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird bei einem Mausklick aufgerufen" + } + } + }, + { + "id": "Stage/whenMouseWheelMoved(int)", + "memberId": "Stage/whenMouseWheelMoved", + "owner": "org.openpatch.scratch.Stage", + "className": "Stage", + "methodName": "whenMouseWheelMoved", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "steps" + ], + "params": [ + "int steps" + ], + "summary": "This method is called when the mouse wheel is moved. Overwrite this method to\nadd custom\nbehavior.", + "description": "This method is called when the mouse wheel is moved. Overwrite this method to\nadd custom\nbehavior.", + "scratchblock": null, + "paramDocs": [ + "steps: the number of steps the mouse wheel has moved. Positive values\n indicate movement\n away from the user, while negative values indicate movement\n towards the user." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Stage/whenMouseWheelMoved", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Drehen des Mausrads aufgerufen" + } + } + }, + { + "id": "Text/addFont(String,String)", + "memberId": "Text/addFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "addFont", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "path" + ], + "params": [ + "String name", + "String path" + ], + "summary": "Adds a new font to the list of fonts if it does not already exist.", + "description": "Adds a new font to the list of fonts if it does not already exist.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the font to be added", + "path: the path to the font file" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/addFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Fügt eine Schriftart hinzu" + } + } + }, + { + "id": "Text/constructor()", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Text object with default values. The text is initialized to an empty string,\npositioned at (0, 0), with a default size of 0. The text style is set to plain and the text\nis centred on its position, as every text is. Call [setAlign(TextAlign)](setAlign) for anything\nelse.", + "description": "Constructs a new Text object with default values. The text is initialized to an empty string,\npositioned at (0, 0), with a default size of 0. The text style is set to plain and the text\nis centred on its position, as every text is. Call [setAlign(TextAlign)](setAlign) for anything\nelse.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen leeren Text in der Mitte der Bühne" + } + } + }, + { + "id": "Text/constructor(Sprite)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "org.openpatch.scratch.Sprite" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Sprite s" + ], + "summary": "Constructs a new Text object associated with a given Sprite.", + "description": "Constructs a new Text object associated with a given Sprite.", + "scratchblock": null, + "paramDocs": [ + "s: the Sprite to associate with this Text object" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Text an der angegebenen Position mit der angegebenen Breite" + } + } + }, + { + "id": "Text/constructor(String,double,double,double)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "java.lang.String", + "double", + "double", + "double" + ], + "parameterNames": [ + "text", + "x", + "y", + "width" + ], + "params": [ + "String text", + "double x", + "double y", + "double width" + ], + "summary": "Constructs a new Text object with the specified text, position, and width.", + "description": "Constructs a new Text object with the specified text, position, and width.", + "scratchblock": null, + "paramDocs": [ + "text: the text to be displayed", + "x: the x-coordinate of the text's position", + "y: the y-coordinate of the text's position", + "width: the width of the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Text/constructor(String,double,double,double,TextStyle)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "java.lang.String", + "double", + "double", + "double", + "org.openpatch.scratch.TextStyle" + ], + "parameterNames": [ + "text", + "x", + "y", + "width", + "style" + ], + "params": [ + "String text", + "double x", + "double y", + "double width", + "TextStyle style" + ], + "summary": "Constructs a new Text object with the specified text, position, width, and style.", + "description": "Constructs a new Text object with the specified text, position, width, and style.", + "scratchblock": null, + "paramDocs": [ + "text: the text content to be displayed", + "x: the x-coordinate of the text's position", + "y: the y-coordinate of the text's position", + "width: the width of the text area", + "style: the style to be applied to the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Text an der angegebenen Position, mit der angegebenen Breite und im angegebenen Stil" + } + } + }, + { + "id": "Text/constructor(Text)", + "memberId": "Text/constructor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "constructor", + "static": false, + "returnType": "Text", + "parameterTypes": [ + "org.openpatch.scratch.Text" + ], + "parameterNames": [ + "t" + ], + "params": [ + "Text t" + ], + "summary": "Copy constructor for the Text class. Creates a new Text object by copying the properties of the\ngiven Text object.", + "description": "Copy constructor for the Text class. Creates a new Text object by copying the properties of the\ngiven Text object.", + "scratchblock": null, + "paramDocs": [ + "t: the Text object to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Text/getAlign()", + "memberId": "Text/getAlign", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getAlign", + "static": false, + "returnType": "TextAlign", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns where the text sits relative to its position.", + "description": "Returns where the text sits relative to its position.", + "scratchblock": null, + "paramDocs": [], + "returns": "the alignment", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getAlign", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Ausrichtung des Texts zurück" + } + } + }, + { + "id": "Text/getCurrentFontIndex()", + "memberId": "Text/getCurrentFontIndex", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getCurrentFontIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the index of the current font.", + "description": "Returns the index of the current font.", + "scratchblock": null, + "paramDocs": [], + "returns": "the index of the current font", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getCurrentFontIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Nummer der aktuellen Schriftart zurück" + } + } + }, + { + "id": "Text/getCurrentFontName()", + "memberId": "Text/getCurrentFontName", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getCurrentFontName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the name of the current font.", + "description": "Retrieves the name of the current font.", + "scratchblock": null, + "paramDocs": [], + "returns": "the name of the current font, or `null` if no fonts are available.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getCurrentFontName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen der aktuellen Schriftart zurück" + } + } + }, + { + "id": "Text/getDefaultFont()", + "memberId": "Text/getDefaultFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getDefaultFont", + "static": true, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the font that text is written in by default.", + "description": "Returns the font that text is written in by default.", + "scratchblock": null, + "paramDocs": [], + "returns": "the path to the font file", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getDefaultFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Standardschriftart zurück" + } + } + }, + { + "id": "Text/getDefaultFontSize()", + "memberId": "Text/getDefaultFontSize", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getDefaultFontSize", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size text is written in by default.", + "description": "Returns the size text is written in by default.", + "scratchblock": null, + "paramDocs": [], + "returns": "the font size", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getDefaultFontSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Standardschriftgröße zurück" + } + } + }, + { + "id": "Text/getFont()", + "memberId": "Text/getFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getFont", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the name of the font.", + "description": "Retrieves the name of the font.", + "scratchblock": null, + "paramDocs": [], + "returns": "the name of the font as a String.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen der aktuellen Schriftart zurück" + } + } + }, + { + "id": "Text/getPosition()", + "memberId": "Text/getPosition", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current position as a Vector2 object.", + "description": "Retrieves the current position as a Vector2 object.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Vector2 object representing the current x and y coordinates.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Position des Texts zurück" + } + } + }, + { + "id": "Text/getStage()", + "memberId": "Text/getStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getStage", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current stage associated with this object.", + "description": "Retrieves the current stage associated with this object.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current stage", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Bühne zurück, auf der der Text liegt" + } + } + }, + { + "id": "Text/getStyle()", + "memberId": "Text/getStyle", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getStyle", + "static": false, + "returnType": "TextStyle", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the style the text is drawn in.", + "description": "Returns the style the text is drawn in.", + "scratchblock": null, + "paramDocs": [], + "returns": "the style, never null", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getStyle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Stil zurück, in dem der Text gezeichnet wird" + } + } + }, + { + "id": "Text/getTextSize()", + "memberId": "Text/getTextSize", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getTextSize", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the size of the text.", + "description": "Returns the size of the text.", + "scratchblock": null, + "paramDocs": [], + "returns": "the size of the text as an integer", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getTextSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Schriftgröße zurück" + } + } + }, + { + "id": "Text/getWidth()", + "memberId": "Text/getWidth", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getWidth", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the width of the text.", + "description": "Returns the width of the text.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the text as a double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite des Textfelds zurück" + } + } + }, + { + "id": "Text/getX()", + "memberId": "Text/getX", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x-coordinate of this object.", + "description": "Returns the x-coordinate of this object.", + "scratchblock": null, + "paramDocs": [], + "returns": "the x-coordinate as a double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Position zurück" + } + } + }, + { + "id": "Text/getY()", + "memberId": "Text/getY", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y-coordinate of this object.", + "description": "Returns the y-coordinate of this object.", + "scratchblock": null, + "paramDocs": [], + "returns": "the y-coordinate as a double", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Position zurück" + } + } + }, + { + "id": "Text/goLayersBackwards(int)", + "memberId": "Text/goLayersBackwards", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goLayersBackwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the text backwards by a specified number of layers in the stage. If\nthe text is not on a stage, the method does nothing.", + "description": "Moves the text backwards by a specified number of layers in the stage. If\nthe text is not on a stage, the method does nothing.", + "scratchblock": "go [backward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the text backwards" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goLayersBackwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt den Text um die angegebene Anzahl Ebenen nach hinten" + } + } + }, + { + "id": "Text/goLayersForwards(int)", + "memberId": "Text/goLayersForwards", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goLayersForwards", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "number" + ], + "params": [ + "int number" + ], + "summary": "Moves the text forward by a specified number of layers within its stage. If\nthe text is not on a stage, the method does nothing.", + "description": "Moves the text forward by a specified number of layers within its stage. If\nthe text is not on a stage, the method does nothing.", + "scratchblock": "go [forward v] (number) layers", + "paramDocs": [ + "number: the number of layers to move the text forward" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goLayersForwards", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt den Text um die angegebene Anzahl Ebenen nach vorne" + } + } + }, + { + "id": "Text/goToBackLayer()", + "memberId": "Text/goToBackLayer", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goToBackLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves this text to the back layer of the stage, behind every other text on\nit. If the text is not on a stage, the method does nothing.", + "description": "Moves this text to the back layer of the stage, behind every other text on\nit. If the text is not on a stage, the method does nothing.\n\nTexts are drawn on top of the sprites, so this orders a text against the\nother texts rather than against the sprites.", + "scratchblock": "go to [back v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goToBackLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schiebt den Text hinter die anderen Texte" + } + } + }, + { + "id": "Text/goToFrontLayer()", + "memberId": "Text/goToFrontLayer", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "goToFrontLayer", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Moves this text to the front layer of the stage, in front of every other\ntext on it. If the text is not on a stage, the method does nothing.", + "description": "Moves this text to the front layer of the stage, in front of every other\ntext on it. If the text is not on a stage, the method does nothing.\n\nTexts are drawn on top of the sprites, so this orders a text against the\nother texts rather than against the sprites.", + "scratchblock": "go to [front v] layer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/goToFrontLayer", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Bringt den Text vor die anderen Texte" + } + } + }, + { + "id": "Text/isUI()", + "memberId": "Text/isUI", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "isUI", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the current instance is a UI element.", + "description": "Checks if the current instance is a UI element.", + "scratchblock": null, + "paramDocs": [], + "returns": "`true` if this instance is a UI element, `false` otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/isUI", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn der Text zur Benutzeroberfläche gehört" + } + } + }, + { + "id": "Text/nextFont()", + "memberId": "Text/nextFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "nextFont", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Advances to the next font in the list of available fonts. The current font index is incremented\nby one and wraps around to the beginning of the list if it exceeds the number of available\nfonts.", + "description": "Advances to the next font in the list of available fonts. The current font index is incremented\nby one and wraps around to the beginning of the list if it exceeds the number of available\nfonts.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/nextFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zur nächsten Schriftart" + } + } + }, + { + "id": "Text/remove()", + "memberId": "Text/remove", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "remove", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Removes this object from its current stage if it is associated with one. If the object is not\nassociated with any stage, this method does nothing.", + "description": "Removes this object from its current stage if it is associated with one. If the object is not\nassociated with any stage, this method does nothing.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/remove", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Entfernt den Text von der Bühne" + } + } + }, + { + "id": "Text/setAlign(TextAlign)", + "memberId": "Text/setAlign", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setAlign", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.TextAlign" + ], + "parameterNames": [ + "align" + ], + "params": [ + "TextAlign align" + ], + "summary": "Sets the alignment of the text.", + "description": "Sets the alignment of the text.", + "scratchblock": null, + "paramDocs": [ + "align: where the text should sit relative to its position" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setAlign", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie der Text zu seiner Position ausgerichtet wird" + } + } + }, + { + "id": "Text/setBackgroundColor(int,int,int)", + "memberId": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setBackgroundColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "int r", + "int g", + "int b" + ], + "summary": "Sets the background color using the specified RGB values.", + "description": "Sets the background color using the specified RGB values.", + "scratchblock": null, + "paramDocs": [ + "r: the red component of the color (0-255)", + "g: the green component of the color (0-255)", + "b: the blue component of the color (0-255)" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setBackgroundColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Text/setBackgroundColor(double)", + "memberId": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setBackgroundColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the background color using the specified hue value.", + "description": "Sets the background color using the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value for the background color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setBackgroundColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Text/setBackgroundColor(Color)", + "memberId": "Text/setBackgroundColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setBackgroundColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the background color of the text.", + "description": "Sets the background color of the text.", + "scratchblock": null, + "paramDocs": [ + "c: the new background color to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setBackgroundColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Hintergrundfarbe" + } + } + }, + { + "id": "Text/setFont(String)", + "memberId": "Text/setFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setFont", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Sets the font name for the text.", + "description": "Sets the font name for the text.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the font to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zur Schriftart mit dem angegebenen Namen" + } + } + }, + { + "id": "Text/setIsUI(boolean)", + "memberId": "Text/setIsUI", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setIsUI", + "static": false, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "isUI" + ], + "params": [ + "boolean isUI" + ], + "summary": "Sets the UI status of this object.", + "description": "Sets the UI status of this object.", + "scratchblock": null, + "paramDocs": [ + "isUI: a boolean indicating whether this object is part of the UI" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setIsUI", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, ob der Text zur Benutzeroberfläche gehört und sich nicht mit der Kamera bewegt" + } + } + }, + { + "id": "Text/setPosition(double,double)", + "memberId": "Text/setPosition", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the position of the text", + "description": "Sets the position of the text", + "scratchblock": null, + "paramDocs": [ + "x: a x coordinate", + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Text an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Text/setPosition(Vector2)", + "memberId": "Text/setPosition", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the text object using a Vector2 object.", + "description": "Sets the position of the text object using a Vector2 object.", + "scratchblock": null, + "paramDocs": [ + "v: the Vector2 object containing the x and y coordinates" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Text an die angegebene Position (Mitte der Bühne ist 0/0)" + } + } + }, + { + "id": "Text/setStrokeColor(int,int,int)", + "memberId": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStrokeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "int r", + "int g", + "int b" + ], + "summary": "Sets the stroke color using the specified RGB values.", + "description": "Sets the stroke color using the specified RGB values.", + "scratchblock": null, + "paramDocs": [ + "r: the red component of the color (0-255)", + "g: the green component of the color (0-255)", + "b: the blue component of the color (0-255)" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStrokeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Rahmenfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Text/setStrokeColor(double)", + "memberId": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStrokeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the stroke color using the specified hue value.", + "description": "Sets the stroke color using the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value for the stroke color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStrokeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Rahmenfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Text/setStrokeColor(Color)", + "memberId": "Text/setStrokeColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStrokeColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the stroke color for the text.", + "description": "Sets the stroke color for the text.", + "scratchblock": null, + "paramDocs": [ + "c: the color to set as the stroke color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStrokeColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Rahmenfarbe" + } + } + }, + { + "id": "Text/setStyle(TextStyle)", + "memberId": "Text/setStyle", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setStyle", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.TextStyle" + ], + "parameterNames": [ + "style" + ], + "params": [ + "TextStyle style" + ], + "summary": "Sets the style of the text.", + "description": "Sets the style of the text.", + "scratchblock": null, + "paramDocs": [ + "style: the TextStyle to be applied to the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setStyle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, ob der Text als Kasten, Sprech- oder Denkblase dargestellt wird" + } + } + }, + { + "id": "Text/setTextColor(int,int,int)", + "memberId": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int" + ], + "parameterNames": [ + "r", + "g", + "b" + ], + "params": [ + "int r", + "int g", + "int b" + ], + "summary": "Sets the text color using RGB values.", + "description": "Sets the text color using RGB values.", + "scratchblock": null, + "paramDocs": [ + "r: the red component of the color (0-255)", + "g: the green component of the color (0-255)", + "b: the blue component of the color (0-255)" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftfarbe aus Rot-, Grün- und Blauanteil (jeweils 0 bis 255)" + } + } + }, + { + "id": "Text/setTextColor(double)", + "memberId": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "h" + ], + "params": [ + "double h" + ], + "summary": "Sets the text color using the specified hue value.", + "description": "Sets the text color using the specified hue value.", + "scratchblock": null, + "paramDocs": [ + "h: the hue value for the text color" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftfarbe über den Farbton (0 bis 255)" + } + } + }, + { + "id": "Text/setTextColor(Color)", + "memberId": "Text/setTextColor", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextColor", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "c" + ], + "params": [ + "Color c" + ], + "summary": "Sets the color of the text.", + "description": "Sets the color of the text.", + "scratchblock": null, + "paramDocs": [ + "c: the new color to be set for the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextColor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftfarbe" + } + } + }, + { + "id": "Text/setTextSize(int)", + "memberId": "Text/setTextSize", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setTextSize", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "size" + ], + "params": [ + "int size" + ], + "summary": "Sets the size of the text.", + "description": "Sets the size of the text.", + "scratchblock": null, + "paramDocs": [ + "size: the new size of the text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setTextSize", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Schriftgröße" + } + } + }, + { + "id": "Text/setWidth(double)", + "memberId": "Text/setWidth", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setWidth", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "width" + ], + "params": [ + "double width" + ], + "summary": "Sets the width of the text.", + "description": "Sets the width of the text.", + "scratchblock": null, + "paramDocs": [ + "width: the new width to set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Breite des Textfelds; längere Texte werden umgebrochen" + } + } + }, + { + "id": "Text/setX(double)", + "memberId": "Text/setX", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Sets the x-coordinate for this object.", + "description": "Sets the x-coordinate for this object.", + "scratchblock": null, + "paramDocs": [ + "x: the new x-coordinate value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die x-Position" + } + } + }, + { + "id": "Text/setY(double)", + "memberId": "Text/setY", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "setY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Sets the Y coordinate of the text.", + "description": "Sets the Y coordinate of the text.", + "scratchblock": null, + "paramDocs": [ + "y: the new Y coordinate value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/setY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die y-Position" + } + } + }, + { + "id": "Text/showText(String)", + "memberId": "Text/showText", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "showText", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Displays the specified text.", + "description": "Displays the specified text.", + "scratchblock": null, + "paramDocs": [ + "text: The text to be displayed. If the text is null or empty, the text will be set to\n null." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/showText", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt den Text an" + } + } + }, + { + "id": "Text/showText(String,int)", + "memberId": "Text/showText", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "showText", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "text", + "millis" + ], + "params": [ + "String text", + "int millis" + ], + "summary": "Displays the specified text for a given duration.", + "description": "Displays the specified text for a given duration.", + "scratchblock": null, + "paramDocs": [ + "text: The text to be displayed.", + "millis: The duration in milliseconds for which the text should be displayed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/showText", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt den Text für die angegebene Zeit in Millisekunden an" + } + } + }, + { + "id": "Text/switchFont(String)", + "memberId": "Text/switchFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "switchFont", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switches the current font to the font with the specified name.", + "description": "Switches the current font to the font with the specified name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the font to switch to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/switchFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt zur Schriftart mit dem angegebenen Namen" + } + } + }, + { + "id": "Text/useFont(String,int)", + "memberId": "Text/useFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useFont", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "path", + "size" + ], + "params": [ + "String path", + "int size" + ], + "summary": "Chooses the font all text is written in, and how big it is.", + "description": "Chooses the font all text is written in, and how big it is.\n\nCall it before the first stage is created. The font is loaded while the\nwindow starts up, so choosing one later is not reliable.\n\n```java\npublic static void main(String[] args) {\n Text.useFont(\"assets/Retro Gaming.ttf\", 11);\n new MyStage();\n}\n```", + "scratchblock": null, + "paramDocs": [ + "path: the path to a .ttf or .otf file", + "size: the size to write in" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt Schriftart und -größe für alle Texte fest" + } + } + }, + { + "id": "Text/useFont(String)", + "memberId": "Text/useFont", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useFont", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Chooses the font all text is written in, keeping the current size.", + "description": "Chooses the font all text is written in, keeping the current size.", + "scratchblock": null, + "paramDocs": [ + "path: the path to a .ttf or .otf file" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useFont", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt die Schriftart für alle Texte fest" + } + } + }, + { + "id": "Text/useFontSizes(int[])", + "memberId": "Text/useFontSizes", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useFontSizes", + "static": true, + "returnType": "void", + "parameterTypes": [ + "int[]" + ], + "parameterNames": [ + "sizes" + ], + "params": [ + "int[] sizes" + ], + "summary": "Prepares several sizes of the font in advance. Only needed when text is\nshown at more than one size, so that every size looks sharp.", + "description": "Prepares several sizes of the font in advance. Only needed when text is\nshown at more than one size, so that every size looks sharp.", + "scratchblock": null, + "paramDocs": [ + "sizes: the sizes to prepare" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useFontSizes", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Text/useSmoothing(boolean)", + "memberId": "Text/useSmoothing", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "useSmoothing", + "static": true, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "smooth" + ], + "params": [ + "boolean smooth" + ], + "summary": "Chooses whether letters are smoothed. Turn it off for pixel fonts.", + "description": "Chooses whether letters are smoothed. Turn it off for pixel fonts.", + "scratchblock": null, + "paramDocs": [ + "smooth: true to smooth the letters" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/useSmoothing", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, ob Schrift geglättet wird" + } + } + }, + { + "id": "Text/whenAddedToStage()", + "memberId": "Text/whenAddedToStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenAddedToStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the object is added to the stage. Override this method to define\ncustom behavior when the object is added to the stage.", + "description": "This method is called when the object is added to the stage. Override this method to define\ncustom behavior when the object is added to the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenAddedToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text der Bühne hinzugefügt wird" + } + } + }, + { + "id": "Text/whenAddedToStage(Stage)", + "memberId": "Text/whenAddedToStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenAddedToStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "stage" + ], + "params": [ + "Stage stage" + ], + "summary": "This method is called when the text is added to the stage. Override this method to define\ncustom behavior when the text.", + "description": "This method is called when the text is added to the stage. Override this method to define\ncustom behavior when the text.", + "scratchblock": null, + "paramDocs": [ + "stage: The stage to which the text is added." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenAddedToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text der Bühne hinzugefügt wird" + } + } + }, + { + "id": "Text/whenRemovedFromStage()", + "memberId": "Text/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenRemovedFromStage", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the object is removed from the stage. Override this method to define\ncustom behavior that should occur when the object is no longer part of the stage.", + "description": "This method is called when the object is removed from the stage. Override this method to define\ncustom behavior that should occur when the object is no longer part of the stage.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenRemovedFromStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text von der Bühne entfernt wird" + } + } + }, + { + "id": "Text/whenRemovedFromStage(Stage)", + "memberId": "Text/whenRemovedFromStage", + "owner": "org.openpatch.scratch.Text", + "className": "Text", + "methodName": "whenRemovedFromStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "stage" + ], + "params": [ + "Stage stage" + ], + "summary": "This method is called when the text is removed from the stage. Override this method to define\ncustom behavior that should occur.", + "description": "This method is called when the text is removed from the stage. Override this method to define\ncustom behavior that should occur.", + "scratchblock": null, + "paramDocs": [ + "stage: The stage from which the text is removed." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Text/whenRemovedFromStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird aufgerufen, wenn der Text von der Bühne entfernt wird" + } + } + }, + { + "id": "Timer/afterMillis(int)", + "memberId": "Timer/afterMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "afterMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified number of milliseconds has passed since the method was first called.", + "description": "Checks if the specified number of milliseconds has passed since the method was first called.", + "scratchblock": null, + "paramDocs": [ + "millis: the number of milliseconds to check against" + ], + "returns": "true if the specified number of milliseconds has passed since the method was first\n called, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/afterMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt true zurück, sobald seit dem Zurücksetzen millis Millisekunden vergangen sind" + } + } + }, + { + "id": "Timer/constructor()", + "memberId": "Timer/constructor", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "constructor", + "static": false, + "returnType": "Timer", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Timer object.", + "description": "Constructs a new Timer object.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen neuen Timer" + } + } + }, + { + "id": "Timer/everyMillis(int)", + "memberId": "Timer/everyMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "everyMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified number of milliseconds has passed since the last time this method\nreturned true.", + "description": "Checks if the specified number of milliseconds has passed since the last time this method\nreturned true.", + "scratchblock": null, + "paramDocs": [ + "millis: The number of milliseconds to wait before returning true." + ], + "returns": "true if the specified number of milliseconds has passed since the last call that\n returned true, false otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/everyMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt alle millis Millisekunden einmal true zurück" + } + } + }, + { + "id": "Timer/forMillis(int)", + "memberId": "Timer/forMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "forMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified amount of milliseconds has passed since the method was first called. If\nthe method is called for the first time, it initializes the start time.", + "description": "Checks if the specified amount of milliseconds has passed since the method was first called. If\nthe method is called for the first time, it initializes the start time.", + "scratchblock": null, + "paramDocs": [ + "millis: the number of milliseconds to check against" + ], + "returns": "true if the current time is less than the start time plus the specified milliseconds,\n false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/forMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt für die ersten millis Millisekunden nach dem Zurücksetzen true zurück" + } + } + }, + { + "id": "Timer/intervalMillis(int)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int" + ], + "parameterNames": [ + "millis" + ], + "params": [ + "int millis" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis: the interval in milliseconds to check" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt alle millis Millisekunden zwischen true und false" + } + } + }, + { + "id": "Timer/intervalMillis(int,boolean)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int", + "boolean" + ], + "parameterNames": [ + "millis", + "skipFirst" + ], + "params": [ + "int millis", + "boolean skipFirst" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis: the interval in milliseconds to check", + "skipFirst: if true, the first interval will be skipped" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wechselt alle millis Millisekunden zwischen true und false; skipFirst überspringt das erste Intervall" + } + } + }, + { + "id": "Timer/intervalMillis(int,int)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "millis1", + "millis2" + ], + "params": [ + "int millis1", + "int millis2" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis1: the first interval in milliseconds to check", + "millis2: the second interval in milliseconds to check" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt millis1 Millisekunden lang true und danach millis2 Millisekunden lang false zurück" + } + } + }, + { + "id": "Timer/intervalMillis(int,int,boolean)", + "memberId": "Timer/intervalMillis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "intervalMillis", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "int", + "int", + "boolean" + ], + "parameterNames": [ + "millis1", + "millis2", + "skipFirst" + ], + "params": [ + "int millis1", + "int millis2", + "boolean skipFirst" + ], + "summary": "Checks if the specified interval in milliseconds has passed.", + "description": "Checks if the specified interval in milliseconds has passed.", + "scratchblock": null, + "paramDocs": [ + "millis1: the first interval in milliseconds to check", + "millis2: the second interval in milliseconds to check", + "skipFirst: if true, the first interval will be skipped" + ], + "returns": "true if the interval has passed, false otherwise", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/intervalMillis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt millis1 Millisekunden lang true und danach millis2 Millisekunden lang false zurück; skipFirst überspringt das erste Intervall" + } + } + }, + { + "id": "Timer/millis()", + "memberId": "Timer/millis", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "millis", + "static": true, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the number of milliseconds of game time since the program started.\nGame time stands still while the game is paused and runs slower or faster\nwith the game speed (see [Window.pause()](../Window/pause) and\n[Window.setGameSpeed(double)](../Window/setGameSpeed)); without either, it is the real time.", + "description": "Returns the number of milliseconds of game time since the program started.\nGame time stands still while the game is paused and runs slower or faster\nwith the game speed (see [Window.pause()](../Window/pause) and\n[Window.setGameSpeed(double)](../Window/setGameSpeed)); without either, it is the real time.", + "scratchblock": "(timer)", + "paramDocs": [], + "returns": "the milliseconds of game time since the program started", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/millis", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die seit dem Programmstart vergangenen Millisekunden zurück" + } + } + }, + { + "id": "Timer/reset()", + "memberId": "Timer/reset", + "owner": "org.openpatch.scratch.Timer", + "className": "Timer", + "methodName": "reset", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Resets the timer.", + "description": "Resets the timer.", + "scratchblock": "reset timer", + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Timer/reset", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt den Timer auf 0 zurück" + } + } + }, + { + "id": "Triangle/constructor(double,double,double,double,double,double)", + "memberId": "Triangle/constructor", + "owner": "org.openpatch.scratch.Triangle", + "className": "Triangle", + "methodName": "constructor", + "static": false, + "returnType": "Triangle", + "parameterTypes": [ + "double", + "double", + "double", + "double", + "double", + "double" + ], + "parameterNames": [ + "x1", + "y1", + "x2", + "y2", + "x3", + "y3" + ], + "params": [ + "double x1", + "double y1", + "double x2", + "double y2", + "double x3", + "double y3" + ], + "summary": "Creates a triangle with the specified vertices.", + "description": "Creates a triangle with the specified vertices.", + "scratchblock": null, + "paramDocs": [ + "x1: the x-coordinate of the first vertex", + "y1: the y-coordinate of the first vertex", + "x2: the x-coordinate of the second vertex", + "y2: the y-coordinate of the second vertex", + "x3: the x-coordinate of the third vertex", + "y3: the y-coordinate of the third vertex" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Triangle/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Dreieck aus den drei Eckpunkten" + } + } + }, + { + "id": "UISprite/changeHeight(double)", + "memberId": "UISprite/changeHeight", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "changeHeight", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "amount" + ], + "params": [ + "double amount" + ], + "summary": "Changes the height of the sprite by the given number of pixels.", + "description": "Changes the height of the sprite by the given number of pixels.", + "scratchblock": null, + "paramDocs": [ + "amount: how many pixels to add to the height" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/changeHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Höhe um die angegebene Anzahl Pixel" + } + } + }, + { + "id": "UISprite/changeWidth(double)", + "memberId": "UISprite/changeWidth", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "changeWidth", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "amount" + ], + "params": [ + "double amount" + ], + "summary": "Changes the width of the sprite by the given number of pixels.", + "description": "Changes the width of the sprite by the given number of pixels.", + "scratchblock": null, + "paramDocs": [ + "amount: how many pixels to add to the width" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/changeWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Ändert die Breite um die angegebene Anzahl Pixel" + } + } + }, + { + "id": "UISprite/constructor()", + "memberId": "UISprite/constructor", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "constructor", + "static": false, + "returnType": "UISprite", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a sprite that is drawn as part of the user interface.", + "description": "Creates a sprite that is drawn as part of the user interface.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine neue UI-Figur" + } + } + }, + { + "id": "UISprite/disableNineSlice()", + "memberId": "UISprite/disableNineSlice", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "disableNineSlice", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Lets the whole costume stretch again.", + "description": "Lets the whole costume stretch again.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/disableNineSlice", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Lässt das ganze Kostüm wieder mitskalieren" + } + } + }, + { + "id": "UISprite/setHeight(double)", + "memberId": "UISprite/setHeight", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "setHeight", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "height" + ], + "params": [ + "double height" + ], + "summary": "Sets the height of the sprite in pixels.", + "description": "Sets the height of the sprite in pixels.", + "scratchblock": null, + "paramDocs": [ + "height: the height in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/setHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Höhe in Pixeln" + } + } + }, + { + "id": "UISprite/setNineSlice(int,int,int,int)", + "memberId": "UISprite/setNineSlice", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "setNineSlice", + "static": false, + "returnType": "void", + "parameterTypes": [ + "int", + "int", + "int", + "int" + ], + "parameterNames": [ + "top", + "right", + "bottom", + "left" + ], + "params": [ + "int top", + "int right", + "int bottom", + "int left" + ], + "summary": "Keeps the corners and edges of the costume from stretching when the sprite\nis resized, so that a button costume can be made any size.", + "description": "Keeps the corners and edges of the costume from stretching when the sprite\nis resized, so that a button costume can be made any size.", + "scratchblock": null, + "paramDocs": [ + "top: how many pixels of the costume belong to the top edge", + "right: how many pixels of the costume belong to the right edge", + "bottom: how many pixels of the costume belong to the bottom edge", + "left: how many pixels of the costume belong to the left edge" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/setNineSlice", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Hält die Ecken und Ränder des Kostüms beim Skalieren fest (Nine-Slice)" + } + } + }, + { + "id": "UISprite/setWidth(double)", + "memberId": "UISprite/setWidth", + "owner": "org.openpatch.scratch.UISprite", + "className": "UISprite", + "methodName": "setWidth", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "width" + ], + "params": [ + "double width" + ], + "summary": "Sets the width of the sprite in pixels.", + "description": "Sets the width of the sprite in pixels.", + "scratchblock": null, + "paramDocs": [ + "width: the width in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/UISprite/setWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Setzt die Breite in Pixeln" + } + } + }, + { + "id": "Vector2/add(Vector2)", + "memberId": "Vector2/add", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "add", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Adds another vector and returns the result", + "description": "Adds another vector and returns the result", + "scratchblock": null, + "paramDocs": [ + "v: " + ], + "returns": "the sum", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Summe beider Vektoren als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/angle()", + "memberId": "Vector2/angle", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "angle", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the angle of the vector.", + "description": "Returns the angle of the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "the angle", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/angle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Winkel des Vektors in Grad zurück" + } + } + }, + { + "id": "Vector2/clone()", + "memberId": "Vector2/clone", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "clone", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Creates a clone of the vector", + "description": "Creates a clone of the vector", + "scratchblock": null, + "paramDocs": [], + "returns": "the cloned vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/clone", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt eine Kopie des Vektors zurück" + } + } + }, + { + "id": "Vector2/constructor()", + "memberId": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "constructor", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructor for the null vector.", + "description": "Constructor for the null vector.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt den Nullvektor" + } + } + }, + { + "id": "Vector2/constructor(double,double)", + "memberId": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "constructor", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Constructor for a 2D vector.", + "description": "Constructor for a 2D vector.", + "scratchblock": null, + "paramDocs": [ + "x: x-coordinate", + "y: y-coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Vektor mit den angegebenen Koordinaten" + } + } + }, + { + "id": "Vector2/constructor(Vector2)", + "memberId": "Vector2/constructor", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "constructor", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Copy constructor for copying a vector.", + "description": "Copy constructor for copying a vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt eine Kopie des übergebenen Vektors" + } + } + }, + { + "id": "Vector2/distance(Vector2)", + "memberId": "Vector2/distance", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "distance", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Calculates the distance to another vector.", + "description": "Calculates the distance to another vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": "the distance", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/distance", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Abstand zu v zurück" + } + } + }, + { + "id": "Vector2/distanceSq(Vector2)", + "memberId": "Vector2/distanceSq", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "distanceSq", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Calculates the squared distance to another vector.", + "description": "Calculates the squared distance to another vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": "the squared distance", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/distanceSq", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Quadrat des Abstands zu v zurück" + } + } + }, + { + "id": "Vector2/dot(Vector2)", + "memberId": "Vector2/dot", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "dot", + "static": false, + "returnType": "double", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Calculates the dot product.", + "description": "Calculates the dot product.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": "the dot product", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/dot", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Skalarprodukt beider Vektoren zurück" + } + } + }, + { + "id": "Vector2/equals(Object)", + "memberId": "Vector2/equals", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "equals", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.Object" + ], + "parameterNames": [ + "obj" + ], + "params": [ + "Object obj" + ], + "summary": "Compares this vector with another object.", + "description": "Compares this vector with another object.", + "scratchblock": null, + "paramDocs": [ + "obj: the object to compare with" + ], + "returns": "true if the other object is a vector with the same x- and y-coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/equals", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn beide Vektoren gleich sind" + } + } + }, + { + "id": "Vector2/fromPolar(double,double)", + "memberId": "Vector2/fromPolar", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "fromPolar", + "static": true, + "returnType": "Vector2", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "magnitude", + "angle" + ], + "params": [ + "double magnitude", + "double angle" + ], + "summary": "Constructor method for constructing a vector based on polar coordinates.", + "description": "Constructor method for constructing a vector based on polar coordinates.", + "scratchblock": null, + "paramDocs": [ + "magnitude: of the vector", + "angle: of the vector" + ], + "returns": "a vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/fromPolar", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt einen Vektor aus Länge und Winkel (in Grad)" + } + } + }, + { + "id": "Vector2/getX()", + "memberId": "Vector2/getX", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x coordinate of the vector", + "description": "Returns the x coordinate of the vector", + "scratchblock": null, + "paramDocs": [], + "returns": "the x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die x-Koordinate zurück" + } + } + }, + { + "id": "Vector2/getY()", + "memberId": "Vector2/getY", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y coordinate of the vector", + "description": "Returns the y coordinate of the vector", + "scratchblock": null, + "paramDocs": [], + "returns": "the y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die y-Koordinate zurück" + } + } + }, + { + "id": "Vector2/hashCode()", + "memberId": "Vector2/hashCode", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "hashCode", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the hash code of the vector. Vectors that are equal have the same hash code, which is\nwhat lets them be used as keys in a `HashMap`.", + "description": "Returns the hash code of the vector. Vectors that are equal have the same hash code, which is\nwhat lets them be used as keys in a `HashMap`.", + "scratchblock": null, + "paramDocs": [], + "returns": "the hash code of the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/hashCode", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Hashwert des Vektors zurück" + } + } + }, + { + "id": "Vector2/length()", + "memberId": "Vector2/length", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "length", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Calculates the length of the vector.", + "description": "Calculates the length of the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "the length of the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/length", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Länge des Vektors zurück" + } + } + }, + { + "id": "Vector2/lengthSq()", + "memberId": "Vector2/lengthSq", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "lengthSq", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Calculates the squared length of the vector.", + "description": "Calculates the squared length of the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "the squared length of the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/lengthSq", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Quadrat der Länge zurück (schneller als length())" + } + } + }, + { + "id": "Vector2/multiply(double)", + "memberId": "Vector2/multiply", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "multiply", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "scalar" + ], + "params": [ + "double scalar" + ], + "summary": "Multiplies a scalar and return the result.", + "description": "Multiplies a scalar and return the result.", + "scratchblock": null, + "paramDocs": [ + "scalar: a scalar" + ], + "returns": "the vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/multiply", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den mit scalar multiplizierten Vektor als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/normalVector()", + "memberId": "Vector2/normalVector", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "normalVector", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the normal vector, which is perpendicular to the vector.", + "description": "Returns the normal vector, which is perpendicular to the vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "a normal vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/normalVector", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen dazu senkrechten Vektor zurück" + } + } + }, + { + "id": "Vector2/reverse()", + "memberId": "Vector2/reverse", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "reverse", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Reverses a vector and returns the result.", + "description": "Reverses a vector and returns the result.", + "scratchblock": null, + "paramDocs": [], + "returns": "the reversed vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/reverse", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den entgegengesetzten Vektor zurück" + } + } + }, + { + "id": "Vector2/rotateBy(double)", + "memberId": "Vector2/rotateBy", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "rotateBy", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "angle" + ], + "params": [ + "double angle" + ], + "summary": "Rotates the vector by an angle and returns the result.", + "description": "Rotates the vector by an angle and returns the result.", + "scratchblock": null, + "paramDocs": [ + "angle: an angle between [0, ..., 360]" + ], + "returns": "the rotated vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/rotateBy", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den um angle Grad gedrehten Vektor als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/rotateTo(double)", + "memberId": "Vector2/rotateTo", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "rotateTo", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "angle" + ], + "params": [ + "double angle" + ], + "summary": "Rotates the vector to a given angle and returns the result.", + "description": "Rotates the vector to a given angle and returns the result.", + "scratchblock": null, + "paramDocs": [ + "angle: an angle between [0,...,360]" + ], + "returns": "the rotated vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/rotateTo", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen Vektor gleicher Länge mit dem Winkel angle (in Grad) zurück" + } + } + }, + { + "id": "Vector2/sub(Vector2)", + "memberId": "Vector2/sub", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "sub", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Substracts another vector and returns the result", + "description": "Substracts another vector and returns the result", + "scratchblock": null, + "paramDocs": [ + "v: " + ], + "returns": "the difference", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/sub", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Differenz beider Vektoren als neuen Vektor zurück" + } + } + }, + { + "id": "Vector2/toString()", + "memberId": "Vector2/toString", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the vector as a text, for example `Vector2[60.0, 80.0]`.", + "description": "Returns the vector as a text, for example `Vector2[60.0, 80.0]`.", + "scratchblock": null, + "paramDocs": [], + "returns": "the vector as a text", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/toString", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Vektor als Zeichenkette zurück" + } + } + }, + { + "id": "Vector2/unitVector()", + "memberId": "Vector2/unitVector", + "owner": "org.openpatch.scratch.Vector2", + "className": "Vector2", + "methodName": "unitVector", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the unit vector.", + "description": "Returns the unit vector.", + "scratchblock": null, + "paramDocs": [], + "returns": "a unit vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Vector2/unitVector", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt einen Vektor gleicher Richtung mit der Länge 1 zurück" + } + } + }, + { + "id": "Window/constructor()", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Window with default dimensions. The default width is 480\npixels and the\ndefault height is 360 pixels.", + "description": "Constructs a new Window with default dimensions. The default width is 480\npixels and the\ndefault height is 360 pixels.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster in Standardgröße" + } + } + }, + { + "id": "Window/constructor(String)", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "assets" + ], + "params": [ + "String assets" + ], + "summary": "Constructs a new Window with the specified assets. The window will have a\ndefault width of 480\npixels and a height of 360 pixels.", + "description": "Constructs a new Window with the specified assets. The window will have a\ndefault width of 480\npixels and a height of 360 pixels.", + "scratchblock": null, + "paramDocs": [ + "assets: the path to the assets to be used in the window" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster mit eigenem Asset-Ordner" + } + } + }, + { + "id": "Window/constructor(int,int)", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [ + "int", + "int" + ], + "parameterNames": [ + "width", + "height" + ], + "params": [ + "int width", + "int height" + ], + "summary": "Constructs a new Window with the specified width and height.", + "description": "Constructs a new Window with the specified width and height.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the window", + "height: the height of the window" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster mit der angegebenen Größe" + } + } + }, + { + "id": "Window/constructor(int,int,String)", + "memberId": "Window/constructor", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "constructor", + "static": false, + "returnType": "Window", + "parameterTypes": [ + "int", + "int", + "java.lang.String" + ], + "parameterNames": [ + "width", + "height", + "assets" + ], + "params": [ + "int width", + "int height", + "String assets" + ], + "summary": "Constructs a new Window with the specified width, height, and assets path.\nEnsures that only\none instance of Window can be created.", + "description": "Constructs a new Window with the specified width, height, and assets path.\nEnsures that only\none instance of Window can be created.\n\nThe single exception is the window Java builds by itself: a class that\nextends Window and has a `main` method which is not static is\ninstantiated by the JVM before `main` is called, so the\n`new MyWindow()` in that `main` would be the second window. That\none reuses the first instead of failing.", + "scratchblock": null, + "paramDocs": [ + "width: the width of the window", + "height: the height of the window", + "assets: the path to the assets" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Erzeugt ein Fenster mit Größe und eigenem Asset-Ordner" + } + } + }, + { + "id": "Window/debug(Object[])", + "memberId": "Window/debug", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "debug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.Object[]" + ], + "parameterNames": [ + "values" + ], + "params": [ + "Object[] values" + ], + "summary": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the window's class name.", + "description": "Prints a debug message to stdout when debug mode is enabled.\nThe message is prefixed with the window's class name.\n\nExample:\n\n```java\nthis.debug(\"fps =\", getFps());\n// prints: [MyWindow] fps = 60\n```", + "scratchblock": null, + "paramDocs": [ + "values: one or more values to print" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/debug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/exit()", + "memberId": "Window/exit", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "exit", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Exits the application by invoking the `whenExits` method and then calling the\n`exit` method on\nthe `Applet` instance.", + "description": "Exits the application by invoking the `whenExits` method and then calling the\n`exit` method on\nthe `Applet` instance.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/exit", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Beendet das Programm" + } + } + }, + { + "id": "Window/getDeltaTime()", + "memberId": "Window/getDeltaTime", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getDeltaTime", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Gets the seconds of game time passed since the last frame. While the game\nis paused this is 0, and at half speed half the real time.", + "description": "Gets the seconds of game time passed since the last frame. While the game\nis paused this is 0, and at half speed half the real time.", + "scratchblock": null, + "paramDocs": [], + "returns": "seconds since last frame", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getDeltaTime", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Dauer des letzten Frames in Sekunden zurück" + } + } + }, + { + "id": "Window/getGameSpeed()", + "memberId": "Window/getGameSpeed", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getGameSpeed", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The game speed set with [setGameSpeed(double)](setGameSpeed).", + "description": "The game speed set with [setGameSpeed(double)](setGameSpeed).", + "scratchblock": null, + "paramDocs": [], + "returns": "1 for normal speed", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getGameSpeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/getHeight()", + "memberId": "Window/getHeight", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getHeight", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the height of the current window.", + "description": "Retrieves the height of the current window.", + "scratchblock": null, + "paramDocs": [], + "returns": "the height of the window in pixels", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getHeight", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Höhe des Fensters in Pixeln zurück" + } + } + }, + { + "id": "Window/getInstance()", + "memberId": "Window/getInstance", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getInstance", + "static": true, + "returnType": "Window", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the singleton instance of the Window class.", + "description": "Returns the singleton instance of the Window class.", + "scratchblock": null, + "paramDocs": [], + "returns": "the singleton instance of Window", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getInstance", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das Fenster des laufenden Programms zurück" + } + } + }, + { + "id": "Window/getLibraryTitle()", + "memberId": "Window/getLibraryTitle", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getLibraryTitle", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the title of the library.", + "description": "Returns the title of the library.", + "scratchblock": null, + "paramDocs": [], + "returns": "the title of the library as a String", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getLibraryTitle", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt den Namen der Bibliothek zurück" + } + } + }, + { + "id": "Window/getLibraryVersion()", + "memberId": "Window/getLibraryVersion", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getLibraryVersion", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the version of the library.", + "description": "Returns the version of the library.", + "scratchblock": null, + "paramDocs": [], + "returns": "the version of the library as a String", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getLibraryVersion", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Version der Bibliothek zurück" + } + } + }, + { + "id": "Window/getStage()", + "memberId": "Window/getStage", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getStage", + "static": false, + "returnType": "Stage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the current stage from the Applet instance.", + "description": "Retrieves the current stage from the Applet instance.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current Stage object", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/getTextureSampling()", + "memberId": "Window/getTextureSampling", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getTextureSampling", + "static": true, + "returnType": "TextureSampling", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns how pictures are being smoothed.", + "description": "Returns how pictures are being smoothed.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current setting", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getTextureSampling", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt das eingestellte Glättungsverfahren zurück" + } + } + }, + { + "id": "Window/getWidth()", + "memberId": "Window/getWidth", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "getWidth", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Retrieves the width of the current window.", + "description": "Retrieves the width of the current window.", + "scratchblock": null, + "paramDocs": [], + "returns": "the width of the window in pixels", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/getWidth", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Breite des Fensters in Pixeln zurück" + } + } + }, + { + "id": "Window/isDebug()", + "memberId": "Window/isDebug", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "isDebug", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks if the application is in debug mode.", + "description": "Checks if the application is in debug mode.\n\nDebug mode can be toggled at runtime by pressing F12.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if the application is in debug mode, false otherwise.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/isDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt genau dann true zurück, wenn die Fehlersuche eingeschaltet ist" + } + } + }, + { + "id": "Window/isPaused()", + "memberId": "Window/isPaused", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "isPaused", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Whether the game is paused.", + "description": "Whether the game is paused.", + "scratchblock": null, + "paramDocs": [], + "returns": "true while paused", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/isPaused", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/pause()", + "memberId": "Window/pause", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "pause", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Pauses the game: `run()` is no longer called, and timers, gliding\nand animations stand still. The window keeps drawing, so the paused\npicture stays visible, and keys and clicks still reach methods like\n`whenKeyPressed`, so a key can [resume()](resume) the game.", + "description": "Pauses the game: `run()` is no longer called, and timers, gliding\nand animations stand still. The window keeps drawing, so the paused\npicture stays visible, and keys and clicks still reach methods like\n`whenKeyPressed`, so a key can [resume()](resume) the game.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/pause", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Gibt die Bühne zurück, die gerade angezeigt wird" + } + } + }, + { + "id": "Window/resume()", + "memberId": "Window/resume", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "resume", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Lets a paused game go on where it stopped.", + "description": "Lets a paused game go on where it stopped.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/resume", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/setDebug(boolean)", + "memberId": "Window/setDebug", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "setDebug", + "static": false, + "returnType": "void", + "parameterTypes": [ + "boolean" + ], + "parameterNames": [ + "debug" + ], + "params": [ + "boolean debug" + ], + "summary": "Enables or disables the debug mode for the application.", + "description": "Enables or disables the debug mode for the application.\n\nDebug mode shows sprite positions, hitboxes, and other debug information.\nIt can also be toggled at runtime by pressing F12.", + "scratchblock": null, + "paramDocs": [ + "debug: a boolean value where `true` enables debug mode and\n `false` disables\n it." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/setDebug", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Schaltet die Ausgabe von debug() ein oder aus" + } + } + }, + { + "id": "Window/setGameSpeed(double)", + "memberId": "Window/setGameSpeed", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "setGameSpeed", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "speed" + ], + "params": [ + "double speed" + ], + "summary": "Makes the game run slower or faster: 1 is normal, 0.5 half as fast, 2\ntwice as fast. `run()`, timers, gliding and animations all follow,\nso the whole game looks like slow motion; the window keeps drawing\nsmoothly.", + "description": "Makes the game run slower or faster: 1 is normal, 0.5 half as fast, 2\ntwice as fast. `run()`, timers, gliding and animations all follow,\nso the whole game looks like slow motion; the window keeps drawing\nsmoothly.", + "scratchblock": null, + "paramDocs": [ + "speed: 1 for normal speed, smaller for slower, larger for faster" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/setGameSpeed", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/setStage(Stage)", + "memberId": "Window/setStage", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "setStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "stage" + ], + "params": [ + "Stage stage" + ], + "summary": "Sets the current stage of the application.", + "description": "Sets the current stage of the application.", + "scratchblock": null, + "paramDocs": [ + "stage: the new stage to be set" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/setStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Zeigt die angegebene Bühne an" + } + } + }, + { + "id": "Window/step()", + "memberId": "Window/step", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "step", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "While the game is paused: runs it for exactly one frame (every\n`run()` once) and pauses again. Useful to watch closely what\nhappens, for example when two sprites touch.", + "description": "While the game is paused: runs it for exactly one frame (every\n`run()` once) and pauses again. Useful to watch closely what\nhappens, for example when two sprites touch.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/step", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "Window/transitionToStage(Stage,int)", + "memberId": "Window/transitionToStage", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "transitionToStage", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Stage", + "int" + ], + "parameterNames": [ + "stage", + "duration" + ], + "params": [ + "Stage stage", + "int duration" + ], + "summary": "Transitions to a new stage with a specified duration.", + "description": "Transitions to a new stage with a specified duration.", + "scratchblock": null, + "paramDocs": [ + "stage: the new stage to transition to", + "duration: the duration of the transition in milliseconds" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/transitionToStage", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Blendet über Schwarz zur angegebenen Bühne über" + } + } + }, + { + "id": "Window/useFullScreen()", + "memberId": "Window/useFullScreen", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "useFullScreen", + "static": true, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Makes the window fill the whole screen.", + "description": "Makes the window fill the whole screen.\n\nCall it before the first stage is created, because the size of the window is\nsettled the moment it opens:\n\n```java\npublic static void main(String[] args) {\n Window.useFullScreen();\n new MyStage();\n}\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/useFullScreen", + "availability": "desktop-only", + "availabilityReason": "The embedded browser output uses its enclosing page; this desktop window option only reports a limitation.", + "translations": { + "de": { + "description": "Nur in der Desktop-Version: startet im Vollbild" + } + } + }, + { + "id": "Window/useSplashLogo(String)", + "memberId": "Window/useSplashLogo", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "useSplashLogo", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Puts your own picture on the loading screen in place of the Scratch for Java\nlogo. The picture fades in while your project starts and fades out again\nonce it is ready.", + "description": "Puts your own picture on the loading screen in place of the Scratch for Java\nlogo. The picture fades in while your project starts and fades out again\nonce it is ready.\n\nIt is shrunk to fit if it is large, and never enlarged, so a picture of\nroughly 300 by 300 looks right in a window of the usual size.\n\nCall it before the first stage is created, because the loading screen is the\nfirst thing the window draws:\n\n```java\npublic static void main(String[] args) {\n Window.useSplashLogo(\"assets/logo.png\");\n new MyStage();\n}\n```", + "scratchblock": null, + "paramDocs": [ + "path: a path to an image file or the name of a built-in sprite, or\n `null` for the Scratch for Java logo" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/useSplashLogo", + "availability": "desktop-only", + "availabilityReason": "The browser has no desktop splash window. This option only reports a limitation.", + "translations": { + "de": { + "description": "Nur in der Desktop-Version: zeigt beim Start ein Logo" + } + } + }, + { + "id": "Window/useTextureSampling(TextureSampling)", + "memberId": "Window/useTextureSampling", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "useTextureSampling", + "static": true, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.TextureSampling" + ], + "parameterNames": [ + "sampling" + ], + "params": [ + "TextureSampling sampling" + ], + "summary": "Chooses how pictures are smoothed when they are drawn larger or smaller than\nthey really are. Pixel art usually wants [TextureSampling.POINT](../TextureSampling/POINT).", + "description": "Chooses how pictures are smoothed when they are drawn larger or smaller than\nthey really are. Pixel art usually wants [TextureSampling.POINT](../TextureSampling/POINT).\n\nCall it before the first stage is created.\n\n```java\nWindow.useTextureSampling(TextureSampling.POINT);\nnew MyStage();\n```", + "scratchblock": null, + "paramDocs": [ + "sampling: how to smooth pictures" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/useTextureSampling", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Legt fest, wie Bilder beim Vergrößern und Verkleinern geglättet werden. TextureSampling.POINT hält Pixelgrafik scharf, LINEAR (Standard) glättet. BILINEAR und TRILINEAR wirken im Browser wie LINEAR." + } + } + }, + { + "id": "Window/whenExits()", + "memberId": "Window/whenExits", + "owner": "org.openpatch.scratch.Window", + "className": "Window", + "methodName": "whenExits", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "This method is called when the window exits. Override this method to define\ncustom behavior\nwhen the window is closed.", + "description": "This method is called when the window exits. Override this method to define\ncustom behavior\nwhen the window is closed.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/Window/whenExits", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": { + "de": { + "description": "Wird beim Beenden des Programms aufgerufen" + } + } + }, + { + "id": "extensions/camera/Camera/changeX(double)", + "memberId": "extensions/camera/Camera/changeX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "changeX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Changes x by a certain amount", + "description": "Changes x by a certain amount", + "scratchblock": null, + "paramDocs": [ + "x: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/changeX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/changeY(double)", + "memberId": "extensions/camera/Camera/changeY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "changeY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Changes y by a certain amount", + "description": "Changes y by a certain amount", + "scratchblock": null, + "paramDocs": [ + "y: number in pixels" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/changeY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/changeZoom(double)", + "memberId": "extensions/camera/Camera/changeZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "changeZoom", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "dz" + ], + "params": [ + "double dz" + ], + "summary": "Changes the zoom level by a certain amount", + "description": "Changes the zoom level by a certain amount", + "scratchblock": null, + "paramDocs": [ + "dz: the amount to change the zoom level by" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/changeZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/constructor()", + "memberId": "extensions/camera/Camera/constructor", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "constructor", + "static": false, + "returnType": "Camera", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Constructs a new Camera with default values. The default position is (0, 0) and the default\nzoom level is 100.", + "description": "Constructs a new Camera with default values. The default position is (0, 0) and the default\nzoom level is 100.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getPosition()", + "memberId": "extensions/camera/Camera/getPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the position of the sprite", + "description": "Returns the position of the sprite", + "scratchblock": null, + "paramDocs": [], + "returns": "a vector", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getX()", + "memberId": "extensions/camera/Camera/getX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getX", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the x coordinate of the sprite", + "description": "Returns the x coordinate of the sprite", + "scratchblock": null, + "paramDocs": [], + "returns": "a x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getY()", + "memberId": "extensions/camera/Camera/getY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getY", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the y coordinate of the sprite", + "description": "Returns the y coordinate of the sprite", + "scratchblock": null, + "paramDocs": [], + "returns": "a y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/getZoom()", + "memberId": "extensions/camera/Camera/getZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "getZoom", + "static": false, + "returnType": "double", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the zoom level", + "description": "Returns the zoom level", + "scratchblock": null, + "paramDocs": [], + "returns": "the zoom level", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/getZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/resetZoom()", + "memberId": "extensions/camera/Camera/resetZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "resetZoom", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Resets the zoom level to 100", + "description": "Resets the zoom level to 100", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/resetZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setPosition(double,double)", + "memberId": "extensions/camera/Camera/setPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "x", + "y" + ], + "params": [ + "double x", + "double y" + ], + "summary": "Sets the position of the sprite", + "description": "Sets the position of the sprite", + "scratchblock": null, + "paramDocs": [ + "x: a x coordinate", + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setPosition(Vector2)", + "memberId": "extensions/camera/Camera/setPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setPosition", + "static": false, + "returnType": "void", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Sets the position of the sprite based on the coordinates of a given vector.", + "description": "Sets the position of the sprite based on the coordinates of a given vector.", + "scratchblock": null, + "paramDocs": [ + "v: a vector" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setX(double)", + "memberId": "extensions/camera/Camera/setX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setX", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Sets the x coordinate", + "description": "Sets the x coordinate", + "scratchblock": null, + "paramDocs": [ + "x: a x coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setY(double)", + "memberId": "extensions/camera/Camera/setY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setY", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Sets the y coordinate", + "description": "Sets the y coordinate", + "scratchblock": null, + "paramDocs": [ + "y: a y coordinate" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setZoom(double)", + "memberId": "extensions/camera/Camera/setZoom", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setZoom", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "zoom" + ], + "params": [ + "double zoom" + ], + "summary": "Sets the zoom", + "description": "Sets the zoom", + "scratchblock": null, + "paramDocs": [ + "zoom: the zoom level" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setZoom", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/setZoomLimit(double,double)", + "memberId": "extensions/camera/Camera/setZoomLimit", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "setZoomLimit", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double", + "double" + ], + "parameterNames": [ + "low", + "high" + ], + "params": [ + "double low", + "double high" + ], + "summary": "Sets the zoom limits", + "description": "Sets the zoom limits", + "scratchblock": null, + "paramDocs": [ + "low: the lower limit", + "high: the upper limit" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/setZoomLimit", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toGlobalPosition(Vector2)", + "memberId": "extensions/camera/Camera/toGlobalPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toGlobalPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Converts local camera coordinates to screen coordinates", + "description": "Converts local camera coordinates to screen coordinates", + "scratchblock": null, + "paramDocs": [ + "v: local camera coordinates" + ], + "returns": "screen coordinates", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toGlobalPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toGlobalX(double)", + "memberId": "extensions/camera/Camera/toGlobalX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toGlobalX", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Converts local camera x coordinate to screen x coordinate", + "description": "Converts local camera x coordinate to screen x coordinate", + "scratchblock": null, + "paramDocs": [ + "x: local camera x coordinate" + ], + "returns": "screen x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toGlobalX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toGlobalY(double)", + "memberId": "extensions/camera/Camera/toGlobalY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toGlobalY", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Converts local camera y coordinate to screen y coordinate", + "description": "Converts local camera y coordinate to screen y coordinate", + "scratchblock": null, + "paramDocs": [ + "y: local camera y coordinate" + ], + "returns": "screen y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toGlobalY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toLocalPosition(Vector2)", + "memberId": "extensions/camera/Camera/toLocalPosition", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toLocalPosition", + "static": false, + "returnType": "Vector2", + "parameterTypes": [ + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "v" + ], + "params": [ + "Vector2 v" + ], + "summary": "Converts screen coordinates to local camera coordinates", + "description": "Converts screen coordinates to local camera coordinates", + "scratchblock": null, + "paramDocs": [ + "v: screen coordinates" + ], + "returns": "local coordinates", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toLocalPosition", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toLocalX(double)", + "memberId": "extensions/camera/Camera/toLocalX", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toLocalX", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "x" + ], + "params": [ + "double x" + ], + "summary": "Converts screen x coordinate to local camera x coordinate", + "description": "Converts screen x coordinate to local camera x coordinate", + "scratchblock": null, + "paramDocs": [ + "x: screen x coordinate" + ], + "returns": "local x coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toLocalX", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/camera/Camera/toLocalY(double)", + "memberId": "extensions/camera/Camera/toLocalY", + "owner": "org.openpatch.scratch.extensions.camera.Camera", + "className": "Camera", + "methodName": "toLocalY", + "static": false, + "returnType": "double", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "y" + ], + "params": [ + "double y" + ], + "summary": "Converts screen y coordinate to local camera y coordinate", + "description": "Converts screen y coordinate to local camera y coordinate", + "scratchblock": null, + "paramDocs": [ + "y: screen y coordinate" + ], + "returns": "local y coordinate", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/camera/Camera/toLocalY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/fs/File/constructor()", + "memberId": "extensions/fs/File/constructor", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "constructor", + "static": false, + "returnType": "File", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The File class provides methods to save and load objects to and from files in\nJSON or XML format.\nIt supports saving and loading objects with automatic detection of file type\nbased on the method\nused. The class uses Jackson ObjectMapper for JSON and XmlMapper for XML\nserialization and\ndeserialization.", + "description": "The File class provides methods to save and load objects to and from files in\nJSON or XML format.\nIt supports saving and loading objects with automatic detection of file type\nbased on the method\nused. The class uses Jackson ObjectMapper for JSON and XmlMapper for XML\nserialization and\ndeserialization.\n\nUsage examples:\n\n```java\n// Save an object as JSON\nFile.save(\"/path/to/file.json\", myObject);\n\n// Save an object as XML\nFile.saveXML(\"/path/to/file.xml\", myObject);\n\n// Load an object from JSON\nMyClass obj = File.load(\"/path/to/file.json\", MyClass.class);\n\n// Load an object from XML\nMyClass obj = File.loadXML(\"/path/to/file.xml\", MyClass.class);\n```\n\nNote: The file paths can be absolute or relative. If a relative path is\nprovided, the class\nwill attempt to load the file from the classpath.\n\nSupported file types:\n\n

    \n
  • JSON\n
  • XML\n
", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/load(String,Class)", + "memberId": "extensions/fs/File/load", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "load", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from a file at the given path.", + "description": "Loads an object of the specified class from a file at the given path.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the file from which the object is to be loaded", + "cls: the class of the object to be loaded" + ], + "returns": "the loaded object of the specified class", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/load", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/loadOrCreate(String,Class)", + "memberId": "extensions/fs/File/loadOrCreate", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "loadOrCreate", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from a file at the given path, or\ncreates a new one if the file does not exist.", + "description": "Loads an object of the specified class from a file at the given path, or\ncreates a new one if the file does not exist.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the file from which the object is to be loaded", + "cls: the class of the object to be loaded" + ], + "returns": "the loaded object of the specified class, or a new instance if the\n file does not exist", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/loadOrCreate", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/loadXML(String,Class)", + "memberId": "extensions/fs/File/loadXML", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "loadXML", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from an XML file at the given path.", + "description": "Loads an object of the specified class from an XML file at the given path.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the XML file", + "cls: the class of the object to be loaded" + ], + "returns": "the object loaded from the XML file", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/loadXML", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/loadXMLOrCreate(String,Class)", + "memberId": "extensions/fs/File/loadXMLOrCreate", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "loadXMLOrCreate", + "static": true, + "returnType": "T", + "parameterTypes": [ + "java.lang.String", + "java.lang.Class" + ], + "parameterNames": [ + "path", + "cls" + ], + "params": [ + "String path", + "Class cls" + ], + "summary": "Loads an object of the specified class from an XML file at the given path,\nor creates a new one if the file does not exist.", + "description": "Loads an object of the specified class from an XML file at the given path,\nor creates a new one if the file does not exist.", + "scratchblock": null, + "paramDocs": [ + "path: the path to the XML file", + "cls: the class of the object to be loaded" + ], + "returns": "the object loaded from the XML file, or a new instance if the file\n does not exist", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/loadXMLOrCreate", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/save(String,T)", + "memberId": "extensions/fs/File/save", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "save", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "T" + ], + "parameterNames": [ + "path", + "obj" + ], + "params": [ + "String path", + "T obj" + ], + "summary": "Saves the given object to the specified path in the default file type (JSON).", + "description": "Saves the given object to the specified path in the default file type (JSON).", + "scratchblock": null, + "paramDocs": [ + "path: the path where the object should be saved", + "obj: the object to be saved" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/save", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/fs/File/saveXML(String,T)", + "memberId": "extensions/fs/File/saveXML", + "owner": "org.openpatch.scratch.extensions.fs.File", + "className": "File", + "methodName": "saveXML", + "static": true, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "T" + ], + "parameterNames": [ + "path", + "obj" + ], + "params": [ + "String path", + "T obj" + ], + "summary": "Saves the given object as an XML file at the specified path.", + "description": "Saves the given object as an XML file at the specified path.", + "scratchblock": null, + "paramDocs": [ + "path: the path where the XML file will be saved", + "obj: the object to be saved as XML" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/fs/File/saveXML", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/background()", + "memberId": "extensions/pixels/Pixels/background", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "background", + "static": false, + "returnType": "int[]", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pixels of the background layer, where the pen and stamps draw.", + "description": "Returns the pixels of the background layer, where the pen and stamps draw.", + "scratchblock": null, + "paramDocs": [], + "returns": "one colour per pixel", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/background", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/constructor(PGraphics,PGraphics,PGraphics)", + "memberId": "extensions/pixels/Pixels/constructor", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "constructor", + "static": false, + "returnType": "Pixels", + "parameterTypes": [ + "processing.core.PGraphics", + "processing.core.PGraphics", + "processing.core.PGraphics" + ], + "parameterNames": [ + "mainBuffer", + "backgroundBuffer", + "foregroundBuffer" + ], + "params": [ + "PGraphics mainBuffer", + "PGraphics backgroundBuffer", + "PGraphics foregroundBuffer" + ], + "summary": "Creates the pixel access for a stage.", + "description": "Creates the pixel access for a stage.", + "scratchblock": null, + "paramDocs": [ + "mainBuffer: where the sprites are drawn", + "backgroundBuffer: where the background is drawn", + "foregroundBuffer: where the foreground is drawn" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/foreground()", + "memberId": "extensions/pixels/Pixels/foreground", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "foreground", + "static": false, + "returnType": "int[]", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pixels of the foreground layer.", + "description": "Returns the pixels of the foreground layer.", + "scratchblock": null, + "paramDocs": [], + "returns": "one colour per pixel", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/foreground", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/pixels/Pixels/main()", + "memberId": "extensions/pixels/Pixels/main", + "owner": "org.openpatch.scratch.extensions.pixels.Pixels", + "className": "Pixels", + "methodName": "main", + "static": false, + "returnType": "int[]", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the pixels of the layer the sprites are drawn on.", + "description": "Returns the pixels of the layer the sprites are drawn on.", + "scratchblock": null, + "paramDocs": [], + "returns": "one colour per pixel", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/pixels/Pixels/main", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FFmpegRecorder/constructor(String)", + "memberId": "extensions/recorder/FFmpegRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "className": "FFmpegRecorder", + "methodName": "constructor", + "static": false, + "returnType": "FFmpegRecorder", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "path" + ], + "params": [ + "String path" + ], + "summary": "Constructs an FFmpegRecorder object with the specified path.", + "description": "Constructs an FFmpegRecorder object with the specified path.", + "scratchblock": null, + "paramDocs": [ + "path: the path where the recording will be saved\n \n\nThis constructor initializes the FFmpegRecorder by creating a temporary directory and\n setting up a pattern for temporary PNG files. If the temporary directory cannot be created,\n an error message is printed to the console." + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FFmpegRecorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FFmpegRecorder/saveFrame()", + "memberId": "extensions/recorder/FFmpegRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "className": "FFmpegRecorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame using the specified pattern.", + "description": "Saves the current frame using the specified pattern.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FFmpegRecorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FFmpegRecorder/stop()", + "memberId": "extensions/recorder/FFmpegRecorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.FFmpegRecorder", + "className": "FFmpegRecorder", + "methodName": "stop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the recording process and converts the recorded frames into a video file using FFmpeg.", + "description": "Stops the recording process and converts the recorded frames into a video file using FFmpeg.\n\nThis method overrides the `stop` method from the superclass. It first calls the superclass's\n`stop` method, then checks if the temporary directory (`tmpDir`) is not null. If it is not\nnull, it constructs a command to run FFmpeg, which converts the recorded frames (stored as PNG\nfiles) into a video file with the specified frame rate and codec.\n\nThe FFmpeg command is executed, and a message is printed to the console indicating that the\nvideo conversion is in progress. If there is an error during the execution of the command, the\nerror message is printed to the console.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FFmpegRecorder/stop", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FrameRecorder/constructor(String)", + "memberId": "extensions/recorder/FrameRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "className": "FrameRecorder", + "methodName": "constructor", + "static": false, + "returnType": "FrameRecorder", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "outputFolder" + ], + "params": [ + "String outputFolder" + ], + "summary": "Constructs a new FrameRecorder with the specified output folder.", + "description": "Constructs a new FrameRecorder with the specified output folder.", + "scratchblock": null, + "paramDocs": [ + "outputFolder: the folder where the recorded frames will be saved" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FrameRecorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FrameRecorder/saveFrame()", + "memberId": "extensions/recorder/FrameRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "className": "FrameRecorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame of the applet to the specified output folder. The frame is saved as a\nPNG file with a filename pattern \"#######.png\". The exact filename will be generated based on\nthe current frame number.", + "description": "Saves the current frame of the applet to the specified output folder. The frame is saved as a\nPNG file with a filename pattern \"#######.png\". The exact filename will be generated based on\nthe current frame number.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FrameRecorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/FrameRecorder/snapshot(String)", + "memberId": "extensions/recorder/FrameRecorder/snapshot", + "owner": "org.openpatch.scratch.extensions.recorder.FrameRecorder", + "className": "FrameRecorder", + "methodName": "snapshot", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "filename" + ], + "params": [ + "String filename" + ], + "summary": "Takes a snapshot of the current frame and saves it to the specified filename.", + "description": "Takes a snapshot of the current frame and saves it to the specified filename.", + "scratchblock": null, + "paramDocs": [ + "filename: the name of the file to save the snapshot to" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/FrameRecorder/snapshot", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/constructor(String)", + "memberId": "extensions/recorder/GifRecorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "constructor", + "static": false, + "returnType": "GifRecorder", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "filePath" + ], + "params": [ + "String filePath" + ], + "summary": "Constructs a new GifRecorder object.", + "description": "Constructs a new GifRecorder object.", + "scratchblock": null, + "paramDocs": [ + "filePath: the path where the GIF file will be saved" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/saveFrame()", + "memberId": "extensions/recorder/GifRecorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame of the applet as a GIF image.", + "description": "Saves the current frame of the applet as a GIF image.\n\nThis method captures the current frame from the applet, sets the frame rate, and adds the\nframe to the GIF encoder. If the applet's pixels are null, the frame is not saved.\n\nNote: This method catches and ignores any NullPointerException that may occur.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/snapshot()", + "memberId": "extensions/recorder/GifRecorder/snapshot", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "snapshot", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Captures a snapshot and saves it as a GIF. This method starts the GIF encoder, saves the\ncurrent frame, and then finishes the encoding process.", + "description": "Captures a snapshot and saves it as a GIF. This method starts the GIF encoder, saves the\ncurrent frame, and then finishes the encoding process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/snapshot", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/start()", + "memberId": "extensions/recorder/GifRecorder/start", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "start", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Starts the GIF recording process.", + "description": "Starts the GIF recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/start", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/GifRecorder/stop()", + "memberId": "extensions/recorder/GifRecorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.GifRecorder", + "className": "GifRecorder", + "methodName": "stop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the GIF recording process and finalizes the GIF file.", + "description": "Stops the GIF recording process and finalizes the GIF file.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/GifRecorder/stop", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/constructor(String,String)", + "memberId": "extensions/recorder/Recorder/constructor", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "constructor", + "static": false, + "returnType": "Recorder", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "path", + "ext" + ], + "params": [ + "String path", + "String ext" + ], + "summary": "Constructs a new Recorder object with the specified file path and extension. If the provided\npath does not end with the specified extension, the extension is appended to the path.", + "description": "Constructs a new Recorder object with the specified file path and extension. If the provided\npath does not end with the specified extension, the extension is appended to the path.", + "scratchblock": null, + "paramDocs": [ + "path: the file path where the recording will be saved", + "ext: the file extension to be used for the recording" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/post()", + "memberId": "extensions/recorder/Recorder/post", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "post", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Called after each frame is drawn. This method is registered with the Applet class to ensure\nthat frames are saved at the appropriate time during the recording process.", + "description": "Called after each frame is drawn. This method is registered with the Applet class to ensure\nthat frames are saved at the appropriate time during the recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/post", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/saveFrame()", + "memberId": "extensions/recorder/Recorder/saveFrame", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "saveFrame", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Saves the current frame. This method should be implemented by subclasses to define the specific\nbehavior for saving a frame.", + "description": "Saves the current frame. This method should be implemented by subclasses to define the specific\nbehavior for saving a frame.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/saveFrame", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/start()", + "memberId": "extensions/recorder/Recorder/start", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "start", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Starts the recording process.", + "description": "Starts the recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/start", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/recorder/Recorder/stop()", + "memberId": "extensions/recorder/Recorder/stop", + "owner": "org.openpatch.scratch.extensions.recorder.Recorder", + "className": "Recorder", + "methodName": "stop", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops the recording process.", + "description": "Stops the recording process.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/recorder/Recorder/stop", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/constructor(String,String,String)", + "memberId": "extensions/shader/Shader/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "constructor", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "fragmentShaderPath", + "vertexShaderPath" + ], + "params": [ + "String name", + "String fragmentShaderPath", + "String vertexShaderPath" + ], + "summary": "Constructor", + "description": "Constructor", + "scratchblock": null, + "paramDocs": [ + "name: unique name", + "fragmentShaderPath: path to the fragment shader file", + "vertexShaderPath: path to the vertex shader file, or null for Processing's default one" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/constructor(Shader)", + "memberId": "extensions/shader/Shader/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "constructor", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "org.openpatch.scratch.extensions.shader.Shader" + ], + "parameterNames": [ + "shader" + ], + "params": [ + "Shader shader" + ], + "summary": "Copy constructor", + "description": "Copy constructor", + "scratchblock": null, + "paramDocs": [ + "shader: shader" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/getName()", + "memberId": "extensions/shader/Shader/getName", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "getName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the name", + "description": "Returns the name", + "scratchblock": null, + "paramDocs": [], + "returns": "the name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/getName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/getPShader()", + "memberId": "extensions/shader/Shader/getPShader", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "getPShader", + "static": false, + "returnType": "PShader", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shader", + "description": "Returns the shader", + "scratchblock": null, + "paramDocs": [], + "returns": "the shader", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/getPShader", + "availability": "desktop-only", + "availabilityReason": "Processing's PShader object belongs to the desktop renderer. The browser uses WebGL filters.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int" + ], + "parameterNames": [ + "name", + "x" + ], + "params": [ + "String name", + "int x" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the uniform in the shader file", + "x: the value" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,boolean)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "boolean" + ], + "parameterNames": [ + "name", + "x" + ], + "params": [ + "String name", + "boolean x" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,double)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "double" + ], + "parameterNames": [ + "name", + "x" + ], + "params": [ + "String name", + "double x" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,int,int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int", + "int" + ], + "parameterNames": [ + "name", + "x", + "y" + ], + "params": [ + "String name", + "int x", + "int y" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: ", + "y: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,boolean,boolean)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "boolean", + "boolean" + ], + "parameterNames": [ + "name", + "x", + "y" + ], + "params": [ + "String name", + "boolean x", + "boolean y" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: ", + "y: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,double,double)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "double", + "double" + ], + "parameterNames": [ + "name", + "x", + "y" + ], + "params": [ + "String name", + "double x", + "double y" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "x: ", + "y: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,Vector2)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "org.openpatch.scratch.Vector2" + ], + "parameterNames": [ + "name", + "vec" + ], + "params": [ + "String name", + "Vector2 vec" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "vec: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,int[],int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "int[]", + "int" + ], + "parameterNames": [ + "name", + "values", + "ncoords" + ], + "params": [ + "String name", + "int[] values", + "int ncoords" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "values: ", + "ncoords: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,double[],int)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "double[]", + "int" + ], + "parameterNames": [ + "name", + "values", + "ncoords" + ], + "params": [ + "String name", + "double[] values", + "int ncoords" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "values: ", + "ncoords: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/set(String,Color)", + "memberId": "extensions/shader/Shader/set", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "set", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String", + "org.openpatch.scratch.Color" + ], + "parameterNames": [ + "name", + "c" + ], + "params": [ + "String name", + "Color c" + ], + "summary": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.", + "description": "Sets a `uniform` of the shader: a value the shader reads but the\nprogram decides, such as the time for an animation or a position on the\nstage.\n\nThe name is the one the shader file declares, `uniform float blocks;`\nis set with `set(\"blocks\", 20)`. There is a `set` for one or two\nnumbers or booleans, a [Vector2](../Vector2/index), a\n[Color](../Color/index) (as a `vec3`), and an array of\nnumbers, `ncoords` at a time, for an array uniform like\n`uniform vec3 lights[10];`.\n\nA uniform keeps its value until it is set again, so a value that changes is\nset in `run()`.", + "scratchblock": null, + "paramDocs": [ + "name: ", + "c: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/set", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shader/setName(String)", + "memberId": "extensions/shader/Shader/setName", + "owner": "org.openpatch.scratch.extensions.shader.Shader", + "className": "Shader", + "methodName": "setName", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Sets the name", + "description": "Sets the name", + "scratchblock": null, + "paramDocs": [ + "name: unique name" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shader/setName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/add(String,String,String)", + "memberId": "extensions/shader/Shaders/add", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "add", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "parameterNames": [ + "name", + "fragmentShaderPath", + "vertexShaderPath" + ], + "params": [ + "String name", + "String fragmentShaderPath", + "String vertexShaderPath" + ], + "summary": "Adds a shader. If a shader with the given name already exists, that one is\nreturned instead.", + "description": "Adds a shader. If a shader with the given name already exists, that one is\nreturned instead.\n\nThe first shader added is drawn with right away; the ones after it wait\nuntil [switchTo(String)](switchTo) or [next()](next) picks them.\n\nThe vertex shader is usually `null`, which uses Processing's default\none. In the browser any other vertex shader is ignored.", + "scratchblock": null, + "paramDocs": [ + "name: a unique name", + "fragmentShaderPath: the path to the fragment shader", + "vertexShaderPath: the path to the vertex shader, may be null" + ], + "returns": "the shader", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/add", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/constructor(String)", + "memberId": "extensions/shader/Shaders/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "constructor", + "static": false, + "returnType": "Shaders", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "owner" + ], + "params": [ + "String owner" + ], + "summary": "Creates an empty set of shaders.", + "description": "Creates an empty set of shaders.", + "scratchblock": null, + "paramDocs": [ + "owner: what the shaders belong to, used in error messages: \"sprite\" or\n \"stage\"" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/constructor(Shaders)", + "memberId": "extensions/shader/Shaders/constructor", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "constructor", + "static": false, + "returnType": "Shaders", + "parameterTypes": [ + "org.openpatch.scratch.extensions.shader.Shaders" + ], + "parameterNames": [ + "s" + ], + "params": [ + "Shaders s" + ], + "summary": "Copies a set of shaders.", + "description": "Copies a set of shaders.", + "scratchblock": null, + "paramDocs": [ + "s: the shaders to copy" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/get(String)", + "memberId": "extensions/shader/Shaders/get", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "get", + "static": false, + "returnType": "Shader", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Returns a shader by name.", + "description": "Returns a shader by name.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the shader" + ], + "returns": "the shader, or null if there is none with that name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/get", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/getCurrent()", + "memberId": "extensions/shader/Shaders/getCurrent", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "getCurrent", + "static": false, + "returnType": "Shader", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the shader currently drawn with.", + "description": "Returns the shader currently drawn with.", + "scratchblock": null, + "paramDocs": [], + "returns": "the current shader, or null if there is none", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/getCurrent", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/getCurrentIndex()", + "memberId": "extensions/shader/Shaders/getCurrentIndex", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "getCurrentIndex", + "static": false, + "returnType": "int", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the position of the current shader.", + "description": "Returns the position of the current shader.", + "scratchblock": null, + "paramDocs": [], + "returns": "the position, or -1 if no shader is in use", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/getCurrentIndex", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/getCurrentName()", + "memberId": "extensions/shader/Shaders/getCurrentName", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "getCurrentName", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the name of the current shader.", + "description": "Returns the name of the current shader.", + "scratchblock": null, + "paramDocs": [], + "returns": "the name, or null if no shader is in use", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/getCurrentName", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/next()", + "memberId": "extensions/shader/Shaders/next", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "next", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Switches to the next shader, in the order they were added. After the last\none comes the first one again.", + "description": "Switches to the next shader, in the order they were added. After the last\none comes the first one again.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/next", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/reset()", + "memberId": "extensions/shader/Shaders/reset", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "reset", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Stops drawing with a shader, so the sprite or stage looks as it does\nwithout one. The shaders are kept: [switchTo(String)](switchTo) or\n[next()](next) brings one back.", + "description": "Stops drawing with a shader, so the sprite or stage looks as it does\nwithout one. The shaders are kept: [switchTo(String)](switchTo) or\n[next()](next) brings one back.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/reset", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/switchTo(String)", + "memberId": "extensions/shader/Shaders/switchTo", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "switchTo", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Switches to the shader with the given name, or with the given position in\nthe order the shaders were added. A name that is not there leaves the\ncurrent shader and prints which ones there are.", + "description": "Switches to the shader with the given name, or with the given position in\nthe order the shaders were added. A name that is not there leaves the\ncurrent shader and prints which ones there are.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the shader" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/switchTo", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/shader/Shaders/switchTo(double)", + "memberId": "extensions/shader/Shaders/switchTo", + "owner": "org.openpatch.scratch.extensions.shader.Shaders", + "className": "Shaders", + "methodName": "switchTo", + "static": false, + "returnType": "void", + "parameterTypes": [ + "double" + ], + "parameterNames": [ + "index" + ], + "params": [ + "double index" + ], + "summary": "Switches to the shader at the given position.", + "description": "Switches to the shader at the given position.", + "scratchblock": null, + "paramDocs": [ + "index: the position of the shader" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/shader/Shaders/switchTo", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/by(Comparator)", + "memberId": "extensions/sorting/Sorting/by", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "by", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.util.Comparator" + ], + "parameterNames": [ + "comparator" + ], + "params": [ + "Comparator comparator" + ], + "summary": "Draws sprites in an order of your own.", + "description": "Draws sprites in an order of your own.", + "scratchblock": null, + "paramDocs": [ + "comparator: decides which of two sprites is drawn first" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/by", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/byY()", + "memberId": "extensions/sorting/Sorting/byY", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "byY", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Draws sprites that are further down the stage in front of sprites that are\nfurther up, which is what a view from above usually wants.", + "description": "Draws sprites that are further down the stage in front of sprites that are\nfurther up, which is what a view from above usually wants.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/byY", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/constructor()", + "memberId": "extensions/sorting/Sorting/constructor", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "constructor", + "static": false, + "returnType": "Sorting", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Decides the order in which the sprites of a stage are drawn.", + "description": "Decides the order in which the sprites of a stage are drawn.\n\nReached through `stage.getSorting()`:\n\n```java\nthis.getSorting().byY();\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/constructor", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/getComparator()", + "memberId": "extensions/sorting/Sorting/getComparator", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "getComparator", + "static": false, + "returnType": "Comparator", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns the order currently used.", + "description": "Returns the order currently used.", + "scratchblock": null, + "paramDocs": [], + "returns": "the comparator, or null if the sprites are not sorted", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/getComparator", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/isOn()", + "memberId": "extensions/sorting/Sorting/isOn", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "isOn", + "static": false, + "returnType": "boolean", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Checks whether the sprites are being sorted.", + "description": "Checks whether the sprites are being sorted.", + "scratchblock": null, + "paramDocs": [], + "returns": "true if an order is set", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/isOn", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/sorting/Sorting/off()", + "memberId": "extensions/sorting/Sorting/off", + "owner": "org.openpatch.scratch.extensions.sorting.Sorting", + "className": "Sorting", + "methodName": "off", + "static": false, + "returnType": "void", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Draws sprites in the order they were added, which is the default.", + "description": "Draws sprites in the order they were added, which is the default.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/sorting/Sorting/off", + "availability": "implemented", + "availabilityReason": "Declared by the browser; behavioral limitations and compiler dialect differences still apply.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/constructor()", + "memberId": "extensions/tiled/MapObject/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "constructor", + "static": false, + "returnType": "MapObject", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Represents a map object with various properties such as dimensions, position,\nvisibility, and\ntype. It also provides methods to retrieve property values in different\nformats and to get a\nShape representation of the map object.", + "description": "Represents a map object with various properties such as dimensions, position,\nvisibility, and\ntype. It also provides methods to retrieve property values in different\nformats and to get a\nShape representation of the map object.", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getProperty(String)", + "memberId": "extensions/tiled/MapObject/getProperty", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getProperty", + "static": false, + "returnType": "String", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of a property with the specified name from the properties\nlist.", + "description": "Retrieves the value of a property with the specified name from the properties\nlist.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the value of the property with the specified name", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getProperty", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getPropertyBoolean(String)", + "memberId": "extensions/tiled/MapObject/getPropertyBoolean", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getPropertyBoolean", + "static": false, + "returnType": "boolean", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of the specified property as a boolean.", + "description": "Retrieves the value of the specified property as a boolean.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the boolean value of the property, or false if the property is not\n found or cannot be\n parsed as a boolean", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getPropertyBoolean", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getPropertyFloat(String)", + "memberId": "extensions/tiled/MapObject/getPropertyFloat", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getPropertyFloat", + "static": false, + "returnType": "float", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of a specified property as a float.", + "description": "Retrieves the value of a specified property as a float.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the float value of the specified property", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getPropertyFloat", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getPropertyInt(String)", + "memberId": "extensions/tiled/MapObject/getPropertyInt", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getPropertyInt", + "static": false, + "returnType": "int", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the value of a property with the specified name and converts it to\nan integer.", + "description": "Retrieves the value of a property with the specified name and converts it to\nan integer.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the property to retrieve" + ], + "returns": "the integer value of the property", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getPropertyInt", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/getShape()", + "memberId": "extensions/tiled/MapObject/getShape", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "getShape", + "static": false, + "returnType": "Shape", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "Returns a Shape object representing the current map object. The type of Shape\nreturned depends\non the properties of the map object: - If the object is a point, a 1x1\nrectangle is returned. -\nIf the object is an ellipse, an Ellipse2D object with the specified width and\nheight is\nreturned. - If the object is a polygon, a Polygon object with the specified\npoints is returned.\n- If none of the above conditions are met, a rectangle with the specified\nwidth and height is\nreturned.", + "description": "Returns a Shape object representing the current map object. The type of Shape\nreturned depends\non the properties of the map object: - If the object is a point, a 1x1\nrectangle is returned. -\nIf the object is an ellipse, an Ellipse2D object with the specified width and\nheight is\nreturned. - If the object is a polygon, a Polygon object with the specified\npoints is returned.\n- If none of the above conditions are met, a rectangle with the specified\nwidth and height is\nreturned.", + "scratchblock": null, + "paramDocs": [], + "returns": "a Shape object representing the current map object.", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/getShape", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/MapObject/setClassName(String)", + "memberId": "extensions/tiled/MapObject/setClassName", + "owner": "org.openpatch.scratch.extensions.tiled.MapObject", + "className": "MapObject", + "methodName": "setClassName", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "className" + ], + "params": [ + "String className" + ], + "summary": "Tiled 1.9 renamed an object's type to class; both end up in [type](type)\n(an explicit type wins).", + "description": "Tiled 1.9 renamed an object's type to class; both end up in [type](type)\n(an explicit type wins).", + "scratchblock": null, + "paramDocs": [ + "className: " + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/MapObject/setClassName", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/Property/constructor()", + "memberId": "extensions/tiled/Property/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.Property", + "className": "Property", + "methodName": "constructor", + "static": false, + "returnType": "Property", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "The Property class represents a property of a Tiled object. It includes fields for the property\nname, type, and value.", + "description": "The Property class represents a property of a Tiled object. It includes fields for the property\nname, type, and value.\n\nExample usage:\n\n```java\nProperty p = new Property();\np.name = \"myProperty\";\np.type = \"number\";\np.value = \"42\";\n```", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/Property/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/Property/setText(String)", + "memberId": "extensions/tiled/Property/setText", + "owner": "org.openpatch.scratch.extensions.tiled.Property", + "className": "Property", + "methodName": "setText", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "text" + ], + "params": [ + "String text" + ], + "summary": "Multi-line strings are written as the element's text instead of a value\nattribute.", + "description": "Multi-line strings are written as the element's text instead of a value\nattribute.", + "scratchblock": null, + "paramDocs": [ + "text: the element text" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/Property/setText", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/constructor(String,Stage)", + "memberId": "extensions/tiled/TiledMap/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "constructor", + "static": false, + "returnType": "TiledMap", + "parameterTypes": [ + "java.lang.String", + "org.openpatch.scratch.Stage" + ], + "parameterNames": [ + "path", + "stage" + ], + "params": [ + "String path", + "Stage stage" + ], + "summary": "Constructs a new TiledMap object.", + "description": "Constructs a new TiledMap object.", + "scratchblock": null, + "paramDocs": [ + "path: the file path to the Tiled map XML file", + "stage: the stage to which this Tiled map belongs" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/getObjectsFromLayer(String)", + "memberId": "extensions/tiled/TiledMap/getObjectsFromLayer", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "getObjectsFromLayer", + "static": false, + "returnType": "MapObject[]", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Retrieves the objects from a specified layer in the tiled map.", + "description": "Retrieves the objects from a specified layer in the tiled map.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the layer from which to retrieve objects" + ], + "returns": "an array of MapObject from the specified layer, or null if the layer\n does not exist", + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/getObjectsFromLayer", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/stampLayerToBackground(String)", + "memberId": "extensions/tiled/TiledMap/stampLayerToBackground", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "stampLayerToBackground", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stamps a specified layer onto the background.", + "description": "Stamps a specified layer onto the background.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the layer to be stamped onto the background" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/stampLayerToBackground", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/stampLayerToForeground(String)", + "memberId": "extensions/tiled/TiledMap/stampLayerToForeground", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "stampLayerToForeground", + "static": false, + "returnType": "void", + "parameterTypes": [ + "java.lang.String" + ], + "parameterNames": [ + "name" + ], + "params": [ + "String name" + ], + "summary": "Stamps the specified layer to the foreground.", + "description": "Stamps the specified layer to the foreground.", + "scratchblock": null, + "paramDocs": [ + "name: the name of the layer to be stamped to the foreground" + ], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/stampLayerToForeground", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TiledMap/toString()", + "memberId": "extensions/tiled/TiledMap/toString", + "owner": "org.openpatch.scratch.extensions.tiled.TiledMap", + "className": "TiledMap", + "methodName": "toString", + "static": false, + "returnType": "String", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "", + "description": "", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TiledMap/toString", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + }, + { + "id": "extensions/tiled/TilesetImage/constructor()", + "memberId": "extensions/tiled/TilesetImage/constructor", + "owner": "org.openpatch.scratch.extensions.tiled.TilesetImage", + "className": "TilesetImage", + "methodName": "constructor", + "static": false, + "returnType": "TilesetImage", + "parameterTypes": [], + "parameterNames": [], + "params": [], + "summary": "", + "description": "", + "scratchblock": null, + "paramDocs": [], + "returns": null, + "since": "", + "docsUrl": "https://scratch4j.openpatch.org/reference/extensions/tiled/TilesetImage/constructor", + "availability": "desktop-only", + "availabilityReason": "This API requires the desktop runtime. Browser declarations may report the limitation without performing the operation.", + "translations": {} + } + ] +} diff --git a/src/main/resources/catalogs/assets.json b/src/main/resources/catalogs/assets.json new file mode 100644 index 00000000..067f4c30 --- /dev/null +++ b/src/main/resources/catalogs/assets.json @@ -0,0 +1,12138 @@ +{ + "schemaVersion": 1, + "libraryVersion": "5.7.0", + "browserVersion": "5.7.0-browser.2", + "license": "CC0", + "images": [ + { + "id": "platformer/alienBeige_climb1", + "name": "alienBeige_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_climb1" + }, + { + "id": "platformer/alienBeige_climb2", + "name": "alienBeige_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_climb2" + }, + { + "id": "platformer/alienBeige_duck", + "name": "alienBeige_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_duck" + }, + { + "id": "platformer/alienBeige_front", + "name": "alienBeige_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_front" + }, + { + "id": "platformer/alienBeige_hit", + "name": "alienBeige_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_hit" + }, + { + "id": "platformer/alienBeige_jump", + "name": "alienBeige_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_jump" + }, + { + "id": "platformer/alienBeige_stand", + "name": "alienBeige_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_stand" + }, + { + "id": "platformer/alienBeige_swim1", + "name": "alienBeige_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_swim1" + }, + { + "id": "platformer/alienBeige_swim2", + "name": "alienBeige_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_swim2" + }, + { + "id": "platformer/alienBeige_walk1", + "name": "alienBeige_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_walk1" + }, + { + "id": "platformer/alienBeige_walk2", + "name": "alienBeige_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBeige_walk2" + }, + { + "id": "platformer/alienBlue_climb1", + "name": "alienBlue_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_climb1" + }, + { + "id": "platformer/alienBlue_climb2", + "name": "alienBlue_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_climb2" + }, + { + "id": "platformer/alienBlue_duck", + "name": "alienBlue_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_duck" + }, + { + "id": "platformer/alienBlue_front", + "name": "alienBlue_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_front" + }, + { + "id": "platformer/alienBlue_hit", + "name": "alienBlue_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_hit" + }, + { + "id": "platformer/alienBlue_jump", + "name": "alienBlue_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_jump" + }, + { + "id": "platformer/alienBlue_stand", + "name": "alienBlue_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_stand" + }, + { + "id": "platformer/alienBlue_swim1", + "name": "alienBlue_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_swim1" + }, + { + "id": "platformer/alienBlue_swim2", + "name": "alienBlue_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_swim2" + }, + { + "id": "platformer/alienBlue_walk1", + "name": "alienBlue_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_walk1" + }, + { + "id": "platformer/alienBlue_walk2", + "name": "alienBlue_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienBlue_walk2" + }, + { + "id": "platformer/alienGreen_climb1", + "name": "alienGreen_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_climb1" + }, + { + "id": "platformer/alienGreen_climb2", + "name": "alienGreen_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_climb2" + }, + { + "id": "platformer/alienGreen_duck", + "name": "alienGreen_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_duck" + }, + { + "id": "platformer/alienGreen_front", + "name": "alienGreen_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_front" + }, + { + "id": "platformer/alienGreen_hit", + "name": "alienGreen_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_hit" + }, + { + "id": "platformer/alienGreen_jump", + "name": "alienGreen_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_jump" + }, + { + "id": "platformer/alienGreen_stand", + "name": "alienGreen_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_stand" + }, + { + "id": "platformer/alienGreen_swim1", + "name": "alienGreen_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_swim1" + }, + { + "id": "platformer/alienGreen_swim2", + "name": "alienGreen_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_swim2" + }, + { + "id": "platformer/alienGreen_walk1", + "name": "alienGreen_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_walk1" + }, + { + "id": "platformer/alienGreen_walk2", + "name": "alienGreen_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienGreen_walk2" + }, + { + "id": "platformer/alienPink_climb1", + "name": "alienPink_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_climb1" + }, + { + "id": "platformer/alienPink_climb2", + "name": "alienPink_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_climb2" + }, + { + "id": "platformer/alienPink_duck", + "name": "alienPink_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_duck" + }, + { + "id": "platformer/alienPink_front", + "name": "alienPink_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_front" + }, + { + "id": "platformer/alienPink_hit", + "name": "alienPink_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_hit" + }, + { + "id": "platformer/alienPink_jump", + "name": "alienPink_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_jump" + }, + { + "id": "platformer/alienPink_stand", + "name": "alienPink_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_stand" + }, + { + "id": "platformer/alienPink_swim1", + "name": "alienPink_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_swim1" + }, + { + "id": "platformer/alienPink_swim2", + "name": "alienPink_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_swim2" + }, + { + "id": "platformer/alienPink_walk1", + "name": "alienPink_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_walk1" + }, + { + "id": "platformer/alienPink_walk2", + "name": "alienPink_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienPink_walk2" + }, + { + "id": "platformer/alienYellow_climb1", + "name": "alienYellow_climb1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_climb1" + }, + { + "id": "platformer/alienYellow_climb2", + "name": "alienYellow_climb2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_climb2" + }, + { + "id": "platformer/alienYellow_duck", + "name": "alienYellow_duck", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_duck" + }, + { + "id": "platformer/alienYellow_front", + "name": "alienYellow_front", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_front" + }, + { + "id": "platformer/alienYellow_hit", + "name": "alienYellow_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1548, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_hit" + }, + { + "id": "platformer/alienYellow_jump", + "name": "alienYellow_jump", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1290, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_jump" + }, + { + "id": "platformer/alienYellow_stand", + "name": "alienYellow_stand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1032, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_stand" + }, + { + "id": "platformer/alienYellow_swim1", + "name": "alienYellow_swim1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 774, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_swim1" + }, + { + "id": "platformer/alienYellow_swim2", + "name": "alienYellow_swim2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 516, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_swim2" + }, + { + "id": "platformer/alienYellow_walk1", + "name": "alienYellow_walk1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 258, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_walk1" + }, + { + "id": "platformer/alienYellow_walk2", + "name": "alienYellow_walk2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 0, + "width": 128, + "height": 256, + "direction": 90.0, + "referenceName": "alienYellow_walk2" + }, + { + "id": "platformer/barnacle", + "name": "barnacle", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "barnacle" + }, + { + "id": "platformer/barnacle_attack", + "name": "barnacle_attack", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "barnacle_attack" + }, + { + "id": "platformer/barnacle_dead", + "name": "barnacle_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "barnacle_dead" + }, + { + "id": "platformer/bee", + "name": "bee", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3510, + "y": 130, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "bee" + }, + { + "id": "platformer/bee_dead", + "name": "bee_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3510, + "y": 0, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "bee_dead" + }, + { + "id": "platformer/bee_move", + "name": "bee_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1820, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "bee_move" + }, + { + "id": "platformer/bomb", + "name": "bomb", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bomb" + }, + { + "id": "platformer/bombWhite", + "name": "bombWhite", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bombWhite" + }, + { + "id": "platformer/boxCoin", + "name": "boxCoin", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin" + }, + { + "id": "platformer/boxCoin_boxed", + "name": "boxCoin_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin_boxed" + }, + { + "id": "platformer/boxCoin_disabled", + "name": "boxCoin_disabled", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin_disabled" + }, + { + "id": "platformer/boxCoin_disabled_boxed", + "name": "boxCoin_disabled_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCoin_disabled_boxed" + }, + { + "id": "platformer/boxCrate", + "name": "boxCrate", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate" + }, + { + "id": "platformer/boxCrate_double", + "name": "boxCrate_double", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate_double" + }, + { + "id": "platformer/boxCrate_single", + "name": "boxCrate_single", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate_single" + }, + { + "id": "platformer/boxCrate_warning", + "name": "boxCrate_warning", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxCrate_warning" + }, + { + "id": "platformer/boxExplosive", + "name": "boxExplosive", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxExplosive" + }, + { + "id": "platformer/boxExplosive_disabled", + "name": "boxExplosive_disabled", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxExplosive_disabled" + }, + { + "id": "platformer/boxExplosive_used", + "name": "boxExplosive_used", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxExplosive_used" + }, + { + "id": "platformer/boxItem", + "name": "boxItem", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem" + }, + { + "id": "platformer/boxItem_boxed", + "name": "boxItem_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem_boxed" + }, + { + "id": "platformer/boxItem_disabled", + "name": "boxItem_disabled", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem_disabled" + }, + { + "id": "platformer/boxItem_disabled_boxed", + "name": "boxItem_disabled_boxed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "boxItem_disabled_boxed" + }, + { + "id": "platformer/brickBrown", + "name": "brickBrown", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "brickBrown" + }, + { + "id": "platformer/brickGrey", + "name": "brickGrey", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "brickGrey" + }, + { + "id": "platformer/bridgeA", + "name": "bridgeA", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2340, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bridgeA" + }, + { + "id": "platformer/bridgeB", + "name": "bridgeB", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bridgeB" + }, + { + "id": "platformer/bush", + "name": "bush", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "bush" + }, + { + "id": "platformer/cactus", + "name": "cactus", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "cactus" + }, + { + "id": "platformer/chain", + "name": "chain", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "chain" + }, + { + "id": "platformer/coinBronze", + "name": "coinBronze", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "coinBronze" + }, + { + "id": "platformer/coinGold", + "name": "coinGold", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "coinGold" + }, + { + "id": "platformer/coinSilver", + "name": "coinSilver", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "coinSilver" + }, + { + "id": "platformer/dirt", + "name": "dirt", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirt" + }, + { + "id": "platformer/dirtCenter", + "name": "dirtCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCenter" + }, + { + "id": "platformer/dirtCenter_rounded", + "name": "dirtCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCenter_rounded" + }, + { + "id": "platformer/dirtCliffAlt_left", + "name": "dirtCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliffAlt_left" + }, + { + "id": "platformer/dirtCliffAlt_right", + "name": "dirtCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliffAlt_right" + }, + { + "id": "platformer/dirtCliff_left", + "name": "dirtCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliff_left" + }, + { + "id": "platformer/dirtCliff_right", + "name": "dirtCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCliff_right" + }, + { + "id": "platformer/dirtCorner_left", + "name": "dirtCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCorner_left" + }, + { + "id": "platformer/dirtCorner_right", + "name": "dirtCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtCorner_right" + }, + { + "id": "platformer/dirtHalf", + "name": "dirtHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf" + }, + { + "id": "platformer/dirtHalf_left", + "name": "dirtHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf_left" + }, + { + "id": "platformer/dirtHalf_mid", + "name": "dirtHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf_mid" + }, + { + "id": "platformer/dirtHalf_right", + "name": "dirtHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHalf_right" + }, + { + "id": "platformer/dirtHill_left", + "name": "dirtHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHill_left" + }, + { + "id": "platformer/dirtHill_right", + "name": "dirtHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtHill_right" + }, + { + "id": "platformer/dirtLeft", + "name": "dirtLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtLeft" + }, + { + "id": "platformer/dirtMid", + "name": "dirtMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtMid" + }, + { + "id": "platformer/dirtRight", + "name": "dirtRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "dirtRight" + }, + { + "id": "platformer/doorClosed_mid", + "name": "doorClosed_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorClosed_mid" + }, + { + "id": "platformer/doorClosed_top", + "name": "doorClosed_top", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorClosed_top" + }, + { + "id": "platformer/doorOpen_mid", + "name": "doorOpen_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorOpen_mid" + }, + { + "id": "platformer/doorOpen_top", + "name": "doorOpen_top", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "doorOpen_top" + }, + { + "id": "platformer/fence", + "name": "fence", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "fence" + }, + { + "id": "platformer/fenceBroken", + "name": "fenceBroken", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "fenceBroken" + }, + { + "id": "platformer/fireball", + "name": "fireball", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 650, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fireball" + }, + { + "id": "platformer/fishBlue", + "name": "fishBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1690, + "width": 128, + "height": 128, + "direction": 0.0, + "referenceName": "fishBlue" + }, + { + "id": "platformer/fishBlue_dead", + "name": "fishBlue_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1560, + "width": 128, + "height": 128, + "direction": 0.0, + "referenceName": "fishBlue_dead" + }, + { + "id": "platformer/fishBlue_fall", + "name": "fishBlue_fall", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1430, + "width": 128, + "height": 128, + "direction": 0.0, + "referenceName": "fishBlue_fall" + }, + { + "id": "platformer/fishGreen", + "name": "fishGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishGreen" + }, + { + "id": "platformer/fishGreen_dead", + "name": "fishGreen_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishGreen_dead" + }, + { + "id": "platformer/fishGreen_move", + "name": "fishGreen_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishGreen_move" + }, + { + "id": "platformer/fishPink", + "name": "fishPink", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 910, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishPink" + }, + { + "id": "platformer/fishPink_dead", + "name": "fishPink_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 780, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishPink_dead" + }, + { + "id": "platformer/fishPink_move", + "name": "fishPink_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 650, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fishPink_move" + }, + { + "id": "platformer/flagBlue1", + "name": "flagBlue1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagBlue1" + }, + { + "id": "platformer/flagBlue2", + "name": "flagBlue2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagBlue2" + }, + { + "id": "platformer/flagBlue_down", + "name": "flagBlue_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagBlue_down" + }, + { + "id": "platformer/flagGreen1", + "name": "flagGreen1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagGreen1" + }, + { + "id": "platformer/flagGreen2", + "name": "flagGreen2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagGreen2" + }, + { + "id": "platformer/flagGreen_down", + "name": "flagGreen_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagGreen_down" + }, + { + "id": "platformer/flagRed1", + "name": "flagRed1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagRed1" + }, + { + "id": "platformer/flagRed2", + "name": "flagRed2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagRed2" + }, + { + "id": "platformer/flagRed_down", + "name": "flagRed_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagRed_down" + }, + { + "id": "platformer/flagYellow1", + "name": "flagYellow1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagYellow1" + }, + { + "id": "platformer/flagYellow2", + "name": "flagYellow2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagYellow2" + }, + { + "id": "platformer/flagYellow_down", + "name": "flagYellow_down", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "flagYellow_down" + }, + { + "id": "platformer/fly", + "name": "fly", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 520, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fly" + }, + { + "id": "platformer/fly_dead", + "name": "fly_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 390, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fly_dead" + }, + { + "id": "platformer/fly_move", + "name": "fly_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 260, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "fly_move" + }, + { + "id": "platformer/frog", + "name": "frog", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 130, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "frog" + }, + { + "id": "platformer/frog_dead", + "name": "frog_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3380, + "y": 0, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "frog_dead" + }, + { + "id": "platformer/frog_move", + "name": "frog_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1820, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "frog_move" + }, + { + "id": "platformer/gemBlue", + "name": "gemBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemBlue" + }, + { + "id": "platformer/gemGreen", + "name": "gemGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2600, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemGreen" + }, + { + "id": "platformer/gemRed", + "name": "gemRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemRed" + }, + { + "id": "platformer/gemYellow", + "name": "gemYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "gemYellow" + }, + { + "id": "platformer/grass", + "name": "grass", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grass" + }, + { + "id": "platformer/grassCenter", + "name": "grassCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCenter" + }, + { + "id": "platformer/grassCenter_round", + "name": "grassCenter_round", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCenter_round" + }, + { + "id": "platformer/grassCliffAlt_left", + "name": "grassCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliffAlt_left" + }, + { + "id": "platformer/grassCliffAlt_right", + "name": "grassCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1690, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliffAlt_right" + }, + { + "id": "platformer/grassCliff_left", + "name": "grassCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliff_left" + }, + { + "id": "platformer/grassCliff_right", + "name": "grassCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCliff_right" + }, + { + "id": "platformer/grassCorner_left", + "name": "grassCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCorner_left" + }, + { + "id": "platformer/grassCorner_right", + "name": "grassCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassCorner_right" + }, + { + "id": "platformer/grassHalf", + "name": "grassHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf" + }, + { + "id": "platformer/grassHalf_left", + "name": "grassHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf_left" + }, + { + "id": "platformer/grassHalf_mid", + "name": "grassHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf_mid" + }, + { + "id": "platformer/grassHalf_right", + "name": "grassHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHalf_right" + }, + { + "id": "platformer/grassHill_left", + "name": "grassHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHill_left" + }, + { + "id": "platformer/grassHill_right", + "name": "grassHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassHill_right" + }, + { + "id": "platformer/grassLeft", + "name": "grassLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassLeft" + }, + { + "id": "platformer/grassMid", + "name": "grassMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassMid" + }, + { + "id": "platformer/grassRight", + "name": "grassRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "grassRight" + }, + { + "id": "platformer/hud0", + "name": "hud0", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud0" + }, + { + "id": "platformer/hud1", + "name": "hud1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud1" + }, + { + "id": "platformer/hud2", + "name": "hud2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud2" + }, + { + "id": "platformer/hud3", + "name": "hud3", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud3" + }, + { + "id": "platformer/hud4", + "name": "hud4", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud4" + }, + { + "id": "platformer/hud5", + "name": "hud5", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud5" + }, + { + "id": "platformer/hud6", + "name": "hud6", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud6" + }, + { + "id": "platformer/hud7", + "name": "hud7", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud7" + }, + { + "id": "platformer/hud8", + "name": "hud8", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud8" + }, + { + "id": "platformer/hud9", + "name": "hud9", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hud9" + }, + { + "id": "platformer/hudCoin", + "name": "hudCoin", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudCoin" + }, + { + "id": "platformer/hudHeart_empty", + "name": "hudHeart_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudHeart_empty" + }, + { + "id": "platformer/hudHeart_full", + "name": "hudHeart_full", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudHeart_full" + }, + { + "id": "platformer/hudHeart_half", + "name": "hudHeart_half", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudHeart_half" + }, + { + "id": "platformer/hudJewel_blue", + "name": "hudJewel_blue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_blue" + }, + { + "id": "platformer/hudJewel_blue_empty", + "name": "hudJewel_blue_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_blue_empty" + }, + { + "id": "platformer/hudJewel_green", + "name": "hudJewel_green", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_green" + }, + { + "id": "platformer/hudJewel_green_empty", + "name": "hudJewel_green_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_green_empty" + }, + { + "id": "platformer/hudJewel_red", + "name": "hudJewel_red", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_red" + }, + { + "id": "platformer/hudJewel_red_empty", + "name": "hudJewel_red_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_red_empty" + }, + { + "id": "platformer/hudJewel_yellow", + "name": "hudJewel_yellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_yellow" + }, + { + "id": "platformer/hudJewel_yellow_empty", + "name": "hudJewel_yellow_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudJewel_yellow_empty" + }, + { + "id": "platformer/hudKey_blue", + "name": "hudKey_blue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2860, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_blue" + }, + { + "id": "platformer/hudKey_blue_empty", + "name": "hudKey_blue_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_blue_empty" + }, + { + "id": "platformer/hudKey_green", + "name": "hudKey_green", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_green" + }, + { + "id": "platformer/hudKey_green_empty", + "name": "hudKey_green_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_green_empty" + }, + { + "id": "platformer/hudKey_red", + "name": "hudKey_red", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_red" + }, + { + "id": "platformer/hudKey_red_empty", + "name": "hudKey_red_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_red_empty" + }, + { + "id": "platformer/hudKey_yellow", + "name": "hudKey_yellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_yellow" + }, + { + "id": "platformer/hudKey_yellow_empty", + "name": "hudKey_yellow_empty", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudKey_yellow_empty" + }, + { + "id": "platformer/hudPlayer_beige", + "name": "hudPlayer_beige", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_beige" + }, + { + "id": "platformer/hudPlayer_blue", + "name": "hudPlayer_blue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_blue" + }, + { + "id": "platformer/hudPlayer_green", + "name": "hudPlayer_green", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_green" + }, + { + "id": "platformer/hudPlayer_pink", + "name": "hudPlayer_pink", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_pink" + }, + { + "id": "platformer/hudPlayer_yellow", + "name": "hudPlayer_yellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudPlayer_yellow" + }, + { + "id": "platformer/hudX", + "name": "hudX", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2730, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "hudX" + }, + { + "id": "platformer/keyBlue", + "name": "keyBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyBlue" + }, + { + "id": "platformer/keyGreen", + "name": "keyGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyGreen" + }, + { + "id": "platformer/keyRed", + "name": "keyRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyRed" + }, + { + "id": "platformer/keyYellow", + "name": "keyYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "keyYellow" + }, + { + "id": "platformer/ladderMid", + "name": "ladderMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "ladderMid" + }, + { + "id": "platformer/ladderTop", + "name": "ladderTop", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "ladderTop" + }, + { + "id": "platformer/ladybug", + "name": "ladybug", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1690, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "ladybug" + }, + { + "id": "platformer/ladybug_fly", + "name": "ladybug_fly", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1560, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "ladybug_fly" + }, + { + "id": "platformer/ladybug_move", + "name": "ladybug_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1430, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "ladybug_move" + }, + { + "id": "platformer/lava", + "name": "lava", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lava" + }, + { + "id": "platformer/lavaTop_high", + "name": "lavaTop_high", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2210, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lavaTop_high" + }, + { + "id": "platformer/lavaTop_low", + "name": "lavaTop_low", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lavaTop_low" + }, + { + "id": "platformer/leverLeft", + "name": "leverLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "leverLeft" + }, + { + "id": "platformer/leverMid", + "name": "leverMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "leverMid" + }, + { + "id": "platformer/leverRight", + "name": "leverRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "leverRight" + }, + { + "id": "platformer/lockBlue", + "name": "lockBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockBlue" + }, + { + "id": "platformer/lockGreen", + "name": "lockGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockGreen" + }, + { + "id": "platformer/lockRed", + "name": "lockRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockRed" + }, + { + "id": "platformer/lockYellow", + "name": "lockYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "lockYellow" + }, + { + "id": "platformer/mouse", + "name": "mouse", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "mouse" + }, + { + "id": "platformer/mouse_dead", + "name": "mouse_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "mouse_dead" + }, + { + "id": "platformer/mouse_move", + "name": "mouse_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "mouse_move" + }, + { + "id": "platformer/mushroomBrown", + "name": "mushroomBrown", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "mushroomBrown" + }, + { + "id": "platformer/mushroomRed", + "name": "mushroomRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "mushroomRed" + }, + { + "id": "platformer/planet", + "name": "planet", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planet" + }, + { + "id": "platformer/planetCenter", + "name": "planetCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1560, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCenter" + }, + { + "id": "platformer/planetCenter_rounded", + "name": "planetCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCenter_rounded" + }, + { + "id": "platformer/planetCliffAlt_left", + "name": "planetCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliffAlt_left" + }, + { + "id": "platformer/planetCliffAlt_right", + "name": "planetCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliffAlt_right" + }, + { + "id": "platformer/planetCliff_left", + "name": "planetCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliff_left" + }, + { + "id": "platformer/planetCliff_right", + "name": "planetCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCliff_right" + }, + { + "id": "platformer/planetCorner_left", + "name": "planetCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCorner_left" + }, + { + "id": "platformer/planetCorner_right", + "name": "planetCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetCorner_right" + }, + { + "id": "platformer/planetHalf", + "name": "planetHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf" + }, + { + "id": "platformer/planetHalf_left", + "name": "planetHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf_left" + }, + { + "id": "platformer/planetHalf_mid", + "name": "planetHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf_mid" + }, + { + "id": "platformer/planetHalf_right", + "name": "planetHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHalf_right" + }, + { + "id": "platformer/planetHill_left", + "name": "planetHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHill_left" + }, + { + "id": "platformer/planetHill_right", + "name": "planetHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetHill_right" + }, + { + "id": "platformer/planetLeft", + "name": "planetLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetLeft" + }, + { + "id": "platformer/planetMid", + "name": "planetMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1430, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetMid" + }, + { + "id": "platformer/planetRight", + "name": "planetRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "planetRight" + }, + { + "id": "platformer/plantPurple", + "name": "plantPurple", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "plantPurple" + }, + { + "id": "platformer/rock", + "name": "rock", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "rock" + }, + { + "id": "platformer/sand", + "name": "sand", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sand" + }, + { + "id": "platformer/sandCenter", + "name": "sandCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCenter" + }, + { + "id": "platformer/sandCenter_rounded", + "name": "sandCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCenter_rounded" + }, + { + "id": "platformer/sandCliffAlt_left", + "name": "sandCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliffAlt_left" + }, + { + "id": "platformer/sandCliffAlt_right", + "name": "sandCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliffAlt_right" + }, + { + "id": "platformer/sandCliff_left", + "name": "sandCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliff_left" + }, + { + "id": "platformer/sandCliff_right", + "name": "sandCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCliff_right" + }, + { + "id": "platformer/sandCorner_leftg", + "name": "sandCorner_leftg", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCorner_leftg" + }, + { + "id": "platformer/sandCorner_right", + "name": "sandCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandCorner_right" + }, + { + "id": "platformer/sandHalf", + "name": "sandHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf" + }, + { + "id": "platformer/sandHalf_left", + "name": "sandHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf_left" + }, + { + "id": "platformer/sandHalf_mid", + "name": "sandHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf_mid" + }, + { + "id": "platformer/sandHalf_right", + "name": "sandHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHalf_right" + }, + { + "id": "platformer/sandHill_left", + "name": "sandHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1300, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHill_left" + }, + { + "id": "platformer/sandHill_right", + "name": "sandHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandHill_right" + }, + { + "id": "platformer/sandLeft", + "name": "sandLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandLeft" + }, + { + "id": "platformer/sandMid", + "name": "sandMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandMid" + }, + { + "id": "platformer/sandRight", + "name": "sandRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sandRight" + }, + { + "id": "platformer/saw", + "name": "saw", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "saw" + }, + { + "id": "platformer/sawHalf", + "name": "sawHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sawHalf" + }, + { + "id": "platformer/sawHalf_dead", + "name": "sawHalf_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sawHalf_dead" + }, + { + "id": "platformer/sawHalf_move", + "name": "sawHalf_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3510, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sawHalf_move" + }, + { + "id": "platformer/saw_dead", + "name": "saw_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "saw_dead" + }, + { + "id": "platformer/saw_move", + "name": "saw_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "saw_move" + }, + { + "id": "platformer/sign", + "name": "sign", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sign" + }, + { + "id": "platformer/signExit", + "name": "signExit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "signExit" + }, + { + "id": "platformer/signLeft", + "name": "signLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2080, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "signLeft" + }, + { + "id": "platformer/signRight", + "name": "signRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "signRight" + }, + { + "id": "platformer/slimeBlock", + "name": "slimeBlock", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "slimeBlock" + }, + { + "id": "platformer/slimeBlock_dead", + "name": "slimeBlock_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3250, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "slimeBlock_dead" + }, + { + "id": "platformer/slimeBlock_move", + "name": "slimeBlock_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "slimeBlock_move" + }, + { + "id": "platformer/slimeBlue", + "name": "slimeBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1690, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue" + }, + { + "id": "platformer/slimeBlue_dead", + "name": "slimeBlue_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1560, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue_dead" + }, + { + "id": "platformer/slimeBlue_hit", + "name": "slimeBlue_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1430, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue_hit" + }, + { + "id": "platformer/slimeBlue_move", + "name": "slimeBlue_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeBlue_move" + }, + { + "id": "platformer/slimeGreen", + "name": "slimeGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen" + }, + { + "id": "platformer/slimeGreen_dead", + "name": "slimeGreen_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen_dead" + }, + { + "id": "platformer/slimeGreen_hit", + "name": "slimeGreen_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 910, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen_hit" + }, + { + "id": "platformer/slimeGreen_move", + "name": "slimeGreen_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 780, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimeGreen_move" + }, + { + "id": "platformer/slimePurple", + "name": "slimePurple", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 650, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple" + }, + { + "id": "platformer/slimePurple_dead", + "name": "slimePurple_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 520, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple_dead" + }, + { + "id": "platformer/slimePurple_hit", + "name": "slimePurple_hit", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 390, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple_hit" + }, + { + "id": "platformer/slimePurple_move", + "name": "slimePurple_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 260, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "slimePurple_move" + }, + { + "id": "platformer/snail", + "name": "snail", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 130, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "snail" + }, + { + "id": "platformer/snail_move", + "name": "snail_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 3120, + "y": 0, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "snail_move" + }, + { + "id": "platformer/snail_shell", + "name": "snail_shell", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1820, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "snail_shell" + }, + { + "id": "platformer/snow", + "name": "snow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snow" + }, + { + "id": "platformer/snowCenter", + "name": "snowCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCenter" + }, + { + "id": "platformer/snowCenter_rounded", + "name": "snowCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCenter_rounded" + }, + { + "id": "platformer/snowCliffAlt_left", + "name": "snowCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliffAlt_left" + }, + { + "id": "platformer/snowCliffAlt_right", + "name": "snowCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliffAlt_right" + }, + { + "id": "platformer/snowCliff_left", + "name": "snowCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliff_left" + }, + { + "id": "platformer/snowCliff_right", + "name": "snowCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCliff_right" + }, + { + "id": "platformer/snowCorner_left", + "name": "snowCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCorner_left" + }, + { + "id": "platformer/snowCorner_right", + "name": "snowCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowCorner_right" + }, + { + "id": "platformer/snowHalf", + "name": "snowHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf" + }, + { + "id": "platformer/snowHalf_left", + "name": "snowHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1170, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf_left" + }, + { + "id": "platformer/snowHalf_mid", + "name": "snowHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf_mid" + }, + { + "id": "platformer/snowHalf_right", + "name": "snowHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHalf_right" + }, + { + "id": "platformer/snowHill_left", + "name": "snowHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHill_left" + }, + { + "id": "platformer/snowHill_right", + "name": "snowHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowHill_right" + }, + { + "id": "platformer/snowLeft", + "name": "snowLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowLeft" + }, + { + "id": "platformer/snowMid", + "name": "snowMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowMid" + }, + { + "id": "platformer/snowRight", + "name": "snowRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "snowRight" + }, + { + "id": "platformer/spikes", + "name": "spikes", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "spikes" + }, + { + "id": "platformer/spring", + "name": "spring", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "spring" + }, + { + "id": "platformer/sprung", + "name": "sprung", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "sprung" + }, + { + "id": "platformer/star", + "name": "star", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "star" + }, + { + "id": "platformer/stone", + "name": "stone", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 910, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stone" + }, + { + "id": "platformer/stoneCenter", + "name": "stoneCenter", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCenter" + }, + { + "id": "platformer/stoneCenter_rounded", + "name": "stoneCenter_rounded", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCenter_rounded" + }, + { + "id": "platformer/stoneCliffAlt_left", + "name": "stoneCliffAlt_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliffAlt_left" + }, + { + "id": "platformer/stoneCliffAlt_right", + "name": "stoneCliffAlt_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliffAlt_right" + }, + { + "id": "platformer/stoneCliff_left", + "name": "stoneCliff_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliff_left" + }, + { + "id": "platformer/stoneCliff_right", + "name": "stoneCliff_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCliff_right" + }, + { + "id": "platformer/stoneCorner_left", + "name": "stoneCorner_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1040, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCorner_left" + }, + { + "id": "platformer/stoneCorner_right", + "name": "stoneCorner_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1808, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneCorner_right" + }, + { + "id": "platformer/stoneHalf", + "name": "stoneHalf", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1678, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf" + }, + { + "id": "platformer/stoneHalf_left", + "name": "stoneHalf_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 910, + "y": 1548, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf_left" + }, + { + "id": "platformer/stoneHalf_mid", + "name": "stoneHalf_mid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 780, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf_mid" + }, + { + "id": "platformer/stoneHalf_right", + "name": "stoneHalf_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 650, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHalf_right" + }, + { + "id": "platformer/stoneHill_left", + "name": "stoneHill_left", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 520, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHill_left" + }, + { + "id": "platformer/stoneHill_right", + "name": "stoneHill_right", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 390, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneHill_right" + }, + { + "id": "platformer/stoneLeft", + "name": "stoneLeft", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 260, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneLeft" + }, + { + "id": "platformer/stoneMid", + "name": "stoneMid", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 130, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneMid" + }, + { + "id": "platformer/stoneRight", + "name": "stoneRight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 0, + "y": 1806, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "stoneRight" + }, + { + "id": "platformer/switchBlue", + "name": "switchBlue", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchBlue" + }, + { + "id": "platformer/switchBlue_pressed", + "name": "switchBlue_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchBlue_pressed" + }, + { + "id": "platformer/switchGreen", + "name": "switchGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2470, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchGreen" + }, + { + "id": "platformer/switchGreen_pressed", + "name": "switchGreen_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 780, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchGreen_pressed" + }, + { + "id": "platformer/switchRed", + "name": "switchRed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 650, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchRed" + }, + { + "id": "platformer/switchRed_pressed", + "name": "switchRed_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 520, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchRed_pressed" + }, + { + "id": "platformer/switchYellow", + "name": "switchYellow", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 390, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchYellow" + }, + { + "id": "platformer/switchYellow_pressed", + "name": "switchYellow_pressed", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 260, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "switchYellow_pressed" + }, + { + "id": "platformer/torch1", + "name": "torch1", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 130, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "torch1" + }, + { + "id": "platformer/torch2", + "name": "torch2", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1950, + "y": 0, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "torch2" + }, + { + "id": "platformer/torchOff", + "name": "torchOff", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1820, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "torchOff" + }, + { + "id": "platformer/water", + "name": "water", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1690, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "water" + }, + { + "id": "platformer/waterTop_high", + "name": "waterTop_high", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1560, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "waterTop_high" + }, + { + "id": "platformer/waterTop_low", + "name": "waterTop_low", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1430, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "waterTop_low" + }, + { + "id": "platformer/weight", + "name": "weight", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1300, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "weight" + }, + { + "id": "platformer/weightAttached", + "name": "weightAttached", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1170, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "weightAttached" + }, + { + "id": "platformer/window", + "name": "window", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 1820, + "y": 1040, + "width": 128, + "height": 128, + "direction": 90.0, + "referenceName": "window" + }, + { + "id": "platformer/wormGreen", + "name": "wormGreen", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1690, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormGreen" + }, + { + "id": "platformer/wormGreen_dead", + "name": "wormGreen_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1560, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormGreen_dead" + }, + { + "id": "platformer/wormGreen_move", + "name": "wormGreen_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1430, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormGreen_move" + }, + { + "id": "platformer/wormPink", + "name": "wormPink", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1300, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormPink" + }, + { + "id": "platformer/wormPink_dead", + "name": "wormPink_dead", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1170, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormPink_dead" + }, + { + "id": "platformer/wormPink_move", + "name": "wormPink_move", + "sheet": "platformer", + "sheetPath": "images/platformer.png", + "x": 2990, + "y": 1040, + "width": 128, + "height": 128, + "direction": -90.0, + "referenceName": "wormPink_move" + }, + { + "id": "jumper/bronze_1", + "name": "bronze_1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 707, + "y": 296, + "width": 84, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_1" + }, + { + "id": "jumper/bronze_2", + "name": "bronze_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 206, + "width": 66, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_2" + }, + { + "id": "jumper/bronze_3", + "name": "bronze_3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 899, + "y": 116, + "width": 50, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_3" + }, + { + "id": "jumper/bronze_4", + "name": "bronze_4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 670, + "y": 406, + "width": 14, + "height": 84, + "direction": 90.0, + "referenceName": "bronze_4" + }, + { + "id": "jumper/bubble", + "name": "bubble", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1662, + "width": 211, + "height": 215, + "direction": 90.0, + "referenceName": "bubble" + }, + { + "id": "jumper/bunny1_hurt", + "name": "bunny1_hurt", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 946, + "width": 150, + "height": 174, + "direction": 90.0, + "referenceName": "bunny1_hurt" + }, + { + "id": "jumper/bunny1_jump", + "name": "bunny1_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 763, + "width": 150, + "height": 181, + "direction": 90.0, + "referenceName": "bunny1_jump" + }, + { + "id": "jumper/bunny1_ready", + "name": "bunny1_ready", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 614, + "y": 1063, + "width": 120, + "height": 191, + "direction": 90.0, + "referenceName": "bunny1_ready" + }, + { + "id": "jumper/bunny1_stand", + "name": "bunny1_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 690, + "y": 406, + "width": 120, + "height": 201, + "direction": 90.0, + "referenceName": "bunny1_stand" + }, + { + "id": "jumper/bunny1_walk1", + "name": "bunny1_walk1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 678, + "y": 860, + "width": 120, + "height": 201, + "direction": 90.0, + "referenceName": "bunny1_walk1" + }, + { + "id": "jumper/bunny1_walk2", + "name": "bunny1_walk2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 692, + "y": 1458, + "width": 120, + "height": 207, + "direction": 90.0, + "referenceName": "bunny1_walk2" + }, + { + "id": "jumper/bunny2_hurt", + "name": "bunny2_hurt", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 411, + "y": 1866, + "width": 150, + "height": 174, + "direction": 90.0, + "referenceName": "bunny2_hurt" + }, + { + "id": "jumper/bunny2_jump", + "name": "bunny2_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 416, + "y": 1660, + "width": 150, + "height": 181, + "direction": 90.0, + "referenceName": "bunny2_jump" + }, + { + "id": "jumper/bunny2_ready", + "name": "bunny2_ready", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 581, + "y": 1265, + "width": 121, + "height": 191, + "direction": 90.0, + "referenceName": "bunny2_ready" + }, + { + "id": "jumper/bunny2_stand", + "name": "bunny2_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 584, + "y": 0, + "width": 121, + "height": 201, + "direction": 90.0, + "referenceName": "bunny2_stand" + }, + { + "id": "jumper/bunny2_walk1", + "name": "bunny2_walk1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 584, + "y": 203, + "width": 121, + "height": 201, + "direction": 90.0, + "referenceName": "bunny2_walk1" + }, + { + "id": "jumper/bunny2_walk2", + "name": "bunny2_walk2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 678, + "y": 651, + "width": 121, + "height": 207, + "direction": 90.0, + "referenceName": "bunny2_walk2" + }, + { + "id": "jumper/cactus", + "name": "cactus", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 707, + "y": 134, + "width": 117, + "height": 160, + "direction": 90.0, + "referenceName": "jumper/cactus" + }, + { + "id": "jumper/carrot", + "name": "carrot", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 820, + "y": 1733, + "width": 78, + "height": 70, + "direction": 90.0, + "referenceName": "carrot" + }, + { + "id": "jumper/carrot_gold", + "name": "carrot_gold", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 814, + "y": 1661, + "width": 78, + "height": 70, + "direction": 90.0, + "referenceName": "carrot_gold" + }, + { + "id": "jumper/carrots", + "name": "carrots", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 812, + "y": 554, + "width": 54, + "height": 49, + "direction": 90.0, + "referenceName": "carrots" + }, + { + "id": "jumper/cloud", + "name": "cloud", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1152, + "width": 260, + "height": 134, + "direction": 90.0, + "referenceName": "cloud" + }, + { + "id": "jumper/coin_bronze", + "name": "coin_bronze", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 329, + "y": 1390, + "width": 60, + "height": 61, + "direction": 90.0, + "referenceName": "coin_bronze" + }, + { + "id": "jumper/coin_gold", + "name": "coin_gold", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 244, + "y": 1981, + "width": 61, + "height": 61, + "direction": 90.0, + "referenceName": "coin_gold" + }, + { + "id": "jumper/coin_silver", + "name": "coin_silver", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 307, + "y": 1981, + "width": 61, + "height": 61, + "direction": 90.0, + "referenceName": "coin_silver" + }, + { + "id": "jumper/flame", + "name": "flame", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 900, + "y": 1733, + "width": 41, + "height": 80, + "direction": 90.0, + "referenceName": "flame" + }, + { + "id": "jumper/flyMan_fly", + "name": "flyMan_fly", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 566, + "y": 510, + "width": 122, + "height": 139, + "direction": 90.0, + "referenceName": "flyMan_fly" + }, + { + "id": "jumper/flyMan_jump", + "name": "flyMan_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 568, + "y": 1534, + "width": 122, + "height": 135, + "direction": 90.0, + "referenceName": "flyMan_jump" + }, + { + "id": "jumper/flyMan_stand", + "name": "flyMan_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 568, + "y": 1671, + "width": 122, + "height": 139, + "direction": 90.0, + "referenceName": "flyMan_stand" + }, + { + "id": "jumper/flyMan_still_fly", + "name": "flyMan_still_fly", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 692, + "y": 1667, + "width": 120, + "height": 132, + "direction": 90.0, + "referenceName": "flyMan_still_fly" + }, + { + "id": "jumper/flyMan_still_jump", + "name": "flyMan_still_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 698, + "y": 1801, + "width": 120, + "height": 128, + "direction": 90.0, + "referenceName": "flyMan_still_jump" + }, + { + "id": "jumper/flyMan_still_stand", + "name": "flyMan_still_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 707, + "y": 0, + "width": 120, + "height": 132, + "direction": 90.0, + "referenceName": "flyMan_still_stand" + }, + { + "id": "jumper/gold_1", + "name": "gold_1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 698, + "y": 1931, + "width": 84, + "height": 84, + "direction": 90.0, + "referenceName": "gold_1" + }, + { + "id": "jumper/gold_2", + "name": "gold_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 829, + "y": 0, + "width": 66, + "height": 84, + "direction": 90.0, + "referenceName": "gold_2" + }, + { + "id": "jumper/gold_3", + "name": "gold_3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 897, + "y": 1574, + "width": 50, + "height": 84, + "direction": 90.0, + "referenceName": "gold_3" + }, + { + "id": "jumper/gold_4", + "name": "gold_4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 645, + "y": 651, + "width": 15, + "height": 84, + "direction": 90.0, + "referenceName": "gold_4" + }, + { + "id": "jumper/grass1", + "name": "grass1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 868, + "y": 1877, + "width": 58, + "height": 57, + "direction": 90.0, + "referenceName": "grass1" + }, + { + "id": "jumper/grass2", + "name": "grass2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 784, + "y": 1931, + "width": 82, + "height": 70, + "direction": 90.0, + "referenceName": "grass2" + }, + { + "id": "jumper/grass_brown1", + "name": "grass_brown1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 534, + "y": 1063, + "width": 58, + "height": 57, + "direction": 90.0, + "referenceName": "grass_brown1" + }, + { + "id": "jumper/grass_brown2", + "name": "grass_brown2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 801, + "y": 752, + "width": 82, + "height": 70, + "direction": 90.0, + "referenceName": "grass_brown2" + }, + { + "id": "jumper/ground_cake", + "name": "ground_cake", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 576, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_cake" + }, + { + "id": "jumper/ground_cake_broken", + "name": "ground_cake_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 0, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_cake_broken" + }, + { + "id": "jumper/ground_cake_small", + "name": "ground_cake_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 218, + "y": 1456, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_cake_small" + }, + { + "id": "jumper/ground_cake_small_broken", + "name": "ground_cake_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 262, + "y": 1152, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_cake_small_broken" + }, + { + "id": "jumper/ground_grass", + "name": "ground_grass", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 288, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_grass" + }, + { + "id": "jumper/ground_grass_broken", + "name": "ground_grass_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 384, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_grass_broken" + }, + { + "id": "jumper/ground_grass_small", + "name": "ground_grass_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 213, + "y": 1662, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_grass_small" + }, + { + "id": "jumper/ground_grass_small_broken", + "name": "ground_grass_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 204, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_grass_small_broken" + }, + { + "id": "jumper/ground_sand", + "name": "ground_sand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 672, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_sand" + }, + { + "id": "jumper/ground_sand_broken", + "name": "ground_sand_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1056, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_sand_broken" + }, + { + "id": "jumper/ground_sand_small", + "name": "ground_sand_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 208, + "y": 1879, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_sand_small" + }, + { + "id": "jumper/ground_sand_small_broken", + "name": "ground_sand_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 102, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_sand_small_broken" + }, + { + "id": "jumper/ground_snow", + "name": "ground_snow", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 768, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_snow" + }, + { + "id": "jumper/ground_snow_broken", + "name": "ground_snow_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 480, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_snow_broken" + }, + { + "id": "jumper/ground_snow_small", + "name": "ground_snow_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 213, + "y": 1764, + "width": 201, + "height": 100, + "direction": 90.0, + "referenceName": "ground_snow_small" + }, + { + "id": "jumper/ground_snow_small_broken", + "name": "ground_snow_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 306, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_snow_small_broken" + }, + { + "id": "jumper/ground_stone", + "name": "ground_stone", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 96, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_stone" + }, + { + "id": "jumper/ground_stone_broken", + "name": "ground_stone_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 192, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_stone_broken" + }, + { + "id": "jumper/ground_stone_small", + "name": "ground_stone_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 408, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_stone_small" + }, + { + "id": "jumper/ground_stone_small_broken", + "name": "ground_stone_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 232, + "y": 1288, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_stone_small_broken" + }, + { + "id": "jumper/ground_wood", + "name": "ground_wood", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 960, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_wood" + }, + { + "id": "jumper/ground_wood_broken", + "name": "ground_wood_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 864, + "width": 380, + "height": 94, + "direction": 90.0, + "referenceName": "ground_wood_broken" + }, + { + "id": "jumper/ground_wood_small", + "name": "ground_wood_small", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 218, + "y": 1558, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_wood_small" + }, + { + "id": "jumper/ground_wood_small_broken", + "name": "ground_wood_small_broken", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 0, + "width": 200, + "height": 100, + "direction": 90.0, + "referenceName": "ground_wood_small_broken" + }, + { + "id": "jumper/jetpack", + "name": "jetpack", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 563, + "y": 1843, + "width": 133, + "height": 160, + "direction": 90.0, + "referenceName": "jetpack" + }, + { + "id": "jumper/jetpack_item", + "name": "jetpack_item", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 852, + "y": 1089, + "width": 65, + "height": 77, + "direction": 90.0, + "referenceName": "jetpack_item" + }, + { + "id": "jumper/lifes", + "name": "lifes", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 868, + "y": 1936, + "width": 52, + "height": 71, + "direction": 90.0, + "referenceName": "lifes" + }, + { + "id": "jumper/lighting_blue", + "name": "lighting_blue", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 895, + "y": 453, + "width": 55, + "height": 114, + "direction": 90.0, + "referenceName": "lighting_blue" + }, + { + "id": "jumper/lighting_yellow", + "name": "lighting_yellow", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 897, + "y": 0, + "width": 55, + "height": 114, + "direction": 90.0, + "referenceName": "lighting_yellow" + }, + { + "id": "jumper/mushroom_brown", + "name": "mushroom_brown", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 814, + "y": 1574, + "width": 81, + "height": 85, + "direction": 90.0, + "referenceName": "mushroom_brown" + }, + { + "id": "jumper/mushroom_red", + "name": "mushroom_red", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 812, + "y": 453, + "width": 81, + "height": 99, + "direction": 90.0, + "referenceName": "mushroom_red" + }, + { + "id": "jumper/particle_beige", + "name": "particle_beige", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 563, + "y": 2005, + "width": 58, + "height": 41, + "direction": 90.0, + "referenceName": "particle_beige" + }, + { + "id": "jumper/particle_blue", + "name": "particle_blue", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 852, + "y": 1168, + "width": 51, + "height": 49, + "direction": 90.0, + "referenceName": "particle_blue" + }, + { + "id": "jumper/particle_brown", + "name": "particle_brown", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 820, + "y": 1877, + "width": 44, + "height": 48, + "direction": 90.0, + "referenceName": "particle_brown" + }, + { + "id": "jumper/particle_darkBrown", + "name": "particle_darkBrown", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 784, + "y": 2003, + "width": 54, + "height": 43, + "direction": 90.0, + "referenceName": "particle_darkBrown" + }, + { + "id": "jumper/particle_darkGrey", + "name": "particle_darkGrey", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 1364, + "width": 51, + "height": 43, + "direction": 90.0, + "referenceName": "particle_darkGrey" + }, + { + "id": "jumper/particle_green", + "name": "particle_green", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 800, + "y": 1003, + "width": 48, + "height": 46, + "direction": 90.0, + "referenceName": "particle_green" + }, + { + "id": "jumper/particle_grey", + "name": "particle_grey", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 623, + "y": 2005, + "width": 38, + "height": 41, + "direction": 90.0, + "referenceName": "particle_grey" + }, + { + "id": "jumper/particle_pink", + "name": "particle_pink", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 829, + "y": 86, + "width": 53, + "height": 46, + "direction": 90.0, + "referenceName": "particle_pink" + }, + { + "id": "jumper/portal_orange", + "name": "portal_orange", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1288, + "width": 230, + "height": 82, + "direction": 90.0, + "referenceName": "portal_orange" + }, + { + "id": "jumper/portal_orangeParticle", + "name": "portal_orangeParticle", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 262, + "y": 1254, + "width": 20, + "height": 20, + "direction": 90.0, + "referenceName": "portal_orangeParticle" + }, + { + "id": "jumper/portal_yellow", + "name": "portal_yellow", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1372, + "width": 230, + "height": 82, + "direction": 90.0, + "referenceName": "portal_yellow" + }, + { + "id": "jumper/portal_yellowParticle", + "name": "portal_yellowParticle", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 284, + "y": 1254, + "width": 20, + "height": 20, + "direction": 90.0, + "referenceName": "portal_yellowParticle" + }, + { + "id": "jumper/powerup_bubble", + "name": "powerup_bubble", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 134, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_bubble" + }, + { + "id": "jumper/powerup_bunny", + "name": "powerup_bunny", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 1220, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_bunny" + }, + { + "id": "jumper/powerup_empty", + "name": "powerup_empty", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 894, + "y": 1661, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_empty" + }, + { + "id": "jumper/powerup_jetpack", + "name": "powerup_jetpack", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 820, + "y": 1805, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_jetpack" + }, + { + "id": "jumper/powerup_wings", + "name": "powerup_wings", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 826, + "y": 1292, + "width": 71, + "height": 70, + "direction": 90.0, + "referenceName": "powerup_wings" + }, + { + "id": "jumper/silver_1", + "name": "silver_1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 584, + "y": 406, + "width": 84, + "height": 84, + "direction": 90.0, + "referenceName": "silver_1" + }, + { + "id": "jumper/silver_2", + "name": "silver_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 852, + "y": 1003, + "width": 66, + "height": 84, + "direction": 90.0, + "referenceName": "silver_2" + }, + { + "id": "jumper/silver_3", + "name": "silver_3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 899, + "y": 1219, + "width": 50, + "height": 84, + "direction": 90.0, + "referenceName": "silver_3" + }, + { + "id": "jumper/silver_4", + "name": "silver_4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 662, + "y": 651, + "width": 14, + "height": 84, + "direction": 90.0, + "referenceName": "silver_4" + }, + { + "id": "jumper/smoke", + "name": "smoke", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 879, + "y": 1364, + "width": 51, + "height": 48, + "direction": 90.0, + "referenceName": "smoke" + }, + { + "id": "jumper/spikeBall1", + "name": "spikeBall1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 534, + "y": 763, + "width": 142, + "height": 148, + "direction": 90.0, + "referenceName": "spikeBall1" + }, + { + "id": "jumper/spikeBall_2", + "name": "spikeBall_2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 464, + "y": 1122, + "width": 148, + "height": 141, + "direction": 90.0, + "referenceName": "spikeBall_2" + }, + { + "id": "jumper/spikeMan_jump", + "name": "spikeMan_jump", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 736, + "y": 1063, + "width": 114, + "height": 155, + "direction": 90.0, + "referenceName": "spikeMan_jump" + }, + { + "id": "jumper/spikeMan_stand", + "name": "spikeMan_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 814, + "y": 1417, + "width": 90, + "height": 155, + "direction": 90.0, + "referenceName": "spikeMan_stand" + }, + { + "id": "jumper/spikeMan_walk1", + "name": "spikeMan_walk1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 704, + "y": 1256, + "width": 120, + "height": 159, + "direction": 90.0, + "referenceName": "spikeMan_walk1" + }, + { + "id": "jumper/spikeMan_walk2", + "name": "spikeMan_walk2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 812, + "y": 296, + "width": 90, + "height": 155, + "direction": 90.0, + "referenceName": "spikeMan_walk2" + }, + { + "id": "jumper/spike_bottom", + "name": "spike_bottom", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 894, + "y": 206, + "width": 51, + "height": 87, + "direction": 90.0, + "referenceName": "spike_bottom" + }, + { + "id": "jumper/spike_top", + "name": "spike_top", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 885, + "y": 752, + "width": 51, + "height": 87, + "direction": 90.0, + "referenceName": "spike_top" + }, + { + "id": "jumper/spikes_bottom", + "name": "spikes_bottom", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 147, + "y": 1988, + "width": 95, + "height": 53, + "direction": 90.0, + "referenceName": "spikes_bottom" + }, + { + "id": "jumper/spikes_top", + "name": "spikes_top", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 232, + "y": 1390, + "width": 95, + "height": 53, + "direction": 90.0, + "referenceName": "spikes_top" + }, + { + "id": "jumper/spring", + "name": "spring", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 420, + "y": 1558, + "width": 145, + "height": 77, + "direction": 90.0, + "referenceName": "jumper/spring" + }, + { + "id": "jumper/springMan_hurt", + "name": "springMan_hurt", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 800, + "y": 860, + "width": 110, + "height": 141, + "direction": 90.0, + "referenceName": "springMan_hurt" + }, + { + "id": "jumper/springMan_stand", + "name": "springMan_stand", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 801, + "y": 609, + "width": 110, + "height": 141, + "direction": 90.0, + "referenceName": "springMan_stand" + }, + { + "id": "jumper/spring_in", + "name": "spring_in", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1988, + "width": 145, + "height": 57, + "direction": 90.0, + "referenceName": "spring_in" + }, + { + "id": "jumper/spring_out", + "name": "spring_out", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 434, + "y": 1265, + "width": 145, + "height": 110, + "direction": 90.0, + "referenceName": "spring_out" + }, + { + "id": "jumper/sun1", + "name": "sun1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 534, + "y": 913, + "width": 142, + "height": 148, + "direction": 90.0, + "referenceName": "sun1" + }, + { + "id": "jumper/sun2", + "name": "sun2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 421, + "y": 1390, + "width": 148, + "height": 142, + "direction": 90.0, + "referenceName": "sun2" + }, + { + "id": "jumper/wingMan1", + "name": "wingMan1", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 635, + "width": 174, + "height": 126, + "direction": 90.0, + "referenceName": "wingMan1" + }, + { + "id": "jumper/wingMan2", + "name": "wingMan2", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1879, + "width": 206, + "height": 107, + "direction": 90.0, + "referenceName": "wingMan2" + }, + { + "id": "jumper/wingMan3", + "name": "wingMan3", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1559, + "width": 216, + "height": 101, + "direction": 90.0, + "referenceName": "wingMan3" + }, + { + "id": "jumper/wingMan4", + "name": "wingMan4", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 0, + "y": 1456, + "width": 216, + "height": 101, + "direction": 90.0, + "referenceName": "wingMan4" + }, + { + "id": "jumper/wingMan5", + "name": "wingMan5", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 382, + "y": 510, + "width": 182, + "height": 123, + "direction": 90.0, + "referenceName": "wingMan5" + }, + { + "id": "jumper/wing_left", + "name": "wing_left", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 558, + "y": 651, + "width": 85, + "height": 74, + "direction": 90.0, + "referenceName": "wing_left" + }, + { + "id": "jumper/wing_right", + "name": "wing_right", + "sheet": "jumper", + "sheetPath": "images/jumper.png", + "x": 571, + "y": 1458, + "width": 85, + "height": 74, + "direction": 90.0, + "referenceName": "wing_right" + }, + { + "id": "space_shooter/beam0", + "name": "beam0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 143, + "y": 377, + "width": 43, + "height": 31, + "direction": 0.0, + "referenceName": "beam0" + }, + { + "id": "space_shooter/beam1", + "name": "beam1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 327, + "y": 644, + "width": 40, + "height": 20, + "direction": 0.0, + "referenceName": "beam1" + }, + { + "id": "space_shooter/beam2", + "name": "beam2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 262, + "y": 907, + "width": 38, + "height": 31, + "direction": 0.0, + "referenceName": "beam2" + }, + { + "id": "space_shooter/beam3", + "name": "beam3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 396, + "y": 384, + "width": 29, + "height": 29, + "direction": 0.0, + "referenceName": "beam3" + }, + { + "id": "space_shooter/beam4", + "name": "beam4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 177, + "y": 496, + "width": 41, + "height": 17, + "direction": 0.0, + "referenceName": "beam4" + }, + { + "id": "space_shooter/beam5", + "name": "beam5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 186, + "y": 377, + "width": 40, + "height": 25, + "direction": 0.0, + "referenceName": "beam5" + }, + { + "id": "space_shooter/beam6", + "name": "beam6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 120, + "y": 688, + "width": 43, + "height": 23, + "direction": 0.0, + "referenceName": "beam6" + }, + { + "id": "space_shooter/beamLong1", + "name": "beamLong1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 943, + "width": 15, + "height": 67, + "direction": 0.0, + "referenceName": "beamLong1" + }, + { + "id": "space_shooter/beamLong2", + "name": "beamLong2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 307, + "y": 309, + "width": 25, + "height": 64, + "direction": 0.0, + "referenceName": "beamLong2" + }, + { + "id": "space_shooter/bold_silver", + "name": "bold_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 837, + "width": 19, + "height": 30, + "direction": 90.0, + "referenceName": "bold_silver" + }, + { + "id": "space_shooter/bolt_bronze", + "name": "bolt_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 467, + "width": 19, + "height": 30, + "direction": 90.0, + "referenceName": "bolt_bronze" + }, + { + "id": "space_shooter/bolt_gold", + "name": "bolt_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 437, + "width": 19, + "height": 30, + "direction": 90.0, + "referenceName": "bolt_gold" + }, + { + "id": "space_shooter/buttonBlue", + "name": "buttonBlue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 78, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonBlue" + }, + { + "id": "space_shooter/buttonGreen", + "name": "buttonGreen", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 117, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonGreen" + }, + { + "id": "space_shooter/buttonRed", + "name": "buttonRed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 0, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonRed" + }, + { + "id": "space_shooter/buttonYellow", + "name": "buttonYellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 39, + "width": 222, + "height": 39, + "direction": 90.0, + "referenceName": "buttonYellow" + }, + { + "id": "space_shooter/cockpitBlue_0", + "name": "cockpitBlue_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 586, + "y": 0, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitBlue_0" + }, + { + "id": "space_shooter/cockpitBlue_1", + "name": "cockpitBlue_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 862, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitBlue_1" + }, + { + "id": "space_shooter/cockpitBlue_2", + "name": "cockpitBlue_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 684, + "y": 67, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitBlue_2" + }, + { + "id": "space_shooter/cockpitBlue_3", + "name": "cockpitBlue_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 336, + "y": 384, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitBlue_3" + }, + { + "id": "space_shooter/cockpitBlue_4", + "name": "cockpitBlue_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 637, + "y": 0, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitBlue_4" + }, + { + "id": "space_shooter/cockpitBlue_5", + "name": "cockpitBlue_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 627, + "y": 144, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitBlue_5" + }, + { + "id": "space_shooter/cockpitBlue_6", + "name": "cockpitBlue_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 684, + "y": 0, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitBlue_6" + }, + { + "id": "space_shooter/cockpitBlue_7", + "name": "cockpitBlue_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 737, + "y": 542, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitBlue_7" + }, + { + "id": "space_shooter/cockpitGreen_0", + "name": "cockpitGreen_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 576, + "y": 225, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitGreen_0" + }, + { + "id": "space_shooter/cockpitGreen_1", + "name": "cockpitGreen_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 734, + "y": 977, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitGreen_1" + }, + { + "id": "space_shooter/cockpitGreen_2", + "name": "cockpitGreen_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 696, + "y": 659, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitGreen_2" + }, + { + "id": "space_shooter/cockpitGreen_3", + "name": "cockpitGreen_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 234, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitGreen_3" + }, + { + "id": "space_shooter/cockpitGreen_4", + "name": "cockpitGreen_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 627, + "y": 219, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitGreen_4" + }, + { + "id": "space_shooter/cockpitGreen_5", + "name": "cockpitGreen_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 694, + "y": 364, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitGreen_5" + }, + { + "id": "space_shooter/cockpitGreen_6", + "name": "cockpitGreen_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 737, + "y": 471, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitGreen_6" + }, + { + "id": "space_shooter/cockpitGreen_7", + "name": "cockpitGreen_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 602, + "y": 525, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitGreen_7" + }, + { + "id": "space_shooter/cockpitRed_0", + "name": "cockpitRed_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 535, + "y": 75, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitRed_0" + }, + { + "id": "space_shooter/cockpitRed_1", + "name": "cockpitRed_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 351, + "y": 982, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitRed_1" + }, + { + "id": "space_shooter/cockpitRed_2", + "name": "cockpitRed_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 718, + "y": 197, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitRed_2" + }, + { + "id": "space_shooter/cockpitRed_3", + "name": "cockpitRed_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 520, + "y": 661, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitRed_3" + }, + { + "id": "space_shooter/cockpitRed_4", + "name": "cockpitRed_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 647, + "y": 857, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitRed_4" + }, + { + "id": "space_shooter/cockpitRed_5", + "name": "cockpitRed_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 605, + "y": 707, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitRed_5" + }, + { + "id": "space_shooter/cockpitRed_6", + "name": "cockpitRed_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 795, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitRed_6" + }, + { + "id": "space_shooter/cockpitRed_7", + "name": "cockpitRed_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 329, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitRed_7" + }, + { + "id": "space_shooter/cockpitYellow_0", + "name": "cockpitYellow_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 726, + "y": 80, + "width": 40, + "height": 40, + "direction": 0.0, + "referenceName": "cockpitYellow_0" + }, + { + "id": "space_shooter/cockpitYellow_1", + "name": "cockpitYellow_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 309, + "width": 60, + "height": 61, + "direction": 0.0, + "referenceName": "cockpitYellow_1" + }, + { + "id": "space_shooter/cockpitYellow_2", + "name": "cockpitYellow_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 637, + "y": 67, + "width": 47, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitYellow_2" + }, + { + "id": "space_shooter/cockpitYellow_3", + "name": "cockpitYellow_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 607, + "y": 782, + "width": 48, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitYellow_3" + }, + { + "id": "space_shooter/cockpitYellow_4", + "name": "cockpitYellow_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 696, + "y": 262, + "width": 42, + "height": 67, + "direction": 0.0, + "referenceName": "cockpitYellow_4" + }, + { + "id": "space_shooter/cockpitYellow_5", + "name": "cockpitYellow_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 736, + "y": 400, + "width": 41, + "height": 71, + "direction": 0.0, + "referenceName": "cockpitYellow_5" + }, + { + "id": "space_shooter/cockpitYellow_6", + "name": "cockpitYellow_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 734, + "y": 921, + "width": 42, + "height": 56, + "direction": 0.0, + "referenceName": "cockpitYellow_6" + }, + { + "id": "space_shooter/cockpitYellow_7", + "name": "cockpitYellow_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 600, + "y": 375, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "cockpitYellow_7" + }, + { + "id": "space_shooter/cursor", + "name": "cursor", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 797, + "y": 173, + "width": 30, + "height": 33, + "direction": 90.0, + "referenceName": "cursor" + }, + { + "id": "space_shooter/enemyBlack1", + "name": "enemyBlack1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 728, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack1" + }, + { + "id": "space_shooter/enemyBlack2", + "name": "enemyBlack2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 120, + "y": 604, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack2" + }, + { + "id": "space_shooter/enemyBlack3", + "name": "enemyBlack3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 144, + "y": 156, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack3" + }, + { + "id": "space_shooter/enemyBlack4", + "name": "enemyBlack4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 325, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack4" + }, + { + "id": "space_shooter/enemyBlack5", + "name": "enemyBlack5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 150, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlack5" + }, + { + "id": "space_shooter/enemyBlue1", + "name": "enemyBlue1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 425, + "y": 468, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue1" + }, + { + "id": "space_shooter/enemyBlue2", + "name": "enemyBlue2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 143, + "y": 293, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue2" + }, + { + "id": "space_shooter/enemyBlue3", + "name": "enemyBlue3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 0, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue3" + }, + { + "id": "space_shooter/enemyBlue4", + "name": "enemyBlue4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 409, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue4" + }, + { + "id": "space_shooter/enemyBlue5", + "name": "enemyBlue5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 421, + "y": 814, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyBlue5" + }, + { + "id": "space_shooter/enemyGreen1", + "name": "enemyGreen1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 425, + "y": 552, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen1" + }, + { + "id": "space_shooter/enemyGreen2", + "name": "enemyGreen2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 133, + "y": 412, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen2" + }, + { + "id": "space_shooter/enemyGreen3", + "name": "enemyGreen3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 496, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen3" + }, + { + "id": "space_shooter/enemyGreen4", + "name": "enemyGreen4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 493, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen4" + }, + { + "id": "space_shooter/enemyGreen5", + "name": "enemyGreen5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 408, + "y": 907, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyGreen5" + }, + { + "id": "space_shooter/enemyRed1", + "name": "enemyRed1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 425, + "y": 384, + "width": 93, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed1" + }, + { + "id": "space_shooter/enemyRed2", + "name": "enemyRed2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 120, + "y": 520, + "width": 104, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed2" + }, + { + "id": "space_shooter/enemyRed3", + "name": "enemyRed3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 580, + "width": 103, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed3" + }, + { + "id": "space_shooter/enemyRed4", + "name": "enemyRed4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 520, + "y": 577, + "width": 82, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed4" + }, + { + "id": "space_shooter/enemyRed5", + "name": "enemyRed5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 644, + "width": 97, + "height": 84, + "direction": 180.0, + "referenceName": "enemyRed5" + }, + { + "id": "space_shooter/engine1", + "name": "engine1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 907, + "width": 38, + "height": 23, + "direction": 0.0, + "referenceName": "engine1" + }, + { + "id": "space_shooter/engine2", + "name": "engine2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 163, + "y": 688, + "width": 42, + "height": 28, + "direction": 0.0, + "referenceName": "engine2" + }, + { + "id": "space_shooter/engine3", + "name": "engine3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 644, + "y": 1002, + "width": 27, + "height": 22, + "direction": 0.0, + "referenceName": "engine3" + }, + { + "id": "space_shooter/engine4", + "name": "engine4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 144, + "y": 240, + "width": 49, + "height": 45, + "direction": 0.0, + "referenceName": "engine4" + }, + { + "id": "space_shooter/engine5", + "name": "engine5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 133, + "y": 496, + "width": 44, + "height": 24, + "direction": 0.0, + "referenceName": "engine5" + }, + { + "id": "space_shooter/fire00", + "name": "fire00", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 125, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire00" + }, + { + "id": "space_shooter/fire01", + "name": "fire01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 206, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire01" + }, + { + "id": "space_shooter/fire02", + "name": "fire02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 663, + "width": 14, + "height": 32, + "direction": 0.0, + "referenceName": "fire02" + }, + { + "id": "space_shooter/fire03", + "name": "fire03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 437, + "width": 14, + "height": 34, + "direction": 0.0, + "referenceName": "fire03" + }, + { + "id": "space_shooter/fire04", + "name": "fire04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 831, + "y": 0, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire04" + }, + { + "id": "space_shooter/fire05", + "name": "fire05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 834, + "y": 299, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire05" + }, + { + "id": "space_shooter/fire06", + "name": "fire06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 502, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire06" + }, + { + "id": "space_shooter/fire07", + "name": "fire07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 330, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire07" + }, + { + "id": "space_shooter/fire08", + "name": "fire08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 867, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire08" + }, + { + "id": "space_shooter/fire09", + "name": "fire09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 811, + "y": 663, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire09" + }, + { + "id": "space_shooter/fire10", + "name": "fire10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 812, + "y": 206, + "width": 16, + "height": 40, + "direction": 0.0, + "referenceName": "fire10" + }, + { + "id": "space_shooter/fire11", + "name": "fire11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 395, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire11" + }, + { + "id": "space_shooter/fire12", + "name": "fire12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 533, + "width": 14, + "height": 32, + "direction": 0.0, + "referenceName": "fire12" + }, + { + "id": "space_shooter/fire13", + "name": "fire13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 361, + "width": 14, + "height": 34, + "direction": 0.0, + "referenceName": "fire13" + }, + { + "id": "space_shooter/fire14", + "name": "fire14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 831, + "y": 31, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire14" + }, + { + "id": "space_shooter/fire15", + "name": "fire15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 471, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire15" + }, + { + "id": "space_shooter/fire16", + "name": "fire16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 268, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire16" + }, + { + "id": "space_shooter/fire17", + "name": "fire17", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 828, + "y": 237, + "width": 14, + "height": 31, + "direction": 0.0, + "referenceName": "fire17" + }, + { + "id": "space_shooter/fire18", + "name": "fire18", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 165, + "width": 16, + "height": 41, + "direction": 0.0, + "referenceName": "fire18" + }, + { + "id": "space_shooter/fire19", + "name": "fire19", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 812, + "y": 246, + "width": 16, + "height": 41, + "direction": 0.0, + "referenceName": "fire19" + }, + { + "id": "space_shooter/gun00", + "name": "gun00", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 907, + "width": 16, + "height": 36, + "direction": 0.0, + "referenceName": "gun00" + }, + { + "id": "space_shooter/gun01", + "name": "gun01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 867, + "width": 17, + "height": 33, + "direction": 0.0, + "referenceName": "gun01" + }, + { + "id": "space_shooter/gun02", + "name": "gun02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 611, + "width": 14, + "height": 36, + "direction": 0.0, + "referenceName": "gun02" + }, + { + "id": "space_shooter/gun03", + "name": "gun03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 796, + "width": 20, + "height": 41, + "direction": 0.0, + "referenceName": "gun03" + }, + { + "id": "space_shooter/gun04", + "name": "gun04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 827, + "y": 84, + "width": 16, + "height": 41, + "direction": 0.0, + "referenceName": "gun04" + }, + { + "id": "space_shooter/gun05", + "name": "gun05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 0, + "width": 21, + "height": 41, + "direction": 0.0, + "referenceName": "gun05" + }, + { + "id": "space_shooter/gun06", + "name": "gun06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 810, + "y": 900, + "width": 17, + "height": 38, + "direction": 0.0, + "referenceName": "gun06" + }, + { + "id": "space_shooter/gun07", + "name": "gun07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 829, + "y": 796, + "width": 14, + "height": 41, + "direction": 0.0, + "referenceName": "gun07" + }, + { + "id": "space_shooter/gun08", + "name": "gun08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 263, + "width": 10, + "height": 47, + "direction": 0.0, + "referenceName": "gun08" + }, + { + "id": "space_shooter/gun09", + "name": "gun09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 611, + "width": 20, + "height": 52, + "direction": 0.0, + "referenceName": "gun09" + }, + { + "id": "space_shooter/gun10", + "name": "gun10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 808, + "y": 961, + "width": 20, + "height": 52, + "direction": 0.0, + "referenceName": "gun10" + }, + { + "id": "space_shooter/laserBlue01", + "name": "laserBlue01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 421, + "width": 9, + "height": 54, + "direction": 0.0, + "referenceName": "laserBlue01" + }, + { + "id": "space_shooter/laserBlue02", + "name": "laserBlue02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 841, + "y": 647, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue02" + }, + { + "id": "space_shooter/laserBlue03", + "name": "laserBlue03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 57, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue03" + }, + { + "id": "space_shooter/laserBlue04", + "name": "laserBlue04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 565, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue04" + }, + { + "id": "space_shooter/laserBlue05", + "name": "laserBlue05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 475, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue05" + }, + { + "id": "space_shooter/laserBlue06", + "name": "laserBlue06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 752, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue06" + }, + { + "id": "space_shooter/laserBlue07", + "name": "laserBlue07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 775, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue07" + }, + { + "id": "space_shooter/laserBlue08", + "name": "laserBlue08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 596, + "y": 961, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserBlue08" + }, + { + "id": "space_shooter/laserBlue09", + "name": "laserBlue09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 434, + "y": 325, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserBlue09" + }, + { + "id": "space_shooter/laserBlue10", + "name": "laserBlue10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 740, + "y": 724, + "width": 37, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue10" + }, + { + "id": "space_shooter/laserBlue11", + "name": "laserBlue11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 698, + "y": 795, + "width": 38, + "height": 37, + "direction": 0.0, + "referenceName": "laserBlue11" + }, + { + "id": "space_shooter/laserBlue12", + "name": "laserBlue12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 835, + "y": 695, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue12" + }, + { + "id": "space_shooter/laserBlue13", + "name": "laserBlue13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 869, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue13" + }, + { + "id": "space_shooter/laserBlue14", + "name": "laserBlue14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 842, + "y": 206, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue14" + }, + { + "id": "space_shooter/laserBlue15", + "name": "laserBlue15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 849, + "y": 480, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserBlue15" + }, + { + "id": "space_shooter/laserBlue16", + "name": "laserBlue16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 62, + "width": 13, + "height": 54, + "direction": 0.0, + "referenceName": "laserBlue16" + }, + { + "id": "space_shooter/laserGreen01", + "name": "laserGreen01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 740, + "y": 686, + "width": 37, + "height": 38, + "direction": 0.0, + "referenceName": "laserGreen01" + }, + { + "id": "space_shooter/laserGreen02", + "name": "laserGreen02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 116, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen02" + }, + { + "id": "space_shooter/laserGreen03", + "name": "laserGreen03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 855, + "y": 173, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen03" + }, + { + "id": "space_shooter/laserGreen04", + "name": "laserGreen04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 565, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen04" + }, + { + "id": "space_shooter/laserGreen05", + "name": "laserGreen05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 854, + "y": 639, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen05" + }, + { + "id": "space_shooter/laserGreen06", + "name": "laserGreen06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 845, + "y": 0, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen06" + }, + { + "id": "space_shooter/laserGreen07", + "name": "laserGreen07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 849, + "y": 364, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserGreen07" + }, + { + "id": "space_shooter/laserGreen08", + "name": "laserGreen08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 738, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen08" + }, + { + "id": "space_shooter/laserGreen09", + "name": "laserGreen09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 94, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen09" + }, + { + "id": "space_shooter/laserGreen10", + "name": "laserGreen10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 426, + "width": 13, + "height": 54, + "direction": 0.0, + "referenceName": "laserGreen10" + }, + { + "id": "space_shooter/laserGreen11", + "name": "laserGreen11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 849, + "y": 310, + "width": 9, + "height": 54, + "direction": 0.0, + "referenceName": "laserGreen11" + }, + { + "id": "space_shooter/laserGreen12", + "name": "laserGreen12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 602, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen12" + }, + { + "id": "space_shooter/laserGreen13", + "name": "laserGreen13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 0, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen13" + }, + { + "id": "space_shooter/laserGreen14", + "name": "laserGreen14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 193, + "y": 240, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserGreen14" + }, + { + "id": "space_shooter/laserGreen15", + "name": "laserGreen15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 443, + "y": 182, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserGreen15" + }, + { + "id": "space_shooter/laserGreen16", + "name": "laserGreen16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 760, + "y": 192, + "width": 37, + "height": 37, + "direction": 0.0, + "referenceName": "laserGreen16" + }, + { + "id": "space_shooter/laserRed01", + "name": "laserRed01", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 230, + "width": 9, + "height": 54, + "direction": 0.0, + "referenceName": "laserRed01" + }, + { + "id": "space_shooter/laserRed02", + "name": "laserRed02", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 977, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed02" + }, + { + "id": "space_shooter/laserRed03", + "name": "laserRed03", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 602, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed03" + }, + { + "id": "space_shooter/laserRed04", + "name": "laserRed04", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 940, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed04" + }, + { + "id": "space_shooter/laserRed05", + "name": "laserRed05", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 983, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed05" + }, + { + "id": "space_shooter/laserRed06", + "name": "laserRed06", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 903, + "width": 13, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed06" + }, + { + "id": "space_shooter/laserRed07", + "name": "laserRed07", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 131, + "width": 9, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed07" + }, + { + "id": "space_shooter/laserRed08", + "name": "laserRed08", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 580, + "y": 661, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserRed08" + }, + { + "id": "space_shooter/laserRed09", + "name": "laserRed09", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 602, + "y": 600, + "width": 48, + "height": 46, + "direction": 0.0, + "referenceName": "laserRed09" + }, + { + "id": "space_shooter/laserRed10", + "name": "laserRed10", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 738, + "y": 650, + "width": 37, + "height": 36, + "direction": 0.0, + "referenceName": "laserRed10" + }, + { + "id": "space_shooter/laserRed11", + "name": "laserRed11", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 737, + "y": 613, + "width": 37, + "height": 37, + "direction": 0.0, + "referenceName": "laserRed11" + }, + { + "id": "space_shooter/laserRed12", + "name": "laserRed12", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 846, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed12" + }, + { + "id": "space_shooter/laserRed13", + "name": "laserRed13", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 812, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed13" + }, + { + "id": "space_shooter/laserRed14", + "name": "laserRed14", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 843, + "y": 789, + "width": 13, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed14" + }, + { + "id": "space_shooter/laserRed15", + "name": "laserRed15", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 856, + "y": 926, + "width": 9, + "height": 57, + "direction": 0.0, + "referenceName": "laserRed15" + }, + { + "id": "space_shooter/laserRed16", + "name": "laserRed16", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 848, + "y": 684, + "width": 13, + "height": 54, + "direction": 0.0, + "referenceName": "laserRed16" + }, + { + "id": "space_shooter/meteorBrown_big1", + "name": "meteorBrown_big1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 664, + "width": 101, + "height": 84, + "direction": 90.0, + "referenceName": "meteorBrown_big1" + }, + { + "id": "space_shooter/meteorBrown_big2", + "name": "meteorBrown_big2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 520, + "width": 120, + "height": 98, + "direction": 90.0, + "referenceName": "meteorBrown_big2" + }, + { + "id": "space_shooter/meteorBrown_big3", + "name": "meteorBrown_big3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 518, + "y": 810, + "width": 89, + "height": 82, + "direction": 90.0, + "referenceName": "meteorBrown_big3" + }, + { + "id": "space_shooter/meteorBrown_big4", + "name": "meteorBrown_big4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 327, + "y": 452, + "width": 98, + "height": 96, + "direction": 90.0, + "referenceName": "meteorBrown_big4" + }, + { + "id": "space_shooter/meteorBrown_med1", + "name": "meteorBrown_med1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 447, + "width": 43, + "height": 43, + "direction": 90.0, + "referenceName": "meteorBrown_med1" + }, + { + "id": "space_shooter/meteorBrown_med3", + "name": "meteorBrown_med3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 237, + "y": 452, + "width": 45, + "height": 40, + "direction": 90.0, + "referenceName": "meteorBrown_med3" + }, + { + "id": "space_shooter/meteorBrown_small1", + "name": "meteorBrown_small1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 406, + "y": 234, + "width": 28, + "height": 28, + "direction": 90.0, + "referenceName": "meteorBrown_small1" + }, + { + "id": "space_shooter/meteorBrown_small2", + "name": "meteorBrown_small2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 587, + "width": 29, + "height": 26, + "direction": 90.0, + "referenceName": "meteorBrown_small2" + }, + { + "id": "space_shooter/meteorBrown_tiny1", + "name": "meteorBrown_tiny1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 814, + "width": 18, + "height": 18, + "direction": 90.0, + "referenceName": "meteorBrown_tiny1" + }, + { + "id": "space_shooter/meteorBrown_tiny2", + "name": "meteorBrown_tiny2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 399, + "y": 814, + "width": 16, + "height": 15, + "direction": 90.0, + "referenceName": "meteorBrown_tiny2" + }, + { + "id": "space_shooter/meteorGrey_big1", + "name": "meteorGrey_big1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 748, + "width": 101, + "height": 84, + "direction": 90.0, + "referenceName": "meteorGrey_big1" + }, + { + "id": "space_shooter/meteorGrey_big2", + "name": "meteorGrey_big2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 618, + "width": 120, + "height": 98, + "direction": 90.0, + "referenceName": "meteorGrey_big2" + }, + { + "id": "space_shooter/meteorGrey_big3", + "name": "meteorGrey_big3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 516, + "y": 728, + "width": 89, + "height": 82, + "direction": 90.0, + "referenceName": "meteorGrey_big3" + }, + { + "id": "space_shooter/meteorGrey_big4", + "name": "meteorGrey_big4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 327, + "y": 548, + "width": 98, + "height": 96, + "direction": 90.0, + "referenceName": "meteorGrey_big4" + }, + { + "id": "space_shooter/meteorGrey_med1", + "name": "meteorGrey_med1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 674, + "y": 219, + "width": 43, + "height": 43, + "direction": 90.0, + "referenceName": "meteorGrey_med1" + }, + { + "id": "space_shooter/meteorGrey_med2", + "name": "meteorGrey_med2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 282, + "y": 452, + "width": 45, + "height": 40, + "direction": 90.0, + "referenceName": "meteorGrey_med2" + }, + { + "id": "space_shooter/meteorGrey_small1", + "name": "meteorGrey_small1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 406, + "y": 262, + "width": 28, + "height": 28, + "direction": 90.0, + "referenceName": "meteorGrey_small1" + }, + { + "id": "space_shooter/meteorGrey_small2", + "name": "meteorGrey_small2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 396, + "y": 413, + "width": 29, + "height": 26, + "direction": 90.0, + "referenceName": "meteorGrey_small2" + }, + { + "id": "space_shooter/meteorGrey_tiny1", + "name": "meteorGrey_tiny1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 364, + "y": 814, + "width": 18, + "height": 18, + "direction": 90.0, + "referenceName": "meteorGrey_tiny1" + }, + { + "id": "space_shooter/meteorGrey_tiny2", + "name": "meteorGrey_tiny2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 602, + "y": 646, + "width": 16, + "height": 15, + "direction": 90.0, + "referenceName": "meteorGrey_tiny2" + }, + { + "id": "space_shooter/numeral0", + "name": "numeral0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 367, + "y": 644, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral0" + }, + { + "id": "space_shooter/numeral1", + "name": "numeral1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 205, + "y": 688, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral1" + }, + { + "id": "space_shooter/numeral2", + "name": "numeral2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 406, + "y": 290, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral2" + }, + { + "id": "space_shooter/numeral3", + "name": "numeral3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 580, + "y": 707, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral3" + }, + { + "id": "space_shooter/numeral4", + "name": "numeral4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 386, + "y": 644, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral4" + }, + { + "id": "space_shooter/numeral5", + "name": "numeral5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 628, + "y": 646, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral5" + }, + { + "id": "space_shooter/numeral6", + "name": "numeral6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 671, + "y": 1002, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral6" + }, + { + "id": "space_shooter/numeral7", + "name": "numeral7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 690, + "y": 1004, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral7" + }, + { + "id": "space_shooter/numeral8", + "name": "numeral8", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 709, + "y": 1004, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral8" + }, + { + "id": "space_shooter/numeral9", + "name": "numeral9", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 491, + "y": 215, + "width": 19, + "height": 19, + "direction": 90.0, + "referenceName": "numeral9" + }, + { + "id": "space_shooter/numeralX", + "name": "numeralX", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 382, + "y": 814, + "width": 17, + "height": 17, + "direction": 90.0, + "referenceName": "numeralX" + }, + { + "id": "space_shooter/pill_blue", + "name": "pill_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 674, + "y": 262, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_blue" + }, + { + "id": "space_shooter/pill_green", + "name": "pill_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 573, + "y": 989, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_green" + }, + { + "id": "space_shooter/pill_red", + "name": "pill_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 108, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_red" + }, + { + "id": "space_shooter/pill_yellow", + "name": "pill_yellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 129, + "width": 22, + "height": 21, + "direction": 90.0, + "referenceName": "pill_yellow" + }, + { + "id": "space_shooter/playerLife1_blue", + "name": "playerLife1_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 482, + "y": 358, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_blue" + }, + { + "id": "space_shooter/playerLife1_green", + "name": "playerLife1_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 535, + "y": 150, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_green" + }, + { + "id": "space_shooter/playerLife1_orange", + "name": "playerLife1_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 327, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_orange" + }, + { + "id": "space_shooter/playerLife1_red", + "name": "playerLife1_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 775, + "y": 301, + "width": 33, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife1_red" + }, + { + "id": "space_shooter/playerLife2_blue", + "name": "playerLife2_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 465, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_blue" + }, + { + "id": "space_shooter/playerLife2_green", + "name": "playerLife2_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 391, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_green" + }, + { + "id": "space_shooter/playerLife2_orange", + "name": "playerLife2_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 428, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_orange" + }, + { + "id": "space_shooter/playerLife2_red", + "name": "playerLife2_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 502, + "y": 991, + "width": 37, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife2_red" + }, + { + "id": "space_shooter/playerLife3_blue", + "name": "playerLife3_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 385, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_blue" + }, + { + "id": "space_shooter/playerLife3_green", + "name": "playerLife3_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 469, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_green" + }, + { + "id": "space_shooter/playerLife3_orange", + "name": "playerLife3_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 712, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_orange" + }, + { + "id": "space_shooter/playerLife3_red", + "name": "playerLife3_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 443, + "width": 32, + "height": 26, + "direction": 0.0, + "referenceName": "playerLife3_red" + }, + { + "id": "space_shooter/playerShip1_blue", + "name": "playerShip1_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 211, + "y": 941, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_blue" + }, + { + "id": "space_shooter/playerShip1_damage1", + "name": "playerShip1_damage1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 941, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_damage1" + }, + { + "id": "space_shooter/playerShip1_damage2", + "name": "playerShip1_damage2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 234, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_damage2" + }, + { + "id": "space_shooter/playerShip1_damage3", + "name": "playerShip1_damage3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 159, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_damage3" + }, + { + "id": "space_shooter/playerShip1_green", + "name": "playerShip1_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 237, + "y": 377, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_green" + }, + { + "id": "space_shooter/playerShip1_orange", + "name": "playerShip1_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 247, + "y": 84, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_orange" + }, + { + "id": "space_shooter/playerShip1_red", + "name": "playerShip1_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 224, + "y": 832, + "width": 99, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip1_red" + }, + { + "id": "space_shooter/playerShip2_blue", + "name": "playerShip2_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 791, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_blue" + }, + { + "id": "space_shooter/playerShip2_damage1", + "name": "playerShip2_damage1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 866, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_damage1" + }, + { + "id": "space_shooter/playerShip2_damage2", + "name": "playerShip2_damage2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 791, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_damage2" + }, + { + "id": "space_shooter/playerShip2_damage3", + "name": "playerShip2_damage3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 716, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_damage3" + }, + { + "id": "space_shooter/playerShip2_green", + "name": "playerShip2_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 866, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_green" + }, + { + "id": "space_shooter/playerShip2_orange", + "name": "playerShip2_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 112, + "y": 716, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_orange" + }, + { + "id": "space_shooter/playerShip2_red", + "name": "playerShip2_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 941, + "width": 112, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip2_red" + }, + { + "id": "space_shooter/playerShip3_blue", + "name": "playerShip3_blue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 739, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_blue" + }, + { + "id": "space_shooter/playerShip3_damage1", + "name": "playerShip3_damage1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 323, + "y": 832, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_damage1" + }, + { + "id": "space_shooter/playerShip3_damage2", + "name": "playerShip3_damage2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 310, + "y": 907, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_damage2" + }, + { + "id": "space_shooter/playerShip3_damage3", + "name": "playerShip3_damage3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 664, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_damage3" + }, + { + "id": "space_shooter/playerShip3_green", + "name": "playerShip3_green", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 75, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_green" + }, + { + "id": "space_shooter/playerShip3_orange", + "name": "playerShip3_orange", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 336, + "y": 309, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_orange" + }, + { + "id": "space_shooter/playerShip3_red", + "name": "playerShip3_red", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 0, + "width": 98, + "height": 75, + "direction": 0.0, + "referenceName": "playerShip3_red" + }, + { + "id": "space_shooter/powerupBlue", + "name": "powerupBlue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 696, + "y": 329, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue" + }, + { + "id": "space_shooter/powerupBlue_bolt", + "name": "powerupBlue_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 539, + "y": 989, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue_bolt" + }, + { + "id": "space_shooter/powerupBlue_shield", + "name": "powerupBlue_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 679, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue_shield" + }, + { + "id": "space_shooter/powerupBlue_star", + "name": "powerupBlue_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 776, + "y": 895, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupBlue_star" + }, + { + "id": "space_shooter/powerupGreen", + "name": "powerupGreen", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 774, + "y": 613, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen" + }, + { + "id": "space_shooter/powerupGreen_bolt", + "name": "powerupGreen_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 766, + "y": 80, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen_bolt" + }, + { + "id": "space_shooter/powerupGreen_shield", + "name": "powerupGreen_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 776, + "y": 862, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen_shield" + }, + { + "id": "space_shooter/powerupGreen_star", + "name": "powerupGreen_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 490, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupGreen_star" + }, + { + "id": "space_shooter/powerupRed", + "name": "powerupRed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 491, + "y": 182, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed" + }, + { + "id": "space_shooter/powerupRed_bolt", + "name": "powerupRed_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 775, + "y": 646, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed_bolt" + }, + { + "id": "space_shooter/powerupRed_shield", + "name": "powerupRed_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 776, + "y": 928, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed_shield" + }, + { + "id": "space_shooter/powerupRed_star", + "name": "powerupRed_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 774, + "y": 977, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupRed_star" + }, + { + "id": "space_shooter/powerupYellow", + "name": "powerupYellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 774, + "y": 761, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow" + }, + { + "id": "space_shooter/powerupYellow_bolt", + "name": "powerupYellow_bolt", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 740, + "y": 761, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow_bolt" + }, + { + "id": "space_shooter/powerupYellow_shield", + "name": "powerupYellow_shield", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 482, + "y": 325, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow_shield" + }, + { + "id": "space_shooter/powerupYellow_star", + "name": "powerupYellow_star", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 607, + "y": 857, + "width": 34, + "height": 33, + "direction": 90.0, + "referenceName": "powerupYellow_star" + }, + { + "id": "space_shooter/scratch1", + "name": "scratch1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 325, + "y": 814, + "width": 21, + "height": 16, + "direction": 90.0, + "referenceName": "scratch1" + }, + { + "id": "space_shooter/scratch2", + "name": "scratch2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 423, + "y": 41, + "width": 21, + "height": 16, + "direction": 90.0, + "referenceName": "scratch2" + }, + { + "id": "space_shooter/scratch3", + "name": "scratch3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 346, + "y": 295, + "width": 16, + "height": 12, + "direction": 90.0, + "referenceName": "scratch3" + }, + { + "id": "space_shooter/shield1", + "name": "shield1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 412, + "width": 133, + "height": 108, + "direction": 0.0, + "referenceName": "shield1" + }, + { + "id": "space_shooter/shield2", + "name": "shield2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 293, + "width": 143, + "height": 119, + "direction": 0.0, + "referenceName": "shield2" + }, + { + "id": "space_shooter/shield3", + "name": "shield3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 0, + "y": 156, + "width": 144, + "height": 137, + "direction": 0.0, + "referenceName": "shield3" + }, + { + "id": "space_shooter/shield_bronze", + "name": "shield_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 797, + "y": 143, + "width": 30, + "height": 30, + "direction": 90.0, + "referenceName": "shield_bronze" + }, + { + "id": "space_shooter/shield_gold", + "name": "shield_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 797, + "y": 113, + "width": 30, + "height": 30, + "direction": 90.0, + "referenceName": "shield_gold" + }, + { + "id": "space_shooter/shield_silver", + "name": "shield_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 824, + "width": 30, + "height": 30, + "direction": 90.0, + "referenceName": "shield_silver" + }, + { + "id": "space_shooter/speed", + "name": "speed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 858, + "y": 284, + "width": 7, + "height": 108, + "direction": 0.0, + "referenceName": "speed" + }, + { + "id": "space_shooter/star1", + "name": "star1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 628, + "y": 681, + "width": 25, + "height": 24, + "direction": 90.0, + "referenceName": "star1" + }, + { + "id": "space_shooter/star2", + "name": "star2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 222, + "y": 84, + "width": 25, + "height": 24, + "direction": 90.0, + "referenceName": "star2" + }, + { + "id": "space_shooter/star3", + "name": "star3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 576, + "y": 300, + "width": 24, + "height": 24, + "direction": 90.0, + "referenceName": "star3" + }, + { + "id": "space_shooter/star_bronze", + "name": "star_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 794, + "width": 31, + "height": 30, + "direction": 90.0, + "referenceName": "star_bronze" + }, + { + "id": "space_shooter/star_gold", + "name": "star_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 557, + "width": 31, + "height": 30, + "direction": 90.0, + "referenceName": "star_gold" + }, + { + "id": "space_shooter/star_silver", + "name": "star_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 527, + "width": 31, + "height": 30, + "direction": 90.0, + "referenceName": "star_silver" + }, + { + "id": "space_shooter/things_bronze", + "name": "things_bronze", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 778, + "y": 495, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "things_bronze" + }, + { + "id": "space_shooter/things_gold", + "name": "things_gold", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 411, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "things_gold" + }, + { + "id": "space_shooter/things_silver", + "name": "things_silver", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 777, + "y": 353, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "things_silver" + }, + { + "id": "space_shooter/turretBase_big", + "name": "turretBase_big", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 310, + "y": 982, + "width": 41, + "height": 41, + "direction": 90.0, + "referenceName": "turretBase_big" + }, + { + "id": "space_shooter/turretBase_small", + "name": "turretBase_small", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 808, + "y": 301, + "width": 26, + "height": 26, + "direction": 90.0, + "referenceName": "turretBase_small" + }, + { + "id": "space_shooter/ufoBlue", + "name": "ufoBlue", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 444, + "y": 91, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoBlue" + }, + { + "id": "space_shooter/ufoGreen", + "name": "ufoGreen", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 434, + "y": 234, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoGreen" + }, + { + "id": "space_shooter/ufoRed", + "name": "ufoRed", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 444, + "y": 0, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoRed" + }, + { + "id": "space_shooter/ufoYellow", + "name": "ufoYellow", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 505, + "y": 898, + "width": 91, + "height": 91, + "direction": 90.0, + "referenceName": "ufoYellow" + }, + { + "id": "space_shooter/wingBlue_0", + "name": "wingBlue_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 647, + "y": 924, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingBlue_0" + }, + { + "id": "space_shooter/wingBlue_1", + "name": "wingBlue_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 738, + "y": 253, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingBlue_1" + }, + { + "id": "space_shooter/wingBlue_2", + "name": "wingBlue_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 805, + "y": 0, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingBlue_2" + }, + { + "id": "space_shooter/wingBlue_3", + "name": "wingBlue_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 600, + "y": 450, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingBlue_3" + }, + { + "id": "space_shooter/wingBlue_4", + "name": "wingBlue_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 692, + "y": 924, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingBlue_4" + }, + { + "id": "space_shooter/wingBlue_5", + "name": "wingBlue_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 596, + "y": 892, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingBlue_5" + }, + { + "id": "space_shooter/wingBlue_6", + "name": "wingBlue_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 694, + "y": 847, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingBlue_6" + }, + { + "id": "space_shooter/wingBlue_7", + "name": "wingBlue_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 675, + "y": 134, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingBlue_7" + }, + { + "id": "space_shooter/wingGreen_0", + "name": "wingGreen_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 650, + "y": 525, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingGreen_0" + }, + { + "id": "space_shooter/wingGreen_1", + "name": "wingGreen_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 775, + "y": 229, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingGreen_1" + }, + { + "id": "space_shooter/wingGreen_2", + "name": "wingGreen_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 527, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingGreen_2" + }, + { + "id": "space_shooter/wingGreen_3", + "name": "wingGreen_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 535, + "y": 0, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingGreen_3" + }, + { + "id": "space_shooter/wingGreen_4", + "name": "wingGreen_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 694, + "y": 431, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingGreen_4" + }, + { + "id": "space_shooter/wingGreen_5", + "name": "wingGreen_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 525, + "y": 251, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingGreen_5" + }, + { + "id": "space_shooter/wingGreen_6", + "name": "wingGreen_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 695, + "y": 511, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingGreen_6" + }, + { + "id": "space_shooter/wingGreen_7", + "name": "wingGreen_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 655, + "y": 764, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingGreen_7" + }, + { + "id": "space_shooter/wingRed_0", + "name": "wingRed_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 712, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingRed_0" + }, + { + "id": "space_shooter/wingRed_1", + "name": "wingRed_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 768, + "y": 0, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingRed_1" + }, + { + "id": "space_shooter/wingRed_2", + "name": "wingRed_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 600, + "y": 300, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingRed_2" + }, + { + "id": "space_shooter/wingRed_3", + "name": "wingRed_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 698, + "y": 715, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingRed_3" + }, + { + "id": "space_shooter/wingRed_4", + "name": "wingRed_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 586, + "y": 75, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingRed_4" + }, + { + "id": "space_shooter/wingRed_5", + "name": "wingRed_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 718, + "y": 123, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingRed_5" + }, + { + "id": "space_shooter/wingRed_6", + "name": "wingRed_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 653, + "y": 681, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingRed_6" + }, + { + "id": "space_shooter/wingRed_7", + "name": "wingRed_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 286, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingRed_7" + }, + { + "id": "space_shooter/wingYellow_0", + "name": "wingYellow_0", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 650, + "y": 603, + "width": 45, + "height": 78, + "direction": 0.0, + "referenceName": "wingYellow_0" + }, + { + "id": "space_shooter/wingYellow_1", + "name": "wingYellow_1", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 760, + "y": 120, + "width": 37, + "height": 72, + "direction": 0.0, + "referenceName": "wingYellow_1" + }, + { + "id": "space_shooter/wingYellow_2", + "name": "wingYellow_2", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 809, + "y": 353, + "width": 26, + "height": 84, + "direction": 0.0, + "referenceName": "wingYellow_2" + }, + { + "id": "space_shooter/wingYellow_3", + "name": "wingYellow_3", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 576, + "y": 150, + "width": 51, + "height": 75, + "direction": 0.0, + "referenceName": "wingYellow_3" + }, + { + "id": "space_shooter/wingYellow_4", + "name": "wingYellow_4", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 726, + "y": 0, + "width": 42, + "height": 80, + "direction": 0.0, + "referenceName": "wingYellow_4" + }, + { + "id": "space_shooter/wingYellow_5", + "name": "wingYellow_5", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 525, + "y": 182, + "width": 51, + "height": 69, + "direction": 0.0, + "referenceName": "wingYellow_5" + }, + { + "id": "space_shooter/wingYellow_6", + "name": "wingYellow_6", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 695, + "y": 585, + "width": 42, + "height": 74, + "direction": 0.0, + "referenceName": "wingYellow_6" + }, + { + "id": "space_shooter/wingYellow_7", + "name": "wingYellow_7", + "sheet": "space_shooter", + "sheetPath": "images/space_shooter.png", + "x": 651, + "y": 364, + "width": 43, + "height": 83, + "direction": 0.0, + "referenceName": "wingYellow_7" + }, + { + "id": "tappy_plane/UIbg", + "name": "UIbg", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 986, + "width": 264, + "height": 264, + "direction": 90.0, + "referenceName": "UIbg" + }, + { + "id": "tappy_plane/background", + "name": "background", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 355, + "width": 800, + "height": 480, + "direction": 90.0, + "referenceName": "background" + }, + { + "id": "tappy_plane/buttonLarge", + "name": "buttonLarge", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1250, + "width": 196, + "height": 70, + "direction": 90.0, + "referenceName": "buttonLarge" + }, + { + "id": "tappy_plane/buttonSmall", + "name": "buttonSmall", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1320, + "width": 136, + "height": 80, + "direction": 90.0, + "referenceName": "buttonSmall" + }, + { + "id": "tappy_plane/groundDirt", + "name": "groundDirt", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 0, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundDirt" + }, + { + "id": "tappy_plane/groundGrass", + "name": "groundGrass", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 142, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundGrass" + }, + { + "id": "tappy_plane/groundIce", + "name": "groundIce", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 71, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundIce" + }, + { + "id": "tappy_plane/groundRock", + "name": "groundRock", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 284, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundRock" + }, + { + "id": "tappy_plane/groundSnow", + "name": "groundSnow", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 213, + "width": 808, + "height": 71, + "direction": 90.0, + "referenceName": "groundSnow" + }, + { + "id": "tappy_plane/letterA", + "name": "letterA", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 412, + "y": 835, + "width": 61, + "height": 64, + "direction": 90.0, + "referenceName": "letterA" + }, + { + "id": "tappy_plane/letterB", + "name": "letterB", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 487, + "y": 1537, + "width": 50, + "height": 66, + "direction": 90.0, + "referenceName": "letterB" + }, + { + "id": "tappy_plane/letterC", + "name": "letterC", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 460, + "y": 977, + "width": 52, + "height": 66, + "direction": 90.0, + "referenceName": "letterC" + }, + { + "id": "tappy_plane/letterD", + "name": "letterD", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1613, + "width": 54, + "height": 66, + "direction": 90.0, + "referenceName": "letterD" + }, + { + "id": "tappy_plane/letterE", + "name": "letterE", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 511, + "y": 1965, + "width": 45, + "height": 64, + "direction": 90.0, + "referenceName": "letterE" + }, + { + "id": "tappy_plane/letterF", + "name": "letterF", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 963, + "width": 44, + "height": 64, + "direction": 90.0, + "referenceName": "letterF" + }, + { + "id": "tappy_plane/letterG", + "name": "letterG", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 460, + "y": 1107, + "width": 52, + "height": 66, + "direction": 90.0, + "referenceName": "letterG" + }, + { + "id": "tappy_plane/letterH", + "name": "letterH", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 473, + "y": 835, + "width": 51, + "height": 64, + "direction": 90.0, + "referenceName": "letterH" + }, + { + "id": "tappy_plane/letterI", + "name": "letterI", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 524, + "y": 835, + "width": 22, + "height": 64, + "direction": 90.0, + "referenceName": "letterI" + }, + { + "id": "tappy_plane/letterJ", + "name": "letterJ", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 1027, + "width": 42, + "height": 66, + "direction": 90.0, + "referenceName": "letterJ" + }, + { + "id": "tappy_plane/letterK", + "name": "letterK", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1821, + "width": 53, + "height": 64, + "direction": 90.0, + "referenceName": "letterK" + }, + { + "id": "tappy_plane/letterL", + "name": "letterL", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 899, + "width": 44, + "height": 64, + "direction": 90.0, + "referenceName": "letterL" + }, + { + "id": "tappy_plane/letterM", + "name": "letterM", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 392, + "y": 1967, + "width": 66, + "height": 64, + "direction": 90.0, + "referenceName": "letterM" + }, + { + "id": "tappy_plane/letterN", + "name": "letterN", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1679, + "width": 53, + "height": 64, + "direction": 90.0, + "referenceName": "letterN" + }, + { + "id": "tappy_plane/letterO", + "name": "letterO", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1284, + "width": 60, + "height": 66, + "direction": 90.0, + "referenceName": "letterO" + }, + { + "id": "tappy_plane/letterP", + "name": "letterP", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 489, + "y": 1427, + "width": 48, + "height": 65, + "direction": 90.0, + "referenceName": "letterP" + }, + { + "id": "tappy_plane/letterQ", + "name": "letterQ", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1205, + "width": 60, + "height": 79, + "direction": 90.0, + "referenceName": "letterQ" + }, + { + "id": "tappy_plane/letterR", + "name": "letterR", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 478, + "y": 1249, + "width": 51, + "height": 65, + "direction": 90.0, + "referenceName": "letterR" + }, + { + "id": "tappy_plane/letterS", + "name": "letterS", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 511, + "y": 1899, + "width": 46, + "height": 66, + "direction": 90.0, + "referenceName": "letterS" + }, + { + "id": "tappy_plane/letterT", + "name": "letterT", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 460, + "y": 1043, + "width": 52, + "height": 64, + "direction": 90.0, + "referenceName": "letterT" + }, + { + "id": "tappy_plane/letterU", + "name": "letterU", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 485, + "y": 1757, + "width": 51, + "height": 66, + "direction": 90.0, + "referenceName": "letterU" + }, + { + "id": "tappy_plane/letterV", + "name": "letterV", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 400, + "y": 913, + "width": 61, + "height": 64, + "direction": 90.0, + "referenceName": "letterV" + }, + { + "id": "tappy_plane/letterW", + "name": "letterW", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 136, + "y": 1320, + "width": 76, + "height": 64, + "direction": 90.0, + "referenceName": "letterW" + }, + { + "id": "tappy_plane/letterX", + "name": "letterX", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1409, + "width": 58, + "height": 64, + "direction": 90.0, + "referenceName": "letterX" + }, + { + "id": "tappy_plane/letterY", + "name": "letterY", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1473, + "width": 57, + "height": 64, + "direction": 90.0, + "referenceName": "letterY" + }, + { + "id": "tappy_plane/letterZ", + "name": "letterZ", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 486, + "y": 1613, + "width": 50, + "height": 64, + "direction": 90.0, + "referenceName": "letterZ" + }, + { + "id": "tappy_plane/medalBronze", + "name": "medalBronze", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1400, + "width": 114, + "height": 119, + "direction": 90.0, + "referenceName": "medalBronze" + }, + { + "id": "tappy_plane/medalGold", + "name": "medalGold", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1519, + "width": 114, + "height": 119, + "direction": 90.0, + "referenceName": "medalGold" + }, + { + "id": "tappy_plane/medalSilver", + "name": "medalSilver", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1638, + "width": 114, + "height": 119, + "direction": 90.0, + "referenceName": "medalSilver" + }, + { + "id": "tappy_plane/number0", + "name": "number0", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1743, + "width": 53, + "height": 78, + "direction": 90.0, + "referenceName": "number0" + }, + { + "id": "tappy_plane/number1", + "name": "number1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 512, + "y": 1093, + "width": 37, + "height": 76, + "direction": 90.0, + "referenceName": "number1" + }, + { + "id": "tappy_plane/number2", + "name": "number2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 477, + "y": 1350, + "width": 51, + "height": 77, + "direction": 90.0, + "referenceName": "number2" + }, + { + "id": "tappy_plane/number3", + "name": "number3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 485, + "y": 1679, + "width": 51, + "height": 78, + "direction": 90.0, + "referenceName": "number3" + }, + { + "id": "tappy_plane/number4", + "name": "number4", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1537, + "width": 55, + "height": 76, + "direction": 90.0, + "referenceName": "number4" + }, + { + "id": "tappy_plane/number5", + "name": "number5", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 485, + "y": 1823, + "width": 50, + "height": 76, + "direction": 90.0, + "referenceName": "number5" + }, + { + "id": "tappy_plane/number6", + "name": "number6", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 432, + "y": 1885, + "width": 53, + "height": 77, + "direction": 90.0, + "referenceName": "number6" + }, + { + "id": "tappy_plane/number7", + "name": "number7", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 478, + "y": 1173, + "width": 51, + "height": 76, + "direction": 90.0, + "referenceName": "number7" + }, + { + "id": "tappy_plane/number8", + "name": "number8", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 461, + "y": 899, + "width": 51, + "height": 78, + "direction": 90.0, + "referenceName": "number8" + }, + { + "id": "tappy_plane/number9", + "name": "number9", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 458, + "y": 1962, + "width": 53, + "height": 77, + "direction": 90.0, + "referenceName": "number9" + }, + { + "id": "tappy_plane/planeBlue1", + "name": "planeBlue1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1371, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeBlue1" + }, + { + "id": "tappy_plane/planeBlue2", + "name": "planeBlue2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 372, + "y": 1132, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeBlue2" + }, + { + "id": "tappy_plane/planeBlue3", + "name": "planeBlue3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 222, + "y": 1562, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeBlue3" + }, + { + "id": "tappy_plane/planeGreen1", + "name": "planeGreen1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 114, + "y": 1639, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeGreen1" + }, + { + "id": "tappy_plane/planeGreen2", + "name": "planeGreen2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 216, + "y": 1951, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeGreen2" + }, + { + "id": "tappy_plane/planeGreen3", + "name": "planeGreen3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 222, + "y": 1489, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeGreen3" + }, + { + "id": "tappy_plane/planeRed1", + "name": "planeRed1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 216, + "y": 1878, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeRed1" + }, + { + "id": "tappy_plane/planeRed2", + "name": "planeRed2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 372, + "y": 1059, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeRed2" + }, + { + "id": "tappy_plane/planeRed3", + "name": "planeRed3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 372, + "y": 986, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeRed3" + }, + { + "id": "tappy_plane/planeYellow1", + "name": "planeYellow1", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 304, + "y": 1967, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeYellow1" + }, + { + "id": "tappy_plane/planeYellow2", + "name": "planeYellow2", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1298, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeYellow2" + }, + { + "id": "tappy_plane/planeYellow3", + "name": "planeYellow3", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1225, + "width": 88, + "height": 73, + "direction": 90.0, + "referenceName": "planeYellow3" + }, + { + "id": "tappy_plane/puffLarge", + "name": "puffLarge", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 114, + "y": 1712, + "width": 42, + "height": 35, + "direction": 90.0, + "referenceName": "puffLarge" + }, + { + "id": "tappy_plane/puffSmall", + "name": "puffSmall", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 196, + "y": 1250, + "width": 25, + "height": 21, + "direction": 90.0, + "referenceName": "puffSmall" + }, + { + "id": "tappy_plane/rock", + "name": "rock", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 114, + "y": 1400, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "tappy_plane/rock" + }, + { + "id": "tappy_plane/rockDown", + "name": "rockDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 324, + "y": 1489, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockDown" + }, + { + "id": "tappy_plane/rockGrass", + "name": "rockGrass", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1757, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockGrass" + }, + { + "id": "tappy_plane/rockGrassDown", + "name": "rockGrassDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 264, + "y": 986, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockGrassDown" + }, + { + "id": "tappy_plane/rockIce", + "name": "rockIce", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 216, + "y": 1639, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockIce" + }, + { + "id": "tappy_plane/rockIceDown", + "name": "rockIceDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 222, + "y": 1250, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockIceDown" + }, + { + "id": "tappy_plane/rockSnow", + "name": "rockSnow", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 324, + "y": 1728, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockSnow" + }, + { + "id": "tappy_plane/rockSnowDown", + "name": "rockSnowDown", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 108, + "y": 1757, + "width": 108, + "height": 239, + "direction": 90.0, + "referenceName": "rockSnowDown" + }, + { + "id": "tappy_plane/starBronze", + "name": "starBronze", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 170, + "y": 1996, + "width": 39, + "height": 37, + "direction": 90.0, + "referenceName": "starBronze" + }, + { + "id": "tappy_plane/starGold", + "name": "starGold", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 369, + "y": 1444, + "width": 39, + "height": 37, + "direction": 90.0, + "referenceName": "starGold" + }, + { + "id": "tappy_plane/starSilver", + "name": "starSilver", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 330, + "y": 1444, + "width": 39, + "height": 37, + "direction": 90.0, + "referenceName": "starSilver" + }, + { + "id": "tappy_plane/tap", + "name": "tap", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 156, + "y": 1712, + "width": 40, + "height": 40, + "direction": 90.0, + "referenceName": "tap" + }, + { + "id": "tappy_plane/tapLeft", + "name": "tapLeft", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 1996, + "width": 85, + "height": 42, + "direction": 90.0, + "referenceName": "tapLeft" + }, + { + "id": "tappy_plane/tapRight", + "name": "tapRight", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 85, + "y": 1996, + "width": 85, + "height": 42, + "direction": 90.0, + "referenceName": "tapRight" + }, + { + "id": "tappy_plane/tapTick", + "name": "tapTick", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 418, + "y": 1350, + "width": 59, + "height": 59, + "direction": 90.0, + "referenceName": "tapTick" + }, + { + "id": "tappy_plane/textGameOver", + "name": "textGameOver", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 835, + "width": 412, + "height": 78, + "direction": 90.0, + "referenceName": "textGameOver" + }, + { + "id": "tappy_plane/textGetReady", + "name": "textGetReady", + "sheet": "tappy_plane", + "sheetPath": "images/tappy_plane.png", + "x": 0, + "y": 913, + "width": 400, + "height": 73, + "direction": 90.0, + "referenceName": "textGetReady" + }, + { + "id": "cat/cat_idle_1", + "name": "cat_idle_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_1" + }, + { + "id": "cat/cat_idle_2", + "name": "cat_idle_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_2" + }, + { + "id": "cat/cat_idle_6", + "name": "cat_idle_6", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_6" + }, + { + "id": "cat/cat_idle_10", + "name": "cat_idle_10", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_10" + }, + { + "id": "cat/cat_idle_14", + "name": "cat_idle_14", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_14" + }, + { + "id": "cat/cat_idle_18", + "name": "cat_idle_18", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_18" + }, + { + "id": "cat/cat_idle_3", + "name": "cat_idle_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_3" + }, + { + "id": "cat/cat_idle_7", + "name": "cat_idle_7", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_7" + }, + { + "id": "cat/cat_idle_11", + "name": "cat_idle_11", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_11" + }, + { + "id": "cat/cat_idle_15", + "name": "cat_idle_15", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_15" + }, + { + "id": "cat/cat_idle_19", + "name": "cat_idle_19", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_19" + }, + { + "id": "cat/cat_idle_25", + "name": "cat_idle_25", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_25" + }, + { + "id": "cat/cat_idle_4", + "name": "cat_idle_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_4" + }, + { + "id": "cat/cat_idle_8", + "name": "cat_idle_8", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_8" + }, + { + "id": "cat/cat_idle_12", + "name": "cat_idle_12", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_12" + }, + { + "id": "cat/cat_idle_16", + "name": "cat_idle_16", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_16" + }, + { + "id": "cat/cat_idle_26", + "name": "cat_idle_26", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_26" + }, + { + "id": "cat/cat_idle_5", + "name": "cat_idle_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_5" + }, + { + "id": "cat/cat_idle_9", + "name": "cat_idle_9", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_9" + }, + { + "id": "cat/cat_idle_13", + "name": "cat_idle_13", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_13" + }, + { + "id": "cat/cat_idle_17", + "name": "cat_idle_17", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_17" + }, + { + "id": "cat/cat_idle_20", + "name": "cat_idle_20", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 330, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_20" + }, + { + "id": "cat/cat_idle_21", + "name": "cat_idle_21", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 396, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_21" + }, + { + "id": "cat/cat_idle_22", + "name": "cat_idle_22", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 462, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_22" + }, + { + "id": "cat/cat_idle_23", + "name": "cat_idle_23", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 528, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_23" + }, + { + "id": "cat/cat_idle_24", + "name": "cat_idle_24", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 594, + "y": 0, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_idle_24" + }, + { + "id": "cat/cat_walk_1", + "name": "cat_walk_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_1" + }, + { + "id": "cat/cat_walk_2", + "name": "cat_walk_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_2" + }, + { + "id": "cat/cat_walk_3", + "name": "cat_walk_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_3" + }, + { + "id": "cat/cat_walk_4", + "name": "cat_walk_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_4" + }, + { + "id": "cat/cat_walk_5", + "name": "cat_walk_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_5" + }, + { + "id": "cat/cat_walk_6", + "name": "cat_walk_6", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 330, + "y": 66, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_walk_6" + }, + { + "id": "cat/cat_crouch_1", + "name": "cat_crouch_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_1" + }, + { + "id": "cat/cat_crouch_2", + "name": "cat_crouch_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_2" + }, + { + "id": "cat/cat_crouch_3", + "name": "cat_crouch_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_3" + }, + { + "id": "cat/cat_crouch_4", + "name": "cat_crouch_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 132, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_crouch_4" + }, + { + "id": "cat/cat_jump_1", + "name": "cat_jump_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 198, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_jump_1" + }, + { + "id": "cat/cat_jump_2", + "name": "cat_jump_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 198, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_jump_2" + }, + { + "id": "cat/cat_jump_3", + "name": "cat_jump_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 198, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_jump_3" + }, + { + "id": "cat/cat_fall_1", + "name": "cat_fall_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 264, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_fall_1" + }, + { + "id": "cat/cat_fall_2", + "name": "cat_fall_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 264, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_fall_2" + }, + { + "id": "cat/cat_land_1", + "name": "cat_land_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 330, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_land_1" + }, + { + "id": "cat/cat_land_2", + "name": "cat_land_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 330, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_land_2" + }, + { + "id": "cat/cat_punch_1", + "name": "cat_punch_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_1" + }, + { + "id": "cat/cat_punch_2", + "name": "cat_punch_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_2" + }, + { + "id": "cat/cat_punch_3", + "name": "cat_punch_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_3" + }, + { + "id": "cat/cat_punch_4", + "name": "cat_punch_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_4" + }, + { + "id": "cat/cat_punch_5", + "name": "cat_punch_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_5" + }, + { + "id": "cat/cat_punch_6", + "name": "cat_punch_6", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 396, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_punch_6" + }, + { + "id": "cat/cat_hurt_1", + "name": "cat_hurt_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 462, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_hurt_1" + }, + { + "id": "cat/cat_hurt_2", + "name": "cat_hurt_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 462, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_hurt_2" + }, + { + "id": "cat/cat_hurt_3", + "name": "cat_hurt_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 462, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_hurt_3" + }, + { + "id": "cat/cat_ko_1", + "name": "cat_ko_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_1" + }, + { + "id": "cat/cat_ko_2", + "name": "cat_ko_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_2" + }, + { + "id": "cat/cat_ko_3", + "name": "cat_ko_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_3" + }, + { + "id": "cat/cat_ko_4", + "name": "cat_ko_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 198, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_4" + }, + { + "id": "cat/cat_ko_5", + "name": "cat_ko_5", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 264, + "y": 528, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_ko_5" + }, + { + "id": "cat/cat_cheer_1", + "name": "cat_cheer_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_1" + }, + { + "id": "cat/cat_cheer_3", + "name": "cat_cheer_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_3" + }, + { + "id": "cat/cat_cheer_2", + "name": "cat_cheer_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_2" + }, + { + "id": "cat/cat_cheer_4", + "name": "cat_cheer_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 594, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_cheer_4" + }, + { + "id": "cat/cat_climb_1", + "name": "cat_climb_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_1" + }, + { + "id": "cat/cat_climb_2", + "name": "cat_climb_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_2" + }, + { + "id": "cat/cat_climb_4", + "name": "cat_climb_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 66, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_4" + }, + { + "id": "cat/cat_climb_3", + "name": "cat_climb_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 132, + "y": 660, + "width": 64, + "height": 64, + "direction": 90.0, + "referenceName": "cat_climb_3" + }, + { + "id": "cat/coffee_bean_1", + "name": "coffee_bean_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_1" + }, + { + "id": "cat/coffee_bean_2", + "name": "coffee_bean_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_2" + }, + { + "id": "cat/coffee_bean_3", + "name": "coffee_bean_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 68, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_3" + }, + { + "id": "cat/coffee_bean_4", + "name": "coffee_bean_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 102, + "y": 726, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "coffee_bean_4" + }, + { + "id": "cat/bug_walk_1", + "name": "bug_walk_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_1" + }, + { + "id": "cat/bug_walk_3", + "name": "bug_walk_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_3" + }, + { + "id": "cat/bug_walk_2", + "name": "bug_walk_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_2" + }, + { + "id": "cat/bug_walk_4", + "name": "bug_walk_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 68, + "y": 760, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_walk_4" + }, + { + "id": "cat/bug_squished_1", + "name": "bug_squished_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 794, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_squished_1" + }, + { + "id": "cat/bug_squished_2", + "name": "bug_squished_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 794, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "bug_squished_2" + }, + { + "id": "cat/goal_mug_1", + "name": "goal_mug_1", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_1" + }, + { + "id": "cat/goal_mug_2", + "name": "goal_mug_2", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_2" + }, + { + "id": "cat/goal_mug_3", + "name": "goal_mug_3", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 68, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_3" + }, + { + "id": "cat/goal_mug_4", + "name": "goal_mug_4", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 102, + "y": 828, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "goal_mug_4" + }, + { + "id": "cat/heart_full", + "name": "heart_full", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 0, + "y": 862, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "heart_full" + }, + { + "id": "cat/heart_empty", + "name": "heart_empty", + "sheet": "cat", + "sheetPath": "images/cat.png", + "x": 34, + "y": 862, + "width": 32, + "height": 32, + "direction": 90.0, + "referenceName": "heart_empty" + } + ], + "sounds": [ + { + "id": "footstep_carpet_000", + "path": "sounds/impact/footstep_carpet_000.ogg" + }, + { + "id": "footstep_carpet_001", + "path": "sounds/impact/footstep_carpet_001.ogg" + }, + { + "id": "footstep_carpet_002", + "path": "sounds/impact/footstep_carpet_002.ogg" + }, + { + "id": "footstep_carpet_003", + "path": "sounds/impact/footstep_carpet_003.ogg" + }, + { + "id": "footstep_carpet_004", + "path": "sounds/impact/footstep_carpet_004.ogg" + }, + { + "id": "footstep_concrete_000", + "path": "sounds/impact/footstep_concrete_000.ogg" + }, + { + "id": "footstep_concrete_001", + "path": "sounds/impact/footstep_concrete_001.ogg" + }, + { + "id": "footstep_concrete_002", + "path": "sounds/impact/footstep_concrete_002.ogg" + }, + { + "id": "footstep_concrete_003", + "path": "sounds/impact/footstep_concrete_003.ogg" + }, + { + "id": "footstep_concrete_004", + "path": "sounds/impact/footstep_concrete_004.ogg" + }, + { + "id": "footstep_grass_000", + "path": "sounds/impact/footstep_grass_000.ogg" + }, + { + "id": "footstep_grass_001", + "path": "sounds/impact/footstep_grass_001.ogg" + }, + { + "id": "footstep_grass_002", + "path": "sounds/impact/footstep_grass_002.ogg" + }, + { + "id": "footstep_grass_003", + "path": "sounds/impact/footstep_grass_003.ogg" + }, + { + "id": "footstep_grass_004", + "path": "sounds/impact/footstep_grass_004.ogg" + }, + { + "id": "footstep_snow_000", + "path": "sounds/impact/footstep_snow_000.ogg" + }, + { + "id": "footstep_snow_001", + "path": "sounds/impact/footstep_snow_001.ogg" + }, + { + "id": "footstep_snow_002", + "path": "sounds/impact/footstep_snow_002.ogg" + }, + { + "id": "footstep_snow_003", + "path": "sounds/impact/footstep_snow_003.ogg" + }, + { + "id": "footstep_snow_004", + "path": "sounds/impact/footstep_snow_004.ogg" + }, + { + "id": "footstep_wood_000", + "path": "sounds/impact/footstep_wood_000.ogg" + }, + { + "id": "footstep_wood_001", + "path": "sounds/impact/footstep_wood_001.ogg" + }, + { + "id": "footstep_wood_002", + "path": "sounds/impact/footstep_wood_002.ogg" + }, + { + "id": "footstep_wood_003", + "path": "sounds/impact/footstep_wood_003.ogg" + }, + { + "id": "footstep_wood_004", + "path": "sounds/impact/footstep_wood_004.ogg" + }, + { + "id": "impactBell_heavy_000", + "path": "sounds/impact/impactBell_heavy_000.ogg" + }, + { + "id": "impactBell_heavy_001", + "path": "sounds/impact/impactBell_heavy_001.ogg" + }, + { + "id": "impactBell_heavy_002", + "path": "sounds/impact/impactBell_heavy_002.ogg" + }, + { + "id": "impactBell_heavy_003", + "path": "sounds/impact/impactBell_heavy_003.ogg" + }, + { + "id": "impactBell_heavy_004", + "path": "sounds/impact/impactBell_heavy_004.ogg" + }, + { + "id": "impactGeneric_light_000", + "path": "sounds/impact/impactGeneric_light_000.ogg" + }, + { + "id": "impactGeneric_light_001", + "path": "sounds/impact/impactGeneric_light_001.ogg" + }, + { + "id": "impactGeneric_light_002", + "path": "sounds/impact/impactGeneric_light_002.ogg" + }, + { + "id": "impactGeneric_light_003", + "path": "sounds/impact/impactGeneric_light_003.ogg" + }, + { + "id": "impactGeneric_light_004", + "path": "sounds/impact/impactGeneric_light_004.ogg" + }, + { + "id": "impactGlass_heavy_000", + "path": "sounds/impact/impactGlass_heavy_000.ogg" + }, + { + "id": "impactGlass_heavy_001", + "path": "sounds/impact/impactGlass_heavy_001.ogg" + }, + { + "id": "impactGlass_heavy_002", + "path": "sounds/impact/impactGlass_heavy_002.ogg" + }, + { + "id": "impactGlass_heavy_003", + "path": "sounds/impact/impactGlass_heavy_003.ogg" + }, + { + "id": "impactGlass_heavy_004", + "path": "sounds/impact/impactGlass_heavy_004.ogg" + }, + { + "id": "impactGlass_light_000", + "path": "sounds/impact/impactGlass_light_000.ogg" + }, + { + "id": "impactGlass_light_001", + "path": "sounds/impact/impactGlass_light_001.ogg" + }, + { + "id": "impactGlass_light_002", + "path": "sounds/impact/impactGlass_light_002.ogg" + }, + { + "id": "impactGlass_light_003", + "path": "sounds/impact/impactGlass_light_003.ogg" + }, + { + "id": "impactGlass_light_004", + "path": "sounds/impact/impactGlass_light_004.ogg" + }, + { + "id": "impactGlass_medium_000", + "path": "sounds/impact/impactGlass_medium_000.ogg" + }, + { + "id": "impactGlass_medium_001", + "path": "sounds/impact/impactGlass_medium_001.ogg" + }, + { + "id": "impactGlass_medium_002", + "path": "sounds/impact/impactGlass_medium_002.ogg" + }, + { + "id": "impactGlass_medium_003", + "path": "sounds/impact/impactGlass_medium_003.ogg" + }, + { + "id": "impactGlass_medium_004", + "path": "sounds/impact/impactGlass_medium_004.ogg" + }, + { + "id": "impactMetal_heavy_000", + "path": "sounds/impact/impactMetal_heavy_000.ogg" + }, + { + "id": "impactMetal_heavy_001", + "path": "sounds/impact/impactMetal_heavy_001.ogg" + }, + { + "id": "impactMetal_heavy_002", + "path": "sounds/impact/impactMetal_heavy_002.ogg" + }, + { + "id": "impactMetal_heavy_003", + "path": "sounds/impact/impactMetal_heavy_003.ogg" + }, + { + "id": "impactMetal_heavy_004", + "path": "sounds/impact/impactMetal_heavy_004.ogg" + }, + { + "id": "impactMetal_light_000", + "path": "sounds/impact/impactMetal_light_000.ogg" + }, + { + "id": "impactMetal_light_001", + "path": "sounds/impact/impactMetal_light_001.ogg" + }, + { + "id": "impactMetal_light_002", + "path": "sounds/impact/impactMetal_light_002.ogg" + }, + { + "id": "impactMetal_light_003", + "path": "sounds/impact/impactMetal_light_003.ogg" + }, + { + "id": "impactMetal_light_004", + "path": "sounds/impact/impactMetal_light_004.ogg" + }, + { + "id": "impactMetal_medium_000", + "path": "sounds/impact/impactMetal_medium_000.ogg" + }, + { + "id": "impactMetal_medium_001", + "path": "sounds/impact/impactMetal_medium_001.ogg" + }, + { + "id": "impactMetal_medium_002", + "path": "sounds/impact/impactMetal_medium_002.ogg" + }, + { + "id": "impactMetal_medium_003", + "path": "sounds/impact/impactMetal_medium_003.ogg" + }, + { + "id": "impactMetal_medium_004", + "path": "sounds/impact/impactMetal_medium_004.ogg" + }, + { + "id": "impactMining_000", + "path": "sounds/impact/impactMining_000.ogg" + }, + { + "id": "impactMining_001", + "path": "sounds/impact/impactMining_001.ogg" + }, + { + "id": "impactMining_002", + "path": "sounds/impact/impactMining_002.ogg" + }, + { + "id": "impactMining_003", + "path": "sounds/impact/impactMining_003.ogg" + }, + { + "id": "impactMining_004", + "path": "sounds/impact/impactMining_004.ogg" + }, + { + "id": "impactPlank_medium_000", + "path": "sounds/impact/impactPlank_medium_000.ogg" + }, + { + "id": "impactPlank_medium_001", + "path": "sounds/impact/impactPlank_medium_001.ogg" + }, + { + "id": "impactPlank_medium_002", + "path": "sounds/impact/impactPlank_medium_002.ogg" + }, + { + "id": "impactPlank_medium_003", + "path": "sounds/impact/impactPlank_medium_003.ogg" + }, + { + "id": "impactPlank_medium_004", + "path": "sounds/impact/impactPlank_medium_004.ogg" + }, + { + "id": "impactPlate_heavy_000", + "path": "sounds/impact/impactPlate_heavy_000.ogg" + }, + { + "id": "impactPlate_heavy_001", + "path": "sounds/impact/impactPlate_heavy_001.ogg" + }, + { + "id": "impactPlate_heavy_002", + "path": "sounds/impact/impactPlate_heavy_002.ogg" + }, + { + "id": "impactPlate_heavy_003", + "path": "sounds/impact/impactPlate_heavy_003.ogg" + }, + { + "id": "impactPlate_heavy_004", + "path": "sounds/impact/impactPlate_heavy_004.ogg" + }, + { + "id": "impactPlate_light_000", + "path": "sounds/impact/impactPlate_light_000.ogg" + }, + { + "id": "impactPlate_light_001", + "path": "sounds/impact/impactPlate_light_001.ogg" + }, + { + "id": "impactPlate_light_002", + "path": "sounds/impact/impactPlate_light_002.ogg" + }, + { + "id": "impactPlate_light_003", + "path": "sounds/impact/impactPlate_light_003.ogg" + }, + { + "id": "impactPlate_light_004", + "path": "sounds/impact/impactPlate_light_004.ogg" + }, + { + "id": "impactPlate_medium_000", + "path": "sounds/impact/impactPlate_medium_000.ogg" + }, + { + "id": "impactPlate_medium_001", + "path": "sounds/impact/impactPlate_medium_001.ogg" + }, + { + "id": "impactPlate_medium_002", + "path": "sounds/impact/impactPlate_medium_002.ogg" + }, + { + "id": "impactPlate_medium_003", + "path": "sounds/impact/impactPlate_medium_003.ogg" + }, + { + "id": "impactPlate_medium_004", + "path": "sounds/impact/impactPlate_medium_004.ogg" + }, + { + "id": "impactPunch_heavy_000", + "path": "sounds/impact/impactPunch_heavy_000.ogg" + }, + { + "id": "impactPunch_heavy_001", + "path": "sounds/impact/impactPunch_heavy_001.ogg" + }, + { + "id": "impactPunch_heavy_002", + "path": "sounds/impact/impactPunch_heavy_002.ogg" + }, + { + "id": "impactPunch_heavy_003", + "path": "sounds/impact/impactPunch_heavy_003.ogg" + }, + { + "id": "impactPunch_heavy_004", + "path": "sounds/impact/impactPunch_heavy_004.ogg" + }, + { + "id": "impactPunch_medium_000", + "path": "sounds/impact/impactPunch_medium_000.ogg" + }, + { + "id": "impactPunch_medium_001", + "path": "sounds/impact/impactPunch_medium_001.ogg" + }, + { + "id": "impactPunch_medium_002", + "path": "sounds/impact/impactPunch_medium_002.ogg" + }, + { + "id": "impactPunch_medium_003", + "path": "sounds/impact/impactPunch_medium_003.ogg" + }, + { + "id": "impactPunch_medium_004", + "path": "sounds/impact/impactPunch_medium_004.ogg" + }, + { + "id": "impactSoft_heavy_000", + "path": "sounds/impact/impactSoft_heavy_000.ogg" + }, + { + "id": "impactSoft_heavy_001", + "path": "sounds/impact/impactSoft_heavy_001.ogg" + }, + { + "id": "impactSoft_heavy_002", + "path": "sounds/impact/impactSoft_heavy_002.ogg" + }, + { + "id": "impactSoft_heavy_003", + "path": "sounds/impact/impactSoft_heavy_003.ogg" + }, + { + "id": "impactSoft_heavy_004", + "path": "sounds/impact/impactSoft_heavy_004.ogg" + }, + { + "id": "impactSoft_medium_000", + "path": "sounds/impact/impactSoft_medium_000.ogg" + }, + { + "id": "impactSoft_medium_001", + "path": "sounds/impact/impactSoft_medium_001.ogg" + }, + { + "id": "impactSoft_medium_002", + "path": "sounds/impact/impactSoft_medium_002.ogg" + }, + { + "id": "impactSoft_medium_003", + "path": "sounds/impact/impactSoft_medium_003.ogg" + }, + { + "id": "impactSoft_medium_004", + "path": "sounds/impact/impactSoft_medium_004.ogg" + }, + { + "id": "impactTin_medium_000", + "path": "sounds/impact/impactTin_medium_000.ogg" + }, + { + "id": "impactTin_medium_001", + "path": "sounds/impact/impactTin_medium_001.ogg" + }, + { + "id": "impactTin_medium_002", + "path": "sounds/impact/impactTin_medium_002.ogg" + }, + { + "id": "impactTin_medium_003", + "path": "sounds/impact/impactTin_medium_003.ogg" + }, + { + "id": "impactTin_medium_004", + "path": "sounds/impact/impactTin_medium_004.ogg" + }, + { + "id": "impactWood_heavy_000", + "path": "sounds/impact/impactWood_heavy_000.ogg" + }, + { + "id": "impactWood_heavy_001", + "path": "sounds/impact/impactWood_heavy_001.ogg" + }, + { + "id": "impactWood_heavy_002", + "path": "sounds/impact/impactWood_heavy_002.ogg" + }, + { + "id": "impactWood_heavy_003", + "path": "sounds/impact/impactWood_heavy_003.ogg" + }, + { + "id": "impactWood_heavy_004", + "path": "sounds/impact/impactWood_heavy_004.ogg" + }, + { + "id": "impactWood_light_000", + "path": "sounds/impact/impactWood_light_000.ogg" + }, + { + "id": "impactWood_light_001", + "path": "sounds/impact/impactWood_light_001.ogg" + }, + { + "id": "impactWood_light_002", + "path": "sounds/impact/impactWood_light_002.ogg" + }, + { + "id": "impactWood_light_003", + "path": "sounds/impact/impactWood_light_003.ogg" + }, + { + "id": "impactWood_light_004", + "path": "sounds/impact/impactWood_light_004.ogg" + }, + { + "id": "impactWood_medium_000", + "path": "sounds/impact/impactWood_medium_000.ogg" + }, + { + "id": "impactWood_medium_001", + "path": "sounds/impact/impactWood_medium_001.ogg" + }, + { + "id": "impactWood_medium_002", + "path": "sounds/impact/impactWood_medium_002.ogg" + }, + { + "id": "impactWood_medium_003", + "path": "sounds/impact/impactWood_medium_003.ogg" + }, + { + "id": "impactWood_medium_004", + "path": "sounds/impact/impactWood_medium_004.ogg" + }, + { + "id": "jingles_NES00", + "path": "sounds/jingles/8-Bit jingles/jingles_NES00.ogg" + }, + { + "id": "jingles_NES01", + "path": "sounds/jingles/8-Bit jingles/jingles_NES01.ogg" + }, + { + "id": "jingles_NES02", + "path": "sounds/jingles/8-Bit jingles/jingles_NES02.ogg" + }, + { + "id": "jingles_NES03", + "path": "sounds/jingles/8-Bit jingles/jingles_NES03.ogg" + }, + { + "id": "jingles_NES04", + "path": "sounds/jingles/8-Bit jingles/jingles_NES04.ogg" + }, + { + "id": "jingles_NES05", + "path": "sounds/jingles/8-Bit jingles/jingles_NES05.ogg" + }, + { + "id": "jingles_NES06", + "path": "sounds/jingles/8-Bit jingles/jingles_NES06.ogg" + }, + { + "id": "jingles_NES07", + "path": "sounds/jingles/8-Bit jingles/jingles_NES07.ogg" + }, + { + "id": "jingles_NES08", + "path": "sounds/jingles/8-Bit jingles/jingles_NES08.ogg" + }, + { + "id": "jingles_NES09", + "path": "sounds/jingles/8-Bit jingles/jingles_NES09.ogg" + }, + { + "id": "jingles_NES10", + "path": "sounds/jingles/8-Bit jingles/jingles_NES10.ogg" + }, + { + "id": "jingles_NES11", + "path": "sounds/jingles/8-Bit jingles/jingles_NES11.ogg" + }, + { + "id": "jingles_NES12", + "path": "sounds/jingles/8-Bit jingles/jingles_NES12.ogg" + }, + { + "id": "jingles_NES13", + "path": "sounds/jingles/8-Bit jingles/jingles_NES13.ogg" + }, + { + "id": "jingles_NES14", + "path": "sounds/jingles/8-Bit jingles/jingles_NES14.ogg" + }, + { + "id": "jingles_NES15", + "path": "sounds/jingles/8-Bit jingles/jingles_NES15.ogg" + }, + { + "id": "jingles_NES16", + "path": "sounds/jingles/8-Bit jingles/jingles_NES16.ogg" + }, + { + "id": "jingles_HIT00", + "path": "sounds/jingles/Hit jingles/jingles_HIT00.ogg" + }, + { + "id": "jingles_HIT01", + "path": "sounds/jingles/Hit jingles/jingles_HIT01.ogg" + }, + { + "id": "jingles_HIT02", + "path": "sounds/jingles/Hit jingles/jingles_HIT02.ogg" + }, + { + "id": "jingles_HIT03", + "path": "sounds/jingles/Hit jingles/jingles_HIT03.ogg" + }, + { + "id": "jingles_HIT04", + "path": "sounds/jingles/Hit jingles/jingles_HIT04.ogg" + }, + { + "id": "jingles_HIT05", + "path": "sounds/jingles/Hit jingles/jingles_HIT05.ogg" + }, + { + "id": "jingles_HIT06", + "path": "sounds/jingles/Hit jingles/jingles_HIT06.ogg" + }, + { + "id": "jingles_HIT07", + "path": "sounds/jingles/Hit jingles/jingles_HIT07.ogg" + }, + { + "id": "jingles_HIT08", + "path": "sounds/jingles/Hit jingles/jingles_HIT08.ogg" + }, + { + "id": "jingles_HIT09", + "path": "sounds/jingles/Hit jingles/jingles_HIT09.ogg" + }, + { + "id": "jingles_HIT10", + "path": "sounds/jingles/Hit jingles/jingles_HIT10.ogg" + }, + { + "id": "jingles_HIT11", + "path": "sounds/jingles/Hit jingles/jingles_HIT11.ogg" + }, + { + "id": "jingles_HIT12", + "path": "sounds/jingles/Hit jingles/jingles_HIT12.ogg" + }, + { + "id": "jingles_HIT13", + "path": "sounds/jingles/Hit jingles/jingles_HIT13.ogg" + }, + { + "id": "jingles_HIT14", + "path": "sounds/jingles/Hit jingles/jingles_HIT14.ogg" + }, + { + "id": "jingles_HIT15", + "path": "sounds/jingles/Hit jingles/jingles_HIT15.ogg" + }, + { + "id": "jingles_HIT16", + "path": "sounds/jingles/Hit jingles/jingles_HIT16.ogg" + }, + { + "id": "jingles_PIZZI00", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI00.ogg" + }, + { + "id": "jingles_PIZZI01", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI01.ogg" + }, + { + "id": "jingles_PIZZI02", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI02.ogg" + }, + { + "id": "jingles_PIZZI03", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI03.ogg" + }, + { + "id": "jingles_PIZZI04", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI04.ogg" + }, + { + "id": "jingles_PIZZI05", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI05.ogg" + }, + { + "id": "jingles_PIZZI06", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI06.ogg" + }, + { + "id": "jingles_PIZZI07", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI07.ogg" + }, + { + "id": "jingles_PIZZI08", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI08.ogg" + }, + { + "id": "jingles_PIZZI09", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI09.ogg" + }, + { + "id": "jingles_PIZZI10", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI10.ogg" + }, + { + "id": "jingles_PIZZI11", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI11.ogg" + }, + { + "id": "jingles_PIZZI12", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI12.ogg" + }, + { + "id": "jingles_PIZZI13", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI13.ogg" + }, + { + "id": "jingles_PIZZI14", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI14.ogg" + }, + { + "id": "jingles_PIZZI15", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI15.ogg" + }, + { + "id": "jingles_PIZZI16", + "path": "sounds/jingles/Pizzicato jingles/jingles_PIZZI16.ogg" + }, + { + "id": "jingles_SAX00", + "path": "sounds/jingles/Sax jingles/jingles_SAX00.ogg" + }, + { + "id": "jingles_SAX01", + "path": "sounds/jingles/Sax jingles/jingles_SAX01.ogg" + }, + { + "id": "jingles_SAX02", + "path": "sounds/jingles/Sax jingles/jingles_SAX02.ogg" + }, + { + "id": "jingles_SAX03", + "path": "sounds/jingles/Sax jingles/jingles_SAX03.ogg" + }, + { + "id": "jingles_SAX04", + "path": "sounds/jingles/Sax jingles/jingles_SAX04.ogg" + }, + { + "id": "jingles_SAX05", + "path": "sounds/jingles/Sax jingles/jingles_SAX05.ogg" + }, + { + "id": "jingles_SAX06", + "path": "sounds/jingles/Sax jingles/jingles_SAX06.ogg" + }, + { + "id": "jingles_SAX07", + "path": "sounds/jingles/Sax jingles/jingles_SAX07.ogg" + }, + { + "id": "jingles_SAX08", + "path": "sounds/jingles/Sax jingles/jingles_SAX08.ogg" + }, + { + "id": "jingles_SAX09", + "path": "sounds/jingles/Sax jingles/jingles_SAX09.ogg" + }, + { + "id": "jingles_SAX10", + "path": "sounds/jingles/Sax jingles/jingles_SAX10.ogg" + }, + { + "id": "jingles_SAX11", + "path": "sounds/jingles/Sax jingles/jingles_SAX11.ogg" + }, + { + "id": "jingles_SAX12", + "path": "sounds/jingles/Sax jingles/jingles_SAX12.ogg" + }, + { + "id": "jingles_SAX13", + "path": "sounds/jingles/Sax jingles/jingles_SAX13.ogg" + }, + { + "id": "jingles_SAX14", + "path": "sounds/jingles/Sax jingles/jingles_SAX14.ogg" + }, + { + "id": "jingles_SAX15", + "path": "sounds/jingles/Sax jingles/jingles_SAX15.ogg" + }, + { + "id": "jingles_SAX16", + "path": "sounds/jingles/Sax jingles/jingles_SAX16.ogg" + }, + { + "id": "jingles_STEEL00", + "path": "sounds/jingles/Steel jingles/jingles_STEEL00.ogg" + }, + { + "id": "jingles_STEEL01", + "path": "sounds/jingles/Steel jingles/jingles_STEEL01.ogg" + }, + { + "id": "jingles_STEEL02", + "path": "sounds/jingles/Steel jingles/jingles_STEEL02.ogg" + }, + { + "id": "jingles_STEEL03", + "path": "sounds/jingles/Steel jingles/jingles_STEEL03.ogg" + }, + { + "id": "jingles_STEEL04", + "path": "sounds/jingles/Steel jingles/jingles_STEEL04.ogg" + }, + { + "id": "jingles_STEEL05", + "path": "sounds/jingles/Steel jingles/jingles_STEEL05.ogg" + }, + { + "id": "jingles_STEEL06", + "path": "sounds/jingles/Steel jingles/jingles_STEEL06.ogg" + }, + { + "id": "jingles_STEEL07", + "path": "sounds/jingles/Steel jingles/jingles_STEEL07.ogg" + }, + { + "id": "jingles_STEEL08", + "path": "sounds/jingles/Steel jingles/jingles_STEEL08.ogg" + }, + { + "id": "jingles_STEEL09", + "path": "sounds/jingles/Steel jingles/jingles_STEEL09.ogg" + }, + { + "id": "jingles_STEEL10", + "path": "sounds/jingles/Steel jingles/jingles_STEEL10.ogg" + }, + { + "id": "jingles_STEEL11", + "path": "sounds/jingles/Steel jingles/jingles_STEEL11.ogg" + }, + { + "id": "jingles_STEEL12", + "path": "sounds/jingles/Steel jingles/jingles_STEEL12.ogg" + }, + { + "id": "jingles_STEEL13", + "path": "sounds/jingles/Steel jingles/jingles_STEEL13.ogg" + }, + { + "id": "jingles_STEEL14", + "path": "sounds/jingles/Steel jingles/jingles_STEEL14.ogg" + }, + { + "id": "jingles_STEEL15", + "path": "sounds/jingles/Steel jingles/jingles_STEEL15.ogg" + }, + { + "id": "jingles_STEEL16", + "path": "sounds/jingles/Steel jingles/jingles_STEEL16.ogg" + }, + { + "id": "beltHandle1", + "path": "sounds/rpg/beltHandle1.ogg" + }, + { + "id": "beltHandle2", + "path": "sounds/rpg/beltHandle2.ogg" + }, + { + "id": "bookClose", + "path": "sounds/rpg/bookClose.ogg" + }, + { + "id": "bookFlip1", + "path": "sounds/rpg/bookFlip1.ogg" + }, + { + "id": "bookFlip2", + "path": "sounds/rpg/bookFlip2.ogg" + }, + { + "id": "bookFlip3", + "path": "sounds/rpg/bookFlip3.ogg" + }, + { + "id": "bookOpen", + "path": "sounds/rpg/bookOpen.ogg" + }, + { + "id": "bookPlace1", + "path": "sounds/rpg/bookPlace1.ogg" + }, + { + "id": "bookPlace2", + "path": "sounds/rpg/bookPlace2.ogg" + }, + { + "id": "bookPlace3", + "path": "sounds/rpg/bookPlace3.ogg" + }, + { + "id": "chop", + "path": "sounds/rpg/chop.ogg" + }, + { + "id": "cloth1", + "path": "sounds/rpg/cloth1.ogg" + }, + { + "id": "cloth2", + "path": "sounds/rpg/cloth2.ogg" + }, + { + "id": "cloth3", + "path": "sounds/rpg/cloth3.ogg" + }, + { + "id": "cloth4", + "path": "sounds/rpg/cloth4.ogg" + }, + { + "id": "clothBelt", + "path": "sounds/rpg/clothBelt.ogg" + }, + { + "id": "clothBelt2", + "path": "sounds/rpg/clothBelt2.ogg" + }, + { + "id": "creak1", + "path": "sounds/rpg/creak1.ogg" + }, + { + "id": "creak2", + "path": "sounds/rpg/creak2.ogg" + }, + { + "id": "creak3", + "path": "sounds/rpg/creak3.ogg" + }, + { + "id": "doorClose_1", + "path": "sounds/rpg/doorClose_1.ogg" + }, + { + "id": "doorClose_2", + "path": "sounds/rpg/doorClose_2.ogg" + }, + { + "id": "doorClose_3", + "path": "sounds/rpg/doorClose_3.ogg" + }, + { + "id": "doorClose_4", + "path": "sounds/rpg/doorClose_4.ogg" + }, + { + "id": "doorOpen_1", + "path": "sounds/rpg/doorOpen_1.ogg" + }, + { + "id": "doorOpen_2", + "path": "sounds/rpg/doorOpen_2.ogg" + }, + { + "id": "drawKnife1", + "path": "sounds/rpg/drawKnife1.ogg" + }, + { + "id": "drawKnife2", + "path": "sounds/rpg/drawKnife2.ogg" + }, + { + "id": "drawKnife3", + "path": "sounds/rpg/drawKnife3.ogg" + }, + { + "id": "dropLeather", + "path": "sounds/rpg/dropLeather.ogg" + }, + { + "id": "footstep00", + "path": "sounds/rpg/footstep00.ogg" + }, + { + "id": "footstep01", + "path": "sounds/rpg/footstep01.ogg" + }, + { + "id": "footstep02", + "path": "sounds/rpg/footstep02.ogg" + }, + { + "id": "footstep03", + "path": "sounds/rpg/footstep03.ogg" + }, + { + "id": "footstep04", + "path": "sounds/rpg/footstep04.ogg" + }, + { + "id": "footstep05", + "path": "sounds/rpg/footstep05.ogg" + }, + { + "id": "footstep06", + "path": "sounds/rpg/footstep06.ogg" + }, + { + "id": "footstep07", + "path": "sounds/rpg/footstep07.ogg" + }, + { + "id": "footstep08", + "path": "sounds/rpg/footstep08.ogg" + }, + { + "id": "footstep09", + "path": "sounds/rpg/footstep09.ogg" + }, + { + "id": "handleCoins", + "path": "sounds/rpg/handleCoins.ogg" + }, + { + "id": "handleCoins2", + "path": "sounds/rpg/handleCoins2.ogg" + }, + { + "id": "handleSmallLeather", + "path": "sounds/rpg/handleSmallLeather.ogg" + }, + { + "id": "handleSmallLeather2", + "path": "sounds/rpg/handleSmallLeather2.ogg" + }, + { + "id": "knifeSlice", + "path": "sounds/rpg/knifeSlice.ogg" + }, + { + "id": "knifeSlice2", + "path": "sounds/rpg/knifeSlice2.ogg" + }, + { + "id": "metalClick", + "path": "sounds/rpg/metalClick.ogg" + }, + { + "id": "metalLatch", + "path": "sounds/rpg/metalLatch.ogg" + }, + { + "id": "metalPot1", + "path": "sounds/rpg/metalPot1.ogg" + }, + { + "id": "metalPot2", + "path": "sounds/rpg/metalPot2.ogg" + }, + { + "id": "metalPot3", + "path": "sounds/rpg/metalPot3.ogg" + } + ] +} diff --git a/src/main/resources/catalogs/examples.json b/src/main/resources/catalogs/examples.json new file mode 100644 index 00000000..da2df7c9 --- /dev/null +++ b/src/main/resources/catalogs/examples.json @@ -0,0 +1,1907 @@ +{ + "schemaVersion": 1, + "libraryVersion": "5.7.0", + "browserVersion": "5.7.0-browser.2", + "examples": [ + { + "id": "demo/cat", + "kind": "demo", + "source": "src/examples/java/demos/cat", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "CatSketch.ctxt", + "sha256": "f0425f9eda65280859247b795144aa7570088d0c95635b7ac4d8f21a494a5282" + }, + { + "path": "CatSketch.java", + "sha256": "720ccf8f24d9c87beaf05c0e130dee65da5c8e2a31d98352a21ea319577df3ea" + }, + { + "path": "sprites/cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + } + ] + }, + { + "id": "demo/catPlatformer", + "kind": "demo", + "source": "src/examples/java/demos/catPlatformer", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "cat", + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Bean.java", + "sha256": "e711aead57857c6d25ff96f5e0de6a969ffd9c1b33f359e3f2bb8a36428f5a10" + }, + { + "path": "Bug.java", + "sha256": "6a6e39b0925985b93f9e5e1c509fe898a9cd13a5dc2cba3f46b3c58eae58677a" + }, + { + "path": "Cat.java", + "sha256": "40752d42d41e75295bbea5463ae5f574b58ddc4a888cde56b319cf57a4484c40" + }, + { + "path": "CatPlatformer.java", + "sha256": "bbe3fe14eee8152747818462485beb514870dc2a5f57a6bec9c164a2c294ecb2" + }, + { + "path": "Goal.java", + "sha256": "a0ab034b3dbf2835a1b85dd1edbb32b67a7774dd8e41b3a493194ba778b97572" + }, + { + "path": "Ground.java", + "sha256": "9515a80cf4c830e9646a64b61c2d3f9eca9fad899438f83fec8566c439643032" + }, + { + "path": "Heart.java", + "sha256": "bd423d745bd2b5ccbc0e765a6b838946411e044e4f51972e325f4cfe21e2d31c" + }, + { + "path": "Ladder.java", + "sha256": "d133f3365cc26cccb4c1c29bdce907bc28b41f2de158cb8b59d869a5e1367d1e" + }, + { + "path": "Platform.java", + "sha256": "7b42871f874fb59bb1849760af9fcd2963540c7b541326a5d2e9631fb21eb1fd" + } + ] + }, + { + "id": "demo/clock", + "kind": "demo", + "source": "src/examples/java/demos/clock", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Clock.class", + "sha256": "e2385a27deb9148840fd3970d3eebc1afe9435ccac77d267e768263e92c7d0b6" + }, + { + "path": "Clock.ctxt", + "sha256": "a960e294f7621fb7227cc21a5bc5e761bd30b49afc2406a0b39b4bd4b710d9ea" + }, + { + "path": "ClockSprite.class", + "sha256": "d8b2710f3fa9c2bf05ce42bd37cb8345601e3c6212d20a33a076c8c3c6f1d25d" + }, + { + "path": "ClockSprite.ctxt", + "sha256": "e0fdbbe2e22df1af27e684de6846215e261693cf1f48357945ea5a67978473aa" + }, + { + "path": "ClockSprite.java", + "sha256": "498b9a3b87b2863f054895e9cc4d668274f15e7b555cc82025e3715fc68dc79b" + }, + { + "path": "ClockStage.java", + "sha256": "1b1a9a5cfbec16b86956258fad2e1243df6f8d70d20a9570a5152a513371577b" + }, + { + "path": "HourHandSprite.class", + "sha256": "e42303dd06146e30882eefe6fa672cf087993441b9347acdd68d465370c72133" + }, + { + "path": "HourHandSprite.ctxt", + "sha256": "e4563507c584bd87322f84a7bb3aac369554eb8358ad5226d1b708350cf54add" + }, + { + "path": "HourHandSprite.java", + "sha256": "afbdbddccfa8e4e2faa0e498d13d8175fb8ccca82f38a6792a9e7b4fe3e9e54b" + }, + { + "path": "MinuteHandSprite.class", + "sha256": "69a6d94a87a4ee79eb1eeae4d77fa1417f916f57ff02eec415c3066e8b8ef3c5" + }, + { + "path": "MinuteHandSprite.ctxt", + "sha256": "c1c794edc010292c0271a543c16f7c8bbe380a189e5e74b8c7dede318a592914" + }, + { + "path": "MinuteHandSprite.java", + "sha256": "654e62b72e7e03b1df52077eefac3b077894f1a64a9f2176c9b72c1fac32a6ef" + }, + { + "path": "SecondHandSprite.class", + "sha256": "0eafa22bfa3e4635e5861972c84aa6e7f14f11bbc1f9db82647a95be749b9952" + }, + { + "path": "SecondHandSprite.ctxt", + "sha256": "ba3487ee3509b252d581a4984334ac1ffb85b7b1f8188eef5cb1987e4747bdf1" + }, + { + "path": "SecondHandSprite.java", + "sha256": "1404a90a1da7fb355b662b7ae5d6d46c4b370d99ea4888cacc3be93e5bb653dd" + }, + { + "path": "sprites/clock.png", + "sha256": "4aa62eaede42134ec9cbc0d22290a82d3c2b6deb9c064f56c34be7af124c41b7" + }, + { + "path": "sprites/clock.svg", + "sha256": "3566b50f76e74e035e68f89df03302fb4887f13ce67d873a497224091e4501d2" + }, + { + "path": "sprites/hour.png", + "sha256": "86dc71146074f166e783459b2c5252bfccc37d54a384d90e604adb4ed0e048ac" + }, + { + "path": "sprites/minute.png", + "sha256": "9023359e8e1273e72dae86678f4f0d1b860e32277b09d8e24977107c60021ad7" + }, + { + "path": "sprites/second.png", + "sha256": "0fa19932a82e616e71b6af073b360cf2dd8939ba73da037ed94bc815b5843241" + } + ] + }, + { + "id": "demo/coinCollector", + "kind": "demo", + "source": "src/examples/java/demos/coinCollector", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Coin.java", + "sha256": "968265215317ce300737ad31da7e07d0b3aff9f09d98f783e5a599bf28203957" + }, + { + "path": "CoinCollector.java", + "sha256": "f8100c3e5db0378bb30a3ff74e7c455e4de3a1781dd23e565ff8c604404c3688" + }, + { + "path": "Ground.java", + "sha256": "6599317ccac9c3c7535da8dd63e4ffa3aed4e59d02a331ae810aec7c5fb54e3a" + }, + { + "path": "Player.java", + "sha256": "7727f61aba83dfc7e368f0f924d313571d7030af54a587eba2c72ba1236129af" + } + ] + }, + { + "id": "demo/donutIO", + "kind": "demo", + "source": "src/examples/java/demos/donutIO", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Background.ctxt", + "sha256": "928fffee1697b0af11be67b58f6b21913f484c87bb1b6e567436ec4327c8ce8a" + }, + { + "path": "Background.java", + "sha256": "1309869222dd8488b6215aa09da058dfafc753d741584c73dfcd33e50a59adfe" + }, + { + "path": "Donut.ctxt", + "sha256": "f43e48901fa8e514397d4ef9a2aa8ae68822546815012ca47195f7f6997e27f4" + }, + { + "path": "Donut.java", + "sha256": "0b4f61e3f7d46d341c2002ebabe8f5039878c2ce189f0621880fa77bfcc71a41" + }, + { + "path": "FollowDonut.ctxt", + "sha256": "041ce42c129381a457e1e6ffe9bc524fd0cfa1410f26ff96a15cd6494e66796b" + }, + { + "path": "FollowDonut.java", + "sha256": "07e45838abc4aa1053b1b3cef7e85850924cbd668ff601c1691063e27875a136" + }, + { + "path": "Game.ctxt", + "sha256": "32f617410e6cd0068706aafc86086cf4ae5ec7ca0f4e274db220f56d4ee7c762" + }, + { + "path": "Game.java", + "sha256": "74d613db1055f1bbcdf4e90b26c7edeb971066be49614ef3b8f5036330649190" + }, + { + "path": "GameOverStage.ctxt", + "sha256": "3b56ea634fcbda7cb669f9e41a7dfd2cd29decbd8b043ec7593a9d860c0ea26d" + }, + { + "path": "GameOverStage.java", + "sha256": "913c81a99e0a8f3b92c8c7bf8889def04cd765a3ec563fdbba9057a45cfc5ab6" + }, + { + "path": "PlayerDonut.ctxt", + "sha256": "8a21359b0e1b2fde96c7e335146bbb2e04a5da4139bf5b9391f6fbba7c54e0d5" + }, + { + "path": "PlayerDonut.java", + "sha256": "dbb1026901d854e2c728ecec7f8d49d83e31e75db93c56a755f7d0d93a9bed97" + }, + { + "path": "StartStage.ctxt", + "sha256": "cc4e75d1c25e1d9e5728c2a582fa1fef347902811a3a391f41bafbe410a63b84" + }, + { + "path": "StartStage.java", + "sha256": "f8419017ad70bb40949a78b17888188b091e57f347898ca495a6dc80c649c896" + }, + { + "path": "WinStage.ctxt", + "sha256": "ddc4334a25724a3df7c614643591d09c9058763b65ce9e9e175eff8e0e3c4b6f" + }, + { + "path": "WinStage.java", + "sha256": "c4c9fa066d10fc19215d56763ec5a67e09f296764dc1f1d57c7023dda269e86f" + }, + { + "path": "WorldStage.ctxt", + "sha256": "8588835d2b413a0e603786d8c1bb55b0600836208bb916eabd99337a6c9b1b96" + }, + { + "path": "WorldStage.java", + "sha256": "2143d816a12266a4a1f3cf244e1ecc42201275718187975002499777396817d1" + }, + { + "path": "assets/donut.png", + "sha256": "1a3106071f180d9f484eaf82c8567d759fa94689f9ee9ba7b122c6daf99bf6db" + }, + { + "path": "assets/donut.svg", + "sha256": "1fb30404f57873f363b2e47711831e7d460df57575946bcb9e626e1f0a71c58c" + }, + { + "path": "assets/grid.png", + "sha256": "4b91fff890e34ddb540e1be514eee580dc138fcaaa9ca41ef2b633344c22467b" + } + ] + }, + { + "id": "demo/glide", + "kind": "demo", + "source": "src/examples/java/demos/glide", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Glide.java", + "sha256": "ae653f7ce351b21cbed2e71f1a02bac9cc31ac37881fd59c2783a45652df4f16" + } + ] + }, + { + "id": "demo/pipes", + "kind": "demo", + "source": "src/examples/java/demos/pipes", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "PenSprite.ctxt", + "sha256": "04b2796df4f437a74936fee3614e5cb54f896b266db1028c7723802283a6cc69" + }, + { + "path": "PenSprite.java", + "sha256": "d582f5bc29738b2d69f9433c4b7a40b9fae7d6451b8f938fba2768b028a9b736" + }, + { + "path": "Pipes.ctxt", + "sha256": "0ad6a99a6b2b6c5641ef9e6a744240851853eadc5d9bc234c711e91184585611" + }, + { + "path": "Pipes.java", + "sha256": "3026f03ca92b00776cccd363d0dafa2e15801dc6578279b0c4cc1ca508c155d1" + }, + { + "path": "backdrops/chalk_board.jpg", + "sha256": "72e78e95fd5a3225b6beb7f681cbc78dcc49e1c3b51ec2d1d140105cadd33389" + }, + { + "path": "sounds/bensound-enigmatic.ogg", + "sha256": "a41a57516dfea5f0a8e0c857bef66ce698197c923d6468992f23d7e94fa34a19" + }, + { + "path": "sprites/pen.png", + "sha256": "dc1c56c00f27c97ba4059f98e7fd3d7f9db8f4b33f2779c461568e09aac9b1dc" + } + ] + }, + { + "id": "demo/quiz", + "kind": "demo", + "source": "src/examples/java/demos/quiz", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Quiz.java", + "sha256": "e7d5e15ce5a8ae60f4f19bda5942784f1a6a3d23e21f0e86f4def2117ca6c9ff" + } + ] + }, + { + "id": "demo/rainbowVine", + "kind": "demo", + "source": "src/examples/java/demos/rainbowVine", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "RainbowVine.ctxt", + "sha256": "893b65df4e627e0e41fe61c83451a4cf9fb9e309aed93db3164c3c28a169fabd" + }, + { + "path": "RainbowVine.java", + "sha256": "a6fc438d97c957b62e0499fb63fbdd970cab0abd744374049158f233693593bb" + } + ] + }, + { + "id": "demo/randomDot", + "kind": "demo", + "source": "src/examples/java/demos/randomDot", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "RandomDot.ctxt", + "sha256": "4ae975d6ed03fa370334ddc03c86924b1f8bbdb488bd89ba80d5b113ff6ea354" + }, + { + "path": "RandomDot.java", + "sha256": "ea0ad9068e6bc875f94aaee7c5e15528c8409b4d4d0b3f819ae795a541cdb0bc" + } + ] + }, + { + "id": "demo/robot", + "kind": "demo", + "source": "src/examples/java/demos/robot", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "RobotSprite.java", + "sha256": "ae603a01374a9838a2430ebd7d9de573df7f9fd5d83780c17c3c24966b2ce3a2" + }, + { + "path": "RobotStage.java", + "sha256": "587f25bbe2b14b6cece3ca64df11c4aad6adac66739a0b8ae02354c11110d81b" + }, + { + "path": "sprites/robot.png", + "sha256": "e3426e0f0fbcd9f472326a39f45089ce074797d85c6ce8a42ca6fbf21a1b92a0" + } + ] + }, + { + "id": "demo/saving", + "kind": "demo", + "source": "src/examples/java/demos/saving", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "ExampleSettings.class", + "sha256": "9ed58f7c1ffaade0add634819a1dd8308f7636632144b3a285815ce17c0b87d4" + }, + { + "path": "ExampleSettings.ctxt", + "sha256": "c9ddd1270673bc58cbf59167f9b5f39e680f16bb08f6ddd0f3319872937e0823" + }, + { + "path": "ExampleSettings.java", + "sha256": "45cefc5bb42d659e1d077f6cb08d5a61b64b05d80fc65e8d71b8e4aad740b75d" + }, + { + "path": "Saving.class", + "sha256": "b23649e8611ce04e037ec21761fac333edbafd74e01f90908be8d20f89a246f2" + }, + { + "path": "Saving.ctxt", + "sha256": "d87b7c8939e43df7044652428bc71292949d82bf3e1080a45719fe51c9a7b3c3" + }, + { + "path": "Saving.java", + "sha256": "083c69f9950f753e83a21bc722b4d91bdf476d6bb5d73f41d939c27d4ff60ac6" + } + ] + }, + { + "id": "demo/sensing", + "kind": "demo", + "source": "src/examples/java/demos/sensing", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Sensing.java", + "sha256": "fb506f93964443ada7a50cdda42c0aea955b1c76886108d9bec59c18fd282394" + }, + { + "path": "sprites/hero.png", + "sha256": "c2c48af7fae8913bbe5b175296e07e1b2c05d7b0e557a403c7c7055f0eaafbc7" + }, + { + "path": "sprites/hero2.png", + "sha256": "fc49e2ed1f0e7546c2f5fb7250447b7ca1ca8be70ed74469ab4d97a12e7b8a88" + } + ] + }, + { + "id": "demo/shader", + "kind": "demo", + "source": "src/examples/java/demos/shader", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "LightSprite.ctxt", + "sha256": "ae5012fbc67213f2cb843984467c3eab8cd203ede506a7bff3cc29aee2943743" + }, + { + "path": "LightSprite.java", + "sha256": "3e8e37f53699f06e7d6c1e9838670b9a52f4eeab8289cabf94e5e7f86a5d2bd0" + }, + { + "path": "MySprite.ctxt", + "sha256": "528b4e6b95dcdcbb7064d7a3867fedca6db69f968a4d3d6929506c67bfb0ded7" + }, + { + "path": "MySprite.java", + "sha256": "fbc85f8ec07d603cc62e7fcf2d47a8eb1a9e6e17ccc60bab4508f6feab2ce60f" + }, + { + "path": "MyStage.ctxt", + "sha256": "fb7fcc3280c829e9aee2eb6ea0f7fa9e2b098b7f2951749a492faff83c0aded4" + }, + { + "path": "MyStage.java", + "sha256": "d4cfacd6f2749b5e703b3f2f6668d46f30340356d6787f629b744b833a7899a1" + }, + { + "path": "MyWindow.ctxt", + "sha256": "48638300d8d294aaef715d2aa33a0057a13de7880d217a4c852c99aebe88c56c" + }, + { + "path": "NormalSprite.ctxt", + "sha256": "ce8686adf891caaab2d194fd31b4a29d34360f5202b45e871c3e47c86c045432" + }, + { + "path": "NormalSprite.java", + "sha256": "e645c87cb21f235ad255eec06ca4558b019b5f9f773182b12d3bfc8df29ba612" + }, + { + "path": "ShaderExample.java", + "sha256": "df96b2c473b62166e2ac533ac4daac394ec3bd9ced8cebf3b431dc524b75ba93" + }, + { + "path": "blobby.frag", + "sha256": "384933079eec3bb08beb0b141bec7cd59ff7ef17c4a8fa706e3c4f1640dba55b" + }, + { + "path": "cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + }, + { + "path": "default.vert", + "sha256": "74b864ff74fb681af02ede001826b988ec94edcbb2c3b3377cd08975edca7cbf" + }, + { + "path": "glitch.frag", + "sha256": "cc97afe4a6df211c95abf0dead361f05d32cf4e42d042d78ad47f22a3c1fdb5d" + }, + { + "path": "halftone.frag", + "sha256": "64e2eb806ed07b091fa5d9c15329cf776d2950832021fb985172edebd0c0df71" + }, + { + "path": "light.frag", + "sha256": "cbb7e7c862a6944b620919c8643b40f8986a6dcc389e2308966fa5f50694e551" + }, + { + "path": "light.png", + "sha256": "8e64a24aedd5860c5573d818d708d8ba8ba2772d33ec86175eca26acb8ecb631" + }, + { + "path": "neon.frag", + "sha256": "8e875c5eb0cc2884d3470ae96797bf3708e01eb1725a98ad560414d5c9493f75" + }, + { + "path": "pixel.frag", + "sha256": "3b3d471cd76f42313008ffaa3019fd382e80916ddc990c48b748786a54f5796f" + }, + { + "path": "pixelate.frag", + "sha256": "7d0842e4fc000f92a2ac9cf113fce083b7c2c5e5bb43c2cb2edfbf0bc045075b" + } + ] + }, + { + "id": "demo/shakespeare", + "kind": "demo", + "source": "src/examples/java/demos/shakespeare", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "DNA.java", + "sha256": "d7fb514623ec03739084107481332ee1e68f24f288ac10cf278266100ba52e1a" + }, + { + "path": "Population.java", + "sha256": "1225987f167ca4db84acb4be8b3f1e57f089c122617409b09dcf13e0fd851eb8" + }, + { + "path": "Shakespeare.java", + "sha256": "bc83a9c98e6bc68976626c097e8058fd1bacb30bf43e5fdc91851b7a0fddeb3b" + }, + { + "path": "assets/Singkong.ttf", + "sha256": "0e4ccf7a12fe3282f2f8622ff1612206675d283f2881582f81ebba4702c4e0c2" + } + ] + }, + { + "id": "demo/smartRocket", + "kind": "demo", + "source": "src/examples/java/demos/smartRocket", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "DNA.ctxt", + "sha256": "98794aa9e549f0edaeed468e530fd4cd55e99601b2a30713c35be97d2c2c5cf0" + }, + { + "path": "DNA.java", + "sha256": "a032039dcd704fd3d7cabc8899cd3f94938aa74e767f0211560124612b38f59b" + }, + { + "path": "Level.ctxt", + "sha256": "a048cdb9d29e029b5f6dec0ad60a050e336cdf11572195d92c25c71331ea0399" + }, + { + "path": "Level.java", + "sha256": "6d65f2fda636d2f51f9184cfc87650491e0f31690cf374c9fff7ef6cfd48aa59" + }, + { + "path": "Population.ctxt", + "sha256": "a5fd04c02b7c3f63c5a3e14a70073b743ef60187b2f725ecab8f6046ec38fe37" + }, + { + "path": "Population.java", + "sha256": "eb21b9da4d7c03a1e6b8b5042a7d48ec5d16c80417915d80710d9ef011df7203" + }, + { + "path": "Rocket.ctxt", + "sha256": "42435a32b0244f81eadc863452dffc7bbe18be9bf74fc58da1aee46825a9686b" + }, + { + "path": "Rocket.java", + "sha256": "a6245304fc1ae2d9824e5c325ff2dcc697e61eb498d8808df165836ad46514b8" + }, + { + "path": "SmartRocket.ctxt", + "sha256": "16a36a50aafe1b7ada036a7b9e61354aafb0423677ba0c5626ed05265f12f4dc" + }, + { + "path": "SmartRocket.java", + "sha256": "865b4f7ecd65133e52d9e00d0a94ef248eee2ce1462af6109ca307d4aaaff9be" + }, + { + "path": "Ziel.ctxt", + "sha256": "37e64e2c172d4e8263b83b0b603d94e200f47cd38496d28c0c4300b8079e452f" + }, + { + "path": "Ziel.java", + "sha256": "e82ad1e3accf297c08135a588a3765e270857dc76ff70df91751f79321cc71f5" + }, + { + "path": "assets/rocket.png", + "sha256": "e459d96e8fb8c399efe9205796da70d2b652e584c82ecff5a2bb8a1963bdc428" + }, + { + "path": "assets/target.png", + "sha256": "d56b2aa9d5a9dac9bec50487138341ec3d16d703ab83eda47fbb2d6203d4c57d" + } + ] + }, + { + "id": "demo/stressTest", + "kind": "demo", + "source": "src/examples/java/demos/stressTest", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Character$1.class", + "sha256": "c54b3302c596103fbb7c10ff55575d27278e6df2d0a7c26fde7fab8a6b6cee43" + }, + { + "path": "Character.class", + "sha256": "2d20a2d119b2a2b31e395a16c61d3af8f80ea0559deb86fb4b2e8b7aba001c0d" + }, + { + "path": "Character.ctxt", + "sha256": "2d221a16e536712cdd95b8772539e5ca0ceb203aa1b12b123ccac427780e70da" + }, + { + "path": "CharacterState.class", + "sha256": "850c11afb05ad164fa316d2edfad7478ff36d5d865a159c8702e3cff0e13af4f" + }, + { + "path": "CharacterState.ctxt", + "sha256": "7b6d2b9e8f1ba867699553cc6b946185eee057d3e8d07316df78bcfd64730a2e" + }, + { + "path": "Dino.class", + "sha256": "9a4f79cb8e642b3dae71afc717fb98ca9ff00d54761567747257cfcce8370d47" + }, + { + "path": "Dino.ctxt", + "sha256": "ebfd59731c6410ab84c229bc2ed240fdf9d781e0c3b092e8d36d8b08d0bcf9f4" + }, + { + "path": "Dino.java", + "sha256": "d65f08c55ec15351ff77d625e3d8797d12dc24e877ea7dfe2c05ba576153c7d1" + }, + { + "path": "Figure.java", + "sha256": "345693eb286fb99f5fdb74a6f892130362b3eb9c973004434a38c172dc3e2a3e" + }, + { + "path": "FigureState.java", + "sha256": "5dcedf8f434d2d16809700a117377e7a527feecc48c4267d61206c2c0cf72a69" + }, + { + "path": "Knight.class", + "sha256": "eff5f2da50488896b663e4fd1895a60766bddea06b82988e19f09c83138498c7" + }, + { + "path": "Knight.ctxt", + "sha256": "b99051a2ba771b2ec034ec583f18a56f9263c1b5a1980b58ce9a4c1b86adf060" + }, + { + "path": "Knight.java", + "sha256": "5984f9ce9d6ce09247f0b5ae45b752e809e7fe1bffdf0a0f2b468cd2360470f3" + }, + { + "path": "Ninja.class", + "sha256": "d3b1c73c1efe9839fbe8105a2ca3251356f228e2cd97f3e096716c2622891216" + }, + { + "path": "Ninja.ctxt", + "sha256": "f52f8ff8464b4abe32573730ea4adc43471e20a4c707e1ff99f01233df024be3" + }, + { + "path": "Ninja.java", + "sha256": "cf6cf2d953366cd7b11c186a1fe01103788a2c9ad221c9ad58531ba402e9dbb5" + }, + { + "path": "StressTest.class", + "sha256": "42bc2bf49062b8fe6d78db099858c0c4381338b06a3a43f353ababa8591e9896" + }, + { + "path": "StressTest.ctxt", + "sha256": "390de6aefa294d1cb9d2b405ed8d39b1f239d5a0b4aac273c20f375615083ee6" + }, + { + "path": "StressTest.java", + "sha256": "e8566d3630cd0b6767c5fab6d4e774bd8d3d857fbd4a0f6517f4dcf36fba9bf4" + }, + { + "path": "assets/dino/Idle (1).png", + "sha256": "5a5507544b8bd548d21107ae9cfaa9adedf1d8ca893e67e0c5598fd2b5c154d6" + }, + { + "path": "assets/dino/Idle (10).png", + "sha256": "da4d5bbb19dcf39d249e498ca96e11bddada2a84af48a5f1ca2089a490573c77" + }, + { + "path": "assets/dino/Idle (2).png", + "sha256": "983cee1459218c3840f025ff11dd9471bbe0f236486ebae1d8c282628ddd6539" + }, + { + "path": "assets/dino/Idle (3).png", + "sha256": "5a57aa76e9a3ed48cc4c98842c2c11f286001fa5de44abe3763b7b353b76d18f" + }, + { + "path": "assets/dino/Idle (4).png", + "sha256": "745e0448bbeb086dcf534a1c7c1e1e3430c195f5da6455a194e0699c18cdd0d3" + }, + { + "path": "assets/dino/Idle (5).png", + "sha256": "3cfd09a9fe8e3bb57cb6e7ebff89335dd77082a7c4e541659c65f99094dc3647" + }, + { + "path": "assets/dino/Idle (6).png", + "sha256": "114b32b8ac4a3298a3fa904371140476fb642224905932e2d3f8b1888b209a11" + }, + { + "path": "assets/dino/Idle (7).png", + "sha256": "562ef3c99b1272535b25929c70bb1e85fc73f7d57d99f5cb2a87eaf9f29b90f3" + }, + { + "path": "assets/dino/Idle (8).png", + "sha256": "5e065cc1c4011cbbd94b0de89ad0cca66c8d6daf8a9cb499c45993508e3f2f75" + }, + { + "path": "assets/dino/Idle (9).png", + "sha256": "b9749fe9651f851dc668ab6799282bc840f921681e41632428bc5a2196df141b" + }, + { + "path": "assets/dino/LICENSE", + "sha256": "41ddb588901b4a011ec2c39dc469619fc39dbf24cd9d3d3e705a8d6d9c057a48" + }, + { + "path": "assets/dino/Run (1).png", + "sha256": "7c9413292b23282208285ce71572f15530f1b8006169f4d5c71945bd5f33c348" + }, + { + "path": "assets/dino/Run (2).png", + "sha256": "ed19846de2252f3acbe08f0db10b24830d0293c3abf11c94124da7a177cd7099" + }, + { + "path": "assets/dino/Run (3).png", + "sha256": "4defb15ffe20561b77d3a3120d6d822fea184907f651be13bd78de20907bbdd8" + }, + { + "path": "assets/dino/Run (4).png", + "sha256": "379025216e878055da8a488a0e90979a563425c8e85ad5886caea37bdd9d9ec4" + }, + { + "path": "assets/dino/Run (5).png", + "sha256": "6f68b216e7528402ab1f0328760af4afdd2689d47b561dde067df38303ba1561" + }, + { + "path": "assets/dino/Run (6).png", + "sha256": "7765bae61c2c89866f0ac5f77bed070e3768a557654072c38d9b2d2326f8665e" + }, + { + "path": "assets/dino/Run (7).png", + "sha256": "bfbdd6350d890a0a95183f2d92319328caa36dd4c5bca0436b2448d3907fe009" + }, + { + "path": "assets/dino/Run (8).png", + "sha256": "c877c9363595e93597b303d776b966c5dc4a08ecb4ec6fce2b618ac2d8fd09b8" + }, + { + "path": "assets/dino/Walk (1).png", + "sha256": "03eaac74a29a8275e08813a04274a55d6d048952d52afa21bfa9c1885a53288b" + }, + { + "path": "assets/dino/Walk (10).png", + "sha256": "c4d281e972230304095ef3739d5fe3b6432666cc715e5fa17e768cf6bea0e6aa" + }, + { + "path": "assets/dino/Walk (2).png", + "sha256": "1c3388e5a87aa73e76ed423c007f412146e6e5ccd8f3d02411e3616ce273d59e" + }, + { + "path": "assets/dino/Walk (3).png", + "sha256": "b5df437fea73b909af59869828ad11dd5c4e41f5f7f2e138bcf489d40ebeffc7" + }, + { + "path": "assets/dino/Walk (4).png", + "sha256": "536aba6c1b2e8629c5c252c9bd9dfe4db24865a69ff9a8e3f0c895bb4f68b6f4" + }, + { + "path": "assets/dino/Walk (5).png", + "sha256": "8aaca1f70101d07c303f6a9a585d6c8cd982af151269fcf7e9819d83d700337e" + }, + { + "path": "assets/dino/Walk (6).png", + "sha256": "cc549f0864920a1a91d0871ff0d4d183d1cf17d83a27ba173b8a0f92e72ffc7f" + }, + { + "path": "assets/dino/Walk (7).png", + "sha256": "59a842c2ec44dfe826e2f21b3fd1dfc2963835add460085b275619eb04f83adb" + }, + { + "path": "assets/dino/Walk (8).png", + "sha256": "3ae05a7c2aaccd4619d55743f07f8ec1fd5c070bba90fedfc7583467f5ccd372" + }, + { + "path": "assets/dino/Walk (9).png", + "sha256": "7346764788de8d010edc91fb22c569ec68305f5238278621115ccf060b31ab0b" + }, + { + "path": "assets/knight/Idle (1).png", + "sha256": "4b6d4d9dbf5e776ec29182e49f10a502706005f4ff16906f9e946c4f58df9a00" + }, + { + "path": "assets/knight/Idle (10).png", + "sha256": "7b9820b9548b1fd8295dc41d1dfdc80f640b3265394828916e8abb9583237303" + }, + { + "path": "assets/knight/Idle (2).png", + "sha256": "8383c766cece063cddad8ff222c75ee2c281a73f4b2ef19f050c5f4a4eef87b0" + }, + { + "path": "assets/knight/Idle (3).png", + "sha256": "2398b3f7adb8dbbdc842905875554d7534544b0b8a5ed5f43365d39fab3dd9a9" + }, + { + "path": "assets/knight/Idle (4).png", + "sha256": "1dba5fc199c72e4b64a46335de38564cb31e3040473acdcfee15d80d5240cfb3" + }, + { + "path": "assets/knight/Idle (5).png", + "sha256": "880d23363c9f98439be163902d33bb22b8e7badb74417c2b4c3e33b2aa43abc9" + }, + { + "path": "assets/knight/Idle (6).png", + "sha256": "98f0596f2e217b30954f387e87158f5f84ba240a8dd7cbbb4317eff0f5cd226a" + }, + { + "path": "assets/knight/Idle (7).png", + "sha256": "9fef5f0f6979017e9ec57c76e2ae5bfb113ec1e94058b1045725144fd1cbb2a9" + }, + { + "path": "assets/knight/Idle (8).png", + "sha256": "ff3607f8ec62a73f2a50701f3bfa0eaf23ccd54b51895f88dbc7faa933e8b539" + }, + { + "path": "assets/knight/Idle (9).png", + "sha256": "87290c26d989986ad165714e66b96f91b13a9e186457703e1c31b4dae5f16daa" + }, + { + "path": "assets/knight/LICENSE", + "sha256": "41ddb588901b4a011ec2c39dc469619fc39dbf24cd9d3d3e705a8d6d9c057a48" + }, + { + "path": "assets/knight/Run (1).png", + "sha256": "583cb89513c8751b93aebb5fb90f1361a6289b38bc7e4edba9daff5211084359" + }, + { + "path": "assets/knight/Run (10).png", + "sha256": "f5a0f7a74f3488e0a653f3755b4c31dde6f271cf38223a78023cadc0b1f6c256" + }, + { + "path": "assets/knight/Run (2).png", + "sha256": "8f28f129a99478b4047680cfd610d1639b02b080a5cbc6e4e43899944af4f807" + }, + { + "path": "assets/knight/Run (3).png", + "sha256": "d15180f29cf929491321fd2cb8dcd4e9070d907e433be3189b3f4126c9d70764" + }, + { + "path": "assets/knight/Run (4).png", + "sha256": "301411a800855e958327dbad85fc03a61b9a8d48c6b498cf5e04edf9a4f2c4cd" + }, + { + "path": "assets/knight/Run (5).png", + "sha256": "ad4364d8efbdf3ebe1f39027db941f132c07f503e2e135a6e0e7e1f425d609bd" + }, + { + "path": "assets/knight/Run (6).png", + "sha256": "277bdd09098e59e931e4cae2725960e2ff043ff4e18723b6a90c164bfb7d77d9" + }, + { + "path": "assets/knight/Run (7).png", + "sha256": "1a29dcc0e4af930e79aa323b6ba6c3389285b385007be1b73b6d155e6fe4128a" + }, + { + "path": "assets/knight/Run (8).png", + "sha256": "12135dad389f2c3e960fcebe8c93a1b63fdd5e31336b0d785ea494e22cb4a2ee" + }, + { + "path": "assets/knight/Run (9).png", + "sha256": "e343327bcf5b00affa1aa3a106a0226d3583fdd189e44c3b80a387572091efc4" + }, + { + "path": "assets/knight/Walk (1).png", + "sha256": "955c15b659e10ed4cebc643c54103b6a44f6416a6939dc5b6d5cc557cb75f9ad" + }, + { + "path": "assets/knight/Walk (10).png", + "sha256": "59ffbc390b816191c77ed43a0413fc787b1f7b8351bf23d4417f999765790392" + }, + { + "path": "assets/knight/Walk (2).png", + "sha256": "5de5cccce717a475601ad3ea15c1be72521c9440510d1b282185c3e1c129e13b" + }, + { + "path": "assets/knight/Walk (3).png", + "sha256": "cf19653994521807a80130ffe57040bc64a5a25389497b6ae959d9e94e8f7d7c" + }, + { + "path": "assets/knight/Walk (4).png", + "sha256": "d7369d0871f658488c771df762559848068677aebe61580e48360e2966eedfac" + }, + { + "path": "assets/knight/Walk (5).png", + "sha256": "4d61315a5b709747e87ef1579e08511a8646b63d19006de627def0685359fcab" + }, + { + "path": "assets/knight/Walk (6).png", + "sha256": "c2085e09e60c936c025c16fb0ff77a2cd5eb652c40d7a057ef57b2abb210f901" + }, + { + "path": "assets/knight/Walk (7).png", + "sha256": "1d142843fc0ac6db840a0914cfdfb5baaf2633af36f11329a28a9d98e5b1a174" + }, + { + "path": "assets/knight/Walk (8).png", + "sha256": "f22d91ce3e47ff33897063f7e968f685233c34718baf0cc567867d43ea6a6798" + }, + { + "path": "assets/knight/Walk (9).png", + "sha256": "ee09f04c688e818aaeac1f1981d492120f92c94a823d3ca0d77f90e5a5721cfe" + }, + { + "path": "assets/ninja/Idle (1).png", + "sha256": "0e8d98d16b056815c84f15bd095d47087c4dceac5880218b0466d37c573b8435" + }, + { + "path": "assets/ninja/Idle (10).png", + "sha256": "d402a6f4ad672e9f010764a426f90ab3ddfe04f924eed09c6eeded42ed98ca82" + }, + { + "path": "assets/ninja/Idle (2).png", + "sha256": "e7089bff695efef7bb2a62e0ead0d2f3334adca21a9adfc61e273010605c1142" + }, + { + "path": "assets/ninja/Idle (3).png", + "sha256": "8573a41086a0b6db1cc4f8f26ff4f525361d1e5a1483159996d7a3f385a6d83c" + }, + { + "path": "assets/ninja/Idle (4).png", + "sha256": "ae706a981eaa808fa29459e73a2f5b783de316f089284295a5857fce0f0c28ba" + }, + { + "path": "assets/ninja/Idle (5).png", + "sha256": "2952a1475585b3577f0643b01c3f713b36416354d5f6dbfb2d3f699fe6df4671" + }, + { + "path": "assets/ninja/Idle (6).png", + "sha256": "45d5e685296a7e1369bd107f0a474efcfca66a86eb0702f58c768b32056b847d" + }, + { + "path": "assets/ninja/Idle (7).png", + "sha256": "ef22c61ee05024cb3eee41a9844f04104f90d650c99038d6463107a5623ae125" + }, + { + "path": "assets/ninja/Idle (8).png", + "sha256": "4b337b7fe5364464b6cc28159609d0931d7d58004c45a59a2051326b4c753aa1" + }, + { + "path": "assets/ninja/Idle (9).png", + "sha256": "8c5805a5174380fc5aba30907c0d3170c91dc014879610cb5e9e6b2c0331983d" + }, + { + "path": "assets/ninja/Run (1).png", + "sha256": "166c069c125c24647cf1ddf8125be7596ff0e343bd672931f4260f4a8adc87ad" + }, + { + "path": "assets/ninja/Run (10).png", + "sha256": "c675b3bb8d58abd12cdc14dbd17f850024938ee747b225d0c8b3f7d4306e18a9" + }, + { + "path": "assets/ninja/Run (2).png", + "sha256": "199ed64724fec0582fa23290f54d6bb81b6f470078cf9d714cf84e75426b530e" + }, + { + "path": "assets/ninja/Run (3).png", + "sha256": "d92601cbae9825843712a2bac073424523910fa50d598f3b989a179d7c4b44a6" + }, + { + "path": "assets/ninja/Run (4).png", + "sha256": "c98bb0e654454674d4a73dda2f0255136a7ddd21424294a3a4ebe69dbb8c3f19" + }, + { + "path": "assets/ninja/Run (5).png", + "sha256": "f4491b94c618545aed63cf6571ddd9cd3b376ae0517653cd5b2a7761e89d0daa" + }, + { + "path": "assets/ninja/Run (6).png", + "sha256": "9003fa5099305f05b5fb269ffdf2f4b961d72353fedad946b05594f5e4c7a939" + }, + { + "path": "assets/ninja/Run (7).png", + "sha256": "fe2bd878b84d0db115dae64656904cf7ac70afdbe1ef70b3acbeb4da797085a9" + }, + { + "path": "assets/ninja/Run (8).png", + "sha256": "b4ab32fd8497c1d9938a97a02705a49da439239261da56d024c9e2eb4a5c994d" + }, + { + "path": "assets/ninja/Run (9).png", + "sha256": "9cec762184ecc45d6f6280dd2fd902d7a3717b77e4f06155ea3923756b8fe31a" + }, + { + "path": "assets/ninja/Walk (1).png", + "sha256": "cdef02a5555f3cd4ef85ad76a6efbf7c91f7b9b1ec78ef65c662db684e7529a0" + }, + { + "path": "assets/ninja/Walk (10).png", + "sha256": "4355a26cad8e9aebe6577d81a387daf0802a7da520e655db93343f568d7a3ebb" + }, + { + "path": "assets/ninja/Walk (2).png", + "sha256": "8013fddefb284075164858edb2ceee216347e265fcff69b374ce4a4264b30897" + }, + { + "path": "assets/ninja/Walk (3).png", + "sha256": "707ddc7fb87b4ddc18c81352cc653b89c3b942ebcb4d9256dea6ba5d2685f00e" + }, + { + "path": "assets/ninja/Walk (4).png", + "sha256": "03d8cd607dc37de0aef1883919bc0313bffee85b445658b18411f52e47ad81e8" + }, + { + "path": "assets/ninja/Walk (5).png", + "sha256": "c5ec5152a19b8fc1ce23ea55dbaa5e293538f09b5b8238ce2717bfdd199c7e85" + }, + { + "path": "assets/ninja/Walk (6).png", + "sha256": "0350f8d5c31c235b79337152908446853245b6b2b2e384b21cb212837794065d" + }, + { + "path": "assets/ninja/Walk (7).png", + "sha256": "1eed321418b4c20c3be3be89ed033d4e02e7fff9c4c637b51bfbdfda9d700a92" + }, + { + "path": "assets/ninja/Walk (8).png", + "sha256": "964d5a8e793750dc800650612a9480e2da91c3d223e7cdcab25f3169469bde40" + }, + { + "path": "assets/ninja/Walk (9).png", + "sha256": "ff8863152a575ef1e1a890006c217585458046cf7f4091c0cf5186c2a74be879" + }, + { + "path": "assets/outback.png", + "sha256": "b4d02cf557f6bdfbd59fd384160a5d583d4adf8b1610d25d1ceeafcb98f26766" + } + ] + }, + { + "id": "demo/tiled", + "kind": "demo", + "source": "src/examples/java/demos/tiled", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer" + ], + "files": [ + { + "path": "Bamboo.class", + "sha256": "c26b6f104820f8af4a28b7c584ce5e3c2a75391779fbe1ea81f5b0061c115af9" + }, + { + "path": "Bamboo.ctxt", + "sha256": "2a39143d1cf20a56edbcdeb1b8cbf854a6a1cd5f5ffcd541bb69cc727fd85413" + }, + { + "path": "Bamboo.java", + "sha256": "46ec44f8d28c5a0eaec1fb30f5c42d35ed9b6962b75a9c08105f770e4ee2df08" + }, + { + "path": "Enemy.class", + "sha256": "8c299d6a3c10413bbba0dbbfa3117fb8a3e3692eb9d5ff16193706512842867e" + }, + { + "path": "Enemy.ctxt", + "sha256": "04c8b38d50c18e54af9910661234395c755647c3abe112b7efd31968c4eea226" + }, + { + "path": "Enemy.java", + "sha256": "936060f67fbea9d35ce80ea0c829c120b7863eca6d775d97aea9fd5b7b7365cf" + }, + { + "path": "Fireball.class", + "sha256": "9295f82784260315454e89e833d3026722a73e7e8c8c66bff92968d84e9f050f" + }, + { + "path": "Fireball.ctxt", + "sha256": "a1c973e135a1b16087b5c274e57b9889ea3608209929261e1faf90f28545689a" + }, + { + "path": "Fireball.java", + "sha256": "9064b7fc0b8f286026ed08125db9c5b4fb77bc15c7add1dc51760732e346ecb2" + }, + { + "path": "GameState.class", + "sha256": "733989ae6ce95a5cd213c8e054479b75d6cb659ce22534907ef5e54f178bd7a0" + }, + { + "path": "GameState.ctxt", + "sha256": "dbb84dad708d630c1742ea7db99de5969e8f8f60b0c02070a874f73f954365dc" + }, + { + "path": "GameState.java", + "sha256": "816c40b0209a5f9dafd418e98238cb1d1f3296998e33b2e5eb397cc1a3be88ae" + }, + { + "path": "I18n.class", + "sha256": "a4d0a154874b6272dd68c86f50f5e6fe7c3cad9b91936118bd1ed0780416d87f" + }, + { + "path": "I18n.ctxt", + "sha256": "60c0ee8f6d6db7e07f6285c40639dffd399a90cc4d70c9ae66a24556e745f505" + }, + { + "path": "I18n.java", + "sha256": "c430cf0eb4d31e17a702971553b6f6bc629085fd197d7ac3bb3444a683920e55" + }, + { + "path": "Item.class", + "sha256": "1143e34a6338a38fb2e06fb68e8d0eb385301cf2eaf89cf670c6b98edc2541a9" + }, + { + "path": "Item.ctxt", + "sha256": "6ba89206c1707eb33b0096dcbbcf3c2fce18c964ed89d8c4f20debcc5d4904c6" + }, + { + "path": "Item.java", + "sha256": "17b9d7b4679d4ffd6f66d0ea0a83cb6e4fb8674b05e0091347bec523add6e276" + }, + { + "path": "Level1.tmx", + "sha256": "d0313669a472f49b6f1caa8d4effc390278176644339b7513819b44bac2c80be" + }, + { + "path": "Level2.tmx", + "sha256": "d3d104297fd78a7c1c85699d295b645ae21b7c8ff0ff0d9e11d556aca88641e3" + }, + { + "path": "Player.class", + "sha256": "495c890aeff50f812eb2c322ce793717e01dee09ba6ae91ea9c56c10a14337e5" + }, + { + "path": "Player.ctxt", + "sha256": "e96a1822d023b73fe3e7360e15793ad9b5a8375af898fad8905c05f4d59a54db" + }, + { + "path": "Player.java", + "sha256": "8731b294011650eb0f9f8e89562a820972c0a0457de6c2e21a73a5560310cc74" + }, + { + "path": "Tiled.class", + "sha256": "ed1dffc627fd2dd3c4e39d00ef788b881397390f11ddc97642399aa9292f5271" + }, + { + "path": "Tiled.ctxt", + "sha256": "ca7d54283b0c374cdd2c95f27fb82b64280c5da3ea3acdeb0f46fa679db94e0e" + }, + { + "path": "Tiled.java", + "sha256": "97c8631d9f363d1939987c86353cb2e34a4e530187fc93231864ba7a8a5bf5d3" + }, + { + "path": "UIItem.java", + "sha256": "f1177f7cfd7c7147ed3ef2e10b475c53c5de228c8ba2ab118bd9058563c17479" + }, + { + "path": "Wall.class", + "sha256": "7673195e6d30d0706583a98faeade7f6c0e64f6b9d2fd16bde130e2fbb8bcf0f" + }, + { + "path": "Wall.ctxt", + "sha256": "68d498fd9b3b2e81b3294aa50951ee9bd8866f4ada25e503badbcb844da84ae7" + }, + { + "path": "Wall.java", + "sha256": "b226bdddba1cc32e7ccabbe3c686161a2b04060acff79b769c34f6af53487bb0" + }, + { + "path": "Warp.class", + "sha256": "13bddf0b6ed387b51f2ceea6d1abe5ed05921867cbf1b92bb795395603d63233" + }, + { + "path": "Warp.ctxt", + "sha256": "103c797aaf7c290b62e01b4ccea36e0f8193d9ac9b30d67fc47133c5b322301c" + }, + { + "path": "Warp.java", + "sha256": "5749bb006f674e1a3aab8c3bb14933dd517edadb4ab1a38d213e7040c9791eab" + }, + { + "path": "Water.class", + "sha256": "1ed25c488dedb5ba53394aec075e1fdd82e0039ef0f132ee84790497754170b9" + }, + { + "path": "Water.ctxt", + "sha256": "2ff25af7e4be086febc0986f6f777cafdabbfbb81ec0966fa0965e7514a3624c" + }, + { + "path": "Water.java", + "sha256": "aee560ddb396dd81e10d84dfa4769b31dbf3cd8433955068886c436581c03b17" + }, + { + "path": "World.class", + "sha256": "993ca3729bd777ad7acec0f648c41c30b8d40a42b94a1584bff5c62f411ea71d" + }, + { + "path": "World.ctxt", + "sha256": "2f2969200a5664660259551bd4ee40aa6a523d8aa5c898c5916da50e2cf9808f" + }, + { + "path": "World.java", + "sha256": "3f0965034fd75e1d6c16501172bd72e53566b1dd8894cd7e8f46cf53ef7576a9" + }, + { + "path": "assets/Bamboo.png", + "sha256": "767a9fe9f5a386fb095471c2e934be15c6725be114a00c731500746ba98247fd" + }, + { + "path": "assets/Fireball.png", + "sha256": "366f2d49d9456c32c0eec2ce96e5487011af35da8007a0ef7cf82788e93a7b75" + }, + { + "path": "assets/Retro Gaming.ttf", + "sha256": "dfd827142124c0fab4b916a4c72dbf4c91a9069a150aa8be71d0566f6d612066" + }, + { + "path": "assets/ScrollFire.png", + "sha256": "899b4bc72a4a95e7c93ba481bfda2c2fd9990159db86523eb33a6dbcc260b69b" + }, + { + "path": "assets/ScrollWater.png", + "sha256": "274a12dd4ec4ccf2a4a4884d647c3880f7a3d7cb499aa573e7ad8d58fa5a3e0e" + }, + { + "path": "assets/Skeleton.png", + "sha256": "81fc368cb542892934400f7e3350433ff506ed966f5b9c95543e2745899ce2fe" + }, + { + "path": "assets/TilesetField.png", + "sha256": "b482b0b257baf09648db4d507ca255231fc4bff2dff89e59a9f70ba66b9e1845" + }, + { + "path": "assets/TilesetFloor.png", + "sha256": "5a4b0208e732a48f16fbe50ced54910cf0cb7ccc5552f426e5fb586829819681" + }, + { + "path": "assets/TilesetWater.png", + "sha256": "3d37d9581179c746fb55bc5e9eb83ed7f2ca6e0ee892cb9c0627250833b02277" + }, + { + "path": "save.json", + "sha256": "ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356" + } + ] + }, + { + "id": "demo/timedDot", + "kind": "demo", + "source": "src/examples/java/demos/timedDot", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "TimedDot.java", + "sha256": "439ceeabb6aeb4997221ad6b862c2e3707954caba15a181998bae51f304bddf3" + } + ] + }, + { + "id": "demo/timer", + "kind": "demo", + "source": "src/examples/java/demos/timer", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "TimerStage.java", + "sha256": "aca34300457121b32f740e294eb0e1589cf487cbe0cad5c431fb0de63402a608" + } + ] + }, + { + "id": "demo/ui", + "kind": "demo", + "source": "src/examples/java/demos/ui", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "UI.java", + "sha256": "864245b75532369c5e9115043ad8615214770401307c3f68611f62f9b1f2a5b2" + }, + { + "path": "bar_round_gloss_large.png", + "sha256": "44fea9186b56afe4c1cfc676b0dcf64fdee42c18ef4843389acc294b5666cbf0" + }, + { + "path": "bar_round_gloss_large_gray.png", + "sha256": "4f5c4d98f462cb38b7e81ad1f45a529a63f224fb032e430eec0df53da1f8fb46" + }, + { + "path": "crosshair_color_c.png", + "sha256": "53ad72c48a8fdb550b1e4cf2b6cf97e2de7a892cdbcb098e73263d804b530127" + }, + { + "path": "metalPanel_greenCorner.png", + "sha256": "8f8b0f856a0da0abb1aad33497331eb1f892bf7ea9f97e945882c8dd83164c70" + } + ] + }, + { + "id": "demo/volume", + "kind": "demo", + "source": "src/examples/java/demos/volume", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": "Volume.java", + "sha256": "ff6b1b109ab36acb97181fe2309bc0966da5487629ba33815c1a15b483b8d89e" + } + ] + }, + { + "id": "tutorial/Halloween", + "kind": "tutorial", + "source": "docs/archives/Halloween", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "GhostSprite.java", + "sha256": "0384d2d29fd627071a580ffdb91b3ebec648f6a210ba6bce3ffb7959941c3652" + }, + { + "path": "HalloweenStage.java", + "sha256": "b9a53144da5c0108e71af7c34b05094239c67d786923ed239fc0fa16f314e5e8" + }, + { + "path": "HouseSprite.java", + "sha256": "58e61a14d64b70fb3e4b98337a5ce347ee8441af6a39bb0496156c2813e21812" + }, + { + "path": "PumpkinSprite.java", + "sha256": "2437b012ead25f8fdcb8297c0e94b1bbc4ec37037226f5aa8b5113d669e8b27b" + }, + { + "path": "package.bluej", + "sha256": "a9623d91bd998d884124ed3815a659d2195e71377b797edba9b97a0afc15e558" + }, + { + "path": "sounds/background.wav", + "sha256": "36fa67c1a4c199dccfe608b1ff64170551949c73003fb26b9da708cc2e2114b7" + }, + { + "path": "sounds/door.wav", + "sha256": "ee087d54d051f29102b3ea941b37761970780ece13dc11d7aa8a23d68e6d5b0f" + }, + { + "path": "sounds/ghost.wav", + "sha256": "edc570c66f778ea33affa5ab73ea96f059943bcfe412b266295a769ace824e6d" + }, + { + "path": "sprites/background.jpg", + "sha256": "4fe64d2bcdbdbccaeb385e609517fc403a0376f4edce2278000e54c9028b8988" + }, + { + "path": "sprites/castle_off.png", + "sha256": "d269553f298a33879f87523e012ad02d28deead9bf243b55b5df3de4bce49cc6" + }, + { + "path": "sprites/castle_on.png", + "sha256": "24085f67d62563a9aef4c6f0fb2f8a39d17cf2cd1ebecb4320cce0196e30e781" + }, + { + "path": "sprites/ghost/ghost_01.png", + "sha256": "c5347db7381e24b302ec5645672ee51246fa385849f5cc2ff26601eb87fa40dd" + }, + { + "path": "sprites/ghost/ghost_02.png", + "sha256": "cabbc13b4ae8d8c7af666393a780d86b00591bc52022cee4d435c739a388dff0" + }, + { + "path": "sprites/ghost/ghost_03.png", + "sha256": "f2b7f233412b4b71b4cb2917233ff811f75108dbf8efe5adc17e044063b319c6" + }, + { + "path": "sprites/ghost/ghost_04.png", + "sha256": "5640a6c6f320c86ace35f3715ae673580160d6423fc8d109d970180ee936aaa0" + }, + { + "path": "sprites/ghost/ghost_05.png", + "sha256": "d7a7243abf5d99728511d80123d1126f4383f558f1f908c697101417c50ff618" + }, + { + "path": "sprites/ghost/ghost_06.png", + "sha256": "ec2e02c3d1bedcf66f4c1c780f053d9cef17b89e14dcb1a1a5b754597398e90a" + }, + { + "path": "sprites/ghost/ghost_07.png", + "sha256": "042d23019bc143786c00ba551153ab5eb36be365a1252a93467d5922706a81cb" + }, + { + "path": "sprites/ghost/ghost_08.png", + "sha256": "785e28befc1dba98421e4c45e19870b903700963a915a07b7d4c547565373ecd" + }, + { + "path": "sprites/ghost/ghost_09.png", + "sha256": "f83b5c359c13dfcacddd4bc6987bf073fba96f06e080e4f4b2d690e8cd57807c" + }, + { + "path": "sprites/ghost/ghost_10.png", + "sha256": "e155c4ed62aed589a1378613e850ff05ba86e57e82a1e33944efd28b661efc10" + }, + { + "path": "sprites/pumpkin/pumpkin_01.png", + "sha256": "0b2df0a538510e7f6dc941db10e83dafe3ebde7eb23fb0ff3334bd0b427ca3a9" + }, + { + "path": "sprites/pumpkin/pumpkin_02.png", + "sha256": "5db69c37a0bcffbbd81690d1fe0d2e75aea9773bfdec6f64fcfb9c109f9b6a3c" + } + ] + }, + { + "id": "tutorial/bluej-starter", + "kind": "tutorial", + "source": "docs/archives/bluej-starter", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "Cat.java", + "sha256": "f5e71d1da4812c7810701eeaf23bc2d8bb455b8c8d607fa0ab04fcebd8df9f2b" + }, + { + "path": "MyStage.java", + "sha256": "cbe0c5ef6165e8ac0194090a50b5085a0b59b22d2b91633980953823aab1152a" + }, + { + "path": "MyWindow.java", + "sha256": "8056b03a70774938863b829c750300549323c4287eb9f9e6350cd77ccb101005" + }, + { + "path": "assets/.gitkeep", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "assets/cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/bouncy-hedgehog", + "kind": "tutorial", + "source": "docs/archives/bouncy-hedgehog", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": ".vscode/extensions.json", + "sha256": "5d6b599db5e395f6c21b38697c7d9d8768f67dbd0eebc36a6e610cc0a3786ef0" + }, + { + "path": ".vscode/settings.json", + "sha256": "516b1cf9e9ebc68be9b9e4df0b89c6c43beaa6b8f75be6ed7f1fadae2d5c8ce9" + }, + { + "path": "BouncyHedgehogStage.java", + "sha256": "483de7f13ab0903792bafecb7be0048edf9c2eb7244ac3493459bfd8a0cb7fda" + }, + { + "path": "HedgehogSprite.java", + "sha256": "8e14206fda7f43637aff1e8b7a43e6c42de2ae14de97af2b86dd6f4ad5d50d7b" + }, + { + "path": "README.md", + "sha256": "a52e43821ba57c053e89735bb8f0fab2cd9f1e039e1f16380405ab14f8654e78" + }, + { + "path": "TrampolineSprite.java", + "sha256": "a7fdb464a46167825abcefb161b93d3560b0bc8a09c0204879791ddb4e8b988f" + }, + { + "path": "hedgehog.png", + "sha256": "731e677d38912bf339a16cda8c61035db1db52489c462181e9be4874bd310db7" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "playground.jpg", + "sha256": "c68f76ab3c5ac54be427706d571cd5b268141c4448b88e7277ebae45c347f0dd" + }, + { + "path": "trampoline.png", + "sha256": "ca11b0fbb8ec2f002f30659bda64a3d979d65f8d0f465629cd19b57c81e18df8" + } + ] + }, + { + "id": "tutorial/bouncy-hedgehog-100", + "kind": "tutorial", + "source": "docs/archives/bouncy-hedgehog-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": ".vscode/extensions.json", + "sha256": "5d6b599db5e395f6c21b38697c7d9d8768f67dbd0eebc36a6e610cc0a3786ef0" + }, + { + "path": ".vscode/settings.json", + "sha256": "516b1cf9e9ebc68be9b9e4df0b89c6c43beaa6b8f75be6ed7f1fadae2d5c8ce9" + }, + { + "path": "BouncyHedgehogStage.java", + "sha256": "f28090be3f0aabf674ebe1870740440d7573773256cae63450517262261f5f59" + }, + { + "path": "HedgehogSprite.java", + "sha256": "ec727a72eac0f5d5ef58ff7093c0852a2031aeb5ea40702b3e7c50af928c8cbf" + }, + { + "path": "README.md", + "sha256": "a52e43821ba57c053e89735bb8f0fab2cd9f1e039e1f16380405ab14f8654e78" + }, + { + "path": "TrampolineSprite.java", + "sha256": "a5f262e0116c12f34e18bdcad56395ac0a1da5f8517266f6b1eaf69321ce9fbc" + }, + { + "path": "hedgehog.png", + "sha256": "731e677d38912bf339a16cda8c61035db1db52489c462181e9be4874bd310db7" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "playground.jpg", + "sha256": "c68f76ab3c5ac54be427706d571cd5b268141c4448b88e7277ebae45c347f0dd" + }, + { + "path": "trampoline.png", + "sha256": "ca11b0fbb8ec2f002f30659bda64a3d979d65f8d0f465629cd19b57c81e18df8" + } + ] + }, + { + "id": "tutorial/cat", + "kind": "tutorial", + "source": "docs/archives/cat", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": "CatSprite.java", + "sha256": "f21ff0ec0c7ffa8c269d91fbac2ac0dbce1154ac6ac41cefe9e2cae198c20d3f" + }, + { + "path": "CatStage.java", + "sha256": "59d5a5e628e9e285d9af9462ed37dbb23ca613af0b46d315461ba763c0aad64f" + }, + { + "path": "cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + }, + { + "path": "package.bluej", + "sha256": "d18f1b5e976159b105ce08a72f95f98dffc64cec82f0d618460e73d710040604" + } + ] + }, + { + "id": "tutorial/catch-the-coins-100", + "kind": "tutorial", + "source": "docs/archives/catch-the-coins-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "Basket.java", + "sha256": "7f7aa0c5a52ed0db3e39e1b97f0817103d27d43fd424c16539ed1063bf90657d" + }, + { + "path": "CatchStage.java", + "sha256": "81f4c96b7e2015b381d5845d995d1fcf00369f11197def706b950a86d5f9b630" + }, + { + "path": "Coin.java", + "sha256": "bc0752b8e5509455422e7625613f83bbe0dc4f5c2d8e83cb2d312532a313489f" + }, + { + "path": "README.md", + "sha256": "7867d20f01bf95412d4b307e34210e9a62e0850b2db0eb7453a82c011deab634" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/dodge-the-rocks-100", + "kind": "tutorial", + "source": "docs/archives/dodge-the-rocks-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "Alien.java", + "sha256": "27311fafd34fdba30e4aa0f92d058d3ae6127d8fb48dd82837302ac6bd512be7" + }, + { + "path": "DodgeWindow.java", + "sha256": "2bcec14f90ff80f49281d0baf142d538f1853a14d78d1f299f1161cbfb975732" + }, + { + "path": "GameStage.java", + "sha256": "ab21802ccf2c2a3fe04e1aacadfe02731a8f1a417cb42b1b5b9b54b1442f2956" + }, + { + "path": "README.md", + "sha256": "2222d201aea0e8f6b0531e5344e0ac69a424a45c969f2ad1e29c869d6d7de3bd" + }, + { + "path": "Rock.java", + "sha256": "4d3905160b6a34d732a477a37c74e06edcbc4222440c8d743200de9d382e6318" + }, + { + "path": "TitleStage.java", + "sha256": "370fe74347c426309e2fd77c10589bb71e2c18ced5d638db7a3f8a67922c000d" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/getting-started-100", + "kind": "tutorial", + "source": "docs/archives/getting-started-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "jumper", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "Bunny.java", + "sha256": "a6de1d1ff1505cd507406533201239c548d715e9deb59604e702ae5c49974662" + }, + { + "path": "MyStage.java", + "sha256": "d8b26cf64078f1a2dcc95b033df292282e8271b2b1c14212582b39ed15b6fc10" + }, + { + "path": "README.md", + "sha256": "1cf7971612162c7486cd95894fa740ec9f3e8f8268e01790ef5cb48ed37a0507" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/guess-the-number-100", + "kind": "tutorial", + "source": "docs/archives/guess-the-number-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "GuessStage.java", + "sha256": "9fac29bde01fcfe5248d25e5f069e2a992508f53fd54ee364fb6fc9d8a548e7d" + }, + { + "path": "README.md", + "sha256": "2e83410662b1d66e3b506bc668ecb59ee2651b9fe5344a1b16e0c43b6e0c6d27" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/make-it-walk-100", + "kind": "tutorial", + "source": "docs/archives/make-it-walk-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "README.md", + "sha256": "fabacace7e210742909cd107a230f3e4c47ca68197963b619c1e932fa1464cc0" + }, + { + "path": "WalkStage.java", + "sha256": "c2e5518d8b29b623fd9e85ca5570df179aa1043fcfc13669719cb13bd8ff1414" + }, + { + "path": "Walker.java", + "sha256": "1811c6b4ea7c206ca0d78be206c377cdd470bc9092884f3a94ff8e023d04d1b3" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/red-light-green-light-100", + "kind": "tutorial", + "source": "docs/archives/red-light-green-light-100", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [ + "platformer", + "tappy_plane" + ], + "files": [ + { + "path": ".vscode/settings.json", + "sha256": "76219b6f95a73b8052dd10130e5ebb34aa319e8ab534890c0a2240651c307e7a" + }, + { + "path": "README.md", + "sha256": "343be5278ad1ba4f7f23205363319e90239a1b4a4c5f85340d7af3430e5943d3" + }, + { + "path": "RaceStage.java", + "sha256": "a1d264b816b4accf9740b2ed0c8b1e053accc8bee1c2a55c4e74c264f490dee4" + }, + { + "path": "Racer.java", + "sha256": "e5e157f62c18400e22e2eb8aa7aed4020542e45fecca31757e8c3f7c456cc304" + }, + { + "path": "Referee.java", + "sha256": "989580b24499248a299e09d0b5c2ea0fef733a0577a750d5a2fb840bb4792ef2" + }, + { + "path": "package.bluej", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] + }, + { + "id": "tutorial/vs-code-starter", + "kind": "tutorial", + "source": "docs/archives/vs-code-starter", + "libraryVersion": "5.7.0", + "flavour": "standard", + "requiredSheets": [], + "files": [ + { + "path": ".vscode/extensions.json", + "sha256": "c31c30ca102830cd851010c0cd32527c8b943e248a3f73512ee4da7586021183" + }, + { + "path": ".vscode/settings.json", + "sha256": "5ab65d6d595d057a9124aa7fe85e76a3f5bb128f1c7b04a7f49aebd0631a4b0a" + }, + { + "path": "Cat.java", + "sha256": "f5e71d1da4812c7810701eeaf23bc2d8bb455b8c8d607fa0ab04fcebd8df9f2b" + }, + { + "path": "MyStage.java", + "sha256": "cbe0c5ef6165e8ac0194090a50b5085a0b59b22d2b91633980953823aab1152a" + }, + { + "path": "MyWindow.java", + "sha256": "8056b03a70774938863b829c750300549323c4287eb9f9e6350cd77ccb101005" + }, + { + "path": "assets/.gitkeep", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "assets/cat.png", + "sha256": "0423f61671a086906d972b266241d557934f86bdb8ec5ad6f50b08f3474efa0f" + } + ] + } + ] +} diff --git a/src/main/resources/images/License-cat.txt b/src/main/resources/images/License-cat.txt new file mode 100644 index 00000000..b29a1b68 --- /dev/null +++ b/src/main/resources/images/License-cat.txt @@ -0,0 +1,7 @@ +cat.png / cat.xml - the Scratch for Java mascot and the props of its platformer + + License: (Creative Commons Zero, CC0) + http://creativecommons.org/publicdomain/zero/1.0/ + + Drawn for Scratch for Java (https://scratch4j.openpatch.org). + You can use this content for personal, educational, and commercial purposes. diff --git a/src/main/resources/images/cat.png b/src/main/resources/images/cat.png new file mode 100644 index 0000000000000000000000000000000000000000..c17676651e2ab0ed20bdbf337099e45e28a5447a GIT binary patch literal 53468 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/images/cat.xml b/src/main/resources/images/cat.xml new file mode 100644 index 00000000..a98cbdb8 --- /dev/null +++ b/src/main/resources/images/cat.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/java/org/openpatch/scratch/internal/BuiltinAssetsTest.java b/src/test/java/org/openpatch/scratch/internal/BuiltinAssetsTest.java index 27e74d5a..ee3ce592 100644 --- a/src/test/java/org/openpatch/scratch/internal/BuiltinAssetsTest.java +++ b/src/test/java/org/openpatch/scratch/internal/BuiltinAssetsTest.java @@ -16,14 +16,15 @@ class BuiltinAssetsTest { void readsEverySubTextureFromEveryBundledAtlas() { // The four Kenney atlases hold 845 sub textures, but four of them are listed // twice within platformer.xml and three names exist on two sheets, leaving - // 838 distinct bare names. - assertEquals(838, BuiltinAssets.getNames().size()); + // 838 distinct bare names. The cat sheet adds 81 names of its own. + assertEquals(919, BuiltinAssets.getNames().size()); } @Test void listsEveryDistinctSprite() { - // 845 sub textures minus the four listed twice inside platformer.xml. - assertEquals(841, BuiltinAssets.getEntries().size()); + // 845 Kenney sub textures minus the four listed twice inside platformer.xml, + // plus the 81 frames of the cat sheet. + assertEquals(922, BuiltinAssets.getEntries().size()); } @Test @@ -122,6 +123,27 @@ private static int[] readImageSize(String resourcePath) { } } + @Test + void theMascotsAnimationsAreNumberedFromOneWithFramesOfOneSize() { + // AnimatedSprite.addAnimation("walk", "cat_walk_%d", 6) counts from 1 + String[][] animations = { + { "idle", "26" }, { "walk", "6" }, { "crouch", "4" }, { "jump", "3" }, { "fall", "2" }, + { "land", "2" }, { "punch", "6" }, { "hurt", "3" }, { "ko", "5" }, { "cheer", "4" }, + { "climb", "4" } }; + for (String[] animation : animations) { + int frames = Integer.parseInt(animation[1]); + for (int i = 1; i <= frames; i++) { + BuiltinAssets.Entry entry = BuiltinAssets.get("cat_" + animation[0] + "_" + i); + assertNotNull(entry, "cat_" + animation[0] + "_" + i); + assertEquals("cat", entry.sheet); + assertEquals(64, entry.width); + assertEquals(64, entry.height); + } + assertFalse(BuiltinAssets.contains("cat_" + animation[0] + "_" + (frames + 1))); + } + assertEquals(90, BuiltinAssets.get("cat_walk_1").direction); + } + @Test void spritesWithAFrontAreTurnedToFaceRight() { // drawn pointing up, down and left on their sheets diff --git a/src/test/java/org/openpatch/scratch/internal/GameClockTest.java b/src/test/java/org/openpatch/scratch/internal/GameClockTest.java index 6902fc00..bdec3734 100644 --- a/src/test/java/org/openpatch/scratch/internal/GameClockTest.java +++ b/src/test/java/org/openpatch/scratch/internal/GameClockTest.java @@ -78,4 +78,18 @@ void aVeryFastGameStillLetsTheWindowDraw() { clock.setSpeed(-3); assertEquals(0, clock.getSpeed()); } + + @Test + void nonFiniteSpeedCannotPoisonTimersOrFreezeTheWindow() { + GameClock clock = new GameClock(); + for (double speed : new double[] { Double.NaN, Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY }) { + clock.setSpeed(speed); + assertEquals(0, clock.getSpeed()); + assertEquals(0, clock.frame(FRAME)); + } + clock.setSpeed(1); + assertEquals(1, clock.frame(-1)); + clock.advance(); + assertEquals(0, clock.millis()); + } } diff --git a/src/test/java/portable/PortableBehaviorChecks.java b/src/test/java/portable/PortableBehaviorChecks.java new file mode 100644 index 00000000..9e01a6fc --- /dev/null +++ b/src/test/java/portable/PortableBehaviorChecks.java @@ -0,0 +1,40 @@ +package portable; + +import org.openpatch.scratch.*; + +/** Shared logic: desktop JUnit and the browser runner invoke this unchanged. */ +public class PortableBehaviorChecks { + public static void run() { + CheckWalker player = new CheckWalker(); + player.setPosition(0, 0); + for (int frame = 0; frame < 10; frame++) player.run(); + require(player.getX() == 30, "ten movement frames"); + Sprite coin = new Sprite("slime", "slimeGreen"); + coin.setPosition(30, 0); + require(player.getHitbox().intersects(coin.getHitbox()), "collision"); + if (player.getHitbox().intersects(coin.getHitbox())) player.score++; + require(player.score == 8, "score after collecting"); + coin.setX(1000); + require(!player.getHitbox().intersects(coin.getHitbox()), "separated sprites"); + CheckWalker copy = (CheckWalker) player.clone(); + require(copy.score == 8 && copy.isClone(), "clone fields"); + copy.score = 9; + require(player.score == 8, "independent score"); + require(player.getTimer("check") != copy.getTimer("check"), "independent timers"); + Random.randomSeed(2026); + int first = Random.randomInt(100); + int second = Random.randomInt(100); + Random.randomSeed(2026); + require(first == Random.randomInt(100) && second == Random.randomInt(100), "seeded randomness"); + require(first >= 0 && first <= 100, "random range"); + } + private static void require(boolean value, String message) { + if (!value) throw new RuntimeException(message); + } +} + +class CheckWalker extends Sprite { + int score = 7; + CheckWalker() { super("slime", "slimeGreen"); } + public void run() { changeX(3); } +} diff --git a/src/test/java/portable/PortableBehaviorChecksTest.java b/src/test/java/portable/PortableBehaviorChecksTest.java new file mode 100644 index 00000000..955b069d --- /dev/null +++ b/src/test/java/portable/PortableBehaviorChecksTest.java @@ -0,0 +1,7 @@ +package portable; + +import org.junit.jupiter.api.Test; + +class PortableBehaviorChecksTest { + @Test void movementCollisionScoreCloneAndRandomness() { PortableBehaviorChecks.run(); } +} diff --git a/src/tools/java/doclets/Scratch4JDoclet.java b/src/tools/java/doclets/Scratch4JDoclet.java index ab2504fe..e273f484 100644 --- a/src/tools/java/doclets/Scratch4JDoclet.java +++ b/src/tools/java/doclets/Scratch4JDoclet.java @@ -361,6 +361,7 @@ private void generateClassIndex(TypeElement classElement, List()); json.put("name", className + "()"); + json.put("api", apiMetadata(classElement, constructors, env)); // Parse class documentation DocCommentTree docComment = env.getDocTrees().getDocCommentTree(classElement); @@ -447,6 +448,7 @@ private void generateMethodJson(List methods, String classNam json.put("template", "class-method"); json.put("related", new ArrayList<>()); json.put("name", primaryMethod.getSimpleName().toString() + "()"); + json.put("api", apiMetadata((TypeElement) primaryMethod.getEnclosingElement(), methods, env)); // --- Combine descriptions for overloaded methods --- StringBuilder combinedDescription = new StringBuilder(); @@ -564,6 +566,42 @@ private void generateMethodJson(List methods, String classNam writeJsonToFile(json, classDir.resolve(filename)); } + private Map apiMetadata(TypeElement owner, List members, DocletEnvironment env) { + Map api = new LinkedHashMap<>(); + api.put("owner", owner.getQualifiedName().toString()); + List> signatures = new ArrayList<>(); + for (ExecutableElement member : members) { + Map signature = new LinkedHashMap<>(); + boolean constructor = member.getKind() == ElementKind.CONSTRUCTOR; + signature.put("name", constructor ? owner.getSimpleName().toString() : member.getSimpleName().toString()); + signature.put("constructor", constructor); + signature.put("static", member.getModifiers().contains(Modifier.STATIC)); + signature.put("parameters", member.getParameters().stream() + .map(parameter -> parameter.asType().toString()).collect(Collectors.toList())); + signature.put("returns", constructor ? owner.getQualifiedName().toString() : member.getReturnType().toString()); + DocCommentTree doc = env.getDocTrees().getDocCommentTree(member); + String currentPackage = getPackageName(owner); + signature.put("parameterNames", member.getParameters().stream() + .map(parameter -> parameter.getSimpleName().toString()).collect(Collectors.toList())); + signature.put("parameterDescriptions", member.getParameters().stream() + .map(parameter -> convertToMarkdown(extractParamDescription(doc, parameter.getSimpleName().toString()), currentPackage)) + .collect(Collectors.toList())); + signature.put("description", doc == null ? "" : convertToMarkdown(extractDescriptionRaw(doc), currentPackage).trim()); + signature.put("returnDescription", doc == null ? "" : doc.getBlockTags().stream() + .filter(tag -> tag.getKind() == com.sun.source.doctree.DocTree.Kind.RETURN) + .map(tag -> convertToMarkdown(((com.sun.source.doctree.ReturnTree) tag).getDescription().stream() + .map(Object::toString).collect(Collectors.joining("")), currentPackage).trim()) + .findFirst().orElse("")); + signature.put("scratchblock", doc == null ? "" : extractCustomTags(doc).getOrDefault("scratchblock", "")); + signature.put("since", doc == null ? "" : doc.getBlockTags().stream() + .filter(tag -> tag.getKind() == com.sun.source.doctree.DocTree.Kind.SINCE) + .map(tag -> tag.toString().replaceFirst("^@since\\s+", "")).findFirst().orElse("")); + signatures.add(signature); + } + api.put("signatures", signatures); + return api; + } + private List> buildExamples(Map customTags) { List> examples = new ArrayList<>(); @@ -1034,4 +1072,4 @@ private boolean isPackageIgnored(String packageName, DocletEnvironment env) { } return false; } -} \ No newline at end of file +} diff --git a/src/tools/java/docs/GenerateAssetPages.java b/src/tools/java/docs/GenerateAssetPages.java index 16715038..70ef8453 100644 --- a/src/tools/java/docs/GenerateAssetPages.java +++ b/src/tools/java/docs/GenerateAssetPages.java @@ -106,9 +106,10 @@ private static String spritePage() { :::alert{info} - The artwork is made by [Kenney](https://kenney.nl) and is released under - CC0, which means you may use it for anything, also without saying where - it came from. + The artwork is made by [Kenney](https://kenney.nl), except for the cat + sheet with the Scratch for Java mascot, which was drawn for this library. + All of it is released under CC0, which means you may use it for anything, + also without saying where it came from. ::: From 028821f1e2a920a233045f429bf5d4065672e4d2 Mon Sep 17 00:00:00 2001 From: Mike Barkmin Date: Wed, 7 Oct 2026 17:20:27 +0200 Subject: [PATCH 2/4] Prepare Scratch for Java 5.8.0 and its browser compatibility contract --- .changeset/cat-mascot.md | 5 -- .changeset/release-catalogs.md | 6 -- .changeset/safe-game-speed.md | 5 -- .github/workflows/docs.yml | 7 +++ CHANGELOG.md | 12 +++- catalogs/api.json | 4 +- catalogs/assets.json | 4 +- catalogs/examples.json | 72 +++++++++++------------ compatibility/README.md | 2 +- compatibility/browser-policy.json | 4 +- compatibility/contract.json | 4 +- docs/book/catalogs.md | 70 +++++++++++----------- docs/book/changelog.md | 19 +++++- docs/book/classroom.md | 2 +- docs/book/compatibility.md | 2 +- docs/public/catalogs/api.json | 4 +- docs/public/catalogs/assets.json | 4 +- docs/public/catalogs/examples.json | 72 +++++++++++------------ docs/public/compatibility.json | 4 +- pom.xml | 2 +- src/main/resources/catalogs/api.json | 4 +- src/main/resources/catalogs/assets.json | 4 +- src/main/resources/catalogs/examples.json | 72 +++++++++++------------ 23 files changed, 201 insertions(+), 183 deletions(-) delete mode 100644 .changeset/cat-mascot.md delete mode 100644 .changeset/release-catalogs.md delete mode 100644 .changeset/safe-game-speed.md diff --git a/.changeset/cat-mascot.md b/.changeset/cat-mascot.md deleted file mode 100644 index 63fd8ed6..00000000 --- a/.changeset/cat-mascot.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: minor ---- - -Add the Scratch for Java cat as built-in sprites. Its animations - idle, walk, crouch, jump, fall, land, punch, hurt, ko, cheer and climb - load by name, for example `addAnimation("walk", "cat_walk_%d", 6)`. Coffee beans, a bug, a goal mug and hearts for a platformer come with it. The new Cat Platformer example shows them all in a game. diff --git a/.changeset/release-catalogs.md b/.changeset/release-catalogs.md deleted file mode 100644 index 8fdb7757..00000000 --- a/.changeset/release-catalogs.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -type: patch ---- - -Distribute versioned API, asset and example catalogs, with stable documentation -identifiers, translation overrides and offline example artifacts. diff --git a/.changeset/safe-game-speed.md b/.changeset/safe-game-speed.md deleted file mode 100644 index db29cf66..00000000 --- a/.changeset/safe-game-speed.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: patch ---- - -Treat non-finite game speeds as zero and ignore negative elapsed frame time, keeping timers usable after invalid speed input. diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 430c5d26..20c65133 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -31,6 +31,13 @@ jobs: - name: Check browser compatibility before publishing uses: ./.github/actions/check-browser + - uses: actions/setup-node@v4 + with: + node-version: '22' + + - name: Install the released Hyperbook toolchain + run: npm install --global hyperbook@0.112.0 + - name: Build Docs run: bash ./build.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 872a6617..f2c843bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,19 @@ --- name: Changelog -index: 75 +index: 76 lang: en --- +## 5.8.0 + +Add the Scratch for Java cat as built-in sprites. Its animations - idle, walk, crouch, jump, fall, land, punch, hurt, ko, cheer and climb - load by name, for example `addAnimation("walk", "cat_walk_%d", 6)`. Coffee beans, a bug, a goal mug and hearts for a platformer come with it. The new Cat Platformer example shows them all in a game. + +Distribute versioned API, asset and example catalogs, with stable documentation +identifiers, translation overrides and offline example artifacts. + +Treat non-finite game speeds as zero and ignore negative elapsed frame time, keeping timers usable after invalid speed input. + + ## 5.7.1 diff --git a/catalogs/api.json b/catalogs/api.json index bb9e7bd9..2cf23e79 100644 --- a/catalogs/api.json +++ b/catalogs/api.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, - "libraryVersion": "5.7.0", - "browserVersion": "5.7.0-browser.2", + "libraryVersion": "5.8.0", + "browserVersion": "5.8.0-browser.1", "methods": [ { "id": "AnimatedSprite/addAnimation(String,String,int)", diff --git a/catalogs/assets.json b/catalogs/assets.json index 067f4c30..5905bda1 100644 --- a/catalogs/assets.json +++ b/catalogs/assets.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, - "libraryVersion": "5.7.0", - "browserVersion": "5.7.0-browser.2", + "libraryVersion": "5.8.0", + "browserVersion": "5.8.0-browser.1", "license": "CC0", "images": [ { diff --git a/catalogs/examples.json b/catalogs/examples.json index da2df7c9..e19b47bf 100644 --- a/catalogs/examples.json +++ b/catalogs/examples.json @@ -1,13 +1,13 @@ { "schemaVersion": 1, - "libraryVersion": "5.7.0", - "browserVersion": "5.7.0-browser.2", + "libraryVersion": "5.8.0", + "browserVersion": "5.8.0-browser.1", "examples": [ { "id": "demo/cat", "kind": "demo", "source": "src/examples/java/demos/cat", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -29,7 +29,7 @@ "id": "demo/catPlatformer", "kind": "demo", "source": "src/examples/java/demos/catPlatformer", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "cat", @@ -79,7 +79,7 @@ "id": "demo/clock", "kind": "demo", "source": "src/examples/java/demos/clock", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -169,7 +169,7 @@ "id": "demo/coinCollector", "kind": "demo", "source": "src/examples/java/demos/coinCollector", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -198,7 +198,7 @@ "id": "demo/donutIO", "kind": "demo", "source": "src/examples/java/demos/donutIO", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -292,7 +292,7 @@ "id": "demo/glide", "kind": "demo", "source": "src/examples/java/demos/glide", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -309,7 +309,7 @@ "id": "demo/pipes", "kind": "demo", "source": "src/examples/java/demos/pipes", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -347,7 +347,7 @@ "id": "demo/quiz", "kind": "demo", "source": "src/examples/java/demos/quiz", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -364,7 +364,7 @@ "id": "demo/rainbowVine", "kind": "demo", "source": "src/examples/java/demos/rainbowVine", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -382,7 +382,7 @@ "id": "demo/randomDot", "kind": "demo", "source": "src/examples/java/demos/randomDot", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -400,7 +400,7 @@ "id": "demo/robot", "kind": "demo", "source": "src/examples/java/demos/robot", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -422,7 +422,7 @@ "id": "demo/saving", "kind": "demo", "source": "src/examples/java/demos/saving", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -456,7 +456,7 @@ "id": "demo/sensing", "kind": "demo", "source": "src/examples/java/demos/sensing", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -478,7 +478,7 @@ "id": "demo/shader", "kind": "demo", "source": "src/examples/java/demos/shader", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -568,7 +568,7 @@ "id": "demo/shakespeare", "kind": "demo", "source": "src/examples/java/demos/shakespeare", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -594,7 +594,7 @@ "id": "demo/smartRocket", "kind": "demo", "source": "src/examples/java/demos/smartRocket", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -660,7 +660,7 @@ "id": "demo/stressTest", "kind": "demo", "source": "src/examples/java/demos/stressTest", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1110,7 +1110,7 @@ "id": "demo/tiled", "kind": "demo", "source": "src/examples/java/demos/tiled", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer" @@ -1318,7 +1318,7 @@ "id": "demo/timedDot", "kind": "demo", "source": "src/examples/java/demos/timedDot", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1332,7 +1332,7 @@ "id": "demo/timer", "kind": "demo", "source": "src/examples/java/demos/timer", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1346,7 +1346,7 @@ "id": "demo/ui", "kind": "demo", "source": "src/examples/java/demos/ui", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1376,7 +1376,7 @@ "id": "demo/volume", "kind": "demo", "source": "src/examples/java/demos/volume", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1393,7 +1393,7 @@ "id": "tutorial/Halloween", "kind": "tutorial", "source": "docs/archives/Halloween", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1495,7 +1495,7 @@ "id": "tutorial/bluej-starter", "kind": "tutorial", "source": "docs/archives/bluej-starter", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1529,7 +1529,7 @@ "id": "tutorial/bouncy-hedgehog", "kind": "tutorial", "source": "docs/archives/bouncy-hedgehog", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1579,7 +1579,7 @@ "id": "tutorial/bouncy-hedgehog-100", "kind": "tutorial", "source": "docs/archives/bouncy-hedgehog-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1629,7 +1629,7 @@ "id": "tutorial/cat", "kind": "tutorial", "source": "docs/archives/cat", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1655,7 +1655,7 @@ "id": "tutorial/catch-the-coins-100", "kind": "tutorial", "source": "docs/archives/catch-the-coins-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1692,7 +1692,7 @@ "id": "tutorial/dodge-the-rocks-100", "kind": "tutorial", "source": "docs/archives/dodge-the-rocks-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1737,7 +1737,7 @@ "id": "tutorial/getting-started-100", "kind": "tutorial", "source": "docs/archives/getting-started-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "jumper", @@ -1770,7 +1770,7 @@ "id": "tutorial/guess-the-number-100", "kind": "tutorial", "source": "docs/archives/guess-the-number-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1799,7 +1799,7 @@ "id": "tutorial/make-it-walk-100", "kind": "tutorial", "source": "docs/archives/make-it-walk-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1832,7 +1832,7 @@ "id": "tutorial/red-light-green-light-100", "kind": "tutorial", "source": "docs/archives/red-light-green-light-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1869,7 +1869,7 @@ "id": "tutorial/vs-code-starter", "kind": "tutorial", "source": "docs/archives/vs-code-starter", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ diff --git a/compatibility/README.md b/compatibility/README.md index 73e7bf59..2e9b5bec 100644 --- a/compatibility/README.md +++ b/compatibility/README.md @@ -56,4 +56,4 @@ expects it, or test both working copies locally while preparing the changes. `build.sh` generates availability annotations and publishes `/compatibility.json`. Browser builds publish `/scratch-compatibility.json`; `Window.getLibraryVersion()` -reports its browser revision, currently `5.7.0-browser.1`. +reports its browser revision, currently `5.8.0-browser.1`. diff --git a/compatibility/browser-policy.json b/compatibility/browser-policy.json index bb363bd2..791c7c1c 100644 --- a/compatibility/browser-policy.json +++ b/compatibility/browser-policy.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, - "desktopVersion": "5.7.0", - "browserVersion": "5.7.0-browser.2", + "desktopVersion": "5.8.0", + "browserVersion": "5.8.0-browser.1", "flavors": { "standard": { "libraries": [ diff --git a/compatibility/contract.json b/compatibility/contract.json index d86db44e..9a1e59dc 100644 --- a/compatibility/contract.json +++ b/compatibility/contract.json @@ -1,8 +1,8 @@ { "schemaVersion": 1, - "desktopVersion": "5.7.0", + "desktopVersion": "5.8.0", "browser": { - "version": "5.7.0-browser.2", + "version": "5.8.0-browser.1", "flavors": { "standard": { "libraries": [ diff --git a/docs/book/catalogs.md b/docs/book/catalogs.md index 00d31bdd..26034b4a 100644 --- a/docs/book/catalogs.md +++ b/docs/book/catalogs.md @@ -4,7 +4,7 @@ name: Release catalogs # Release catalogs -Library 5.7.0; browser 5.7.0-browser.2. +Library 5.8.0; browser 5.8.0-browser.1. Generated release metadata is available offline inside the library JAR and Studio. @@ -16,37 +16,37 @@ Generated release metadata is available offline inside the library JAR and Studi | Example | Flavor | Library | | --- | --- | --- | -| demo/cat | standard | 5.7.0 | -| demo/catPlatformer | standard | 5.7.0 | -| demo/clock | standard | 5.7.0 | -| demo/coinCollector | standard | 5.7.0 | -| demo/donutIO | standard | 5.7.0 | -| demo/glide | standard | 5.7.0 | -| demo/pipes | standard | 5.7.0 | -| demo/quiz | standard | 5.7.0 | -| demo/rainbowVine | standard | 5.7.0 | -| demo/randomDot | standard | 5.7.0 | -| demo/robot | standard | 5.7.0 | -| demo/saving | standard | 5.7.0 | -| demo/sensing | standard | 5.7.0 | -| demo/shader | standard | 5.7.0 | -| demo/shakespeare | standard | 5.7.0 | -| demo/smartRocket | standard | 5.7.0 | -| demo/stressTest | standard | 5.7.0 | -| demo/tiled | standard | 5.7.0 | -| demo/timedDot | standard | 5.7.0 | -| demo/timer | standard | 5.7.0 | -| demo/ui | standard | 5.7.0 | -| demo/volume | standard | 5.7.0 | -| tutorial/Halloween | standard | 5.7.0 | -| tutorial/bluej-starter | standard | 5.7.0 | -| tutorial/bouncy-hedgehog | standard | 5.7.0 | -| tutorial/bouncy-hedgehog-100 | standard | 5.7.0 | -| tutorial/cat | standard | 5.7.0 | -| tutorial/catch-the-coins-100 | standard | 5.7.0 | -| tutorial/dodge-the-rocks-100 | standard | 5.7.0 | -| tutorial/getting-started-100 | standard | 5.7.0 | -| tutorial/guess-the-number-100 | standard | 5.7.0 | -| tutorial/make-it-walk-100 | standard | 5.7.0 | -| tutorial/red-light-green-light-100 | standard | 5.7.0 | -| tutorial/vs-code-starter | standard | 5.7.0 | +| demo/cat | standard | 5.8.0 | +| demo/catPlatformer | standard | 5.8.0 | +| demo/clock | standard | 5.8.0 | +| demo/coinCollector | standard | 5.8.0 | +| demo/donutIO | standard | 5.8.0 | +| demo/glide | standard | 5.8.0 | +| demo/pipes | standard | 5.8.0 | +| demo/quiz | standard | 5.8.0 | +| demo/rainbowVine | standard | 5.8.0 | +| demo/randomDot | standard | 5.8.0 | +| demo/robot | standard | 5.8.0 | +| demo/saving | standard | 5.8.0 | +| demo/sensing | standard | 5.8.0 | +| demo/shader | standard | 5.8.0 | +| demo/shakespeare | standard | 5.8.0 | +| demo/smartRocket | standard | 5.8.0 | +| demo/stressTest | standard | 5.8.0 | +| demo/tiled | standard | 5.8.0 | +| demo/timedDot | standard | 5.8.0 | +| demo/timer | standard | 5.8.0 | +| demo/ui | standard | 5.8.0 | +| demo/volume | standard | 5.8.0 | +| tutorial/Halloween | standard | 5.8.0 | +| tutorial/bluej-starter | standard | 5.8.0 | +| tutorial/bouncy-hedgehog | standard | 5.8.0 | +| tutorial/bouncy-hedgehog-100 | standard | 5.8.0 | +| tutorial/cat | standard | 5.8.0 | +| tutorial/catch-the-coins-100 | standard | 5.8.0 | +| tutorial/dodge-the-rocks-100 | standard | 5.8.0 | +| tutorial/getting-started-100 | standard | 5.8.0 | +| tutorial/guess-the-number-100 | standard | 5.8.0 | +| tutorial/make-it-walk-100 | standard | 5.8.0 | +| tutorial/red-light-green-light-100 | standard | 5.8.0 | +| tutorial/vs-code-starter | standard | 5.8.0 | diff --git a/docs/book/changelog.md b/docs/book/changelog.md index 82048022..f2c843bb 100644 --- a/docs/book/changelog.md +++ b/docs/book/changelog.md @@ -1,9 +1,26 @@ --- name: Changelog -index: 74 +index: 76 lang: en --- +## 5.8.0 + +Add the Scratch for Java cat as built-in sprites. Its animations - idle, walk, crouch, jump, fall, land, punch, hurt, ko, cheer and climb - load by name, for example `addAnimation("walk", "cat_walk_%d", 6)`. Coffee beans, a bug, a goal mug and hearts for a platformer come with it. The new Cat Platformer example shows them all in a game. + +Distribute versioned API, asset and example catalogs, with stable documentation +identifiers, translation overrides and offline example artifacts. + +Treat non-finite game speeds as zero and ignore negative elapsed frame time, keeping timers usable after invalid speed input. + + +## 5.7.1 + + + +Fix windows on Windows with display scaling: `Window.useFullScreen()` now fills the whole screen instead of a borderless part of it, and windows are centred on the screen instead of partly off it. + + ## 5.7.0 diff --git a/docs/book/classroom.md b/docs/book/classroom.md index 67ee5fc9..ac7bf2ce 100644 --- a/docs/book/classroom.md +++ b/docs/book/classroom.md @@ -15,7 +15,7 @@ teacher notes, assessment criteria and a classroom pilot form. Studio's project. Prepare both standard and NRW flavors before disconnecting the school computer from the internet. -The implementation targets desktop library **5.7.0**, browser **5.7.0-browser.2**, +The implementation targets desktop library **5.8.0**, browser **5.8.0-browser.1**, Java **17** for named library projects and Java **25** for Studio/compact files. ZIP transfer, test adaptation and course import require the coordinated IDE update. Check [compatibility](/compatibility) and the downloaded IDE's release notes; diff --git a/docs/book/compatibility.md b/docs/book/compatibility.md index 6a87608a..083ba042 100644 --- a/docs/book/compatibility.md +++ b/docs/book/compatibility.md @@ -4,7 +4,7 @@ name: Browser compatibility # Browser compatibility -Desktop library: **5.7.0**. Browser implementation: **5.7.0-browser.2**. +Desktop library: **5.8.0**. Browser implementation: **5.8.0-browser.1**. Generated by `scripts/browser-compatibility.py`. [Download the machine-readable contract](/compatibility.json). diff --git a/docs/public/catalogs/api.json b/docs/public/catalogs/api.json index bb9e7bd9..2cf23e79 100644 --- a/docs/public/catalogs/api.json +++ b/docs/public/catalogs/api.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, - "libraryVersion": "5.7.0", - "browserVersion": "5.7.0-browser.2", + "libraryVersion": "5.8.0", + "browserVersion": "5.8.0-browser.1", "methods": [ { "id": "AnimatedSprite/addAnimation(String,String,int)", diff --git a/docs/public/catalogs/assets.json b/docs/public/catalogs/assets.json index 067f4c30..5905bda1 100644 --- a/docs/public/catalogs/assets.json +++ b/docs/public/catalogs/assets.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, - "libraryVersion": "5.7.0", - "browserVersion": "5.7.0-browser.2", + "libraryVersion": "5.8.0", + "browserVersion": "5.8.0-browser.1", "license": "CC0", "images": [ { diff --git a/docs/public/catalogs/examples.json b/docs/public/catalogs/examples.json index da2df7c9..e19b47bf 100644 --- a/docs/public/catalogs/examples.json +++ b/docs/public/catalogs/examples.json @@ -1,13 +1,13 @@ { "schemaVersion": 1, - "libraryVersion": "5.7.0", - "browserVersion": "5.7.0-browser.2", + "libraryVersion": "5.8.0", + "browserVersion": "5.8.0-browser.1", "examples": [ { "id": "demo/cat", "kind": "demo", "source": "src/examples/java/demos/cat", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -29,7 +29,7 @@ "id": "demo/catPlatformer", "kind": "demo", "source": "src/examples/java/demos/catPlatformer", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "cat", @@ -79,7 +79,7 @@ "id": "demo/clock", "kind": "demo", "source": "src/examples/java/demos/clock", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -169,7 +169,7 @@ "id": "demo/coinCollector", "kind": "demo", "source": "src/examples/java/demos/coinCollector", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -198,7 +198,7 @@ "id": "demo/donutIO", "kind": "demo", "source": "src/examples/java/demos/donutIO", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -292,7 +292,7 @@ "id": "demo/glide", "kind": "demo", "source": "src/examples/java/demos/glide", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -309,7 +309,7 @@ "id": "demo/pipes", "kind": "demo", "source": "src/examples/java/demos/pipes", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -347,7 +347,7 @@ "id": "demo/quiz", "kind": "demo", "source": "src/examples/java/demos/quiz", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -364,7 +364,7 @@ "id": "demo/rainbowVine", "kind": "demo", "source": "src/examples/java/demos/rainbowVine", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -382,7 +382,7 @@ "id": "demo/randomDot", "kind": "demo", "source": "src/examples/java/demos/randomDot", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -400,7 +400,7 @@ "id": "demo/robot", "kind": "demo", "source": "src/examples/java/demos/robot", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -422,7 +422,7 @@ "id": "demo/saving", "kind": "demo", "source": "src/examples/java/demos/saving", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -456,7 +456,7 @@ "id": "demo/sensing", "kind": "demo", "source": "src/examples/java/demos/sensing", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -478,7 +478,7 @@ "id": "demo/shader", "kind": "demo", "source": "src/examples/java/demos/shader", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -568,7 +568,7 @@ "id": "demo/shakespeare", "kind": "demo", "source": "src/examples/java/demos/shakespeare", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -594,7 +594,7 @@ "id": "demo/smartRocket", "kind": "demo", "source": "src/examples/java/demos/smartRocket", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -660,7 +660,7 @@ "id": "demo/stressTest", "kind": "demo", "source": "src/examples/java/demos/stressTest", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1110,7 +1110,7 @@ "id": "demo/tiled", "kind": "demo", "source": "src/examples/java/demos/tiled", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer" @@ -1318,7 +1318,7 @@ "id": "demo/timedDot", "kind": "demo", "source": "src/examples/java/demos/timedDot", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1332,7 +1332,7 @@ "id": "demo/timer", "kind": "demo", "source": "src/examples/java/demos/timer", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1346,7 +1346,7 @@ "id": "demo/ui", "kind": "demo", "source": "src/examples/java/demos/ui", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1376,7 +1376,7 @@ "id": "demo/volume", "kind": "demo", "source": "src/examples/java/demos/volume", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1393,7 +1393,7 @@ "id": "tutorial/Halloween", "kind": "tutorial", "source": "docs/archives/Halloween", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1495,7 +1495,7 @@ "id": "tutorial/bluej-starter", "kind": "tutorial", "source": "docs/archives/bluej-starter", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1529,7 +1529,7 @@ "id": "tutorial/bouncy-hedgehog", "kind": "tutorial", "source": "docs/archives/bouncy-hedgehog", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1579,7 +1579,7 @@ "id": "tutorial/bouncy-hedgehog-100", "kind": "tutorial", "source": "docs/archives/bouncy-hedgehog-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1629,7 +1629,7 @@ "id": "tutorial/cat", "kind": "tutorial", "source": "docs/archives/cat", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1655,7 +1655,7 @@ "id": "tutorial/catch-the-coins-100", "kind": "tutorial", "source": "docs/archives/catch-the-coins-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1692,7 +1692,7 @@ "id": "tutorial/dodge-the-rocks-100", "kind": "tutorial", "source": "docs/archives/dodge-the-rocks-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1737,7 +1737,7 @@ "id": "tutorial/getting-started-100", "kind": "tutorial", "source": "docs/archives/getting-started-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "jumper", @@ -1770,7 +1770,7 @@ "id": "tutorial/guess-the-number-100", "kind": "tutorial", "source": "docs/archives/guess-the-number-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1799,7 +1799,7 @@ "id": "tutorial/make-it-walk-100", "kind": "tutorial", "source": "docs/archives/make-it-walk-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1832,7 +1832,7 @@ "id": "tutorial/red-light-green-light-100", "kind": "tutorial", "source": "docs/archives/red-light-green-light-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1869,7 +1869,7 @@ "id": "tutorial/vs-code-starter", "kind": "tutorial", "source": "docs/archives/vs-code-starter", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ diff --git a/docs/public/compatibility.json b/docs/public/compatibility.json index d86db44e..9a1e59dc 100644 --- a/docs/public/compatibility.json +++ b/docs/public/compatibility.json @@ -1,8 +1,8 @@ { "schemaVersion": 1, - "desktopVersion": "5.7.0", + "desktopVersion": "5.8.0", "browser": { - "version": "5.7.0-browser.2", + "version": "5.8.0-browser.1", "flavors": { "standard": { "libraries": [ diff --git a/pom.xml b/pom.xml index 8622d1c6..48cd4961 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.openpatch scratch - 5.7.1 + 5.8.0 jar Scratch for Java diff --git a/src/main/resources/catalogs/api.json b/src/main/resources/catalogs/api.json index bb9e7bd9..2cf23e79 100644 --- a/src/main/resources/catalogs/api.json +++ b/src/main/resources/catalogs/api.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, - "libraryVersion": "5.7.0", - "browserVersion": "5.7.0-browser.2", + "libraryVersion": "5.8.0", + "browserVersion": "5.8.0-browser.1", "methods": [ { "id": "AnimatedSprite/addAnimation(String,String,int)", diff --git a/src/main/resources/catalogs/assets.json b/src/main/resources/catalogs/assets.json index 067f4c30..5905bda1 100644 --- a/src/main/resources/catalogs/assets.json +++ b/src/main/resources/catalogs/assets.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, - "libraryVersion": "5.7.0", - "browserVersion": "5.7.0-browser.2", + "libraryVersion": "5.8.0", + "browserVersion": "5.8.0-browser.1", "license": "CC0", "images": [ { diff --git a/src/main/resources/catalogs/examples.json b/src/main/resources/catalogs/examples.json index da2df7c9..e19b47bf 100644 --- a/src/main/resources/catalogs/examples.json +++ b/src/main/resources/catalogs/examples.json @@ -1,13 +1,13 @@ { "schemaVersion": 1, - "libraryVersion": "5.7.0", - "browserVersion": "5.7.0-browser.2", + "libraryVersion": "5.8.0", + "browserVersion": "5.8.0-browser.1", "examples": [ { "id": "demo/cat", "kind": "demo", "source": "src/examples/java/demos/cat", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -29,7 +29,7 @@ "id": "demo/catPlatformer", "kind": "demo", "source": "src/examples/java/demos/catPlatformer", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "cat", @@ -79,7 +79,7 @@ "id": "demo/clock", "kind": "demo", "source": "src/examples/java/demos/clock", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -169,7 +169,7 @@ "id": "demo/coinCollector", "kind": "demo", "source": "src/examples/java/demos/coinCollector", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -198,7 +198,7 @@ "id": "demo/donutIO", "kind": "demo", "source": "src/examples/java/demos/donutIO", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -292,7 +292,7 @@ "id": "demo/glide", "kind": "demo", "source": "src/examples/java/demos/glide", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -309,7 +309,7 @@ "id": "demo/pipes", "kind": "demo", "source": "src/examples/java/demos/pipes", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -347,7 +347,7 @@ "id": "demo/quiz", "kind": "demo", "source": "src/examples/java/demos/quiz", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -364,7 +364,7 @@ "id": "demo/rainbowVine", "kind": "demo", "source": "src/examples/java/demos/rainbowVine", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -382,7 +382,7 @@ "id": "demo/randomDot", "kind": "demo", "source": "src/examples/java/demos/randomDot", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -400,7 +400,7 @@ "id": "demo/robot", "kind": "demo", "source": "src/examples/java/demos/robot", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -422,7 +422,7 @@ "id": "demo/saving", "kind": "demo", "source": "src/examples/java/demos/saving", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -456,7 +456,7 @@ "id": "demo/sensing", "kind": "demo", "source": "src/examples/java/demos/sensing", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -478,7 +478,7 @@ "id": "demo/shader", "kind": "demo", "source": "src/examples/java/demos/shader", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -568,7 +568,7 @@ "id": "demo/shakespeare", "kind": "demo", "source": "src/examples/java/demos/shakespeare", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -594,7 +594,7 @@ "id": "demo/smartRocket", "kind": "demo", "source": "src/examples/java/demos/smartRocket", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -660,7 +660,7 @@ "id": "demo/stressTest", "kind": "demo", "source": "src/examples/java/demos/stressTest", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1110,7 +1110,7 @@ "id": "demo/tiled", "kind": "demo", "source": "src/examples/java/demos/tiled", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer" @@ -1318,7 +1318,7 @@ "id": "demo/timedDot", "kind": "demo", "source": "src/examples/java/demos/timedDot", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1332,7 +1332,7 @@ "id": "demo/timer", "kind": "demo", "source": "src/examples/java/demos/timer", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1346,7 +1346,7 @@ "id": "demo/ui", "kind": "demo", "source": "src/examples/java/demos/ui", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1376,7 +1376,7 @@ "id": "demo/volume", "kind": "demo", "source": "src/examples/java/demos/volume", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1393,7 +1393,7 @@ "id": "tutorial/Halloween", "kind": "tutorial", "source": "docs/archives/Halloween", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1495,7 +1495,7 @@ "id": "tutorial/bluej-starter", "kind": "tutorial", "source": "docs/archives/bluej-starter", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1529,7 +1529,7 @@ "id": "tutorial/bouncy-hedgehog", "kind": "tutorial", "source": "docs/archives/bouncy-hedgehog", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1579,7 +1579,7 @@ "id": "tutorial/bouncy-hedgehog-100", "kind": "tutorial", "source": "docs/archives/bouncy-hedgehog-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1629,7 +1629,7 @@ "id": "tutorial/cat", "kind": "tutorial", "source": "docs/archives/cat", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ @@ -1655,7 +1655,7 @@ "id": "tutorial/catch-the-coins-100", "kind": "tutorial", "source": "docs/archives/catch-the-coins-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1692,7 +1692,7 @@ "id": "tutorial/dodge-the-rocks-100", "kind": "tutorial", "source": "docs/archives/dodge-the-rocks-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1737,7 +1737,7 @@ "id": "tutorial/getting-started-100", "kind": "tutorial", "source": "docs/archives/getting-started-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "jumper", @@ -1770,7 +1770,7 @@ "id": "tutorial/guess-the-number-100", "kind": "tutorial", "source": "docs/archives/guess-the-number-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1799,7 +1799,7 @@ "id": "tutorial/make-it-walk-100", "kind": "tutorial", "source": "docs/archives/make-it-walk-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1832,7 +1832,7 @@ "id": "tutorial/red-light-green-light-100", "kind": "tutorial", "source": "docs/archives/red-light-green-light-100", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [ "platformer", @@ -1869,7 +1869,7 @@ "id": "tutorial/vs-code-starter", "kind": "tutorial", "source": "docs/archives/vs-code-starter", - "libraryVersion": "5.7.0", + "libraryVersion": "5.8.0", "flavour": "standard", "requiredSheets": [], "files": [ From c7138b211ce48318914b4a22b205166aeb973a09 Mon Sep 17 00:00:00 2001 From: Mike Barkmin Date: Wed, 7 Oct 2026 17:25:38 +0200 Subject: [PATCH 3/4] Exclude local compilation files from release example catalogs --- catalogs/examples.json | 304 ---------------------- docs/public/catalogs/examples.json | 304 ---------------------- scripts/release-catalogs.py | 1 + src/main/resources/catalogs/examples.json | 304 ---------------------- 4 files changed, 1 insertion(+), 912 deletions(-) diff --git a/catalogs/examples.json b/catalogs/examples.json index e19b47bf..602e19a8 100644 --- a/catalogs/examples.json +++ b/catalogs/examples.json @@ -11,10 +11,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "CatSketch.ctxt", - "sha256": "f0425f9eda65280859247b795144aa7570088d0c95635b7ac4d8f21a494a5282" - }, { "path": "CatSketch.java", "sha256": "720ccf8f24d9c87beaf05c0e130dee65da5c8e2a31d98352a21ea319577df3ea" @@ -83,22 +79,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "Clock.class", - "sha256": "e2385a27deb9148840fd3970d3eebc1afe9435ccac77d267e768263e92c7d0b6" - }, - { - "path": "Clock.ctxt", - "sha256": "a960e294f7621fb7227cc21a5bc5e761bd30b49afc2406a0b39b4bd4b710d9ea" - }, - { - "path": "ClockSprite.class", - "sha256": "d8b2710f3fa9c2bf05ce42bd37cb8345601e3c6212d20a33a076c8c3c6f1d25d" - }, - { - "path": "ClockSprite.ctxt", - "sha256": "e0fdbbe2e22df1af27e684de6846215e261693cf1f48357945ea5a67978473aa" - }, { "path": "ClockSprite.java", "sha256": "498b9a3b87b2863f054895e9cc4d668274f15e7b555cc82025e3715fc68dc79b" @@ -107,38 +87,14 @@ "path": "ClockStage.java", "sha256": "1b1a9a5cfbec16b86956258fad2e1243df6f8d70d20a9570a5152a513371577b" }, - { - "path": "HourHandSprite.class", - "sha256": "e42303dd06146e30882eefe6fa672cf087993441b9347acdd68d465370c72133" - }, - { - "path": "HourHandSprite.ctxt", - "sha256": "e4563507c584bd87322f84a7bb3aac369554eb8358ad5226d1b708350cf54add" - }, { "path": "HourHandSprite.java", "sha256": "afbdbddccfa8e4e2faa0e498d13d8175fb8ccca82f38a6792a9e7b4fe3e9e54b" }, - { - "path": "MinuteHandSprite.class", - "sha256": "69a6d94a87a4ee79eb1eeae4d77fa1417f916f57ff02eec415c3066e8b8ef3c5" - }, - { - "path": "MinuteHandSprite.ctxt", - "sha256": "c1c794edc010292c0271a543c16f7c8bbe380a189e5e74b8c7dede318a592914" - }, { "path": "MinuteHandSprite.java", "sha256": "654e62b72e7e03b1df52077eefac3b077894f1a64a9f2176c9b72c1fac32a6ef" }, - { - "path": "SecondHandSprite.class", - "sha256": "0eafa22bfa3e4635e5861972c84aa6e7f14f11bbc1f9db82647a95be749b9952" - }, - { - "path": "SecondHandSprite.ctxt", - "sha256": "ba3487ee3509b252d581a4984334ac1ffb85b7b1f8188eef5cb1987e4747bdf1" - }, { "path": "SecondHandSprite.java", "sha256": "1404a90a1da7fb355b662b7ae5d6d46c4b370d99ea4888cacc3be93e5bb653dd" @@ -202,74 +158,38 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "Background.ctxt", - "sha256": "928fffee1697b0af11be67b58f6b21913f484c87bb1b6e567436ec4327c8ce8a" - }, { "path": "Background.java", "sha256": "1309869222dd8488b6215aa09da058dfafc753d741584c73dfcd33e50a59adfe" }, - { - "path": "Donut.ctxt", - "sha256": "f43e48901fa8e514397d4ef9a2aa8ae68822546815012ca47195f7f6997e27f4" - }, { "path": "Donut.java", "sha256": "0b4f61e3f7d46d341c2002ebabe8f5039878c2ce189f0621880fa77bfcc71a41" }, - { - "path": "FollowDonut.ctxt", - "sha256": "041ce42c129381a457e1e6ffe9bc524fd0cfa1410f26ff96a15cd6494e66796b" - }, { "path": "FollowDonut.java", "sha256": "07e45838abc4aa1053b1b3cef7e85850924cbd668ff601c1691063e27875a136" }, - { - "path": "Game.ctxt", - "sha256": "32f617410e6cd0068706aafc86086cf4ae5ec7ca0f4e274db220f56d4ee7c762" - }, { "path": "Game.java", "sha256": "74d613db1055f1bbcdf4e90b26c7edeb971066be49614ef3b8f5036330649190" }, - { - "path": "GameOverStage.ctxt", - "sha256": "3b56ea634fcbda7cb669f9e41a7dfd2cd29decbd8b043ec7593a9d860c0ea26d" - }, { "path": "GameOverStage.java", "sha256": "913c81a99e0a8f3b92c8c7bf8889def04cd765a3ec563fdbba9057a45cfc5ab6" }, - { - "path": "PlayerDonut.ctxt", - "sha256": "8a21359b0e1b2fde96c7e335146bbb2e04a5da4139bf5b9391f6fbba7c54e0d5" - }, { "path": "PlayerDonut.java", "sha256": "dbb1026901d854e2c728ecec7f8d49d83e31e75db93c56a755f7d0d93a9bed97" }, - { - "path": "StartStage.ctxt", - "sha256": "cc4e75d1c25e1d9e5728c2a582fa1fef347902811a3a391f41bafbe410a63b84" - }, { "path": "StartStage.java", "sha256": "f8419017ad70bb40949a78b17888188b091e57f347898ca495a6dc80c649c896" }, - { - "path": "WinStage.ctxt", - "sha256": "ddc4334a25724a3df7c614643591d09c9058763b65ce9e9e175eff8e0e3c4b6f" - }, { "path": "WinStage.java", "sha256": "c4c9fa066d10fc19215d56763ec5a67e09f296764dc1f1d57c7023dda269e86f" }, - { - "path": "WorldStage.ctxt", - "sha256": "8588835d2b413a0e603786d8c1bb55b0600836208bb916eabd99337a6c9b1b96" - }, { "path": "WorldStage.java", "sha256": "2143d816a12266a4a1f3cf244e1ecc42201275718187975002499777396817d1" @@ -313,18 +233,10 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "PenSprite.ctxt", - "sha256": "04b2796df4f437a74936fee3614e5cb54f896b266db1028c7723802283a6cc69" - }, { "path": "PenSprite.java", "sha256": "d582f5bc29738b2d69f9433c4b7a40b9fae7d6451b8f938fba2768b028a9b736" }, - { - "path": "Pipes.ctxt", - "sha256": "0ad6a99a6b2b6c5641ef9e6a744240851853eadc5d9bc234c711e91184585611" - }, { "path": "Pipes.java", "sha256": "3026f03ca92b00776cccd363d0dafa2e15801dc6578279b0c4cc1ca508c155d1" @@ -368,10 +280,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "RainbowVine.ctxt", - "sha256": "893b65df4e627e0e41fe61c83451a4cf9fb9e309aed93db3164c3c28a169fabd" - }, { "path": "RainbowVine.java", "sha256": "a6fc438d97c957b62e0499fb63fbdd970cab0abd744374049158f233693593bb" @@ -386,10 +294,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "RandomDot.ctxt", - "sha256": "4ae975d6ed03fa370334ddc03c86924b1f8bbdb488bd89ba80d5b113ff6ea354" - }, { "path": "RandomDot.java", "sha256": "ea0ad9068e6bc875f94aaee7c5e15528c8409b4d4d0b3f819ae795a541cdb0bc" @@ -426,26 +330,10 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "ExampleSettings.class", - "sha256": "9ed58f7c1ffaade0add634819a1dd8308f7636632144b3a285815ce17c0b87d4" - }, - { - "path": "ExampleSettings.ctxt", - "sha256": "c9ddd1270673bc58cbf59167f9b5f39e680f16bb08f6ddd0f3319872937e0823" - }, { "path": "ExampleSettings.java", "sha256": "45cefc5bb42d659e1d077f6cb08d5a61b64b05d80fc65e8d71b8e4aad740b75d" }, - { - "path": "Saving.class", - "sha256": "b23649e8611ce04e037ec21761fac333edbafd74e01f90908be8d20f89a246f2" - }, - { - "path": "Saving.ctxt", - "sha256": "d87b7c8939e43df7044652428bc71292949d82bf3e1080a45719fe51c9a7b3c3" - }, { "path": "Saving.java", "sha256": "083c69f9950f753e83a21bc722b4d91bdf476d6bb5d73f41d939c27d4ff60ac6" @@ -482,38 +370,18 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "LightSprite.ctxt", - "sha256": "ae5012fbc67213f2cb843984467c3eab8cd203ede506a7bff3cc29aee2943743" - }, { "path": "LightSprite.java", "sha256": "3e8e37f53699f06e7d6c1e9838670b9a52f4eeab8289cabf94e5e7f86a5d2bd0" }, - { - "path": "MySprite.ctxt", - "sha256": "528b4e6b95dcdcbb7064d7a3867fedca6db69f968a4d3d6929506c67bfb0ded7" - }, { "path": "MySprite.java", "sha256": "fbc85f8ec07d603cc62e7fcf2d47a8eb1a9e6e17ccc60bab4508f6feab2ce60f" }, - { - "path": "MyStage.ctxt", - "sha256": "fb7fcc3280c829e9aee2eb6ea0f7fa9e2b098b7f2951749a492faff83c0aded4" - }, { "path": "MyStage.java", "sha256": "d4cfacd6f2749b5e703b3f2f6668d46f30340356d6787f629b744b833a7899a1" }, - { - "path": "MyWindow.ctxt", - "sha256": "48638300d8d294aaef715d2aa33a0057a13de7880d217a4c852c99aebe88c56c" - }, - { - "path": "NormalSprite.ctxt", - "sha256": "ce8686adf891caaab2d194fd31b4a29d34360f5202b45e871c3e47c86c045432" - }, { "path": "NormalSprite.java", "sha256": "e645c87cb21f235ad255eec06ca4558b019b5f9f773182b12d3bfc8df29ba612" @@ -598,50 +466,26 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "DNA.ctxt", - "sha256": "98794aa9e549f0edaeed468e530fd4cd55e99601b2a30713c35be97d2c2c5cf0" - }, { "path": "DNA.java", "sha256": "a032039dcd704fd3d7cabc8899cd3f94938aa74e767f0211560124612b38f59b" }, - { - "path": "Level.ctxt", - "sha256": "a048cdb9d29e029b5f6dec0ad60a050e336cdf11572195d92c25c71331ea0399" - }, { "path": "Level.java", "sha256": "6d65f2fda636d2f51f9184cfc87650491e0f31690cf374c9fff7ef6cfd48aa59" }, - { - "path": "Population.ctxt", - "sha256": "a5fd04c02b7c3f63c5a3e14a70073b743ef60187b2f725ecab8f6046ec38fe37" - }, { "path": "Population.java", "sha256": "eb21b9da4d7c03a1e6b8b5042a7d48ec5d16c80417915d80710d9ef011df7203" }, - { - "path": "Rocket.ctxt", - "sha256": "42435a32b0244f81eadc863452dffc7bbe18be9bf74fc58da1aee46825a9686b" - }, { "path": "Rocket.java", "sha256": "a6245304fc1ae2d9824e5c325ff2dcc697e61eb498d8808df165836ad46514b8" }, - { - "path": "SmartRocket.ctxt", - "sha256": "16a36a50aafe1b7ada036a7b9e61354aafb0423677ba0c5626ed05265f12f4dc" - }, { "path": "SmartRocket.java", "sha256": "865b4f7ecd65133e52d9e00d0a94ef248eee2ce1462af6109ca307d4aaaff9be" }, - { - "path": "Ziel.ctxt", - "sha256": "37e64e2c172d4e8263b83b0b603d94e200f47cd38496d28c0c4300b8079e452f" - }, { "path": "Ziel.java", "sha256": "e82ad1e3accf297c08135a588a3765e270857dc76ff70df91751f79321cc71f5" @@ -664,34 +508,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "Character$1.class", - "sha256": "c54b3302c596103fbb7c10ff55575d27278e6df2d0a7c26fde7fab8a6b6cee43" - }, - { - "path": "Character.class", - "sha256": "2d20a2d119b2a2b31e395a16c61d3af8f80ea0559deb86fb4b2e8b7aba001c0d" - }, - { - "path": "Character.ctxt", - "sha256": "2d221a16e536712cdd95b8772539e5ca0ceb203aa1b12b123ccac427780e70da" - }, - { - "path": "CharacterState.class", - "sha256": "850c11afb05ad164fa316d2edfad7478ff36d5d865a159c8702e3cff0e13af4f" - }, - { - "path": "CharacterState.ctxt", - "sha256": "7b6d2b9e8f1ba867699553cc6b946185eee057d3e8d07316df78bcfd64730a2e" - }, - { - "path": "Dino.class", - "sha256": "9a4f79cb8e642b3dae71afc717fb98ca9ff00d54761567747257cfcce8370d47" - }, - { - "path": "Dino.ctxt", - "sha256": "ebfd59731c6410ab84c229bc2ed240fdf9d781e0c3b092e8d36d8b08d0bcf9f4" - }, { "path": "Dino.java", "sha256": "d65f08c55ec15351ff77d625e3d8797d12dc24e877ea7dfe2c05ba576153c7d1" @@ -704,38 +520,14 @@ "path": "FigureState.java", "sha256": "5dcedf8f434d2d16809700a117377e7a527feecc48c4267d61206c2c0cf72a69" }, - { - "path": "Knight.class", - "sha256": "eff5f2da50488896b663e4fd1895a60766bddea06b82988e19f09c83138498c7" - }, - { - "path": "Knight.ctxt", - "sha256": "b99051a2ba771b2ec034ec583f18a56f9263c1b5a1980b58ce9a4c1b86adf060" - }, { "path": "Knight.java", "sha256": "5984f9ce9d6ce09247f0b5ae45b752e809e7fe1bffdf0a0f2b468cd2360470f3" }, - { - "path": "Ninja.class", - "sha256": "d3b1c73c1efe9839fbe8105a2ca3251356f228e2cd97f3e096716c2622891216" - }, - { - "path": "Ninja.ctxt", - "sha256": "f52f8ff8464b4abe32573730ea4adc43471e20a4c707e1ff99f01233df024be3" - }, { "path": "Ninja.java", "sha256": "cf6cf2d953366cd7b11c186a1fe01103788a2c9ad221c9ad58531ba402e9dbb5" }, - { - "path": "StressTest.class", - "sha256": "42bc2bf49062b8fe6d78db099858c0c4381338b06a3a43f353ababa8591e9896" - }, - { - "path": "StressTest.ctxt", - "sha256": "390de6aefa294d1cb9d2b405ed8d39b1f239d5a0b4aac273c20f375615083ee6" - }, { "path": "StressTest.java", "sha256": "e8566d3630cd0b6767c5fab6d4e774bd8d3d857fbd4a0f6517f4dcf36fba9bf4" @@ -1116,74 +908,26 @@ "platformer" ], "files": [ - { - "path": "Bamboo.class", - "sha256": "c26b6f104820f8af4a28b7c584ce5e3c2a75391779fbe1ea81f5b0061c115af9" - }, - { - "path": "Bamboo.ctxt", - "sha256": "2a39143d1cf20a56edbcdeb1b8cbf854a6a1cd5f5ffcd541bb69cc727fd85413" - }, { "path": "Bamboo.java", "sha256": "46ec44f8d28c5a0eaec1fb30f5c42d35ed9b6962b75a9c08105f770e4ee2df08" }, - { - "path": "Enemy.class", - "sha256": "8c299d6a3c10413bbba0dbbfa3117fb8a3e3692eb9d5ff16193706512842867e" - }, - { - "path": "Enemy.ctxt", - "sha256": "04c8b38d50c18e54af9910661234395c755647c3abe112b7efd31968c4eea226" - }, { "path": "Enemy.java", "sha256": "936060f67fbea9d35ce80ea0c829c120b7863eca6d775d97aea9fd5b7b7365cf" }, - { - "path": "Fireball.class", - "sha256": "9295f82784260315454e89e833d3026722a73e7e8c8c66bff92968d84e9f050f" - }, - { - "path": "Fireball.ctxt", - "sha256": "a1c973e135a1b16087b5c274e57b9889ea3608209929261e1faf90f28545689a" - }, { "path": "Fireball.java", "sha256": "9064b7fc0b8f286026ed08125db9c5b4fb77bc15c7add1dc51760732e346ecb2" }, - { - "path": "GameState.class", - "sha256": "733989ae6ce95a5cd213c8e054479b75d6cb659ce22534907ef5e54f178bd7a0" - }, - { - "path": "GameState.ctxt", - "sha256": "dbb84dad708d630c1742ea7db99de5969e8f8f60b0c02070a874f73f954365dc" - }, { "path": "GameState.java", "sha256": "816c40b0209a5f9dafd418e98238cb1d1f3296998e33b2e5eb397cc1a3be88ae" }, - { - "path": "I18n.class", - "sha256": "a4d0a154874b6272dd68c86f50f5e6fe7c3cad9b91936118bd1ed0780416d87f" - }, - { - "path": "I18n.ctxt", - "sha256": "60c0ee8f6d6db7e07f6285c40639dffd399a90cc4d70c9ae66a24556e745f505" - }, { "path": "I18n.java", "sha256": "c430cf0eb4d31e17a702971553b6f6bc629085fd197d7ac3bb3444a683920e55" }, - { - "path": "Item.class", - "sha256": "1143e34a6338a38fb2e06fb68e8d0eb385301cf2eaf89cf670c6b98edc2541a9" - }, - { - "path": "Item.ctxt", - "sha256": "6ba89206c1707eb33b0096dcbbcf3c2fce18c964ed89d8c4f20debcc5d4904c6" - }, { "path": "Item.java", "sha256": "17b9d7b4679d4ffd6f66d0ea0a83cb6e4fb8674b05e0091347bec523add6e276" @@ -1196,26 +940,10 @@ "path": "Level2.tmx", "sha256": "d3d104297fd78a7c1c85699d295b645ae21b7c8ff0ff0d9e11d556aca88641e3" }, - { - "path": "Player.class", - "sha256": "495c890aeff50f812eb2c322ce793717e01dee09ba6ae91ea9c56c10a14337e5" - }, - { - "path": "Player.ctxt", - "sha256": "e96a1822d023b73fe3e7360e15793ad9b5a8375af898fad8905c05f4d59a54db" - }, { "path": "Player.java", "sha256": "8731b294011650eb0f9f8e89562a820972c0a0457de6c2e21a73a5560310cc74" }, - { - "path": "Tiled.class", - "sha256": "ed1dffc627fd2dd3c4e39d00ef788b881397390f11ddc97642399aa9292f5271" - }, - { - "path": "Tiled.ctxt", - "sha256": "ca7d54283b0c374cdd2c95f27fb82b64280c5da3ea3acdeb0f46fa679db94e0e" - }, { "path": "Tiled.java", "sha256": "97c8631d9f363d1939987c86353cb2e34a4e530187fc93231864ba7a8a5bf5d3" @@ -1224,50 +952,18 @@ "path": "UIItem.java", "sha256": "f1177f7cfd7c7147ed3ef2e10b475c53c5de228c8ba2ab118bd9058563c17479" }, - { - "path": "Wall.class", - "sha256": "7673195e6d30d0706583a98faeade7f6c0e64f6b9d2fd16bde130e2fbb8bcf0f" - }, - { - "path": "Wall.ctxt", - "sha256": "68d498fd9b3b2e81b3294aa50951ee9bd8866f4ada25e503badbcb844da84ae7" - }, { "path": "Wall.java", "sha256": "b226bdddba1cc32e7ccabbe3c686161a2b04060acff79b769c34f6af53487bb0" }, - { - "path": "Warp.class", - "sha256": "13bddf0b6ed387b51f2ceea6d1abe5ed05921867cbf1b92bb795395603d63233" - }, - { - "path": "Warp.ctxt", - "sha256": "103c797aaf7c290b62e01b4ccea36e0f8193d9ac9b30d67fc47133c5b322301c" - }, { "path": "Warp.java", "sha256": "5749bb006f674e1a3aab8c3bb14933dd517edadb4ab1a38d213e7040c9791eab" }, - { - "path": "Water.class", - "sha256": "1ed25c488dedb5ba53394aec075e1fdd82e0039ef0f132ee84790497754170b9" - }, - { - "path": "Water.ctxt", - "sha256": "2ff25af7e4be086febc0986f6f777cafdabbfbb81ec0966fa0965e7514a3624c" - }, { "path": "Water.java", "sha256": "aee560ddb396dd81e10d84dfa4769b31dbf3cd8433955068886c436581c03b17" }, - { - "path": "World.class", - "sha256": "993ca3729bd777ad7acec0f648c41c30b8d40a42b94a1584bff5c62f411ea71d" - }, - { - "path": "World.ctxt", - "sha256": "2f2969200a5664660259551bd4ee40aa6a523d8aa5c898c5916da50e2cf9808f" - }, { "path": "World.java", "sha256": "3f0965034fd75e1d6c16501172bd72e53566b1dd8894cd7e8f46cf53ef7576a9" diff --git a/docs/public/catalogs/examples.json b/docs/public/catalogs/examples.json index e19b47bf..602e19a8 100644 --- a/docs/public/catalogs/examples.json +++ b/docs/public/catalogs/examples.json @@ -11,10 +11,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "CatSketch.ctxt", - "sha256": "f0425f9eda65280859247b795144aa7570088d0c95635b7ac4d8f21a494a5282" - }, { "path": "CatSketch.java", "sha256": "720ccf8f24d9c87beaf05c0e130dee65da5c8e2a31d98352a21ea319577df3ea" @@ -83,22 +79,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "Clock.class", - "sha256": "e2385a27deb9148840fd3970d3eebc1afe9435ccac77d267e768263e92c7d0b6" - }, - { - "path": "Clock.ctxt", - "sha256": "a960e294f7621fb7227cc21a5bc5e761bd30b49afc2406a0b39b4bd4b710d9ea" - }, - { - "path": "ClockSprite.class", - "sha256": "d8b2710f3fa9c2bf05ce42bd37cb8345601e3c6212d20a33a076c8c3c6f1d25d" - }, - { - "path": "ClockSprite.ctxt", - "sha256": "e0fdbbe2e22df1af27e684de6846215e261693cf1f48357945ea5a67978473aa" - }, { "path": "ClockSprite.java", "sha256": "498b9a3b87b2863f054895e9cc4d668274f15e7b555cc82025e3715fc68dc79b" @@ -107,38 +87,14 @@ "path": "ClockStage.java", "sha256": "1b1a9a5cfbec16b86956258fad2e1243df6f8d70d20a9570a5152a513371577b" }, - { - "path": "HourHandSprite.class", - "sha256": "e42303dd06146e30882eefe6fa672cf087993441b9347acdd68d465370c72133" - }, - { - "path": "HourHandSprite.ctxt", - "sha256": "e4563507c584bd87322f84a7bb3aac369554eb8358ad5226d1b708350cf54add" - }, { "path": "HourHandSprite.java", "sha256": "afbdbddccfa8e4e2faa0e498d13d8175fb8ccca82f38a6792a9e7b4fe3e9e54b" }, - { - "path": "MinuteHandSprite.class", - "sha256": "69a6d94a87a4ee79eb1eeae4d77fa1417f916f57ff02eec415c3066e8b8ef3c5" - }, - { - "path": "MinuteHandSprite.ctxt", - "sha256": "c1c794edc010292c0271a543c16f7c8bbe380a189e5e74b8c7dede318a592914" - }, { "path": "MinuteHandSprite.java", "sha256": "654e62b72e7e03b1df52077eefac3b077894f1a64a9f2176c9b72c1fac32a6ef" }, - { - "path": "SecondHandSprite.class", - "sha256": "0eafa22bfa3e4635e5861972c84aa6e7f14f11bbc1f9db82647a95be749b9952" - }, - { - "path": "SecondHandSprite.ctxt", - "sha256": "ba3487ee3509b252d581a4984334ac1ffb85b7b1f8188eef5cb1987e4747bdf1" - }, { "path": "SecondHandSprite.java", "sha256": "1404a90a1da7fb355b662b7ae5d6d46c4b370d99ea4888cacc3be93e5bb653dd" @@ -202,74 +158,38 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "Background.ctxt", - "sha256": "928fffee1697b0af11be67b58f6b21913f484c87bb1b6e567436ec4327c8ce8a" - }, { "path": "Background.java", "sha256": "1309869222dd8488b6215aa09da058dfafc753d741584c73dfcd33e50a59adfe" }, - { - "path": "Donut.ctxt", - "sha256": "f43e48901fa8e514397d4ef9a2aa8ae68822546815012ca47195f7f6997e27f4" - }, { "path": "Donut.java", "sha256": "0b4f61e3f7d46d341c2002ebabe8f5039878c2ce189f0621880fa77bfcc71a41" }, - { - "path": "FollowDonut.ctxt", - "sha256": "041ce42c129381a457e1e6ffe9bc524fd0cfa1410f26ff96a15cd6494e66796b" - }, { "path": "FollowDonut.java", "sha256": "07e45838abc4aa1053b1b3cef7e85850924cbd668ff601c1691063e27875a136" }, - { - "path": "Game.ctxt", - "sha256": "32f617410e6cd0068706aafc86086cf4ae5ec7ca0f4e274db220f56d4ee7c762" - }, { "path": "Game.java", "sha256": "74d613db1055f1bbcdf4e90b26c7edeb971066be49614ef3b8f5036330649190" }, - { - "path": "GameOverStage.ctxt", - "sha256": "3b56ea634fcbda7cb669f9e41a7dfd2cd29decbd8b043ec7593a9d860c0ea26d" - }, { "path": "GameOverStage.java", "sha256": "913c81a99e0a8f3b92c8c7bf8889def04cd765a3ec563fdbba9057a45cfc5ab6" }, - { - "path": "PlayerDonut.ctxt", - "sha256": "8a21359b0e1b2fde96c7e335146bbb2e04a5da4139bf5b9391f6fbba7c54e0d5" - }, { "path": "PlayerDonut.java", "sha256": "dbb1026901d854e2c728ecec7f8d49d83e31e75db93c56a755f7d0d93a9bed97" }, - { - "path": "StartStage.ctxt", - "sha256": "cc4e75d1c25e1d9e5728c2a582fa1fef347902811a3a391f41bafbe410a63b84" - }, { "path": "StartStage.java", "sha256": "f8419017ad70bb40949a78b17888188b091e57f347898ca495a6dc80c649c896" }, - { - "path": "WinStage.ctxt", - "sha256": "ddc4334a25724a3df7c614643591d09c9058763b65ce9e9e175eff8e0e3c4b6f" - }, { "path": "WinStage.java", "sha256": "c4c9fa066d10fc19215d56763ec5a67e09f296764dc1f1d57c7023dda269e86f" }, - { - "path": "WorldStage.ctxt", - "sha256": "8588835d2b413a0e603786d8c1bb55b0600836208bb916eabd99337a6c9b1b96" - }, { "path": "WorldStage.java", "sha256": "2143d816a12266a4a1f3cf244e1ecc42201275718187975002499777396817d1" @@ -313,18 +233,10 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "PenSprite.ctxt", - "sha256": "04b2796df4f437a74936fee3614e5cb54f896b266db1028c7723802283a6cc69" - }, { "path": "PenSprite.java", "sha256": "d582f5bc29738b2d69f9433c4b7a40b9fae7d6451b8f938fba2768b028a9b736" }, - { - "path": "Pipes.ctxt", - "sha256": "0ad6a99a6b2b6c5641ef9e6a744240851853eadc5d9bc234c711e91184585611" - }, { "path": "Pipes.java", "sha256": "3026f03ca92b00776cccd363d0dafa2e15801dc6578279b0c4cc1ca508c155d1" @@ -368,10 +280,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "RainbowVine.ctxt", - "sha256": "893b65df4e627e0e41fe61c83451a4cf9fb9e309aed93db3164c3c28a169fabd" - }, { "path": "RainbowVine.java", "sha256": "a6fc438d97c957b62e0499fb63fbdd970cab0abd744374049158f233693593bb" @@ -386,10 +294,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "RandomDot.ctxt", - "sha256": "4ae975d6ed03fa370334ddc03c86924b1f8bbdb488bd89ba80d5b113ff6ea354" - }, { "path": "RandomDot.java", "sha256": "ea0ad9068e6bc875f94aaee7c5e15528c8409b4d4d0b3f819ae795a541cdb0bc" @@ -426,26 +330,10 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "ExampleSettings.class", - "sha256": "9ed58f7c1ffaade0add634819a1dd8308f7636632144b3a285815ce17c0b87d4" - }, - { - "path": "ExampleSettings.ctxt", - "sha256": "c9ddd1270673bc58cbf59167f9b5f39e680f16bb08f6ddd0f3319872937e0823" - }, { "path": "ExampleSettings.java", "sha256": "45cefc5bb42d659e1d077f6cb08d5a61b64b05d80fc65e8d71b8e4aad740b75d" }, - { - "path": "Saving.class", - "sha256": "b23649e8611ce04e037ec21761fac333edbafd74e01f90908be8d20f89a246f2" - }, - { - "path": "Saving.ctxt", - "sha256": "d87b7c8939e43df7044652428bc71292949d82bf3e1080a45719fe51c9a7b3c3" - }, { "path": "Saving.java", "sha256": "083c69f9950f753e83a21bc722b4d91bdf476d6bb5d73f41d939c27d4ff60ac6" @@ -482,38 +370,18 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "LightSprite.ctxt", - "sha256": "ae5012fbc67213f2cb843984467c3eab8cd203ede506a7bff3cc29aee2943743" - }, { "path": "LightSprite.java", "sha256": "3e8e37f53699f06e7d6c1e9838670b9a52f4eeab8289cabf94e5e7f86a5d2bd0" }, - { - "path": "MySprite.ctxt", - "sha256": "528b4e6b95dcdcbb7064d7a3867fedca6db69f968a4d3d6929506c67bfb0ded7" - }, { "path": "MySprite.java", "sha256": "fbc85f8ec07d603cc62e7fcf2d47a8eb1a9e6e17ccc60bab4508f6feab2ce60f" }, - { - "path": "MyStage.ctxt", - "sha256": "fb7fcc3280c829e9aee2eb6ea0f7fa9e2b098b7f2951749a492faff83c0aded4" - }, { "path": "MyStage.java", "sha256": "d4cfacd6f2749b5e703b3f2f6668d46f30340356d6787f629b744b833a7899a1" }, - { - "path": "MyWindow.ctxt", - "sha256": "48638300d8d294aaef715d2aa33a0057a13de7880d217a4c852c99aebe88c56c" - }, - { - "path": "NormalSprite.ctxt", - "sha256": "ce8686adf891caaab2d194fd31b4a29d34360f5202b45e871c3e47c86c045432" - }, { "path": "NormalSprite.java", "sha256": "e645c87cb21f235ad255eec06ca4558b019b5f9f773182b12d3bfc8df29ba612" @@ -598,50 +466,26 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "DNA.ctxt", - "sha256": "98794aa9e549f0edaeed468e530fd4cd55e99601b2a30713c35be97d2c2c5cf0" - }, { "path": "DNA.java", "sha256": "a032039dcd704fd3d7cabc8899cd3f94938aa74e767f0211560124612b38f59b" }, - { - "path": "Level.ctxt", - "sha256": "a048cdb9d29e029b5f6dec0ad60a050e336cdf11572195d92c25c71331ea0399" - }, { "path": "Level.java", "sha256": "6d65f2fda636d2f51f9184cfc87650491e0f31690cf374c9fff7ef6cfd48aa59" }, - { - "path": "Population.ctxt", - "sha256": "a5fd04c02b7c3f63c5a3e14a70073b743ef60187b2f725ecab8f6046ec38fe37" - }, { "path": "Population.java", "sha256": "eb21b9da4d7c03a1e6b8b5042a7d48ec5d16c80417915d80710d9ef011df7203" }, - { - "path": "Rocket.ctxt", - "sha256": "42435a32b0244f81eadc863452dffc7bbe18be9bf74fc58da1aee46825a9686b" - }, { "path": "Rocket.java", "sha256": "a6245304fc1ae2d9824e5c325ff2dcc697e61eb498d8808df165836ad46514b8" }, - { - "path": "SmartRocket.ctxt", - "sha256": "16a36a50aafe1b7ada036a7b9e61354aafb0423677ba0c5626ed05265f12f4dc" - }, { "path": "SmartRocket.java", "sha256": "865b4f7ecd65133e52d9e00d0a94ef248eee2ce1462af6109ca307d4aaaff9be" }, - { - "path": "Ziel.ctxt", - "sha256": "37e64e2c172d4e8263b83b0b603d94e200f47cd38496d28c0c4300b8079e452f" - }, { "path": "Ziel.java", "sha256": "e82ad1e3accf297c08135a588a3765e270857dc76ff70df91751f79321cc71f5" @@ -664,34 +508,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "Character$1.class", - "sha256": "c54b3302c596103fbb7c10ff55575d27278e6df2d0a7c26fde7fab8a6b6cee43" - }, - { - "path": "Character.class", - "sha256": "2d20a2d119b2a2b31e395a16c61d3af8f80ea0559deb86fb4b2e8b7aba001c0d" - }, - { - "path": "Character.ctxt", - "sha256": "2d221a16e536712cdd95b8772539e5ca0ceb203aa1b12b123ccac427780e70da" - }, - { - "path": "CharacterState.class", - "sha256": "850c11afb05ad164fa316d2edfad7478ff36d5d865a159c8702e3cff0e13af4f" - }, - { - "path": "CharacterState.ctxt", - "sha256": "7b6d2b9e8f1ba867699553cc6b946185eee057d3e8d07316df78bcfd64730a2e" - }, - { - "path": "Dino.class", - "sha256": "9a4f79cb8e642b3dae71afc717fb98ca9ff00d54761567747257cfcce8370d47" - }, - { - "path": "Dino.ctxt", - "sha256": "ebfd59731c6410ab84c229bc2ed240fdf9d781e0c3b092e8d36d8b08d0bcf9f4" - }, { "path": "Dino.java", "sha256": "d65f08c55ec15351ff77d625e3d8797d12dc24e877ea7dfe2c05ba576153c7d1" @@ -704,38 +520,14 @@ "path": "FigureState.java", "sha256": "5dcedf8f434d2d16809700a117377e7a527feecc48c4267d61206c2c0cf72a69" }, - { - "path": "Knight.class", - "sha256": "eff5f2da50488896b663e4fd1895a60766bddea06b82988e19f09c83138498c7" - }, - { - "path": "Knight.ctxt", - "sha256": "b99051a2ba771b2ec034ec583f18a56f9263c1b5a1980b58ce9a4c1b86adf060" - }, { "path": "Knight.java", "sha256": "5984f9ce9d6ce09247f0b5ae45b752e809e7fe1bffdf0a0f2b468cd2360470f3" }, - { - "path": "Ninja.class", - "sha256": "d3b1c73c1efe9839fbe8105a2ca3251356f228e2cd97f3e096716c2622891216" - }, - { - "path": "Ninja.ctxt", - "sha256": "f52f8ff8464b4abe32573730ea4adc43471e20a4c707e1ff99f01233df024be3" - }, { "path": "Ninja.java", "sha256": "cf6cf2d953366cd7b11c186a1fe01103788a2c9ad221c9ad58531ba402e9dbb5" }, - { - "path": "StressTest.class", - "sha256": "42bc2bf49062b8fe6d78db099858c0c4381338b06a3a43f353ababa8591e9896" - }, - { - "path": "StressTest.ctxt", - "sha256": "390de6aefa294d1cb9d2b405ed8d39b1f239d5a0b4aac273c20f375615083ee6" - }, { "path": "StressTest.java", "sha256": "e8566d3630cd0b6767c5fab6d4e774bd8d3d857fbd4a0f6517f4dcf36fba9bf4" @@ -1116,74 +908,26 @@ "platformer" ], "files": [ - { - "path": "Bamboo.class", - "sha256": "c26b6f104820f8af4a28b7c584ce5e3c2a75391779fbe1ea81f5b0061c115af9" - }, - { - "path": "Bamboo.ctxt", - "sha256": "2a39143d1cf20a56edbcdeb1b8cbf854a6a1cd5f5ffcd541bb69cc727fd85413" - }, { "path": "Bamboo.java", "sha256": "46ec44f8d28c5a0eaec1fb30f5c42d35ed9b6962b75a9c08105f770e4ee2df08" }, - { - "path": "Enemy.class", - "sha256": "8c299d6a3c10413bbba0dbbfa3117fb8a3e3692eb9d5ff16193706512842867e" - }, - { - "path": "Enemy.ctxt", - "sha256": "04c8b38d50c18e54af9910661234395c755647c3abe112b7efd31968c4eea226" - }, { "path": "Enemy.java", "sha256": "936060f67fbea9d35ce80ea0c829c120b7863eca6d775d97aea9fd5b7b7365cf" }, - { - "path": "Fireball.class", - "sha256": "9295f82784260315454e89e833d3026722a73e7e8c8c66bff92968d84e9f050f" - }, - { - "path": "Fireball.ctxt", - "sha256": "a1c973e135a1b16087b5c274e57b9889ea3608209929261e1faf90f28545689a" - }, { "path": "Fireball.java", "sha256": "9064b7fc0b8f286026ed08125db9c5b4fb77bc15c7add1dc51760732e346ecb2" }, - { - "path": "GameState.class", - "sha256": "733989ae6ce95a5cd213c8e054479b75d6cb659ce22534907ef5e54f178bd7a0" - }, - { - "path": "GameState.ctxt", - "sha256": "dbb84dad708d630c1742ea7db99de5969e8f8f60b0c02070a874f73f954365dc" - }, { "path": "GameState.java", "sha256": "816c40b0209a5f9dafd418e98238cb1d1f3296998e33b2e5eb397cc1a3be88ae" }, - { - "path": "I18n.class", - "sha256": "a4d0a154874b6272dd68c86f50f5e6fe7c3cad9b91936118bd1ed0780416d87f" - }, - { - "path": "I18n.ctxt", - "sha256": "60c0ee8f6d6db7e07f6285c40639dffd399a90cc4d70c9ae66a24556e745f505" - }, { "path": "I18n.java", "sha256": "c430cf0eb4d31e17a702971553b6f6bc629085fd197d7ac3bb3444a683920e55" }, - { - "path": "Item.class", - "sha256": "1143e34a6338a38fb2e06fb68e8d0eb385301cf2eaf89cf670c6b98edc2541a9" - }, - { - "path": "Item.ctxt", - "sha256": "6ba89206c1707eb33b0096dcbbcf3c2fce18c964ed89d8c4f20debcc5d4904c6" - }, { "path": "Item.java", "sha256": "17b9d7b4679d4ffd6f66d0ea0a83cb6e4fb8674b05e0091347bec523add6e276" @@ -1196,26 +940,10 @@ "path": "Level2.tmx", "sha256": "d3d104297fd78a7c1c85699d295b645ae21b7c8ff0ff0d9e11d556aca88641e3" }, - { - "path": "Player.class", - "sha256": "495c890aeff50f812eb2c322ce793717e01dee09ba6ae91ea9c56c10a14337e5" - }, - { - "path": "Player.ctxt", - "sha256": "e96a1822d023b73fe3e7360e15793ad9b5a8375af898fad8905c05f4d59a54db" - }, { "path": "Player.java", "sha256": "8731b294011650eb0f9f8e89562a820972c0a0457de6c2e21a73a5560310cc74" }, - { - "path": "Tiled.class", - "sha256": "ed1dffc627fd2dd3c4e39d00ef788b881397390f11ddc97642399aa9292f5271" - }, - { - "path": "Tiled.ctxt", - "sha256": "ca7d54283b0c374cdd2c95f27fb82b64280c5da3ea3acdeb0f46fa679db94e0e" - }, { "path": "Tiled.java", "sha256": "97c8631d9f363d1939987c86353cb2e34a4e530187fc93231864ba7a8a5bf5d3" @@ -1224,50 +952,18 @@ "path": "UIItem.java", "sha256": "f1177f7cfd7c7147ed3ef2e10b475c53c5de228c8ba2ab118bd9058563c17479" }, - { - "path": "Wall.class", - "sha256": "7673195e6d30d0706583a98faeade7f6c0e64f6b9d2fd16bde130e2fbb8bcf0f" - }, - { - "path": "Wall.ctxt", - "sha256": "68d498fd9b3b2e81b3294aa50951ee9bd8866f4ada25e503badbcb844da84ae7" - }, { "path": "Wall.java", "sha256": "b226bdddba1cc32e7ccabbe3c686161a2b04060acff79b769c34f6af53487bb0" }, - { - "path": "Warp.class", - "sha256": "13bddf0b6ed387b51f2ceea6d1abe5ed05921867cbf1b92bb795395603d63233" - }, - { - "path": "Warp.ctxt", - "sha256": "103c797aaf7c290b62e01b4ccea36e0f8193d9ac9b30d67fc47133c5b322301c" - }, { "path": "Warp.java", "sha256": "5749bb006f674e1a3aab8c3bb14933dd517edadb4ab1a38d213e7040c9791eab" }, - { - "path": "Water.class", - "sha256": "1ed25c488dedb5ba53394aec075e1fdd82e0039ef0f132ee84790497754170b9" - }, - { - "path": "Water.ctxt", - "sha256": "2ff25af7e4be086febc0986f6f777cafdabbfbb81ec0966fa0965e7514a3624c" - }, { "path": "Water.java", "sha256": "aee560ddb396dd81e10d84dfa4769b31dbf3cd8433955068886c436581c03b17" }, - { - "path": "World.class", - "sha256": "993ca3729bd777ad7acec0f648c41c30b8d40a42b94a1584bff5c62f411ea71d" - }, - { - "path": "World.ctxt", - "sha256": "2f2969200a5664660259551bd4ee40aa6a523d8aa5c898c5916da50e2cf9808f" - }, { "path": "World.java", "sha256": "3f0965034fd75e1d6c16501172bd72e53566b1dd8894cd7e8f46cf53ef7576a9" diff --git a/scripts/release-catalogs.py b/scripts/release-catalogs.py index 62871012..6b6a0777 100644 --- a/scripts/release-catalogs.py +++ b/scripts/release-catalogs.py @@ -147,6 +147,7 @@ def generate(translations): if not project.is_dir() or not list(project.glob("*.java")): continue files = [p for p in sorted(project.rglob("*")) if p.is_file() + and p.suffix not in {".class", ".ctxt"} and p.name != ".DS_Store" and not any(part in {"+libs", ".git", "target", ".scratch4j"} for part in p.relative_to(project).parts)] examples.append({"id": kind + "/" + project.name, "kind": kind, "source": project.relative_to(ROOT).as_posix(), diff --git a/src/main/resources/catalogs/examples.json b/src/main/resources/catalogs/examples.json index e19b47bf..602e19a8 100644 --- a/src/main/resources/catalogs/examples.json +++ b/src/main/resources/catalogs/examples.json @@ -11,10 +11,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "CatSketch.ctxt", - "sha256": "f0425f9eda65280859247b795144aa7570088d0c95635b7ac4d8f21a494a5282" - }, { "path": "CatSketch.java", "sha256": "720ccf8f24d9c87beaf05c0e130dee65da5c8e2a31d98352a21ea319577df3ea" @@ -83,22 +79,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "Clock.class", - "sha256": "e2385a27deb9148840fd3970d3eebc1afe9435ccac77d267e768263e92c7d0b6" - }, - { - "path": "Clock.ctxt", - "sha256": "a960e294f7621fb7227cc21a5bc5e761bd30b49afc2406a0b39b4bd4b710d9ea" - }, - { - "path": "ClockSprite.class", - "sha256": "d8b2710f3fa9c2bf05ce42bd37cb8345601e3c6212d20a33a076c8c3c6f1d25d" - }, - { - "path": "ClockSprite.ctxt", - "sha256": "e0fdbbe2e22df1af27e684de6846215e261693cf1f48357945ea5a67978473aa" - }, { "path": "ClockSprite.java", "sha256": "498b9a3b87b2863f054895e9cc4d668274f15e7b555cc82025e3715fc68dc79b" @@ -107,38 +87,14 @@ "path": "ClockStage.java", "sha256": "1b1a9a5cfbec16b86956258fad2e1243df6f8d70d20a9570a5152a513371577b" }, - { - "path": "HourHandSprite.class", - "sha256": "e42303dd06146e30882eefe6fa672cf087993441b9347acdd68d465370c72133" - }, - { - "path": "HourHandSprite.ctxt", - "sha256": "e4563507c584bd87322f84a7bb3aac369554eb8358ad5226d1b708350cf54add" - }, { "path": "HourHandSprite.java", "sha256": "afbdbddccfa8e4e2faa0e498d13d8175fb8ccca82f38a6792a9e7b4fe3e9e54b" }, - { - "path": "MinuteHandSprite.class", - "sha256": "69a6d94a87a4ee79eb1eeae4d77fa1417f916f57ff02eec415c3066e8b8ef3c5" - }, - { - "path": "MinuteHandSprite.ctxt", - "sha256": "c1c794edc010292c0271a543c16f7c8bbe380a189e5e74b8c7dede318a592914" - }, { "path": "MinuteHandSprite.java", "sha256": "654e62b72e7e03b1df52077eefac3b077894f1a64a9f2176c9b72c1fac32a6ef" }, - { - "path": "SecondHandSprite.class", - "sha256": "0eafa22bfa3e4635e5861972c84aa6e7f14f11bbc1f9db82647a95be749b9952" - }, - { - "path": "SecondHandSprite.ctxt", - "sha256": "ba3487ee3509b252d581a4984334ac1ffb85b7b1f8188eef5cb1987e4747bdf1" - }, { "path": "SecondHandSprite.java", "sha256": "1404a90a1da7fb355b662b7ae5d6d46c4b370d99ea4888cacc3be93e5bb653dd" @@ -202,74 +158,38 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "Background.ctxt", - "sha256": "928fffee1697b0af11be67b58f6b21913f484c87bb1b6e567436ec4327c8ce8a" - }, { "path": "Background.java", "sha256": "1309869222dd8488b6215aa09da058dfafc753d741584c73dfcd33e50a59adfe" }, - { - "path": "Donut.ctxt", - "sha256": "f43e48901fa8e514397d4ef9a2aa8ae68822546815012ca47195f7f6997e27f4" - }, { "path": "Donut.java", "sha256": "0b4f61e3f7d46d341c2002ebabe8f5039878c2ce189f0621880fa77bfcc71a41" }, - { - "path": "FollowDonut.ctxt", - "sha256": "041ce42c129381a457e1e6ffe9bc524fd0cfa1410f26ff96a15cd6494e66796b" - }, { "path": "FollowDonut.java", "sha256": "07e45838abc4aa1053b1b3cef7e85850924cbd668ff601c1691063e27875a136" }, - { - "path": "Game.ctxt", - "sha256": "32f617410e6cd0068706aafc86086cf4ae5ec7ca0f4e274db220f56d4ee7c762" - }, { "path": "Game.java", "sha256": "74d613db1055f1bbcdf4e90b26c7edeb971066be49614ef3b8f5036330649190" }, - { - "path": "GameOverStage.ctxt", - "sha256": "3b56ea634fcbda7cb669f9e41a7dfd2cd29decbd8b043ec7593a9d860c0ea26d" - }, { "path": "GameOverStage.java", "sha256": "913c81a99e0a8f3b92c8c7bf8889def04cd765a3ec563fdbba9057a45cfc5ab6" }, - { - "path": "PlayerDonut.ctxt", - "sha256": "8a21359b0e1b2fde96c7e335146bbb2e04a5da4139bf5b9391f6fbba7c54e0d5" - }, { "path": "PlayerDonut.java", "sha256": "dbb1026901d854e2c728ecec7f8d49d83e31e75db93c56a755f7d0d93a9bed97" }, - { - "path": "StartStage.ctxt", - "sha256": "cc4e75d1c25e1d9e5728c2a582fa1fef347902811a3a391f41bafbe410a63b84" - }, { "path": "StartStage.java", "sha256": "f8419017ad70bb40949a78b17888188b091e57f347898ca495a6dc80c649c896" }, - { - "path": "WinStage.ctxt", - "sha256": "ddc4334a25724a3df7c614643591d09c9058763b65ce9e9e175eff8e0e3c4b6f" - }, { "path": "WinStage.java", "sha256": "c4c9fa066d10fc19215d56763ec5a67e09f296764dc1f1d57c7023dda269e86f" }, - { - "path": "WorldStage.ctxt", - "sha256": "8588835d2b413a0e603786d8c1bb55b0600836208bb916eabd99337a6c9b1b96" - }, { "path": "WorldStage.java", "sha256": "2143d816a12266a4a1f3cf244e1ecc42201275718187975002499777396817d1" @@ -313,18 +233,10 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "PenSprite.ctxt", - "sha256": "04b2796df4f437a74936fee3614e5cb54f896b266db1028c7723802283a6cc69" - }, { "path": "PenSprite.java", "sha256": "d582f5bc29738b2d69f9433c4b7a40b9fae7d6451b8f938fba2768b028a9b736" }, - { - "path": "Pipes.ctxt", - "sha256": "0ad6a99a6b2b6c5641ef9e6a744240851853eadc5d9bc234c711e91184585611" - }, { "path": "Pipes.java", "sha256": "3026f03ca92b00776cccd363d0dafa2e15801dc6578279b0c4cc1ca508c155d1" @@ -368,10 +280,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "RainbowVine.ctxt", - "sha256": "893b65df4e627e0e41fe61c83451a4cf9fb9e309aed93db3164c3c28a169fabd" - }, { "path": "RainbowVine.java", "sha256": "a6fc438d97c957b62e0499fb63fbdd970cab0abd744374049158f233693593bb" @@ -386,10 +294,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "RandomDot.ctxt", - "sha256": "4ae975d6ed03fa370334ddc03c86924b1f8bbdb488bd89ba80d5b113ff6ea354" - }, { "path": "RandomDot.java", "sha256": "ea0ad9068e6bc875f94aaee7c5e15528c8409b4d4d0b3f819ae795a541cdb0bc" @@ -426,26 +330,10 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "ExampleSettings.class", - "sha256": "9ed58f7c1ffaade0add634819a1dd8308f7636632144b3a285815ce17c0b87d4" - }, - { - "path": "ExampleSettings.ctxt", - "sha256": "c9ddd1270673bc58cbf59167f9b5f39e680f16bb08f6ddd0f3319872937e0823" - }, { "path": "ExampleSettings.java", "sha256": "45cefc5bb42d659e1d077f6cb08d5a61b64b05d80fc65e8d71b8e4aad740b75d" }, - { - "path": "Saving.class", - "sha256": "b23649e8611ce04e037ec21761fac333edbafd74e01f90908be8d20f89a246f2" - }, - { - "path": "Saving.ctxt", - "sha256": "d87b7c8939e43df7044652428bc71292949d82bf3e1080a45719fe51c9a7b3c3" - }, { "path": "Saving.java", "sha256": "083c69f9950f753e83a21bc722b4d91bdf476d6bb5d73f41d939c27d4ff60ac6" @@ -482,38 +370,18 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "LightSprite.ctxt", - "sha256": "ae5012fbc67213f2cb843984467c3eab8cd203ede506a7bff3cc29aee2943743" - }, { "path": "LightSprite.java", "sha256": "3e8e37f53699f06e7d6c1e9838670b9a52f4eeab8289cabf94e5e7f86a5d2bd0" }, - { - "path": "MySprite.ctxt", - "sha256": "528b4e6b95dcdcbb7064d7a3867fedca6db69f968a4d3d6929506c67bfb0ded7" - }, { "path": "MySprite.java", "sha256": "fbc85f8ec07d603cc62e7fcf2d47a8eb1a9e6e17ccc60bab4508f6feab2ce60f" }, - { - "path": "MyStage.ctxt", - "sha256": "fb7fcc3280c829e9aee2eb6ea0f7fa9e2b098b7f2951749a492faff83c0aded4" - }, { "path": "MyStage.java", "sha256": "d4cfacd6f2749b5e703b3f2f6668d46f30340356d6787f629b744b833a7899a1" }, - { - "path": "MyWindow.ctxt", - "sha256": "48638300d8d294aaef715d2aa33a0057a13de7880d217a4c852c99aebe88c56c" - }, - { - "path": "NormalSprite.ctxt", - "sha256": "ce8686adf891caaab2d194fd31b4a29d34360f5202b45e871c3e47c86c045432" - }, { "path": "NormalSprite.java", "sha256": "e645c87cb21f235ad255eec06ca4558b019b5f9f773182b12d3bfc8df29ba612" @@ -598,50 +466,26 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "DNA.ctxt", - "sha256": "98794aa9e549f0edaeed468e530fd4cd55e99601b2a30713c35be97d2c2c5cf0" - }, { "path": "DNA.java", "sha256": "a032039dcd704fd3d7cabc8899cd3f94938aa74e767f0211560124612b38f59b" }, - { - "path": "Level.ctxt", - "sha256": "a048cdb9d29e029b5f6dec0ad60a050e336cdf11572195d92c25c71331ea0399" - }, { "path": "Level.java", "sha256": "6d65f2fda636d2f51f9184cfc87650491e0f31690cf374c9fff7ef6cfd48aa59" }, - { - "path": "Population.ctxt", - "sha256": "a5fd04c02b7c3f63c5a3e14a70073b743ef60187b2f725ecab8f6046ec38fe37" - }, { "path": "Population.java", "sha256": "eb21b9da4d7c03a1e6b8b5042a7d48ec5d16c80417915d80710d9ef011df7203" }, - { - "path": "Rocket.ctxt", - "sha256": "42435a32b0244f81eadc863452dffc7bbe18be9bf74fc58da1aee46825a9686b" - }, { "path": "Rocket.java", "sha256": "a6245304fc1ae2d9824e5c325ff2dcc697e61eb498d8808df165836ad46514b8" }, - { - "path": "SmartRocket.ctxt", - "sha256": "16a36a50aafe1b7ada036a7b9e61354aafb0423677ba0c5626ed05265f12f4dc" - }, { "path": "SmartRocket.java", "sha256": "865b4f7ecd65133e52d9e00d0a94ef248eee2ce1462af6109ca307d4aaaff9be" }, - { - "path": "Ziel.ctxt", - "sha256": "37e64e2c172d4e8263b83b0b603d94e200f47cd38496d28c0c4300b8079e452f" - }, { "path": "Ziel.java", "sha256": "e82ad1e3accf297c08135a588a3765e270857dc76ff70df91751f79321cc71f5" @@ -664,34 +508,6 @@ "flavour": "standard", "requiredSheets": [], "files": [ - { - "path": "Character$1.class", - "sha256": "c54b3302c596103fbb7c10ff55575d27278e6df2d0a7c26fde7fab8a6b6cee43" - }, - { - "path": "Character.class", - "sha256": "2d20a2d119b2a2b31e395a16c61d3af8f80ea0559deb86fb4b2e8b7aba001c0d" - }, - { - "path": "Character.ctxt", - "sha256": "2d221a16e536712cdd95b8772539e5ca0ceb203aa1b12b123ccac427780e70da" - }, - { - "path": "CharacterState.class", - "sha256": "850c11afb05ad164fa316d2edfad7478ff36d5d865a159c8702e3cff0e13af4f" - }, - { - "path": "CharacterState.ctxt", - "sha256": "7b6d2b9e8f1ba867699553cc6b946185eee057d3e8d07316df78bcfd64730a2e" - }, - { - "path": "Dino.class", - "sha256": "9a4f79cb8e642b3dae71afc717fb98ca9ff00d54761567747257cfcce8370d47" - }, - { - "path": "Dino.ctxt", - "sha256": "ebfd59731c6410ab84c229bc2ed240fdf9d781e0c3b092e8d36d8b08d0bcf9f4" - }, { "path": "Dino.java", "sha256": "d65f08c55ec15351ff77d625e3d8797d12dc24e877ea7dfe2c05ba576153c7d1" @@ -704,38 +520,14 @@ "path": "FigureState.java", "sha256": "5dcedf8f434d2d16809700a117377e7a527feecc48c4267d61206c2c0cf72a69" }, - { - "path": "Knight.class", - "sha256": "eff5f2da50488896b663e4fd1895a60766bddea06b82988e19f09c83138498c7" - }, - { - "path": "Knight.ctxt", - "sha256": "b99051a2ba771b2ec034ec583f18a56f9263c1b5a1980b58ce9a4c1b86adf060" - }, { "path": "Knight.java", "sha256": "5984f9ce9d6ce09247f0b5ae45b752e809e7fe1bffdf0a0f2b468cd2360470f3" }, - { - "path": "Ninja.class", - "sha256": "d3b1c73c1efe9839fbe8105a2ca3251356f228e2cd97f3e096716c2622891216" - }, - { - "path": "Ninja.ctxt", - "sha256": "f52f8ff8464b4abe32573730ea4adc43471e20a4c707e1ff99f01233df024be3" - }, { "path": "Ninja.java", "sha256": "cf6cf2d953366cd7b11c186a1fe01103788a2c9ad221c9ad58531ba402e9dbb5" }, - { - "path": "StressTest.class", - "sha256": "42bc2bf49062b8fe6d78db099858c0c4381338b06a3a43f353ababa8591e9896" - }, - { - "path": "StressTest.ctxt", - "sha256": "390de6aefa294d1cb9d2b405ed8d39b1f239d5a0b4aac273c20f375615083ee6" - }, { "path": "StressTest.java", "sha256": "e8566d3630cd0b6767c5fab6d4e774bd8d3d857fbd4a0f6517f4dcf36fba9bf4" @@ -1116,74 +908,26 @@ "platformer" ], "files": [ - { - "path": "Bamboo.class", - "sha256": "c26b6f104820f8af4a28b7c584ce5e3c2a75391779fbe1ea81f5b0061c115af9" - }, - { - "path": "Bamboo.ctxt", - "sha256": "2a39143d1cf20a56edbcdeb1b8cbf854a6a1cd5f5ffcd541bb69cc727fd85413" - }, { "path": "Bamboo.java", "sha256": "46ec44f8d28c5a0eaec1fb30f5c42d35ed9b6962b75a9c08105f770e4ee2df08" }, - { - "path": "Enemy.class", - "sha256": "8c299d6a3c10413bbba0dbbfa3117fb8a3e3692eb9d5ff16193706512842867e" - }, - { - "path": "Enemy.ctxt", - "sha256": "04c8b38d50c18e54af9910661234395c755647c3abe112b7efd31968c4eea226" - }, { "path": "Enemy.java", "sha256": "936060f67fbea9d35ce80ea0c829c120b7863eca6d775d97aea9fd5b7b7365cf" }, - { - "path": "Fireball.class", - "sha256": "9295f82784260315454e89e833d3026722a73e7e8c8c66bff92968d84e9f050f" - }, - { - "path": "Fireball.ctxt", - "sha256": "a1c973e135a1b16087b5c274e57b9889ea3608209929261e1faf90f28545689a" - }, { "path": "Fireball.java", "sha256": "9064b7fc0b8f286026ed08125db9c5b4fb77bc15c7add1dc51760732e346ecb2" }, - { - "path": "GameState.class", - "sha256": "733989ae6ce95a5cd213c8e054479b75d6cb659ce22534907ef5e54f178bd7a0" - }, - { - "path": "GameState.ctxt", - "sha256": "dbb84dad708d630c1742ea7db99de5969e8f8f60b0c02070a874f73f954365dc" - }, { "path": "GameState.java", "sha256": "816c40b0209a5f9dafd418e98238cb1d1f3296998e33b2e5eb397cc1a3be88ae" }, - { - "path": "I18n.class", - "sha256": "a4d0a154874b6272dd68c86f50f5e6fe7c3cad9b91936118bd1ed0780416d87f" - }, - { - "path": "I18n.ctxt", - "sha256": "60c0ee8f6d6db7e07f6285c40639dffd399a90cc4d70c9ae66a24556e745f505" - }, { "path": "I18n.java", "sha256": "c430cf0eb4d31e17a702971553b6f6bc629085fd197d7ac3bb3444a683920e55" }, - { - "path": "Item.class", - "sha256": "1143e34a6338a38fb2e06fb68e8d0eb385301cf2eaf89cf670c6b98edc2541a9" - }, - { - "path": "Item.ctxt", - "sha256": "6ba89206c1707eb33b0096dcbbcf3c2fce18c964ed89d8c4f20debcc5d4904c6" - }, { "path": "Item.java", "sha256": "17b9d7b4679d4ffd6f66d0ea0a83cb6e4fb8674b05e0091347bec523add6e276" @@ -1196,26 +940,10 @@ "path": "Level2.tmx", "sha256": "d3d104297fd78a7c1c85699d295b645ae21b7c8ff0ff0d9e11d556aca88641e3" }, - { - "path": "Player.class", - "sha256": "495c890aeff50f812eb2c322ce793717e01dee09ba6ae91ea9c56c10a14337e5" - }, - { - "path": "Player.ctxt", - "sha256": "e96a1822d023b73fe3e7360e15793ad9b5a8375af898fad8905c05f4d59a54db" - }, { "path": "Player.java", "sha256": "8731b294011650eb0f9f8e89562a820972c0a0457de6c2e21a73a5560310cc74" }, - { - "path": "Tiled.class", - "sha256": "ed1dffc627fd2dd3c4e39d00ef788b881397390f11ddc97642399aa9292f5271" - }, - { - "path": "Tiled.ctxt", - "sha256": "ca7d54283b0c374cdd2c95f27fb82b64280c5da3ea3acdeb0f46fa679db94e0e" - }, { "path": "Tiled.java", "sha256": "97c8631d9f363d1939987c86353cb2e34a4e530187fc93231864ba7a8a5bf5d3" @@ -1224,50 +952,18 @@ "path": "UIItem.java", "sha256": "f1177f7cfd7c7147ed3ef2e10b475c53c5de228c8ba2ab118bd9058563c17479" }, - { - "path": "Wall.class", - "sha256": "7673195e6d30d0706583a98faeade7f6c0e64f6b9d2fd16bde130e2fbb8bcf0f" - }, - { - "path": "Wall.ctxt", - "sha256": "68d498fd9b3b2e81b3294aa50951ee9bd8866f4ada25e503badbcb844da84ae7" - }, { "path": "Wall.java", "sha256": "b226bdddba1cc32e7ccabbe3c686161a2b04060acff79b769c34f6af53487bb0" }, - { - "path": "Warp.class", - "sha256": "13bddf0b6ed387b51f2ceea6d1abe5ed05921867cbf1b92bb795395603d63233" - }, - { - "path": "Warp.ctxt", - "sha256": "103c797aaf7c290b62e01b4ccea36e0f8193d9ac9b30d67fc47133c5b322301c" - }, { "path": "Warp.java", "sha256": "5749bb006f674e1a3aab8c3bb14933dd517edadb4ab1a38d213e7040c9791eab" }, - { - "path": "Water.class", - "sha256": "1ed25c488dedb5ba53394aec075e1fdd82e0039ef0f132ee84790497754170b9" - }, - { - "path": "Water.ctxt", - "sha256": "2ff25af7e4be086febc0986f6f777cafdabbfbb81ec0966fa0965e7514a3624c" - }, { "path": "Water.java", "sha256": "aee560ddb396dd81e10d84dfa4769b31dbf3cd8433955068886c436581c03b17" }, - { - "path": "World.class", - "sha256": "993ca3729bd777ad7acec0f648c41c30b8d40a42b94a1584bff5c62f411ea71d" - }, - { - "path": "World.ctxt", - "sha256": "2f2969200a5664660259551bd4ee40aa6a523d8aa5c898c5916da50e2cf9808f" - }, { "path": "World.java", "sha256": "3f0965034fd75e1d6c16501172bd72e53566b1dd8894cd7e8f46cf53ef7576a9" From 52de8243ac6fbd465190cdb3cde18d16c2de074b Mon Sep 17 00:00:00 2001 From: Mike Barkmin Date: Wed, 7 Oct 2026 17:31:41 +0200 Subject: [PATCH 4/4] Wait for native window initialization in the lifecycle release gate --- scripts/lifecycle-parity.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/scripts/lifecycle-parity.sh b/scripts/lifecycle-parity.sh index d32465db..953d046e 100644 --- a/scripts/lifecycle-parity.sh +++ b/scripts/lifecycle-parity.sh @@ -7,15 +7,22 @@ trap 'rm -rf "$probe_dir"' EXIT mvn -q -DskipTests compile dependency:build-classpath "-Dmdep.outputFile=$probe_dir/classpath" cat > "$probe_dir/DesktopLifecycleLauncher.java" <<'JAVA' public class DesktopLifecycleLauncher { - public static void main(String[] args) { + public static void main(String[] args) throws InterruptedException { LifecycleProbe.main(args); + // Let Processing finish native window initialization before requesting + // shutdown. Exiting while JOGL is still opening races its display cleanup. + org.openpatch.scratch.internal.Applet applet = org.openpatch.scratch.internal.Applet.getInstance(); + long deadline = System.nanoTime() + java.util.concurrent.TimeUnit.SECONDS.toNanos(10); + while (applet.frameCount == 0) { + if (System.nanoTime() >= deadline) throw new IllegalStateException("Window did not draw"); + Thread.sleep(10); + } org.openpatch.scratch.Window.getInstance().exit(); - System.exit(0); } } JAVA probe_cp="target/classes:$(cat "$probe_dir/classpath")" javac -cp "$probe_cp" -d "$probe_dir" compatibility/probes/LifecycleProbe.java "$probe_dir/DesktopLifecycleLauncher.java" -timeout 30s xvfb-run -a java -cp "$probe_dir:$probe_cp" DesktopLifecycleLauncher > "$probe_dir/output" 2> "$probe_dir/stderr" +timeout 30s xvfb-run -a java --enable-native-access=ALL-UNNAMED -cp "$probe_dir:$probe_cp" DesktopLifecycleLauncher > "$probe_dir/output" 2> "$probe_dir/stderr" diff -u compatibility/probes/lifecycle-expected.txt "$probe_dir/output" echo 'Desktop clone lifecycle, removal, broadcasts and geometry: passed'