mirror of
				https://github.com/SquidDev-CC/CC-Tweaked
				synced 2025-11-01 06:03:00 +00:00 
			
		
		
		
	Compare commits
	
		
			251 Commits
		
	
	
		
			v1.95.0-be
			...
			v1.14.4-1.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 029374e9aa | ||
|   | 2a8efb3fd5 | ||
|   | 9134f243c1 | ||
|   | c0f3ca81fb | ||
|   | b9b8121be9 | ||
|   | 014bf55cd4 | ||
|   | 085ae2e74a | ||
|   | 4ff33f165d | ||
|   | d929c02d2a | ||
|   | d50a08a549 | ||
|   | 13de2c4dd0 | ||
|   | 906280225e | ||
|   | 161a5b4707 | ||
|   | c6b6b4479c | ||
|   | 96e7b60285 | ||
|   | 086fccd997 | ||
|   | e251dd066c | ||
|   | c60dcb4f5a | ||
|   | 4be0b15afa | ||
|   | a4ae36b6b3 | ||
|   | ac075d9f53 | ||
|   | 05d7be0362 | ||
|   | 9a71dc1a26 | ||
|   | 156023b154 | ||
|   | 6b3773a862 | ||
|   | 376d628cf0 | ||
|   | 44062ebd52 | ||
|   | 5739285fc2 | ||
|   | 70b457ed18 | ||
|   | 6816931659 | ||
|   | 1547ecbeb3 | ||
|   | c28b468844 | ||
|   | 052cf8ee7d | ||
|   | 550ada2f9e | ||
|   | 17b7727262 | ||
|   | 4553e404b2 | ||
|   | a565a571f9 | ||
|   | fb64b6017b | ||
|   | ed4229ab70 | ||
|   | 3fb906ef6c | ||
|   | e1663f3df0 | ||
|   | 358289b5f9 | ||
|   | 5eec24676f | ||
|   | 447c3ab125 | ||
|   | 8fac68386e | ||
|   | b7c61f9c6d | ||
|   | 08a0342618 | ||
|   | 48cb032ddf | ||
|   | a049502d12 | ||
|   | ae7ef66dfa | ||
|   | 9748679484 | ||
|   | da419b24e7 | ||
|   | 7f57a977a1 | ||
|   | 2f42a4e85b | ||
|   | ee391ae9ea | ||
|   | 4ed4a6409b | ||
|   | e5cc345f49 | ||
|   | d847a4d9e0 | ||
|   | f3de97d67f | ||
|   | 544f276ff0 | ||
|   | 463635a459 | ||
|   | 3b7b845930 | ||
|   | 1fc0214857 | ||
|   | 11bf601db9 | ||
|   | 7c1154ddfc | ||
|   | df557e03fa | ||
|   | 524b6f1d8a | ||
|   | cea8be7efa | ||
|   | c5f918ad95 | ||
|   | b14c7842fc | ||
|   | eead8b5755 | ||
|   | 10a27a7a25 | ||
|   | 865fc239a0 | ||
|   | f9f94b8304 | ||
|   | cb8135a0d1 | ||
|   | ef4b0a5632 | ||
|   | 6a6a87489c | ||
|   | 062977336a | ||
|   | e52d98ad8b | ||
|   | ef8da8054f | ||
|   | 1ccd687c00 | ||
|   | a8ce5a5b20 | ||
|   | 68e6bc464b | ||
|   | 68762fe84c | ||
|   | 419f29321a | ||
|   | 00b41d29c1 | ||
|   | 0ffd5fcf85 | ||
|   | 95fee95006 | ||
|   | 239bd769df | ||
|   | b4e0e9984f | ||
|   | 79f42e35ce | ||
|   | be89fc25f9 | ||
|   | 8eae02c037 | ||
|   | 930fd59298 | ||
|   | bf13bac152 | ||
|   | 03caf9d805 | ||
|   | d6ea3aab1c | ||
|   | 0de5969ec1 | ||
|   | 3f98b2785e | ||
|   | 798868427e | ||
|   | c79f643ba7 | ||
|   | 1db3a14c54 | ||
|   | bf6d017ad1 | ||
|   | 8b1773dd60 | ||
|   | a706300598 | ||
|   | 2541c3c5e6 | ||
|   | 41a1b99f7d | ||
|   | 1862a439e2 | ||
|   | 018ecfbaa0 | ||
|   | 4c8fd4fc35 | ||
|   | 35c1b10224 | ||
|   | c1c01bef7c | ||
|   | a48c3d0ba8 | ||
|   | 93a9ebc4f6 | ||
|   | 7cc2bd43c6 | ||
|   | 393e628721 | ||
|   | 0bcd28e58c | ||
|   | 42f5389fb8 | ||
|   | 041cfe91b4 | ||
|   | 0f82a4589b | ||
|   | 4320a4f851 | ||
|   | 037cbabb32 | ||
|   | 0dde859582 | ||
|   | e59c043fb6 | ||
|   | ae928c4397 | ||
|   | da41c65128 | ||
|   | 4d18234714 | ||
|   | d254c6464b | ||
|   | 3a5d50e572 | ||
|   | 03b6d2f1ab | ||
|   | b0397ed3c5 | ||
|   | fa70ebcac2 | ||
|   | 86e0330100 | ||
|   | 92567b4d7e | ||
|   | 0ae70fed13 | ||
|   | 3b7300543a | ||
|   | 642351af1a | ||
|   | 121802a683 | ||
|   | 08cf55e55f | ||
|   | 3c8c0d78ef | ||
|   | c4d18aa9ca | ||
|   | 2d4a87adc9 | ||
|   | bedac71e3d | ||
|   | ee4e42e730 | ||
|   | 0de75f05dd | ||
|   | be6dd21e54 | ||
|   | 927ddb0bde | ||
|   | a8fadabaf1 | ||
|   | 44d0f78c1b | ||
|   | 38f9a015ca | ||
|   | c311cdc6f5 | ||
|   | a93e0f3284 | ||
|   | 14b3065ba4 | ||
|   | 3ea2d6a0a8 | ||
|   | c802290437 | ||
|   | f7781defe5 | ||
|   | 418420523a | ||
|   | d342a1f368 | ||
|   | 81f85361d5 | ||
|   | f1621b30ec | ||
|   | d4f6a594b6 | ||
|   | ff5ba5c131 | ||
|   | 4243f30308 | ||
|   | 813e91073d | ||
|   | 7250f22ff6 | ||
|   | db31a53bba | ||
|   | 3023f235a4 | ||
|   | 79cd8b4da5 | ||
|   | 8e4d311cd9 | ||
|   | 9bd8c86a94 | ||
|   | cbc0c1d0b6 | ||
|   | 49c37857d4 | ||
|   | b1139a4bf6 | ||
|   | 7e8559278e | ||
|   | 1e7f1c98fc | ||
|   | a802f25dd6 | ||
|   | f1d6d21d6d | ||
|   | a80302c513 | ||
|   | 1c46949da7 | ||
|   | 07a56454a0 | ||
|   | a0e72d02c8 | ||
|   | 455a59ca85 | ||
|   | 46d78af068 | ||
|   | 08d22fd3df | ||
|   | e6c691a8f8 | ||
|   | 4b0e5c445c | ||
|   | eb5cff1045 | ||
|   | 35c7792aa2 | ||
|   | 521688d630 | ||
|   | 75e2845c01 | ||
|   | 2f96283286 | ||
|   | cbe6e9b5f5 | ||
|   | 2ab79cf474 | ||
|   | 6ce34aba79 | ||
|   | 5eeb320b60 | ||
|   | 93310850d2 | ||
|   | a2880b12ca | ||
|   | cef2657048 | ||
|   | ccd85eb055 | ||
|   | 303b57779a | ||
|   | 6279816ecc | ||
|   | 4ae77261fa | ||
|   | 4b7d843b78 | ||
|   | 1c28df65c3 | ||
|   | 85b740f484 | ||
|   | f9929cb27d | ||
|   | bafab1ac07 | ||
|   | e05c262468 | ||
|   | acfb72246c | ||
|   | 9d51c4c340 | ||
|   | 18068effec | ||
|   | 7a3f7d3bba | ||
|   | 95aa48c456 | ||
|   | 6ea8ca991b | ||
|   | f1e551b960 | ||
|   | 772c54ec74 | ||
|   | 13cb789c18 | ||
|   | 42220c4268 | ||
|   | 3052506e2e | ||
|   | 0741daa7eb | ||
|   | b4aa554279 | ||
|   | 8fe2abe0ae | ||
|   | 5af789ae11 | ||
|   | 904a168d5c | ||
|   | 724441eddc | ||
|   | f68ab3edd1 | ||
|   | 68542aca3a | ||
|   | 594bc4203c | ||
|   | 57318b022d | ||
|   | 761159aa93 | ||
|   | 29dce26bf6 | ||
|   | 717ab69093 | ||
|   | 138a2cf08f | ||
|   | 81daf82647 | ||
|   | f3798bfb63 | ||
|   | bc07dfad2e | ||
|   | 8dd1c2a6cc | ||
|   | d10b657a54 | ||
|   | f90da739eb | ||
|   | d9cadf64e8 | ||
|   | 15d4a55cd8 | ||
|   | 309cbdb8be | ||
|   | 39a9ad0ce7 | ||
|   | 0f3c44c926 | ||
|   | a0e7c4a74c | ||
|   | 7d428030df | ||
|   | 00c395f689 | ||
|   | d8e1c73d26 | ||
|   | ffa4cc241b | ||
|   | 6f1b740c8f | ||
|   | 3406ba3ebf | 
| @@ -11,5 +11,12 @@ insert_final_newline = true | ||||
| [*.md] | ||||
| trim_trailing_whitespace = false | ||||
|  | ||||
| [*.sexp] | ||||
| indent_size = 2 | ||||
|  | ||||
| [*.yml] | ||||
| indent_size = 2 | ||||
|  | ||||
|  | ||||
| [*.properties] | ||||
| insert_final_newline = false | ||||
|   | ||||
							
								
								
									
										2
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| # Ignore changes in generated files | ||||
| src/generated/resources/data/** linguist-generated | ||||
							
								
								
									
										53
									
								
								.github/workflows/main-ci.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								.github/workflows/main-ci.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
| name: Build | ||||
|  | ||||
| on: [push, pull_request] | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     name: Build | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|  | ||||
|     - name: Set up JDK 1.8 | ||||
|       uses: actions/setup-java@v1 | ||||
|       with: | ||||
|         java-version: 1.8 | ||||
|  | ||||
|     - name: Cache gradle dependencies | ||||
|       uses: actions/cache@v1 | ||||
|       with: | ||||
|         path: ~/.gradle/caches | ||||
|         key: ${{ runner.os }}-gradle-${{ hashFiles('gradle.properties') }} | ||||
|         restore-keys: | | ||||
|           ${{ runner.os }}-gradle- | ||||
|  | ||||
|     - name: Build with Gradle | ||||
|       run: ./gradlew build --no-daemon || ./gradlew build --no-daemon | ||||
|  | ||||
|     - name: Upload Jar | ||||
|       uses: actions/upload-artifact@v1 | ||||
|       with: | ||||
|         name: CC-Tweaked | ||||
|         path: build/libs | ||||
|  | ||||
|     - name: Upload Coverage | ||||
|       run: bash <(curl -s https://codecov.io/bash) | ||||
|  | ||||
|   lint-lua: | ||||
|     name: Lint Lua | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v1 | ||||
|  | ||||
|     - name: Lint Lua code | ||||
|       run: | | ||||
|         test -d bin || mkdir bin | ||||
|         test -f bin/illuaminate || wget -q -Obin/illuaminate https://squiddev.cc/illuaminate/linux-x86-64/illuaminate | ||||
|         chmod +x bin/illuaminate | ||||
|         bin/illuaminate lint | ||||
|  | ||||
|     - name: Check whitespace | ||||
|       run: python3 tools/check-lines.py | ||||
							
								
								
									
										16
									
								
								.github/workflows/make-doc.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								.github/workflows/make-doc.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| set -eu | ||||
|  | ||||
| DEST="${GITHUB_REF#refs/*/}" | ||||
| echo "Uploading docs to https://tweaked.cc/$DEST" | ||||
|  | ||||
| # Setup ssh key | ||||
| mkdir -p "$HOME/.ssh/" | ||||
| echo "$SSH_KEY" > "$HOME/.ssh/key" | ||||
| chmod 600 "$HOME/.ssh/key" | ||||
|  | ||||
| # And upload | ||||
| rsync -avc -e "ssh -i $HOME/.ssh/key -o StrictHostKeyChecking=no -p $SSH_PORT" \ | ||||
|       "$GITHUB_WORKSPACE/doc/" \ | ||||
|       "$SSH_USER@$SSH_HOST:/var/www/tweaked.cc/$DEST" | ||||
							
								
								
									
										31
									
								
								.github/workflows/make-doc.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.github/workflows/make-doc.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| name: Build documentation | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: [ master ] | ||||
|     tags: | ||||
|   release: | ||||
|     types: [ published ] | ||||
|  | ||||
| jobs: | ||||
|   make_doc: | ||||
|     name: Build | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v1 | ||||
|  | ||||
|     - name: Build documentation | ||||
|       run: | | ||||
|         test -d bin || mkdir bin | ||||
|         test -f bin/illuaminate || wget -q -Obin/illuaminate https://squiddev.cc/illuaminate/linux-x86-64/illuaminate | ||||
|         chmod +x bin/illuaminate | ||||
|         bin/illuaminate doc-gen | ||||
|  | ||||
|     - name: Upload documentation | ||||
|       run: .github/workflows/make-doc.sh 2> /dev/null | ||||
|       env: | ||||
|         SSH_KEY:  ${{ secrets.SSH_KEY  }} | ||||
|         SSH_USER: ${{ secrets.SSH_USER }} | ||||
|         SSH_HOST: ${{ secrets.SSH_HOST }} | ||||
|         SSH_PORT: ${{ secrets.SSH_PORT }} | ||||
							
								
								
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -3,6 +3,8 @@ | ||||
| /logs | ||||
| /build | ||||
| /out | ||||
| /doc/**/*.html | ||||
| /doc/index.json | ||||
|  | ||||
| # Runtime directories | ||||
| /run | ||||
| @@ -15,3 +17,11 @@ | ||||
| .idea | ||||
| .gradle | ||||
| *.DS_Store | ||||
|  | ||||
| .classpath | ||||
| .project | ||||
| .settings/ | ||||
| bin/ | ||||
| *.launch | ||||
|  | ||||
| /src/generated/resources/.cache | ||||
|   | ||||
							
								
								
									
										34
									
								
								.luacheckrc
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								.luacheckrc
									
									
									
									
									
								
							| @@ -1,34 +0,0 @@ | ||||
| std = "max" | ||||
|  | ||||
| ignore = { | ||||
|     -- Allow access to undefined globals or their fields. In the future we'll | ||||
|     -- define all of CC's globals within this file | ||||
|     '113', '143', | ||||
|  | ||||
|     -- FIXME: Ignore unused arguments and loop variables | ||||
|     '212', '213', | ||||
|  | ||||
|     -- Disable line is too long for now. It would be possible to clean | ||||
|     -- this up in the future. | ||||
|     '631', | ||||
| } | ||||
|  | ||||
| -- Only run the linter on ROM and bios for now, as the treasure disks | ||||
| -- are largely unsupported. | ||||
| include_files = { | ||||
|     'src/main/resources/assets/computercraft/lua/rom', | ||||
|     'src/main/resources/assets/computercraft/lua/bios.lua' | ||||
| } | ||||
|  | ||||
| files['src/main/resources/assets/computercraft/lua/bios.lua'] = { | ||||
|     -- Allow declaring and mutating globals | ||||
|     allow_defined_top = true, | ||||
|     ignore = { '112', '121', '122', '131', '142' }, | ||||
| } | ||||
|  | ||||
| files['src/main/resources/assets/computercraft/lua/rom/apis'] = { | ||||
|     -- APIs may define globals on the top level. We'll ignore unused globals, | ||||
|     -- as obviously they may be used outside that API. | ||||
|     allow_defined_top = true, | ||||
|     ignore = { '131' }, | ||||
| } | ||||
							
								
								
									
										14
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -1,14 +0,0 @@ | ||||
| language: java | ||||
|  | ||||
| script: ./gradlew build --no-daemon | ||||
|  | ||||
| before_cache: | ||||
|   - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock | ||||
|   - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ | ||||
| cache: | ||||
|   directories: | ||||
|     - $HOME/.gradle/caches/ | ||||
|     - $HOME/.gradle/wrapper/s | ||||
|  | ||||
| jdk: | ||||
|     - oraclejdk8 | ||||
							
								
								
									
										36
									
								
								CONTRIBUTING.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								CONTRIBUTING.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| # Contributing to CC: Tweaked | ||||
| As with many open source projects, CC: Tweaked thrives on contributions from other people! This document (hopefully) | ||||
| provides an introduction as to how to get started in helping out. | ||||
|  | ||||
| If you've any other questions, [just ask the community][community] or [open an issue][new-issue]. | ||||
|  | ||||
| ## Reporting issues | ||||
| If you have a bug, suggestion, or other feedback, the best thing to do is [file an issue][new-issue]. When doing so, | ||||
| do use the issue templates - they provide a useful hint on what information to provide. | ||||
|  | ||||
| ## Developing | ||||
| In order to develop CC: Tweaked, you'll need to download the source code and then run it. This is a pretty simple | ||||
| process. | ||||
|  | ||||
|  - **Clone the repository:** `git clone https://github.com/SquidDev-CC/CC-Tweaked.git && cd CC-Tweaked` | ||||
|  - **Setup Forge:** `./gradlew build` | ||||
|  - **Run Minecraft:** `./gradlew runClient` (or run the `GradleStart` class from your IDE). | ||||
|  | ||||
| If you want to run CC:T in a normal Minecraft instance, run `./gradlew build` and copy the `.jar` from `build/libs`. | ||||
| These commands may take a few minutes to run the first time, as the environment is set up, but should be much faster | ||||
| afterwards. | ||||
|  | ||||
| ### Code linters | ||||
| CC: Tweaked uses a couple of "linters" on its source code, to enforce a consistent style across the project. While these | ||||
| are run whenever you submit a PR, it's often useful to run this before committing. | ||||
|  | ||||
|  - **[Checkstyle]:** Checks Java code to ensure it is consistently formatted. This can be run with `./gradlew build` or | ||||
|    `./gradle check`. | ||||
|  - **[illuaminate]:** Checks Lua code for semantic and styleistic issues. See [the usage section][illuaminate-usage] for | ||||
|    how to download and run it. | ||||
|  | ||||
| [new-issue]: https://github.com/SquidDev-CC/CC-Tweaked/issues/new/choose "Create a new issue" | ||||
| [community]: README.md#Community "Get in touch with the community." | ||||
| [checkstyle]: https://checkstyle.org/ | ||||
| [illuaminate]: https://github.com/SquidDev/illuaminate/ | ||||
| [illuaminate-usage]: https://github.com/SquidDev/illuaminate/blob/master/README.md#usage | ||||
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | ||||
| #  | ||||
| [](https://travis-ci.org/SquidDev-CC/CC-Tweaked "Current build status") [](https://minecraft.curseforge.com/projects/cc-tweaked "Download CC: Tweaked on CurseForge") | ||||
| [](https://github.com/SquidDev-CC/CC-Tweaked/actions "Current build status") [](https://minecraft.curseforge.com/projects/cc-tweaked "Download CC: Tweaked on CurseForge") | ||||
|  | ||||
| CC: Tweaked is a fork of [ComputerCraft](https://github.com/dan200/ComputerCraft), adding programmable computers, | ||||
| turtles and more to Minecraft. | ||||
| @@ -37,20 +37,14 @@ several features have been included, such as full block modems, the Cobalt runti | ||||
| computers. | ||||
|  | ||||
| ## Contributing | ||||
| Any contribution is welcome, be that using the mod, reporting bugs or contributing code. In order to start helping | ||||
| develop CC:T, you'll need to follow these steps: | ||||
|  | ||||
|  - **Clone the repository:** `git clone https://github.com/SquidDev-CC/CC-Tweaked.git && cd CC-Tweaked` | ||||
|  - **Setup Forge:** `./gradlew setupDecompWorkspace` | ||||
|  - **Test your changes:** `./gradlew runClient` (or run the `GradleStart` class from your IDE). | ||||
|  | ||||
| If you want to run CC:T in a normal Minecraft instance, run `./gradlew build` and copy the `.jar` from `build/libs`. | ||||
| Any contribution is welcome, be that using the mod, reporting bugs or contributing code. If you want to get started | ||||
| developing the mod, [check out the instructions here](CONTRIBUTING.md#developing). | ||||
|  | ||||
| ## Community | ||||
| If you need help getting started with CC: Tweaked, want to show off your latest project, or just want to chat about | ||||
| ComputerCraft we have a [forum](https://forums.computercraft.cc/) and [Discord guild](https://discord.gg/H2UyJXe)! | ||||
| There's also a fairly populated, albeit quiet [IRC channel](http://webchat.esper.net/?channels=#computercraft), if | ||||
| that's more your cup of tea. | ||||
| ComputerCraft we have a [forum](https://forums.computercraft.cc/) and [Discord guild](https://discord.computercraft.cc)! | ||||
| There's also a fairly populated, albeit quiet [IRC channel](http://webchat.esper.net/?channels=computercraft), if that's | ||||
| more your cup of tea. | ||||
|  | ||||
| I'd generally recommend you don't contact me directly (email, DM, etc...) unless absolutely necessary (i.e. in order to | ||||
| report exploits). You'll get a far quicker response if you ask the whole community! | ||||
| @@ -66,7 +60,7 @@ dependencies { | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
|   implementation "org.squiddev:cc-tweaked-${mc_version}:${cct_version}" | ||||
|   implementation fg.deobf("org.squiddev:cc-tweaked-${mc_version}:${cct_version}") | ||||
| } | ||||
| ``` | ||||
|  | ||||
|   | ||||
							
								
								
									
										162
									
								
								build.gradle
									
									
									
									
									
								
							
							
						
						
									
										162
									
								
								build.gradle
									
									
									
									
									
								
							| @@ -4,19 +4,22 @@ buildscript { | ||||
|         mavenCentral() | ||||
|         maven { | ||||
|             name = "forge" | ||||
|             url = "http://files.minecraftforge.net/maven" | ||||
|             url = "https://files.minecraftforge.net/maven" | ||||
|         } | ||||
|     } | ||||
|     dependencies { | ||||
|         classpath 'com.google.code.gson:gson:2.8.1' | ||||
|         classpath 'net.minecraftforge.gradle:ForgeGradle:3.0.117' | ||||
|         classpath 'net.minecraftforge.gradle:ForgeGradle:3.0.154' | ||||
|         classpath 'net.sf.proguard:proguard-gradle:6.1.0beta2' | ||||
|         classpath 'org.ajoberstar.grgit:grgit-gradle:3.0.0' | ||||
|     } | ||||
| } | ||||
|  | ||||
| plugins { | ||||
|     id 'com.matthewprenger.cursegradle' version '1.2.0' | ||||
|     id "checkstyle" | ||||
|     id "jacoco" | ||||
|     id "com.github.hierynomus.license" version "0.15.0" | ||||
|     id "com.matthewprenger.cursegradle" version "1.3.0" | ||||
|     id "com.github.breadmoirai.github-release" version "2.2.4" | ||||
| } | ||||
|  | ||||
| @@ -46,7 +49,7 @@ minecraft { | ||||
|  | ||||
|         server { | ||||
|             workingDirectory project.file('run') | ||||
|             property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' | ||||
|             property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP' | ||||
|             property 'forge.logging.console.level', 'debug' | ||||
|  | ||||
|             mods { | ||||
| @@ -55,6 +58,19 @@ minecraft { | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         data { | ||||
|             workingDirectory project.file('run') | ||||
|             property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP' | ||||
|             property 'forge.logging.console.level', 'debug' | ||||
|  | ||||
|             args '--mod', 'computercraft', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') | ||||
|             mods { | ||||
|                 computercraft { | ||||
|                     source sourceSets.main | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     mappings channel: 'snapshot', version: "${mappings_version}".toString() | ||||
| @@ -62,23 +78,15 @@ minecraft { | ||||
|     accessTransformer file('src/main/resources/META-INF/accesstransformer.cfg') | ||||
| } | ||||
|  | ||||
| sourceSets.main.resources { | ||||
|     srcDir 'src/generated/resources' | ||||
| } | ||||
|  | ||||
| repositories { | ||||
|     maven { | ||||
|         name "JEI" | ||||
|         url  "http://dvs1.progwml6.com/files/maven" | ||||
|     } | ||||
|     maven { | ||||
|         name "SquidDev" | ||||
|         url "https://squiddev.cc/maven" | ||||
|     } | ||||
|     ivy { | ||||
|         name "Charset" | ||||
|         artifactPattern "https://asie.pl/files/mods/Charset/LibOnly/[module]-[revision](-[classifier]).[ext]" | ||||
|     } | ||||
|     maven { | ||||
|         name "Amadornes" | ||||
|         url "http://maven.amadornes.com/" | ||||
|     } | ||||
| } | ||||
|  | ||||
| configurations { | ||||
| @@ -88,30 +96,24 @@ configurations { | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
|     checkstyle "com.puppycrawl.tools:checkstyle:8.25" | ||||
|  | ||||
|     minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" | ||||
|  | ||||
|     compileOnly fg.deobf("mezz.jei:jei-1.13.2:5.0.0.20:api") | ||||
|     // deobfProvided "pl.asie:Charset-Lib:0.5.4.6" | ||||
|     // deobfProvided "MCMultiPart2:MCMultiPart:2.5.3" | ||||
|     compileOnly fg.deobf("mezz.jei:jei-1.14.4:6.0.0.27:api") | ||||
|     compileOnly fg.deobf("com.blamejared.crafttweaker:CraftTweaker-1.14.4:5.0.1.162") | ||||
|  | ||||
|     runtimeOnly fg.deobf("mezz.jei:jei-1.13.2:5.0.0.20") | ||||
|     runtimeOnly fg.deobf("mezz.jei:jei-1.14.4:6.0.0.27") | ||||
|  | ||||
|     shade 'org.squiddev:Cobalt:0.5.0-SNAPSHOT' | ||||
|     shade 'org.squiddev:Cobalt:0.5.1-SNAPSHOT' | ||||
|  | ||||
|     testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.0' | ||||
|     testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.1.0' | ||||
|     testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.2' | ||||
|     testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.2' | ||||
|  | ||||
|     deployerJars "org.apache.maven.wagon:wagon-ssh:3.0.0" | ||||
| } | ||||
|  | ||||
| sourceSets { | ||||
|     main { | ||||
|         java { | ||||
|             exclude 'dan200/computercraft/shared/integration/mcmp' | ||||
|             exclude 'dan200/computercraft/shared/integration/charset' | ||||
|         } | ||||
|     } | ||||
| } | ||||
| // Compile tasks | ||||
|  | ||||
| javadoc { | ||||
|     include "dan200/computercraft/api/**/*.java" | ||||
| @@ -123,7 +125,7 @@ jar { | ||||
|     manifest { | ||||
|         attributes(["Specification-Title": "computercraft", | ||||
|                     "Specification-Vendor": "SquidDev", | ||||
|                     "Specification-Version": "25.0", | ||||
|                     "Specification-Version": "1", | ||||
|                     "Implementation-Title": "CC: Tweaked", | ||||
|                     "Implementation-Version": "${mod_version}", | ||||
|                     "Implementation-Vendor" :"SquidDev", | ||||
| @@ -137,12 +139,22 @@ jar { | ||||
|     from configurations.shade.collect { it.isDirectory() ? it : zipTree(it) } | ||||
| } | ||||
|  | ||||
| [compileJava, compileTestJava].forEach { | ||||
|     it.configure { | ||||
|         options.compilerArgs << "-Xlint" << "-Xlint:-processing" | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| import java.nio.charset.StandardCharsets | ||||
| import java.nio.file.* | ||||
| import java.util.zip.* | ||||
|  | ||||
| import com.google.gson.GsonBuilder | ||||
| import com.google.gson.JsonElement | ||||
| import com.hierynomus.gradle.license.tasks.LicenseCheck | ||||
| import com.hierynomus.gradle.license.tasks.LicenseFormat | ||||
| import org.ajoberstar.grgit.Grgit | ||||
| import proguard.gradle.ProGuardTask | ||||
|  | ||||
| @@ -155,6 +167,7 @@ task proguard(type: ProGuardTask, dependsOn: jar) { | ||||
|  | ||||
|     // Add the main runtime jar and all non-shadowed dependencies | ||||
|     libraryjars "${System.getProperty('java.home')}/lib/rt.jar" | ||||
|     libraryjars "${System.getProperty('java.home')}/lib/jce.jar" | ||||
|     doFirst { | ||||
|         sourceSets.main.compileClasspath | ||||
|             .filter { !it.name.contains("Cobalt") } | ||||
| @@ -170,9 +183,6 @@ task proguard(type: ProGuardTask, dependsOn: jar) { | ||||
|     // Preserve ComputerCraft classes - we only want to strip shadowed files. | ||||
|     keep 'class dan200.computercraft.** { *; }' | ||||
|  | ||||
|     // Preserve the constructors in Cobalt library class, as we init them via reflection | ||||
|     keepclassmembers 'class org.squiddev.cobalt.lib.** { <init>(...); }' | ||||
|  | ||||
|     // LWJGL and Apache bundle Java 9 versions, which is great, but rather breaks Proguard | ||||
|     dontwarn 'module-info' | ||||
|     dontwarn 'org.apache.**,org.lwjgl.**' | ||||
| @@ -242,6 +252,7 @@ task compressJson(dependsOn: jar) { | ||||
|         // Copy over all files in the current jar to the new one, running json files from GSON. As pretty printing | ||||
|         // is turned off, they should be minified. | ||||
|         new ZipFile(jarPath).withCloseable { inJar -> | ||||
|             tempPath.getParentFile().mkdirs() | ||||
|             new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(tempPath))).withCloseable { outJar -> | ||||
|                 inJar.entries().each { entry -> | ||||
|                     if(entry.directory) { | ||||
| @@ -269,6 +280,65 @@ task compressJson(dependsOn: jar) { | ||||
|  | ||||
| assemble.dependsOn compressJson | ||||
|  | ||||
| // Check tasks | ||||
|  | ||||
| test { | ||||
|     useJUnitPlatform() | ||||
|     testLogging { | ||||
|         events "skipped", "failed" | ||||
|     } | ||||
| } | ||||
|  | ||||
| jacocoTestReport { | ||||
|     reports { | ||||
|         xml.enabled true | ||||
|         html.enabled true | ||||
|     } | ||||
| } | ||||
|  | ||||
| check.dependsOn jacocoTestReport | ||||
|  | ||||
| license { | ||||
|     mapping("java", "SLASHSTAR_STYLE") | ||||
|     strictCheck true | ||||
|  | ||||
|     ext.year = Calendar.getInstance().get(Calendar.YEAR) | ||||
| } | ||||
|  | ||||
| [licenseMain, licenseFormatMain].forEach { | ||||
|     it.configure { | ||||
|         include("**/*.java") | ||||
|         exclude("dan200/computercraft/api/**") | ||||
|         header rootProject.file('config/license/main.txt') | ||||
|     } | ||||
| } | ||||
|  | ||||
| [licenseTest, licenseFormatTest].forEach { | ||||
|     it.configure { | ||||
|         include("**/*.java") | ||||
|         header rootProject.file('config/license/main.txt') | ||||
|     } | ||||
| } | ||||
|  | ||||
| gradle.projectsEvaluated { | ||||
|     tasks.withType(LicenseFormat) { | ||||
|         outputs.upToDateWhen { false } | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
| task licenseAPI(type: LicenseCheck); | ||||
| task licenseFormatAPI(type: LicenseFormat); | ||||
| [licenseAPI, licenseFormatAPI].forEach { | ||||
|     it.configure { | ||||
|         source = sourceSets.main.java | ||||
|         include("dan200/computercraft/api/**") | ||||
|         header rootProject.file('config/license/api.txt') | ||||
|     } | ||||
| } | ||||
|  | ||||
| // Upload tasks | ||||
|  | ||||
| task checkRelease { | ||||
|     group "upload" | ||||
|     description "Verifies that everything is ready for a release" | ||||
| @@ -307,7 +377,7 @@ task checkRelease { | ||||
|         if (!ok) throw new IllegalStateException("Could not check release") | ||||
|     } | ||||
| } | ||||
|  | ||||
| check.dependsOn checkRelease | ||||
|  | ||||
| curseforge { | ||||
|     apiKey = project.hasProperty('curseForgeApiKey') ? project.curseForgeApiKey : '' | ||||
| @@ -379,7 +449,9 @@ githubRelease { | ||||
|     token project.hasProperty('githubApiKey') ? project.githubApiKey : '' | ||||
|     owner 'SquidDev-CC' | ||||
|     repo 'CC-Tweaked' | ||||
|     targetCommitish { Grgit.open(dir: '.').branch.current().name } | ||||
|     try { | ||||
|         targetCommitish = Grgit.open(dir: '.').branch.current().name | ||||
|     } catch(Exception ignored) { } | ||||
|  | ||||
|     tagName "v${mc_version}-${mod_version}" | ||||
|     releaseName "[${mc_version}] ${mod_version}" | ||||
| @@ -399,19 +471,3 @@ task uploadAll(dependsOn: uploadTasks) { | ||||
|     group "upload" | ||||
|     description "Uploads to all repositories (Maven, Curse, GitHub release)" | ||||
| } | ||||
|  | ||||
| test { | ||||
|     useJUnitPlatform() | ||||
|     testLogging { | ||||
|         events "passed", "skipped", "failed" | ||||
|     } | ||||
| } | ||||
|  | ||||
| gradle.projectsEvaluated { | ||||
|     reobfJar.dependsOn proguardMove | ||||
|  | ||||
|     tasks.withType(JavaCompile) { | ||||
|         options.compilerArgs << "-Xlint" << "-Xlint:-processing" // Causes Forge build to fail << "-Werror" | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										169
									
								
								config/checkstyle/checkstyle.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								config/checkstyle/checkstyle.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,169 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE module PUBLIC | ||||
|     "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" | ||||
|     "https://checkstyle.org/dtds/configuration_1_3.dtd"> | ||||
| <module name="Checker"> | ||||
|     <property name="tabWidth" value="4"/> | ||||
|     <property name="charset" value="UTF-8" /> | ||||
|  | ||||
|     <module name="SuppressionFilter"> | ||||
|         <property name="file" value="config/checkstyle/suppressions.xml" /> | ||||
|     </module> | ||||
|  | ||||
|     <module name="TreeWalker"> | ||||
|         <!-- Annotations --> | ||||
|         <module name="AnnotationLocation" /> | ||||
|         <module name="AnnotationUseStyle" /> | ||||
|         <module name="MissingDeprecated" /> | ||||
|         <module name="MissingOverride" /> | ||||
|  | ||||
|         <!-- Blocks --> | ||||
|         <module name="EmptyBlock" /> | ||||
|         <module name="EmptyCatchBlock"> | ||||
|             <property name="exceptionVariableName" value="ignored" /> | ||||
|         </module> | ||||
|         <module name="LeftCurly"> | ||||
|             <property name="option" value="nl" /> | ||||
|             <!-- The defaults, minus lambdas. --> | ||||
|             <property name="tokens" value="ANNOTATION_DEF,CLASS_DEF,CTOR_DEF,ENUM_CONSTANT_DEF,ENUM_DEF,INTERFACE_DEF,LITERAL_CASE,LITERAL_CATCH,LITERAL_DEFAULT,LITERAL_DO,LITERAL_ELSE,LITERAL_FINALLY,LITERAL_FOR,LITERAL_IF,LITERAL_SWITCH,LITERAL_SYNCHRONIZED,LITERAL_TRY,LITERAL_WHILE,METHOD_DEF,OBJBLOCK,STATIC_INIT" /> | ||||
|         </module> | ||||
|         <module name="NeedBraces"> | ||||
|             <property name="allowSingleLineStatement" value="true"/> | ||||
|         </module> | ||||
|         <module name="RightCurly"> | ||||
|             <property name="option" value="alone" /> | ||||
|         </module> | ||||
|  | ||||
|         <!-- Class design. As if we've ever followed good practice here. --> | ||||
|         <module name="FinalClass" /> | ||||
|         <module name="InterfaceIsType" /> | ||||
|         <module name="MutableException" /> | ||||
|         <module name="OneTopLevelClass" /> | ||||
|  | ||||
|         <!-- Coding --> | ||||
|         <module name="ArrayTrailingComma" /> | ||||
|         <module name="EqualsHashCode" /> | ||||
|         <!-- FallThrough does not handle unreachable code well --> | ||||
|         <module name="IllegalInstantiation" /> | ||||
|         <module name="IllegalThrows" /> | ||||
|         <module name="ModifiedControlVariable" /> | ||||
|         <module name="NoClone" /> | ||||
|         <module name="NoFinalizer" /> | ||||
|         <module name="OneStatementPerLine" /> | ||||
|         <module name="PackageDeclaration" /> | ||||
|         <module name="SimplifyBooleanExpression" /> | ||||
|         <module name="SimplifyBooleanReturn" /> | ||||
|         <module name="StringLiteralEquality" /> | ||||
|         <module name="UnnecessaryParentheses" /> | ||||
|         <module name="UnnecessarySemicolonAfterTypeMemberDeclaration" /> | ||||
|         <module name="UnnecessarySemicolonInTryWithResources" /> | ||||
|         <module name="UnnecessarySemicolonInEnumeration" /> | ||||
|  | ||||
|         <!-- Imports --> | ||||
|         <module name="CustomImportOrder" /> | ||||
|         <module name="IllegalImport" /> | ||||
|         <module name="RedundantImport" /> | ||||
|         <module name="UnusedImports" /> | ||||
|  | ||||
|         <!-- Javadoc --> | ||||
|         <!-- TODO: Missing* checks for the dan200.computercraft.api package? --> | ||||
|         <module name="AtclauseOrder" /> | ||||
|         <module name="InvalidJavadocPosition" /> | ||||
|         <module name="JavadocBlockTagLocation" /> | ||||
|         <module name="JavadocMethod"/> | ||||
|         <module name="JavadocType"/> | ||||
|         <module name="JavadocStyle" /> | ||||
|         <module name="NonEmptyAtclauseDescription" /> | ||||
|         <module name="SingleLineJavadoc" /> | ||||
|         <module name="SummaryJavadocCheck"/> | ||||
|  | ||||
|         <!-- Misc --> | ||||
|         <module name="ArrayTypeStyle" /> | ||||
|         <module name="CommentsIndentation" /> | ||||
|         <module name="Indentation" /> | ||||
|         <module name="OuterTypeFilename" /> | ||||
|  | ||||
|         <!-- Modifiers --> | ||||
|         <module name="ModifierOrder" /> | ||||
|         <module name="RedundantModifier" /> | ||||
|  | ||||
|         <!-- Naming --> | ||||
|         <module name="ClassTypeParameterName" /> | ||||
|         <module name="InterfaceTypeParameterName" /> | ||||
|         <module name="LambdaParameterName" /> | ||||
|         <module name="LocalFinalVariableName" /> | ||||
|         <module name="LocalVariableName" /> | ||||
|         <!-- Allow an optional m_ on private members --> | ||||
|         <module name="MemberName"> | ||||
|             <property name="applyToPrivate" value="false" /> | ||||
|             <property name="applyToPackage" value="false" /> | ||||
|         </module> | ||||
|         <module name="MemberName"> | ||||
|             <property name="format" value="^(m_)?[a-z][a-zA-Z0-9]*$" /> | ||||
|             <property name="applyToPrivate" value="true" /> | ||||
|             <property name="applyToPackage" value="true" /> | ||||
|         </module> | ||||
|         <module name="MethodName" /> | ||||
|         <module name="MethodTypeParameterName" /> | ||||
|         <module name="PackageName"> | ||||
|             <property name="format" value="^dan200\.computercraf(\.[a-z][a-z0-9]*)*" /> | ||||
|         </module> | ||||
|         <module name="ParameterName" /> | ||||
|         <module name="StaticVariableName"> | ||||
|             <property name="format" value="^[a-z][a-zA-Z0-9]*|CAPABILITY(_[A-Z]+)?$" /> | ||||
|             <property name="applyToPrivate" value="false" /> | ||||
|         </module> | ||||
|         <module name="StaticVariableName"> | ||||
|             <property name="format" value="^(s_)?[a-z][a-zA-Z0-9]*|CAPABILITY(_[A-Z]+)?$" /> | ||||
|             <property name="applyToPrivate" value="true" /> | ||||
|         </module> | ||||
|         <module name="TypeName" /> | ||||
|  | ||||
|         <!-- Whitespace --> | ||||
|         <module name="EmptyForInitializerPad"/> | ||||
|         <module name="EmptyForIteratorPad"> | ||||
|             <property name="option" value="space"/> | ||||
|         </module> | ||||
|         <module name="GenericWhitespace" /> | ||||
|         <module name="MethodParamPad" /> | ||||
|         <module name="NoLineWrap" /> | ||||
|         <module name="NoWhitespaceAfter"> | ||||
|             <property name="tokens" value="AT,INC,DEC,UNARY_MINUS,UNARY_PLUS,BNOT,LNOT,DOT,ARRAY_DECLARATOR,INDEX_OP" /> | ||||
|         </module> | ||||
|         <module name="NoWhitespaceBefore" /> | ||||
|         <!-- TODO: Decide on an OperatorWrap style. --> | ||||
|         <module name="ParenPad"> | ||||
|             <property name="option" value="space" /> | ||||
|             <property name="tokens" value="ANNOTATION,ANNOTATION_FIELD_DEF,CTOR_CALL,CTOR_DEF,ENUM_CONSTANT_DEF,LITERAL_CATCH,LITERAL_DO,LITERAL_FOR,LITERAL_IF,LITERAL_NEW,LITERAL_SWITCH,LITERAL_SYNCHRONIZED,LITERAL_WHILE,METHOD_CALL,METHOD_DEF,RESOURCE_SPECIFICATION,SUPER_CTOR_CALL,LAMBDA" /> | ||||
|         </module> | ||||
|         <module name="ParenPad"> | ||||
|             <property name="option" value="nospace" /> | ||||
|             <property name="tokens" value="DOT,EXPR,QUESTION" /> | ||||
|         </module> | ||||
|         <module name="SeparatorWrap"> | ||||
|             <property name="option" value="eol" /> | ||||
|             <property name="tokens" value="COMMA,SEMI,ELLIPSIS,ARRAY_DECLARATOR,RBRACK,METHOD_REF" /> | ||||
|         </module> | ||||
|         <module name="SeparatorWrap"> | ||||
|             <property name="option" value="nl" /> | ||||
|             <property name="tokens" value="DOT,AT" /> | ||||
|         </module> | ||||
|         <module name="SingleSpaceSeparator" /> | ||||
|         <module name="TypecastParenPad" /> | ||||
|         <module name="WhitespaceAfter"> | ||||
|             <property name="tokens" value="COMMA" /> | ||||
|         </module> | ||||
|         <module name="WhitespaceAround"> | ||||
|             <property name="allowEmptyConstructors" value="true" /> | ||||
|             <property name="ignoreEnhancedForColon" value="false" /> | ||||
|             <property name="tokens" value="ASSIGN,BAND,BAND_ASSIGN,BOR,BOR_ASSIGN,BSR,BSR_ASSIGN,BXOR,BXOR_ASSIGN,COLON,DIV,DIV_ASSIGN,EQUAL,GE,GT,LAMBDA,LAND,LCURLY,LE,LITERAL_RETURN,LOR,LT,MINUS,MINUS_ASSIGN,MOD,MOD_ASSIGN,NOT_EQUAL,PLUS,PLUS_ASSIGN,QUESTION,RCURLY,SL,SLIST,SL_ASSIGN,SR,SR_ASSIGN,STAR,STAR_ASSIGN,LITERAL_ASSERT,TYPE_EXTENSION_AND" /> | ||||
|         </module> | ||||
|     </module> | ||||
|  | ||||
|     <module name="FileTabCharacter" /> | ||||
|     <module name="NewlineAtEndOfFile" /> | ||||
|     <module name="RegexpSingleline"> | ||||
|         <property name="format" value="\s+$"/> | ||||
|         <property name="message" value="Trailing whitespace"/> | ||||
|     </module> | ||||
| </module> | ||||
							
								
								
									
										12
									
								
								config/checkstyle/suppressions.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								config/checkstyle/suppressions.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE suppressions PUBLIC | ||||
|     "-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN" | ||||
|     "https://checkstyle.org/dtds/suppressions_1_2.dtd"> | ||||
| <suppressions> | ||||
|     <!-- All the config options and method fields. --> | ||||
|     <suppress checks="StaticVariableName" files=".*[\\/]ComputerCraft.java" /> | ||||
|     <suppress checks="StaticVariableName" files=".*[\\/]ComputerCraftAPI.java" /> | ||||
|  | ||||
|     <!-- Do not check for missing package Javadoc. --> | ||||
|     <suppress checks="JavadocStyle" files=".*[\\/]package-info.java" /> | ||||
| </suppressions> | ||||
							
								
								
									
										3
									
								
								config/license/api.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								config/license/api.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| This file is part of the public ComputerCraft API - http://www.computercraft.info | ||||
| Copyright Daniel Ratcliffe, 2011-${year}. This API may be redistributed unmodified and in full only. | ||||
| For help using the API, and posting your mods, visit the forums at computercraft.info. | ||||
							
								
								
									
										3
									
								
								config/license/main.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								config/license/main.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| This file is part of ComputerCraft - http://www.computercraft.info | ||||
| Copyright Daniel Ratcliffe, 2011-${year}. Do not distribute without permission. | ||||
| Send enquiries to dratcliffe@gmail.com | ||||
							
								
								
									
										11
									
								
								doc/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								doc/index.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| #  [](https://minecraft.curseforge.com/projects/cc-tweaked "Download CC: Tweaked on CurseForge") | ||||
|  | ||||
| CC: Tweaked is a fork of [ComputerCraft], adding programmable computers, turtles and more to Minecraft. | ||||
|  | ||||
| This website contains documentation for all Lua libraries and APIs from the latest version of CC: Tweaked. This | ||||
| documentation is still in development, so will most likely be incomplete. If you've found something you think is wrong, | ||||
| or would like to help out [please get in touch on GitHub][gh]. | ||||
|  | ||||
| [bug]: https://github.com/SquidDev-CC/CC-Tweaked/issues/new/choose | ||||
| [computercraft]: https://github.com/dan200/ComputerCraft "ComputerCraft on GitHub" | ||||
| [gh]: https://github.com/SquidDev-CC/CC-Tweaked "CC:Tweaked on GitHub" | ||||
| Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB | 
							
								
								
									
										77
									
								
								doc/stub/commands.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								doc/stub/commands.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| --- Execute a specific command. | ||||
| -- | ||||
| -- @tparam string command The command to execute. | ||||
| -- @treturn boolean Whether the command executed successfully. | ||||
| -- @treturn { string... } The output of this command, as a list of lines. | ||||
| -- @treturn number|nil The number of "affected" objects, or `nil` if the command | ||||
| -- failed. The definition of this varies from command to command. | ||||
| -- @usage Set the block above the command computer to stone. | ||||
| -- | ||||
| --     commands.exec("setblock ~ ~1 ~ minecraft:stone") | ||||
| function exec(command) end | ||||
|  | ||||
| --- Asynchronously execute a command. | ||||
| -- | ||||
| -- Unlike @{exec}, this will immediately return, instead of waiting for the | ||||
| -- command to execute. This allows you to run multiple commands at the same | ||||
| -- time. | ||||
| -- | ||||
| -- When this command has finished executing, it will queue a `task_complete` | ||||
| -- event containing the result of executing this command (what @{exec} would | ||||
| -- return). | ||||
| -- | ||||
| -- @tparam string command The command to execute. | ||||
| -- @treturn number The "task id". When this command has been executed, it will | ||||
| -- queue a `task_complete` event with a matching id. | ||||
| -- @usage Asynchronously sets the block above the computer to stone. | ||||
| -- | ||||
| --     commands.execAsync("~ ~1 ~ minecraft:stone") | ||||
| -- @see parallel One may also use the parallel API to run multiple commands at | ||||
| -- once. | ||||
| function execAsync(commad) end | ||||
|  | ||||
| --- List all available commands which the computer has permission to execute. | ||||
| -- | ||||
| -- @treturn { string... } A list of all available commands | ||||
| function list() end | ||||
|  | ||||
| --- Get the position of the current command computer. | ||||
| -- | ||||
| -- @treturn number This computer's x position. | ||||
| -- @treturn number This computer's y position. | ||||
| -- @treturn number This computer's z position. | ||||
| -- @see gps.locate To get the position of a non-command computer. | ||||
| function getBlockPosition() end | ||||
|  | ||||
| --- Get some basic information about a block. | ||||
| -- | ||||
| -- The returned table contains the current name, metadata and block state (as | ||||
| -- with @{turtle.inspect}). If there is a tile entity for that block, its NBT | ||||
| -- will also be returned. | ||||
| -- | ||||
| -- @tparam number x The x position of the block to query. | ||||
| -- @tparam number y The y position of the block to query. | ||||
| -- @tparam number z The z position of the block to query. | ||||
| -- @treturn table The given block's information. | ||||
| -- @throws If the coordinates are not within the world, or are not currently | ||||
| -- loaded. | ||||
| function getBlockInfo(x, y, z) end | ||||
|  | ||||
| --- Get information about a range of blocks. | ||||
| -- | ||||
| -- This returns the same information as @{getBlockInfo}, just for multiple | ||||
| -- blocks at once. | ||||
| -- | ||||
| -- Blocks are traversed by ascending y level, followed by z and x - the returned | ||||
| -- table may be indexed using `x + z*width + y*depth*depth`. | ||||
| -- | ||||
| -- @tparam number min_x The start x coordinate of the range to query. | ||||
| -- @tparam number min_y The start y coordinate of the range to query. | ||||
| -- @tparam number min_z The start z coordinate of the range to query. | ||||
| -- @tparam number max_x The end x coordinate of the range to query. | ||||
| -- @tparam number max_y The end y coordinate of the range to query. | ||||
| -- @tparam number max_z The end z coordinate of the range to query. | ||||
| -- @treturn { table... } A list of information about each block. | ||||
| -- @throws If the coordinates are not within the world. | ||||
| -- @throws If trying to get information about more than 4096 blocks. | ||||
| function getBlockInfos(min_x, min_y, min_z, max_x, max_y, max_z) end | ||||
							
								
								
									
										84
									
								
								doc/stub/fs.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								doc/stub/fs.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| ---  The FS API allows you to manipulate files and the filesystem. | ||||
| -- | ||||
| -- @module fs | ||||
|  | ||||
| function list(path) end | ||||
| function combine(base, child) end | ||||
| function getName(path) end | ||||
| function getSize(path) end | ||||
| function exists(path) end | ||||
| function isDir(path) end | ||||
| function isReadOnly(path) end | ||||
| function makeDir(path) end | ||||
| function move(from, to) end | ||||
| function copy(from, to) end | ||||
| function delete(path) end | ||||
| function open(path, mode) end | ||||
| function getDrive(path) end | ||||
| function getFreeSpace(path) end | ||||
| function find(pattern) end | ||||
| function getDir(path) end | ||||
|  | ||||
| --- Returns true if a path is mounted to the parent filesystem. | ||||
| -- | ||||
| -- The root filesystem "/" is considered a mount, along with disk folders and | ||||
| -- the rom folder. Other programs (such as network shares) can exstend this to | ||||
| -- make other mount types by correctly assigning their return value for getDrive. | ||||
| -- | ||||
| -- @tparam string path The path to check. | ||||
| -- @treturn boolean If the path is mounted, rather than a normal file/folder. | ||||
| -- @throws If the path does not exist. | ||||
| -- @see getDrive | ||||
| function isDriveRoot(path) end | ||||
|  | ||||
| --- Get the capacity of the drive at the given path. | ||||
| -- | ||||
| -- This may be used in conjunction with @{getFreeSpace} to determine what | ||||
| -- percentage of this drive has been used. | ||||
| -- | ||||
| -- @tparam string path The path of the drive to get. | ||||
| -- @treturn number This drive's capacity. This will be 0 for "read-only" drives, | ||||
| -- such as the ROM or treasure disks. | ||||
| function getCapacity(path) end | ||||
|  | ||||
| --- Get attributes about a specific file or folder. | ||||
| -- | ||||
| -- The returned attributes table contains information about the size of the | ||||
| -- file, whether it is a directory, and when it was created and last modified. | ||||
| -- | ||||
| -- The creation and modification times are given as the number of milliseconds | ||||
| -- since the UNIX epoch. This may be given to @{os.date} in order to convert it | ||||
| -- to more usable form. | ||||
| -- | ||||
| -- @tparam string path The path to get attributes for. | ||||
| -- @treturn { size = number, isDir = boolean, created = number, modified = number } | ||||
| -- The resulting attributes. | ||||
| -- @throws If the path does not exist. | ||||
| -- @see getSize If you only care about the file's size. | ||||
| -- @see isDir If you only care whether a path is a directory or not. | ||||
| function attributes(path) end | ||||
|  | ||||
| -- Defined in bios.lua | ||||
| function complete(sPath, sLocation, bIncludeFiles, bIncludeDirs) end | ||||
|  | ||||
| --- A file handle which can be read from. | ||||
| -- | ||||
| -- @type ReadHandle | ||||
| -- @see fs.open | ||||
| local ReadHandle = {} | ||||
| function ReadHandle.read(count) end | ||||
| function ReadHandle.readAll() end | ||||
| function ReadHandle.readLine(with_trailing) end | ||||
| function ReadHandle.seek(whence, offset) end | ||||
| function ReadHandle.close() end | ||||
|  | ||||
| --- A file handle which can be written to. | ||||
| -- | ||||
| -- @type WriteHandle | ||||
| -- @see fs.open | ||||
| local WriteHandle = {} | ||||
| function WriteHandle.write(text) end | ||||
| function WriteHandle.writeLine(text) end | ||||
| function WriteHandle.flush(text) end | ||||
| function WriteHandle.seek(whence, offset) end | ||||
| function WriteHandle.close() end | ||||
							
								
								
									
										229
									
								
								doc/stub/http.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										229
									
								
								doc/stub/http.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,229 @@ | ||||
| --- The http library allows communicating with web servers, sending and | ||||
| -- receiving data from them. | ||||
| -- | ||||
| -- #### `http_check` event | ||||
| -- | ||||
| -- @module http | ||||
|  | ||||
| --- Asynchronously make a HTTP request to the given url. | ||||
| -- | ||||
| -- This returns immediately, a [`http_success`](#http-success-event) or | ||||
| -- [`http_failure`](#http-failure-event) will be queued once the request has | ||||
| -- completed. | ||||
| -- | ||||
| -- @tparam      string url   The url to request | ||||
| -- @tparam[opt] string body  An optional string containing the body of the | ||||
| -- request. If specified, a `POST` request will be made instead. | ||||
| -- @tparam[opt] { [string] = string } headers Additional headers to send as part | ||||
| -- of this request. | ||||
| -- @tparam[opt] boolean binary Whether to make a binary HTTP request. If true, | ||||
| -- the body will not be UTF-8 encoded, and the received response will not be | ||||
| -- decoded. | ||||
| -- | ||||
| -- @tparam[2] { | ||||
| --   url = string, body? = string, headers? = { [string] = string }, | ||||
| --   binary? = boolean, method? = string, redirect? = boolean, | ||||
| -- } request Options for the request. | ||||
| -- | ||||
| -- This table form is an expanded version of the previous syntax. All arguments | ||||
| -- from above are passed in as fields instead (for instance, | ||||
| -- `http.request("https://example.com")` becomes `http.request { url = | ||||
| -- "https://example.com" }`). | ||||
| -- | ||||
| -- This table also accepts several additional options: | ||||
| -- | ||||
| --  - `method`: Which HTTP method to use, for instance `"PATCH"` or `"DELETE"`. | ||||
| --  - `redirect`: Whether to follow HTTP redirects. Defaults to true. | ||||
| -- | ||||
| -- @see http.get  For a synchronous way to make GET requests. | ||||
| -- @see http.post For a synchronous way to make POST requests. | ||||
| function request(...) end | ||||
|  | ||||
| --- Make a HTTP GET request to the given url. | ||||
| -- | ||||
| -- @tparam string url   The url to request | ||||
| -- @tparam[opt] { [string] = string } headers Additional headers to send as part | ||||
| -- of this request. | ||||
| -- @tparam[opt] boolean binary Whether to make a binary HTTP request. If true, | ||||
| -- the body will not be UTF-8 encoded, and the received response will not be | ||||
| -- decoded. | ||||
| -- | ||||
| -- @tparam[2] { | ||||
| --   url = string, headers? = { [string] = string }, | ||||
| --   binary? = boolean, method? = string, redirect? = boolean, | ||||
| -- } request Options for the request. See @{http.request} for details on how | ||||
| -- these options behave. | ||||
| -- | ||||
| -- @treturn Response The resulting http response, which can be read from. | ||||
| -- @treturn[2] nil When the http request failed, such as in the event of a 404 | ||||
| -- error or connection timeout. | ||||
| -- @treturn string A message detailing why the request failed. | ||||
| -- @treturn Response|nil The failing http response, if available. | ||||
| -- | ||||
| -- @usage Make a request to [example.computercraft.cc](https://example.computercraft.cc), | ||||
| -- and print the returned page. | ||||
| -- ```lua | ||||
| -- local request = http.get("https://example.computercraft.cc") | ||||
| -- print(request.readAll()) | ||||
| -- -- => HTTP is working! | ||||
| -- request.close() | ||||
| -- ``` | ||||
| function get(...) end | ||||
|  | ||||
| --- Make a HTTP POST request to the given url. | ||||
| -- | ||||
| -- @tparam string url   The url to request | ||||
| -- @tparam string body  The body of the POST request. | ||||
| -- @tparam[opt] { [string] = string } headers Additional headers to send as part | ||||
| -- of this request. | ||||
| -- @tparam[opt] boolean binary Whether to make a binary HTTP request. If true, | ||||
| -- the body will not be UTF-8 encoded, and the received response will not be | ||||
| -- decoded. | ||||
| -- | ||||
| -- @tparam[2] { | ||||
| --   url = string, body? = string, headers? = { [string] = string }, | ||||
| --   binary? = boolean, method? = string, redirect? = boolean, | ||||
| -- } request Options for the request. See @{http.request} for details on how | ||||
| -- these options behave. | ||||
| -- | ||||
| -- @treturn Response The resulting http response, which can be read from. | ||||
| -- @treturn[2] nil When the http request failed, such as in the event of a 404 | ||||
| -- error or connection timeout. | ||||
| -- @treturn string A message detailing why the request failed. | ||||
| -- @treturn Response|nil The failing http response, if available. | ||||
| function post(...) end | ||||
|  | ||||
| --- A http response. This acts very much like a @{fs.ReadHandle|file}, though | ||||
| -- provides some http specific methods. | ||||
| -- | ||||
| -- #### `http_success` event | ||||
| -- #### `http_failure` event | ||||
| -- | ||||
| -- @type Response | ||||
| -- @see http.request On how to make a http request. | ||||
| local Response = {} | ||||
|  | ||||
| --- Returns the response code and response message returned by the server | ||||
| -- | ||||
| -- @treturn number The response code (i.e. 200) | ||||
| -- @treturn string The response message (i.e. "OK") | ||||
| function Response.getResponseCode() end | ||||
|  | ||||
| --- Get a table containing the response's headers, in a format similar to that | ||||
| -- required by @{http.request}. If multiple headers are sent with the same | ||||
| -- name, they will be combined with a comma. | ||||
| -- | ||||
| -- @treturn { [string]=string } The response's headers. | ||||
| -- Make a request to [example.computercraft.cc](https://example.computercraft.cc), | ||||
| -- and print the returned headers. | ||||
| -- ```lua | ||||
| -- local request = http.get("https://example.computercraft.cc") | ||||
| -- print(textutils.serialize(request.getResponseHeaders())) | ||||
| -- -- => { | ||||
| -- --   [ "Content-Type" ] = "text/plain; charset=utf8", | ||||
| -- --   [ "content-length" ] = 17, | ||||
| -- --   ... | ||||
| -- -- } | ||||
| -- request.close() | ||||
| -- ``` | ||||
| function Response.getResponseHeaders() end | ||||
|  | ||||
| function Response.read(count) end | ||||
| function Response.readAll() end | ||||
| function Response.readLine(with_trailing) end | ||||
| function Response.seek(whence, offset) end | ||||
| function Response.close() end | ||||
|  | ||||
| --- Asynchronously determine whether a URL can be requested. | ||||
| -- | ||||
| -- If this returns `true`, one should also listen for [`http_check` | ||||
| -- events](#http-check-event) which will container further information about | ||||
| -- whether the URL is allowed or not. | ||||
| -- | ||||
| -- @tparam string url The URL to check. | ||||
| -- @treturn true When this url is not invalid. This does not imply that it is | ||||
| -- allowed - see the comment above. | ||||
| -- @treturn[2] false When this url is invalid. | ||||
| -- @treturn string A reason why this URL is not valid (for instance, if it is | ||||
| -- malformed, or blocked). | ||||
| -- | ||||
| -- @see http.checkURL For a synchronous version. | ||||
| function checkURLAsync(url) end | ||||
|  | ||||
| --- Determine whether a URL can be requested. | ||||
| -- | ||||
| -- If this returns `true`, one should also listen for [`http_check` | ||||
| -- events](#http-check-event) which will container further information about | ||||
| -- whether the URL is allowed or not. | ||||
| -- | ||||
| -- @tparam string url The URL to check. | ||||
| -- @treturn true When this url is valid and can be requested via @{http.request}. | ||||
| -- @treturn[2] false When this url is invalid. | ||||
| -- @treturn string A reason why this URL is not valid (for instance, if it is | ||||
| -- malformed, or blocked). | ||||
| -- | ||||
| -- @see http.checkURLAsync For an asynchronous version. | ||||
| -- | ||||
| -- @usage | ||||
| -- ```lua | ||||
| -- print(http.checkURL("https://example.computercraft.cc/")) | ||||
| -- -- => true | ||||
| -- print(http.checkURL("http://localhost/")) | ||||
| -- -- => false Domain not permitted | ||||
| -- print(http.checkURL("not a url")) | ||||
| -- -- => false URL malformed | ||||
| -- ``` | ||||
| function checkURL(url) end | ||||
|  | ||||
| --- Open a websocket. | ||||
| -- | ||||
| -- @tparam string url The websocket url to connect to. This should have the | ||||
| -- `ws://` or `wss://` protocol. | ||||
| -- @tparam[opt] { [string] = string } headers Additional headers to send as part | ||||
| -- of the initial websocket connection. | ||||
| -- | ||||
| -- @treturn Websocket The websocket connection. | ||||
| -- @treturn[2] false If the websocket connection failed. | ||||
| -- @treturn string An error message describing why the connection failed. | ||||
| function websocket(url, headers) end | ||||
|  | ||||
| --- Asynchronously open a websocket. | ||||
| -- | ||||
| -- This returns immediately, a [`websocket_success`](#websocket-success-event) | ||||
| -- or [`websocket_failure`](#websocket-failure-event) will be queued once the | ||||
| -- request has completed. | ||||
| -- | ||||
| -- @tparam string url The websocket url to connect to. This should have the | ||||
| -- `ws://` or `wss://` protocol. | ||||
| -- @tparam[opt] { [string] = string } headers Additional headers to send as part | ||||
| -- of the initial websocket connection. | ||||
| function websocketAsync(url, headers) end | ||||
|  | ||||
| --- A websocket, which can be used to send an receive messages with a web | ||||
| -- server. | ||||
| -- | ||||
| -- @type Websocket | ||||
| -- @see http.websocket On how to open a websocket. | ||||
| local Websocket = {} | ||||
|  | ||||
| --- Send a websocket message to the connected server. | ||||
| -- | ||||
| -- @tparam string message The message to send. | ||||
| -- @tparam[opt] boolean binary Whether this message should be treated as a | ||||
| -- binary string, rather than encoded text. | ||||
| -- @throws If the websocket has been closed. | ||||
| function Websocket.send(message, binary) end | ||||
|  | ||||
| --- Wait for a message from the server. | ||||
| -- | ||||
| -- @tparam[opt] number timeout The number of seconds to wait if no message is | ||||
| -- received. | ||||
| -- @treturn[1] string The received message. | ||||
| -- @treturn boolean If this was a binary message. | ||||
| -- @treturn[2] nil If the websocket was closed while waiting, or if we timed out. | ||||
| -- @throws If the websocket has been closed. | ||||
| function Websocket.receive(timeout) end | ||||
|  | ||||
| --- Close this websocket. This will terminate the connection, meaning messages | ||||
| -- can no longer be sent or received along it. | ||||
| function Websocket.close() end | ||||
							
								
								
									
										24
									
								
								doc/stub/os.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								doc/stub/os.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| function queueEvent(event, ...) end | ||||
| function startTimer(delay) end | ||||
| function setAlarm(time) end | ||||
| function shutdown() end | ||||
| function reboot() end | ||||
| function getComputerID() end | ||||
| computerID = getComputerID | ||||
| function setComputerLabel(label) end | ||||
| function getComputerLabel() end | ||||
| computerLabel = getComputerLabel | ||||
| function clock() end | ||||
| function time(timezone) end | ||||
| function day(timezone) end | ||||
| function cancelTimer(id) end | ||||
| function cancelAlarm(id) end | ||||
| function epoch(timezone) end | ||||
| function date(format, time) end | ||||
|  | ||||
| -- Defined in bios.lua | ||||
| function loadAPI(path) end | ||||
| function pullEvent(filter) end | ||||
| function pullEventRaw(filter) end | ||||
| function version() end | ||||
| function run(env, path, ...) end | ||||
							
								
								
									
										28
									
								
								doc/stub/pocket.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								doc/stub/pocket.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| --[[- | ||||
| Control the current pocket computer, adding or removing upgrades. | ||||
|  | ||||
| This API is only available on pocket computers. As such, you may use its | ||||
| presence to determine what kind of computer you are using: | ||||
|  | ||||
| ```lua | ||||
| if pocket then | ||||
|   print("On a pocket computer") | ||||
| else | ||||
|   print("On something else") | ||||
| end | ||||
| ``` | ||||
| ]] | ||||
|  | ||||
| --- Search the player's inventory for another upgrade, replacing the existing | ||||
| -- one with that item if found. | ||||
| -- | ||||
| -- This inventory search starts from the player's currently selected slot, | ||||
| -- allowing you to prioritise upgrades. | ||||
| -- | ||||
| -- @throws If an upgrade cannot be found. | ||||
| function equipBack() end | ||||
|  | ||||
| --- Remove the pocket computer's current upgrade. | ||||
| -- | ||||
| -- @throws If this pocket computer does not currently have an upgrade. | ||||
| function unequipBack() end | ||||
							
								
								
									
										120
									
								
								doc/stub/redstone.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								doc/stub/redstone.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,120 @@ | ||||
| --[[- Interact with redstone attached to this computer. | ||||
|  | ||||
| The @{redstone} library exposes three "types" of redstone control: | ||||
|  - Binary input/output (@{setOutput}/@{getInput}): These simply check if a | ||||
|    redstone wire has any input or output. A signal strength of 1 and 15 are | ||||
|    treated the same. | ||||
|  - Analogue input/output (@{setAnalogueOutput}/@{getAnalogueInput}): These | ||||
|    work with the actual signal strength of the redstone wired, from 0 to 15. | ||||
|  - Bundled cables (@{setBundledOutput}/@{getBundledInput}): These interact with | ||||
|    "bundled" cables, such as those from Project:Red. These allow you to send | ||||
|    16 separate on/off signals. Each channel corresponds to a colour, with the | ||||
|    first being @{colors.white} and the last @{colors.black}. | ||||
|  | ||||
| Whenever a redstone input changes, a `redstone` event will be fired. This may | ||||
| be used in or | ||||
|  | ||||
| This module may also be referred to as `rs`. For example, one may call | ||||
| `rs.getSides()` instead of @{redstone.getSides}. | ||||
|  | ||||
| @module redstone | ||||
| @usage Toggle the redstone signal above the computer every 0.5 seconds. | ||||
|  | ||||
|     while true do | ||||
|         redstone.setOutput("top", not redstone.getOutput("top")) | ||||
|         sleep(0.5) | ||||
|     end | ||||
| @usage Mimic a redstone comparator in [subtraction mode][comparator]. | ||||
|  | ||||
|     while true do | ||||
|       local rear = rs.getAnalogueInput("back") | ||||
|       local sides = math.max(rs.getAnalogueInput("left"), rs.getAnalogueInput("right")) | ||||
|       rs.setAnalogueOutput("front", math.max(rear - sides, 0)) | ||||
|  | ||||
|       os.pullEvent("redstone") -- Wait for a change to inputs. | ||||
|     end | ||||
|  | ||||
| [comparator]: https://minecraft.gamepedia.com/Redstone_Comparator#Subtract_signal_strength "Redstone Comparator on the Minecraft wiki." | ||||
| ]] | ||||
|  | ||||
| --- Returns a table containing the six sides of the computer. Namely, "top", | ||||
| -- "bottom", "left", "right", "front" and "back". | ||||
| -- | ||||
| -- @treturn { string... } A table of valid sides. | ||||
| function getSides() end | ||||
|  | ||||
| --- Turn the redstone signal of a specific side on or off. | ||||
| -- | ||||
| -- @tparam string side The side to set. | ||||
| -- @tparam boolean on Whether the redstone signal should be on or off. When on, | ||||
| -- a signal strength of 15 is emitted. | ||||
| function setOutput(side, on) end | ||||
|  | ||||
| --- Get the current redstone output of a specific side. | ||||
| -- | ||||
| -- @tparam string side The side to get. | ||||
| -- @treturn boolean Whether the redstone output is on or off. | ||||
| -- @see setOutput | ||||
| function getOutput(side) end | ||||
|  | ||||
| --- Get the current redstone input of a specific side. | ||||
| -- | ||||
| -- @tparam string side The side to get. | ||||
| -- @treturn boolean Whether the redstone input is on or off. | ||||
| function getInput(side) end | ||||
|  | ||||
| --- Set the redstone signal strength for a specific side. | ||||
| -- | ||||
| -- @tparam string side The side to set. | ||||
| -- @tparam number value The signal strength, between 0 and 15. | ||||
| -- @throws If `value` is not between 0 and 15. | ||||
| function setAnalogOutput(side, value) end | ||||
| setAnalogueOutput = setAnalogOutput | ||||
|  | ||||
| --- Get the redstone output signal strength for a specific side. | ||||
| -- | ||||
| -- @tparam string side The side to get. | ||||
| -- @treturn number The output signal strength, between 0 and 15. | ||||
| -- @see setAnalogueOutput | ||||
| function getAnalogOutput(sid) end | ||||
| getAnalogueOutput = getAnalogOutput | ||||
|  | ||||
| --- Get the redstone input signal strength for a specific side. | ||||
| -- | ||||
| -- @tparam string side The side to get. | ||||
| -- @treturn number The input signal strength, between 0 and 15. | ||||
| function getAnalogInput(side) end | ||||
| getAnalogueInput = getAnalogInput | ||||
|  | ||||
| --- Set the bundled cable output for a specific side. | ||||
| -- | ||||
| -- @tparam string side The side to set. | ||||
| -- @tparam number The colour bitmask to set. | ||||
| -- @see colors.subtract For removing a colour from the bitmask. | ||||
| -- @see colors.combine For adding a colour to the bitmask. | ||||
| function setBundledOutput(side, output) end | ||||
|  | ||||
| --- Get the bundled cable output for a specific side. | ||||
| -- | ||||
| -- @tparam string side The side to get. | ||||
| -- @treturn number The bundled cable's output. | ||||
| function getBundledOutput(side) end | ||||
|  | ||||
| --- Get the bundled cable input for a specific side. | ||||
| -- | ||||
| -- @tparam string side The side to get. | ||||
| -- @treturn number The bundled cable's input. | ||||
| -- @see testBundledInput To determine if a specific colour is set. | ||||
| function getBundledInput(side) end | ||||
|  | ||||
| --- Determine if a specific combination of colours are on for the given side. | ||||
| -- | ||||
| -- @tparam string side The side to test. | ||||
| -- @tparam number mask The mask to test. | ||||
| -- @see getBundledInput | ||||
| -- @see colors.combine For adding a colour to the bitmask. | ||||
| -- @usage Check if @{colors.white} and @{colors.black} are on for above the | ||||
| -- computer. | ||||
| -- | ||||
| --     print(redstone.testBundledInput("top", colors.combine(colors.white, colors.black))) | ||||
| function testBundledInput(side, mask) end | ||||
							
								
								
									
										52
									
								
								doc/stub/term.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								doc/stub/term.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| function write(text) end | ||||
| function scroll(lines) end | ||||
| function setCursorPos(x, y) end | ||||
| function setCursorBlink(blink) end | ||||
| function getCursorPos() end | ||||
| function getSize() end | ||||
| function clear() end | ||||
| function clearLine() end | ||||
| function setTextColour(colour) end | ||||
| setTextColor = setTextColour | ||||
| function setBackgroundColour(colour) end | ||||
| setBackgroundColor = setBackgroundColour | ||||
| function isColour() end | ||||
| isColor = isColour | ||||
| function getTextColour() end | ||||
| getTextColor = getTextColor | ||||
| function getBackgroundColour() end | ||||
| getBackgroundColor = getBackgroundColour | ||||
| function blit(text, text_colours, background_colours) end | ||||
| function setPaletteColour(colour, ...) end | ||||
| setPaletteColor = setPaletteColour | ||||
| function getPaletteColour(colour, ...) end | ||||
| getPaletteColor = getPaletteColour | ||||
| function nativePaletteColour(colour) end | ||||
| nativePaletteColor = nativePaletteColour | ||||
|  | ||||
| --- @type Redirect | ||||
| local Redirect = {} | ||||
|  | ||||
| Redirect.write = write | ||||
| Redirect.scroll = scroll | ||||
| Redirect.setCursorPos = setCursorPos | ||||
| Redirect.setCursorBlink = setCursorBlink | ||||
| Redirect.getCursorPos = getCursorPos | ||||
| Redirect.getSize = getSize | ||||
| Redirect.clear = clear | ||||
| Redirect.clearLine = clearLine | ||||
| Redirect.setTextColour = setTextColour | ||||
| Redirect.setTextColor = setTextColor | ||||
| Redirect.setBackgroundColour = setBackgroundColour | ||||
| Redirect.setBackgroundColor = setBackgroundColor | ||||
| Redirect.isColour = isColour | ||||
| Redirect.isColor = isColor | ||||
| Redirect.getTextColour = getTextColour | ||||
| Redirect.getTextColor = getTextColor | ||||
| Redirect.getBackgroundColour = getBackgroundColour | ||||
| Redirect.getBackgroundColor = getBackgroundColor | ||||
| Redirect.blit = blit | ||||
| Redirect.setPaletteColour = setPaletteColour | ||||
| Redirect.setPaletteColor = setPaletteColor | ||||
| Redirect.getPaletteColour = getPaletteColour | ||||
| Redirect.getPaletteColor = getPaletteColor | ||||
							
								
								
									
										230
									
								
								doc/stub/turtle.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										230
									
								
								doc/stub/turtle.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,230 @@ | ||||
| --- Move the turtle forward one block. | ||||
| -- @treturn boolean Whether the turtle could successfully move. | ||||
| -- @treturn string|nil The reason the turtle could not move. | ||||
| function forward() end | ||||
|  | ||||
| --- Move the turtle backwards one block. | ||||
| -- @treturn boolean Whether the turtle could successfully move. | ||||
| -- @treturn string|nil The reason the turtle could not move. | ||||
| function back() end | ||||
|  | ||||
| --- Move the turtle up one block. | ||||
| -- @treturn boolean Whether the turtle could successfully move. | ||||
| -- @treturn string|nil The reason the turtle could not move. | ||||
| function up() end | ||||
|  | ||||
| --- Move the turtle down one block. | ||||
| -- @treturn boolean Whether the turtle could successfully move. | ||||
| -- @treturn string|nil The reason the turtle could not move. | ||||
| function down() end | ||||
|  | ||||
| --- Rotate the turtle 90 degress to the left. | ||||
| function turnLeft() end | ||||
|  | ||||
| --- Rotate the turtle 90 degress to the right. | ||||
| function turnRight() end | ||||
|  | ||||
| --- Attempt to break the block in front of the turtle. | ||||
| -- | ||||
| -- This requires a turtle tool capable of breaking the block. Diamond pickaxes | ||||
| -- (mining turtles) can break any vanilla block, but other tools (such as axes) | ||||
| -- are more limited. | ||||
| -- | ||||
| -- @tparam[opt] "left"|"right" side The specific tool to use. | ||||
| -- @treturn boolean Whether a block was broken. | ||||
| -- @treturn string|nil The reason no block was broken. | ||||
| function dig(side) end | ||||
|  | ||||
| --- Attempt to break the block above the turtle. See @{dig} for full details. | ||||
| -- | ||||
| -- @tparam[opt] "left"|"right" side The specific tool to use. | ||||
| -- @treturn boolean Whether a block was broken. | ||||
| -- @treturn string|nil The reason no block was broken. | ||||
| function digUp(side) end | ||||
|  | ||||
| --- Attempt to break the block below the turtle. See @{dig} for full details. | ||||
| -- | ||||
| -- @tparam[opt] "left"|"right" side The specific tool to use. | ||||
| -- @treturn boolean Whether a block was broken. | ||||
| -- @treturn string|nil The reason no block was broken. | ||||
| function digDown(side) end | ||||
|  | ||||
| --- Attack the entity in front of the turtle. | ||||
| -- | ||||
| -- @tparam[opt] "left"|"right" side The specific tool to use. | ||||
| -- @treturn boolean Whether an entity was attacked. | ||||
| -- @treturn string|nil The reason nothing was attacked. | ||||
| function attack(side) end | ||||
|  | ||||
| --- Attack the entity above the turtle. | ||||
| -- | ||||
| -- @tparam[opt] "left"|"right" side The specific tool to use. | ||||
| -- @treturn boolean Whether an entity was attacked. | ||||
| -- @treturn string|nil The reason nothing was attacked. | ||||
| function attackUp(side) end | ||||
|  | ||||
| --- Attack the entity below the turtle. | ||||
| -- | ||||
| -- @tparam[opt] "left"|"right" side The specific tool to use. | ||||
| -- @treturn boolean Whether an entity was attacked. | ||||
| -- @treturn string|nil The reason nothing was attacked. | ||||
| function attackDown(side) end | ||||
|  | ||||
| --- Place a block or item into the world in front of the turtle. | ||||
| -- | ||||
| -- @treturn boolean Whether the block could be placed. | ||||
| -- @treturn string|nil The reason the block was not placed. | ||||
| function place() end | ||||
|  | ||||
| --- Place a block or item into the world above the turtle. | ||||
| -- | ||||
| -- @treturn boolean Whether the block could be placed. | ||||
| -- @treturn string|nil The reason the block was not placed. | ||||
| function placeUp() end | ||||
|  | ||||
| --- Place a block or item into the world below the turtle. | ||||
| -- | ||||
| -- @treturn boolean Whether the block could be placed. | ||||
| -- @treturn string|nil The reason the block was not placed. | ||||
| function placeDown() end | ||||
|  | ||||
| --- Drop the currently selected stack into the inventory in front of the turtle, | ||||
| -- or as an item into the world if there is no inventory. | ||||
| -- | ||||
| -- @tparam[opt] number count The number of items to drop. If not given, the | ||||
| -- entire stack will be dropped. | ||||
| -- @treturn boolean Whether items were dropped. | ||||
| -- @treturn string|nil The reason the no items were dropped. | ||||
| -- @see select | ||||
| function drop(count) end | ||||
|  | ||||
| --- Drop the currently selected stack into the inventory above the turtle, or as | ||||
| -- an item into the world if there is no inventory. | ||||
| -- | ||||
| -- @tparam[opt] number count The number of items to drop. If not given, the | ||||
| -- entire stack will be dropped. | ||||
| -- @treturn boolean Whether items were dropped. | ||||
| -- @treturn string|nil The reason the no items were dropped. | ||||
| -- @see select | ||||
| function dropUp(count) end | ||||
|  | ||||
| --- Drop the currently selected stack into the inventory below the turtle, or as | ||||
| -- an item into the world if there is no inventory. | ||||
| -- | ||||
| -- @tparam[opt] number count The number of items to drop. If not given, the | ||||
| -- entire stack will be dropped. | ||||
| -- @treturn boolean Whether items were dropped. | ||||
| -- @treturn string|nil The reason the no items were dropped. | ||||
| -- @see select | ||||
| function dropDown(count) end | ||||
|  | ||||
| --- Suck an item from the inventory in front of the turtle, or from an item | ||||
| -- floating in the world. | ||||
| -- | ||||
| -- This will pull items into the first acceptable slot, starting at the | ||||
| -- @{select|currently selected} one. | ||||
| -- | ||||
| -- @tparam[opt] number count The number of items to suck. If not given, up to a | ||||
| -- stack of items will be picked up. | ||||
| -- @treturn boolean Whether items were picked up. | ||||
| -- @treturn string|nil The reason the no items were picked up. | ||||
| function suck(count) end | ||||
|  | ||||
| --- Suck an item from the inventory above the turtle, or from an item floating | ||||
| -- in the world. | ||||
| -- | ||||
| -- @tparam[opt] number count The number of items to suck. If not given, up to a | ||||
| -- stack of items will be picked up. | ||||
| -- @treturn boolean Whether items were picked up. | ||||
| -- @treturn string|nil The reason the no items were picked up. | ||||
| function suckUp(count) end | ||||
|  | ||||
| --- Suck an item from the inventory below the turtle, or from an item floating | ||||
| -- in the world. | ||||
| -- | ||||
| -- @tparam[opt] number count The number of items to suck. If not given, up to a | ||||
| -- stack of items will be picked up. | ||||
| -- @treturn boolean Whether items were picked up. | ||||
| -- @treturn string|nil The reason the no items were picked up. | ||||
| function suckDown(count) end | ||||
|  | ||||
| --- Check if there is a solid block in front of the turtle. In this case, solid | ||||
| -- refers to any non-air or liquid block. | ||||
| -- | ||||
| -- @treturn boolean If there is a solid block in front. | ||||
| function detect() end | ||||
|  | ||||
| --- Check if there is a solid block above the turtle. | ||||
| -- | ||||
| -- @treturn boolean If there is a solid block above. | ||||
| function detectUp() end | ||||
|  | ||||
| --- Check if there is a solid block below the turtle. | ||||
| -- | ||||
| -- @treturn boolean If there is a solid block below. | ||||
| function detectDown() end | ||||
|  | ||||
| function compare() end | ||||
| function compareUp() end | ||||
| function compareDown() end | ||||
|  | ||||
| function inspect() end | ||||
| function inspectUp() end | ||||
| function inspectDown() end | ||||
|  | ||||
|  | ||||
| --- Change the currently selected slot. | ||||
| -- | ||||
| -- The selected slot is determines what slot actions like @{drop} or | ||||
| -- @{getItemCount} act on. | ||||
| -- | ||||
| -- @tparam number slot The slot to select. | ||||
| -- @see getSelectedSlot | ||||
| function select(slot) end | ||||
|  | ||||
| --- Get the currently selected slot. | ||||
| -- | ||||
| -- @treturn number The current slot. | ||||
| -- @see select | ||||
| function getSelectedSlot() end | ||||
|  | ||||
| --- Get the number of items in the given slot. | ||||
| -- | ||||
| -- @tparam[opt] number slot The slot we wish to check. Defaults to the @{turtle.select|selected slot}. | ||||
| -- @treturn number The number of items in this slot. | ||||
| function getItemCount(slot) end | ||||
|  | ||||
| --- Get the remaining number of items which may be stored in this stack. | ||||
| -- | ||||
| -- For instance, if a slot contains 13 blocks of dirt, it has room for another 51. | ||||
| -- | ||||
| -- @tparam[opt] number slot The slot we wish to check. Defaults to the @{turtle.select|selected slot}. | ||||
| -- @treturn number The space left in this slot. | ||||
| function getItemSpace(slot) end | ||||
|  | ||||
|  | ||||
| --- Get detailed information about the items in the given slot. | ||||
| -- | ||||
| -- @tparam[opt] number slot The slot to get information about. Defaults to the @{turtle.select|selected slot}. | ||||
| -- @treturn nil|table Information about the given slot, or @{nil} if it is empty. | ||||
| -- @usage Print the current slot, assuming it contains 13 dirt. | ||||
| -- | ||||
| --     print(textutils.serialize(turtle.getItemDetail())) | ||||
| --     -- => { | ||||
| --     --    name = "minecraft:dirt", | ||||
| --     --    damage = 0, | ||||
| --     --    count = 13, | ||||
| --     -- } | ||||
| function getItemDetail(slot) end | ||||
|  | ||||
| function getFuelLevel() end | ||||
|  | ||||
| function refuel(count) end | ||||
| function compareTo(slot) end | ||||
| function transferTo(slot, count) end | ||||
|  | ||||
| function getFuelLimit() end | ||||
| function equipLeft() end | ||||
| function equipRight() end | ||||
|  | ||||
| function craft(limit) end | ||||
							
								
								
									
										186
									
								
								doc/styles.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								doc/styles.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,186 @@ | ||||
| /* Basic reset on elements */ | ||||
| h1, h2, h3, h4, p, table, div, body { | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|     border: 0; | ||||
|     font-size: 100%; | ||||
|     font: inherit; | ||||
|     vertical-align: baseline; | ||||
| } | ||||
| /* Make the page a little more airy */ | ||||
| body { | ||||
|     margin: 20px auto; | ||||
|     max-width: 1200px; | ||||
|     padding: 0 10px; | ||||
|     line-height: 1.6; | ||||
|     color: #222; | ||||
|     background: #fff; | ||||
| } | ||||
|  | ||||
| /* Try to use system default fonts. */ | ||||
| body { | ||||
|     font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", | ||||
|                  "Droid Sans", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; | ||||
| } | ||||
|  | ||||
| code, pre, .parameter, .type, .definition-name, .reference-code { | ||||
|     font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; | ||||
| } | ||||
|  | ||||
| /* Some definitions of basic tags */ | ||||
| code { | ||||
|     color: #c7254e; | ||||
|     background-color: #f9f2f4; | ||||
| } | ||||
|  | ||||
| p { | ||||
|     margin: 0.9em 0; | ||||
| } | ||||
|  | ||||
| h1 { | ||||
|     font-size: 1.5em; | ||||
|     font-weight: lighter; | ||||
|     border-bottom: solid 1px #aaa; | ||||
| } | ||||
|  | ||||
| h2, h3, h4 { margin: 1.4em 0 0.3em;} | ||||
| h2 { font-size: 1.25em; } | ||||
| h3 { font-size: 1.15em; font-weight: bold; } | ||||
| h4 { font-size: 1.06em; } | ||||
|  | ||||
| a, a:visited, a:active { font-weight: bold; color: #004080; text-decoration: none; } | ||||
| a:hover { text-decoration: underline; } | ||||
|  | ||||
| blockquote { margin-left: 3em; } | ||||
|  | ||||
| /* Stop sublists from having initial vertical space */ | ||||
| ul ul { margin-top: 0px; } | ||||
| ol ul { margin-top: 0px; } | ||||
| ol ol { margin-top: 0px; } | ||||
| ul ol { margin-top: 0px; } | ||||
|  | ||||
| /* Make the target distinct; helps when we're navigating to a function */ | ||||
| a:target + * { background-color: #FFFF99; } | ||||
|  | ||||
| /* Allow linking to any subsection */ | ||||
| a[name]::before { content: "#"; } | ||||
|  | ||||
| /* Layout */ | ||||
| #main { | ||||
|     display: flex; | ||||
|     flex-wrap: nowrap; | ||||
|     justify-content: space-between; | ||||
|     min-height: calc(100vh - 100px); | ||||
| } | ||||
|  | ||||
| #main > nav { | ||||
|     flex-basis: 30%; | ||||
|     min-width: 150px; | ||||
|     max-width: 250px; | ||||
|     background-color: #f0f0f0; | ||||
| } | ||||
|  | ||||
| nav h1, nav ul { padding: 0em 10px; } | ||||
|  | ||||
| nav h2 { | ||||
|     background-color:#e7e7e7; | ||||
|     font-size: 1.1em; | ||||
|     color:#000000; | ||||
|     padding: 5px 10px; | ||||
| } | ||||
|  | ||||
| nav ul { | ||||
|     list-style-type: none; | ||||
|     margin: 0; | ||||
| } | ||||
|  | ||||
| #content { | ||||
|     flex-shrink: 1; | ||||
|     flex-basis: 80%; | ||||
|     padding: 0px 10px; | ||||
| } | ||||
|  | ||||
| footer { | ||||
|     text-align: right; | ||||
|     font-size: 0.8em; | ||||
| } | ||||
|  | ||||
| /* The definition lists at the top of each page */ | ||||
| table.definition-list { | ||||
|     border-collapse: collapse; | ||||
|     width: 100%; | ||||
| } | ||||
|  | ||||
| table.definition-list td, table.definition-list th { | ||||
|     border: 1px solid #cccccc; | ||||
|     padding: 5px; | ||||
| } | ||||
|  | ||||
| table.definition-list th { | ||||
|     background-color: #f0f0f0; | ||||
|     min-width: 200px; | ||||
|     white-space: nowrap; | ||||
|     text-align: right; | ||||
| } | ||||
|  | ||||
| table.definition-list td { width: 100%; } | ||||
|  | ||||
| dl.definition dt { | ||||
|     border-top: 1px solid #ccc; | ||||
|     padding-top: 1em; | ||||
|     display: flex; | ||||
| } | ||||
|  | ||||
| dl.definition dt .definition-name { | ||||
|     padding: 0 0.1em; | ||||
|     margin: 0 0.1em; | ||||
|     flex-grow: 1; | ||||
| } | ||||
|  | ||||
|  | ||||
| dl.definition dd { | ||||
|     padding-bottom: 1em; | ||||
|     margin: 10px 0 0 20px; | ||||
| } | ||||
|  | ||||
| dl.definition h3 { | ||||
|     font-size: .95em; | ||||
| } | ||||
|  | ||||
| /* Links to source-code */ | ||||
| .source-link { font-size: 0.8em; } | ||||
| .source-link::before { content: '[' } | ||||
| .source-link::after  { content: ']' } | ||||
| a.source-link, a.source-link:visited, a.source-link:active { color: #505050; } | ||||
|  | ||||
| /* Method definitions */ | ||||
| span.parameter:after { content:":"; padding-left: 0.3em; } | ||||
| .optional { text-decoration: underline dotted; } | ||||
|  | ||||
| /** Fancy colour display. */ | ||||
| .colour-ref { | ||||
|     display: inline-block; | ||||
|     width: 0.8em; | ||||
|     height: 0.8em; | ||||
|     margin: 0.1em 0.1em 0.3em 0.1em; /* Terrrible hack to force vertical alignment. */ | ||||
|     border: solid 1px black; | ||||
|     box-sizing: border-box; | ||||
|     vertical-align: middle; | ||||
| } | ||||
|  | ||||
| /* styles for prettification of source */ | ||||
| .highlight .comment { color: #558817; } | ||||
| .highlight .constant { color: #a8660d; } | ||||
| .highlight .escape { color: #844631; } | ||||
| .highlight .keyword { color: #aa5050; font-weight: bold; } | ||||
| .highlight .library { color: #0e7c6b; } | ||||
| .highlight .marker { color: #512b1e; background: #fedc56; font-weight: bold; } | ||||
| .highlight .string { color: #8080ff; } | ||||
| .highlight .literal-kw { color: #8080ff; } | ||||
| .highlight .number { color: #f8660d; } | ||||
| .highlight .operator { color: #2239a8; font-weight: bold; } | ||||
| .highlight .preprocessor, pre .prepro { color: #a33243; } | ||||
| .highlight .global { color: #800080; } | ||||
| .highlight .user-keyword { color: #800080; } | ||||
| .highlight .prompt { color: #558817; } | ||||
| .highlight .url { color: #272fc2; text-decoration: underline; } | ||||
| @@ -1,7 +1,7 @@ | ||||
| # Mod properties | ||||
| mod_version=1.83.1 | ||||
| mod_version=1.89.1 | ||||
|  | ||||
| # Minecraft properties | ||||
| mc_version=1.13.2 | ||||
| forge_version=25.0.219 | ||||
| mappings_version=20190530-1.13.2 | ||||
| # Minecraft properties (update mods.toml when changing) | ||||
| mc_version=1.14.4 | ||||
| forge_version=28.1.71 | ||||
| mappings_version=20191123-1.14.3 | ||||
|   | ||||
							
								
								
									
										95
									
								
								illuaminate.sexp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								illuaminate.sexp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,95 @@ | ||||
| ; -*- mode: Lisp;-*- | ||||
|  | ||||
| (sources | ||||
|   /doc/stub/ | ||||
|   /src/main/resources/*/computercraft/lua/bios.lua | ||||
|   /src/main/resources/*/computercraft/lua/rom/ | ||||
|   /src/test/resources/test-rom) | ||||
|  | ||||
|  | ||||
| (doc | ||||
|   (title "CC: Tweaked") | ||||
|   (index doc/index.md) | ||||
|   (source-link https://github.com/SquidDev-CC/CC-Tweaked/blob/${commit}/${path}#L${line}) | ||||
|  | ||||
|   (library-path | ||||
|     /doc/stub/ | ||||
|  | ||||
|     /src/main/resources/*/computercraft/lua/rom/apis | ||||
|     /src/main/resources/*/computercraft/lua/rom/apis/command | ||||
|     /src/main/resources/*/computercraft/lua/rom/apis/turtle | ||||
|  | ||||
|     /src/main/resources/*/computercraft/lua/rom/modules/main | ||||
|     /src/main/resources/*/computercraft/lua/rom/modules/command | ||||
|     /src/main/resources/*/computercraft/lua/rom/modules/turtle)) | ||||
|  | ||||
| (at / | ||||
|   (linters | ||||
|     syntax:string-index | ||||
|  | ||||
|     ;; It'd be nice to avoid this, but right now there's a lot of instances of | ||||
|     ;; it. | ||||
|     -var:set-loop | ||||
|  | ||||
|     ;; It's useful to name arguments for documentation, so we allow this. It'd | ||||
|     ;; be good to find a compromise in the future, but this works for now. | ||||
|     -var:unused-arg) | ||||
|  | ||||
|   (lint | ||||
|     (bracket-spaces | ||||
|       (call no-space) | ||||
|       (function-args no-space) | ||||
|       (parens no-space) | ||||
|       (table space) | ||||
|       (index no-space)) | ||||
|  | ||||
|     ;; colours imports from colors, and we don't handle that right now. | ||||
|     ;; keys is entirely dynamic, so we skip it. | ||||
|     (dynamic-modules colours keys) | ||||
|  | ||||
|     (globals | ||||
|       :max | ||||
|       _CC_DEFAULT_SETTINGS | ||||
|       _CC_DISABLE_LUA51_FEATURES | ||||
|       ;; Ideally we'd pick these up from bios.lua, but illuaminate currently | ||||
|       ;; isn't smart enough. | ||||
|       sleep write printError read rs))) | ||||
|  | ||||
| ;; We disable the unused global linter in bios.lua and the APIs. In the future | ||||
| ;; hopefully we'll get illuaminate to handle this. | ||||
| (at | ||||
|   (/src/main/resources/*/computercraft/lua/bios.lua | ||||
|    /src/main/resources/*/computercraft/lua/rom/apis/) | ||||
|   (linters -var:unused-global) | ||||
|   (lint (allow-toplevel-global true))) | ||||
|  | ||||
| ;; Silence some variable warnings in documentation stubs. | ||||
| (at /doc/stub | ||||
|   (linters -var:unused-global) | ||||
|   (lint (allow-toplevel-global true))) | ||||
|  | ||||
| ;; Suppress warnings for currently undocumented modules. | ||||
| (at | ||||
|   (/doc/stub/fs.lua | ||||
|    /doc/stub/http.lua | ||||
|    /doc/stub/os.lua | ||||
|    /doc/stub/term.lua | ||||
|    /doc/stub/turtle.lua | ||||
|    /src/main/resources/*/computercraft/lua/rom/apis/io.lua | ||||
|    /src/main/resources/*/computercraft/lua/rom/apis/window.lua) | ||||
|  | ||||
|   (linters -doc:undocumented -doc:undocumented-arg)) | ||||
|  | ||||
| ;; These currently rely on unknown references. | ||||
| (at | ||||
|   (/src/main/resources/*/computercraft/lua/rom/apis/textutils.lua | ||||
|    /src/main/resources/*/computercraft/lua/rom/modules/main/cc/completion.lua | ||||
|    /src/main/resources/*/computercraft/lua/rom/modules/main/cc/shell/completion.lua | ||||
|    /src/main/resources/*/computercraft/lua/rom/programs/shell.lua) | ||||
|   (linters -doc:unresolved-reference)) | ||||
|  | ||||
| (at /src/test/resources/test-rom | ||||
|   (lint | ||||
|     (globals | ||||
|       :max sleep write | ||||
|       cct_test describe expect howlci fail it pending stub))) | ||||
							
								
								
									
										43
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/cable.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/cable.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:cable" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_modem": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:cable" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_modem", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										35
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/computer_advanced.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/computer_advanced.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:computer_advanced" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_components": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "minecraft:redstone" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:gold_ingot" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:computer_advanced" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_components", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/computer_command.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/computer_command.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:computer_command" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_components": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "minecraft:command_block" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:computer_command" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_components", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/computer_normal.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/computer_normal.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:computer_normal" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_redstone": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "forge:dusts/redstone" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:computer_normal" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_redstone", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_1.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_1.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_1" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_1" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_10.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_10.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_10" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_10" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_11.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_11.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_11" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_11" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_12.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_12.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_12" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_12" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_13.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_13.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_13" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_13" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_14.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_14.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_14" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_14" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_15.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_15.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_15" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_15" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_16.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_16.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_16" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_16" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_2.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_2.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_2" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_2" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_3.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_3.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_3" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_3" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_4.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_4.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_4" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_4" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_5.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_5.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_5" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_5" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_6.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_6.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_6" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_6" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_7.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_7.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_7" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_7" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_8.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_8.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_8" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_8" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_9.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_9.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_9" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_drive": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:disk_drive" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_9" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_drive", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_drive.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/disk_drive.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:disk_drive" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:disk_drive" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/monitor_advanced.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/monitor_advanced.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:monitor_advanced" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:monitor_advanced" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/monitor_normal.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/monitor_normal.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:monitor_normal" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:monitor_normal" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_advanced/computercraft/speaker" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:speaker" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_advanced/computercraft/speaker" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_advanced/computercraft/wireless_modem_advanced" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:wireless_modem_advanced" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_advanced/computercraft/wireless_modem_advanced" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_advanced/computercraft/wireless_modem_normal" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:wireless_modem_normal" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_advanced/computercraft/wireless_modem_normal" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_advanced/minecraft/crafting_table" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:crafting_table" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_advanced/minecraft/crafting_table" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_advanced/minecraft/diamond_axe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_axe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_advanced/minecraft/diamond_axe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_advanced/minecraft/diamond_hoe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_hoe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_advanced/minecraft/diamond_hoe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_advanced/minecraft/diamond_pickaxe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_pickaxe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_advanced/minecraft/diamond_pickaxe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_advanced/minecraft/diamond_shovel" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_shovel" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_advanced/minecraft/diamond_shovel" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_advanced/minecraft/diamond_sword" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_sword" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_advanced/minecraft/diamond_sword" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,43 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_computer_advanced" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_apple": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "minecraft:golden_apple" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_computer_advanced" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_apple", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,43 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_computer_normal" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_apple": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "minecraft:golden_apple" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_computer_normal" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_apple", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_normal/computercraft/speaker" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:speaker" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_normal/computercraft/speaker" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_normal/computercraft/wireless_modem_advanced" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:wireless_modem_advanced" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_normal/computercraft/wireless_modem_advanced" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_normal/computercraft/wireless_modem_normal" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:wireless_modem_normal" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_normal/computercraft/wireless_modem_normal" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_normal/minecraft/crafting_table" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:crafting_table" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_normal/minecraft/crafting_table" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_normal/minecraft/diamond_axe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_axe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_normal/minecraft/diamond_axe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_normal/minecraft/diamond_hoe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_hoe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_normal/minecraft/diamond_hoe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_normal/minecraft/diamond_pickaxe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_pickaxe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_normal/minecraft/diamond_pickaxe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_normal/minecraft/diamond_shovel" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_shovel" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_normal/minecraft/diamond_shovel" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:pocket_normal/minecraft/diamond_sword" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:pocket_computer_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_sword" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:pocket_normal/minecraft/diamond_sword" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/printer.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/printer.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:printer" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:printer" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/speaker.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/speaker.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:speaker" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:speaker" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_advanced/computercraft/speaker" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:speaker" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_advanced/computercraft/speaker" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_advanced/computercraft/wireless_modem_advanced" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:wireless_modem_advanced" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_advanced/computercraft/wireless_modem_advanced" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_advanced/computercraft/wireless_modem_normal" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:wireless_modem_normal" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_advanced/computercraft/wireless_modem_normal" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_advanced/minecraft/crafting_table" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:crafting_table" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_advanced/minecraft/crafting_table" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_advanced/minecraft/diamond_axe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_axe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_advanced/minecraft/diamond_axe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_advanced/minecraft/diamond_hoe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_hoe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_advanced/minecraft/diamond_hoe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_advanced/minecraft/diamond_pickaxe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_pickaxe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_advanced/minecraft/diamond_pickaxe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_advanced/minecraft/diamond_shovel" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_shovel" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_advanced/minecraft/diamond_shovel" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_advanced/minecraft/diamond_sword" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_advanced" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_sword" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_advanced/minecraft/diamond_sword" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_normal/computercraft/speaker" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:speaker" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_normal/computercraft/speaker" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_normal/computercraft/wireless_modem_advanced" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:wireless_modem_advanced" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_normal/computercraft/wireless_modem_advanced" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_normal/computercraft/wireless_modem_normal" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "computercraft:wireless_modem_normal" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_normal/computercraft/wireless_modem_normal" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_normal/minecraft/crafting_table" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:crafting_table" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_normal/minecraft/crafting_table" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_normal/minecraft/diamond_axe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_axe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_normal/minecraft/diamond_axe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_normal/minecraft/diamond_hoe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_hoe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_normal/minecraft/diamond_hoe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_normal/minecraft/diamond_pickaxe" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_pickaxe" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_normal/minecraft/diamond_pickaxe" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_normal/minecraft/diamond_shovel" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_shovel" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_normal/minecraft/diamond_shovel" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,35 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:turtle_normal/minecraft/diamond_sword" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_items": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:turtle_normal" | ||||
|           }, | ||||
|           { | ||||
|             "item": "minecraft:diamond_sword" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:turtle_normal/minecraft/diamond_sword" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_items", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										43
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/wired_modem.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/generated/resources/data/computercraft/advancements/recipes/computercraft/wired_modem.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:wired_modem" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_cable": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:cable" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:wired_modem" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_cable", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:wired_modem_full_from" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_modem": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:wired_modem" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:wired_modem_full_from" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_modem", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:wired_modem_full_to" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_modem": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:wired_modem" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:wired_modem_full_to" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_modem", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,43 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:wireless_modem_advanced" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_wireless": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "item": "computercraft:wireless_modem_normal" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:wireless_modem_advanced" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_wireless", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,32 @@ | ||||
| { | ||||
|   "parent": "minecraft:recipes/root", | ||||
|   "rewards": { | ||||
|     "recipes": [ | ||||
|       "computercraft:wireless_modem_normal" | ||||
|     ] | ||||
|   }, | ||||
|   "criteria": { | ||||
|     "has_computer": { | ||||
|       "trigger": "minecraft:inventory_changed", | ||||
|       "conditions": { | ||||
|         "items": [ | ||||
|           { | ||||
|             "tag": "computercraft:computer" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "has_the_recipe": { | ||||
|       "trigger": "minecraft:recipe_unlocked", | ||||
|       "conditions": { | ||||
|         "recipe": "computercraft:wireless_modem_normal" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "requirements": [ | ||||
|     [ | ||||
|       "has_computer", | ||||
|       "has_the_recipe" | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										34
									
								
								src/generated/resources/data/computercraft/loot_tables/blocks/computer_advanced.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/generated/resources/data/computercraft/loot_tables/blocks/computer_advanced.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| { | ||||
|   "type": "minecraft:block", | ||||
|   "pools": [ | ||||
|     { | ||||
|       "name": "main", | ||||
|       "rolls": 1, | ||||
|       "entries": [ | ||||
|         { | ||||
|           "type": "minecraft:dynamic", | ||||
|           "name": "computercraft:computer" | ||||
|         } | ||||
|       ], | ||||
|       "conditions": [ | ||||
|         { | ||||
|           "condition": "minecraft:alternative", | ||||
|           "terms": [ | ||||
|             { | ||||
|               "condition": "computercraft:block_named" | ||||
|             }, | ||||
|             { | ||||
|               "condition": "computercraft:has_id" | ||||
|             }, | ||||
|             { | ||||
|               "condition": "minecraft:inverted", | ||||
|               "term": { | ||||
|                 "condition": "computercraft:player_creative" | ||||
|               } | ||||
|             } | ||||
|           ] | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										34
									
								
								src/generated/resources/data/computercraft/loot_tables/blocks/computer_normal.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/generated/resources/data/computercraft/loot_tables/blocks/computer_normal.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| { | ||||
|   "type": "minecraft:block", | ||||
|   "pools": [ | ||||
|     { | ||||
|       "name": "main", | ||||
|       "rolls": 1, | ||||
|       "entries": [ | ||||
|         { | ||||
|           "type": "minecraft:dynamic", | ||||
|           "name": "computercraft:computer" | ||||
|         } | ||||
|       ], | ||||
|       "conditions": [ | ||||
|         { | ||||
|           "condition": "minecraft:alternative", | ||||
|           "terms": [ | ||||
|             { | ||||
|               "condition": "computercraft:block_named" | ||||
|             }, | ||||
|             { | ||||
|               "condition": "computercraft:has_id" | ||||
|             }, | ||||
|             { | ||||
|               "condition": "minecraft:inverted", | ||||
|               "term": { | ||||
|                 "condition": "computercraft:player_creative" | ||||
|               } | ||||
|             } | ||||
|           ] | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ] | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user