mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-10-16 06:27:39 +00:00
Compare commits
316 Commits
v1.16.4-1.
...
v1.96.0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
1a52275dcb | ||
![]() |
2fc2cf2e29 | ||
![]() |
80c2fc68aa | ||
![]() |
7c0664b9f2 | ||
![]() |
4d1a950fbf | ||
![]() |
135a3f56a5 | ||
![]() |
1f117b7c47 | ||
![]() |
c820e051b3 | ||
![]() |
01d7aaf062 | ||
![]() |
1e75e4ff6e | ||
![]() |
f967a70121 | ||
![]() |
ac5150a664 | ||
![]() |
0318e62524 | ||
![]() |
ca69d755e6 | ||
![]() |
3ba7acc414 | ||
![]() |
4c27eea73b | ||
![]() |
225a64dd6b | ||
![]() |
1831e81dd4 | ||
![]() |
a4dd6c24e5 | ||
![]() |
936742895b | ||
![]() |
b5d1e618b9 | ||
![]() |
10aa6c5297 | ||
![]() |
010ebacd1a | ||
![]() |
9e002beed7 | ||
![]() |
6029defb20 | ||
![]() |
c16aa5f247 | ||
![]() |
8d27bdca7b | ||
![]() |
41aa8fa163 | ||
![]() |
e40fb67b50 | ||
![]() |
96d46ffd2c | ||
![]() |
652b7ebba6 | ||
![]() |
f0d7a1165d | ||
![]() |
4a20eea852 | ||
![]() |
ccdd2bf477 | ||
![]() |
8d8f41a50b | ||
![]() |
72c78db28b | ||
![]() |
bf8a992273 | ||
![]() |
9c214fcd8a | ||
![]() |
082cc9d2d8 | ||
![]() |
bff2e81713 | ||
![]() |
63aa3d8877 | ||
![]() |
74c5d7e719 | ||
![]() |
78a685c2cb | ||
![]() |
a475f55b9c | ||
![]() |
9353ded2d5 | ||
![]() |
d197268e53 | ||
![]() |
9648265056 | ||
![]() |
264dbc570f | ||
![]() |
e4ad8bc117 | ||
![]() |
1b31972092 | ||
![]() |
6cd9fa9fb2 | ||
![]() |
d10f297ca0 | ||
![]() |
9ae5636d41 | ||
![]() |
a60daf78cf | ||
![]() |
76e0507c3b | ||
![]() |
d8e2fab2b1 | ||
![]() |
5c5e510075 | ||
![]() |
5a309258af | ||
![]() |
b0782ec38b | ||
![]() |
46846a4fde | ||
![]() |
d955443b21 | ||
![]() |
57e6c49844 | ||
![]() |
66dbab7a6b | ||
![]() |
558976e4ca | ||
![]() |
3a7470a108 | ||
![]() |
cf2b332c3c | ||
![]() |
8984ebcf80 | ||
![]() |
a28e7e2db3 | ||
![]() |
3860e2466c | ||
![]() |
5b31c2536a | ||
![]() |
98dc7a6e58 | ||
![]() |
5e0ceda7ce | ||
![]() |
7fe3ac9222 | ||
![]() |
a65b8ed04c | ||
![]() |
3e14b84c23 | ||
![]() |
1710ad9861 | ||
![]() |
9c48c99be7 | ||
![]() |
d10d1b45fe | ||
![]() |
70a1cf5c5a | ||
![]() |
b546a10bd6 | ||
![]() |
2f35bbb538 | ||
![]() |
891dde43a9 | ||
![]() |
094e0d4f33 | ||
![]() |
df40adce20 | ||
![]() |
e12ce95b2d | ||
![]() |
bcc0effd00 | ||
![]() |
64f3aa2dba | ||
![]() |
515ccfebd3 | ||
![]() |
0b6dbe7778 | ||
![]() |
19054684c6 | ||
![]() |
a72a5e6deb | ||
![]() |
eb2d9482a2 | ||
![]() |
95794fdaf3 | ||
![]() |
af477a401a | ||
![]() |
27531c161d | ||
![]() |
a8f208c394 | ||
![]() |
148d9e9dda | ||
![]() |
67fc21271b | ||
![]() |
ce28e2659a | ||
![]() |
47e4826f2b | ||
![]() |
9bde2d8d13 | ||
![]() |
46acb6866e | ||
![]() |
c0506108f9 | ||
![]() |
0dd7c3695f | ||
![]() |
2a290be248 | ||
![]() |
c4a6c16330 | ||
![]() |
f8b3b544d1 | ||
![]() |
53ae689468 | ||
![]() |
73e460e533 | ||
![]() |
a4e68d637a | ||
![]() |
1f1b20c81e | ||
![]() |
20a9ff7a3f | ||
![]() |
58cd5e3df7 | ||
![]() |
5922d7548c | ||
![]() |
386e01364e | ||
![]() |
70eff6aa63 | ||
![]() |
45ac601946 | ||
![]() |
d6c5a5bd27 | ||
![]() |
02c7903cb7 | ||
![]() |
37e856efdc | ||
![]() |
8a38097887 | ||
![]() |
884b417ec2 | ||
![]() |
1d1d6227eb | ||
![]() |
d5eb82db60 | ||
![]() |
3575654d02 | ||
![]() |
79fcc7241b | ||
![]() |
b203d3aa0a | ||
![]() |
f1176af9d1 | ||
![]() |
717686d855 | ||
![]() |
92811ca0bc | ||
![]() |
f8a58dbcb1 | ||
![]() |
98aabe2cfb | ||
![]() |
f938ed9779 | ||
![]() |
03c9274b27 | ||
![]() |
92c94ac039 | ||
![]() |
5c6fd80b0c | ||
![]() |
f1ec59df15 | ||
![]() |
624b23c7ac | ||
![]() |
9b77a4aaee | ||
![]() |
d8b0037cfa | ||
![]() |
91a9e7fdf7 | ||
![]() |
2c3573719b | ||
![]() |
46bc42d5a7 | ||
![]() |
1b9e93a80f | ||
![]() |
7b93f91ffa | ||
![]() |
31a1027401 | ||
![]() |
e0fc994819 | ||
![]() |
43408bf085 | ||
![]() |
d28f42e8b7 | ||
![]() |
ac452582c1 | ||
![]() |
7e65c6b25c | ||
![]() |
457a863842 | ||
![]() |
eef36e1358 | ||
![]() |
feda08b915 | ||
![]() |
0240ce50ce | ||
![]() |
592b83e784 | ||
![]() |
5d91491ec7 | ||
![]() |
7326d1110d | ||
![]() |
0aa6ac05a0 | ||
![]() |
27a2c063b9 | ||
![]() |
89a195ec06 | ||
![]() |
0e5fd4e8e0 | ||
![]() |
aa4ec53bb6 | ||
![]() |
6b49327462 | ||
![]() |
74ad934889 | ||
![]() |
08b3dbbad5 | ||
![]() |
54eac0a2f8 | ||
![]() |
51ca5e620c | ||
![]() |
076d572831 | ||
![]() |
75f2b91fef | ||
![]() |
79534e5630 | ||
![]() |
d483a91459 | ||
![]() |
71d764f122 | ||
![]() |
2e527eb11e | ||
![]() |
19273b3696 | ||
![]() |
4643641d51 | ||
![]() |
63cd9c5bc7 | ||
![]() |
e9c11ff325 | ||
![]() |
452464aa01 | ||
![]() |
8885462175 | ||
![]() |
b8bd64913b | ||
![]() |
00b458c39a | ||
![]() |
88722d484f | ||
![]() |
6d103e2114 | ||
![]() |
42f23d56ae | ||
![]() |
89d5211bd7 | ||
![]() |
83e70377f7 | ||
![]() |
f6a26f75c3 | ||
![]() |
664df62d5d | ||
![]() |
1348ee0588 | ||
![]() |
145dce7653 | ||
![]() |
7f2651c23e | ||
![]() |
05464107a8 | ||
![]() |
86705787f0 | ||
![]() |
b34d8387d9 | ||
![]() |
4d00969ef0 | ||
![]() |
01d3d12992 | ||
![]() |
5e31dcde83 | ||
![]() |
5184883af1 | ||
![]() |
0c45112262 | ||
![]() |
0bf1672f45 | ||
![]() |
e1b8ac1f84 | ||
![]() |
deea552d99 | ||
![]() |
54229c2ce1 | ||
![]() |
1346a26179 | ||
![]() |
14df44f09d | ||
![]() |
1a21529499 | ||
![]() |
2546990f41 | ||
![]() |
b39ca02464 | ||
![]() |
628618105c | ||
![]() |
075ba03f5d | ||
![]() |
10bf84b631 | ||
![]() |
c346e22a45 | ||
![]() |
418e1335b1 | ||
![]() |
d52372df31 | ||
![]() |
cc72e1c2bd | ||
![]() |
d28afcc6a9 | ||
![]() |
220ed21e6e | ||
![]() |
09d465774d | ||
![]() |
dfc8f48f12 | ||
![]() |
abe2ec4686 | ||
![]() |
5333cda44e | ||
![]() |
dc88fbeb12 | ||
![]() |
c5eb7a9501 | ||
![]() |
bc969db2be | ||
![]() |
50b7646178 | ||
![]() |
3fa6b5bc9d | ||
![]() |
33e65e39e3 | ||
![]() |
0380e60590 | ||
![]() |
2918892ee2 | ||
![]() |
e43dd9f7c6 | ||
![]() |
244fd95034 | ||
![]() |
14e98e2fcb | ||
![]() |
dcf5d59109 | ||
![]() |
b95083c77e | ||
![]() |
c54c8c3ea6 | ||
![]() |
f79c67e243 | ||
![]() |
6ec7ebe439 | ||
![]() |
76fe33760d | ||
![]() |
cb549d8f43 | ||
![]() |
7b400fdcdd | ||
![]() |
ab70d918b5 | ||
![]() |
c64644b9ec | ||
![]() |
afb12eb342 | ||
![]() |
64f5ca02b3 | ||
![]() |
84bca21b0c | ||
![]() |
b6757c416f | ||
![]() |
dc9d3f2d15 | ||
![]() |
807825d74e | ||
![]() |
14c17676c6 | ||
![]() |
324519575c | ||
![]() |
fbcf26bdc9 | ||
![]() |
30ab6bd045 | ||
![]() |
2ea816b78b | ||
![]() |
56dcc57755 | ||
![]() |
a4830aff86 | ||
![]() |
621bc526be | ||
![]() |
605e1f6b9b | ||
![]() |
cb66ef7e30 | ||
![]() |
fd2f6a38c1 | ||
![]() |
229821d398 | ||
![]() |
1f2e0c444d | ||
![]() |
429baa350c | ||
![]() |
7fe62485fa | ||
![]() |
fe10c68099 | ||
![]() |
06092cfddd | ||
![]() |
9967dc5740 | ||
![]() |
b920e04c59 | ||
![]() |
baa1b5a5c9 | ||
![]() |
e84663a5c5 | ||
![]() |
1c46220c42 | ||
![]() |
889b445855 | ||
![]() |
19553a981e | ||
![]() |
15f4dbd061 | ||
![]() |
98e12c7c3e | ||
![]() |
dfad319864 | ||
![]() |
111b58f533 | ||
![]() |
9345652808 | ||
![]() |
d40163b409 | ||
![]() |
96400966d7 | ||
![]() |
db83bd4f64 | ||
![]() |
579a38d366 | ||
![]() |
0e6797c7da | ||
![]() |
c935577768 | ||
![]() |
c2b4077aa1 | ||
![]() |
ac020859f3 | ||
![]() |
238be8955b | ||
![]() |
f997b02b8f | ||
![]() |
799bb77847 | ||
![]() |
2f66792a0d | ||
![]() |
6cae8e211e | ||
![]() |
48b1b2f01d | ||
![]() |
8c45fd362a | ||
![]() |
07b13dd2b4 | ||
![]() |
45e84e1ede | ||
![]() |
725dfa764f | ||
![]() |
c221502ec9 | ||
![]() |
234f18c228 | ||
![]() |
006ad109cb | ||
![]() |
0db080154c | ||
![]() |
200311033f | ||
![]() |
3192dc81ac | ||
![]() |
b11d4bb209 | ||
![]() |
2a716244e9 | ||
![]() |
19b7ed538a | ||
![]() |
b0d9dc0b88 | ||
![]() |
e6094a59fa | ||
![]() |
e8d7e6a562 | ||
![]() |
536c2d9b2d | ||
![]() |
f15a278f3b | ||
![]() |
26b73c2ff3 | ||
![]() |
c1e08fc3c7 | ||
![]() |
b9ec6f236d | ||
![]() |
b1fff97bff | ||
![]() |
c81bc70475 | ||
![]() |
55a7ee4acf |
@@ -11,11 +11,5 @@ insert_final_newline = true
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.sexp]
|
||||
indent_size = 2
|
||||
|
||||
[*.yml]
|
||||
indent_size = 2
|
||||
|
||||
[*.properties]
|
||||
insert_final_newline = false
|
||||
|
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -1,3 +0,0 @@
|
||||
# Ignore changes in generated files
|
||||
src/generated/resources/data/** linguist-generated
|
||||
src/test/server-files/structures linguist-generated
|
3
.github/ISSUE_TEMPLATE/bug_report.md
vendored
3
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -11,6 +11,5 @@ labels: bug
|
||||
|
||||
## Useful information to include:
|
||||
- Minecraft version
|
||||
- CC: Tweaked version
|
||||
- Logs: These will be located in the `logs/` directory of your Minecraft instance. Please upload them as a gist or directly into this editor.
|
||||
- CC: Restitched version
|
||||
- Detailed reproduction steps: sometimes I can spot a bug pretty easily, but often it's much more obscure. The more information I have to help reproduce it, the quicker it'll get fixed.
|
||||
|
12
.github/ISSUE_TEMPLATE/peripheral_shoutout.md
vendored
Normal file
12
.github/ISSUE_TEMPLATE/peripheral_shoutout.md
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
name: Peripheral Shoutout
|
||||
about: Made a Peripheral mod for CC:R? Let us know so we can give it a shoutout
|
||||
labels: peripheralShoutout
|
||||
---
|
||||
|
||||
## What to include?
|
||||
- Link to the mod's Icon
|
||||
- Link to the mod
|
||||
- Mod Name
|
||||
- Basic description of the mod
|
||||
- Link to CC:R Peripheral Documentation for the mod
|
68
.github/workflows/main-ci.yml
vendored
68
.github/workflows/main-ci.yml
vendored
@@ -3,51 +3,33 @@ name: Build
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Checkout submodules
|
||||
run: git submodule update --init --recursive
|
||||
|
||||
- name: Set up Java 8
|
||||
uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: 8
|
||||
- name: Set up Java 8
|
||||
uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: 8
|
||||
|
||||
- name: Cache gradle dependencies
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/.gradle/caches
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('gradle.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- name: Cache gradle dependencies
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/.gradle/caches
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('gradle.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Build with Gradle
|
||||
run: |
|
||||
./gradlew assemble --no-daemon || ./gradlew assemble --no-daemon
|
||||
./gradlew downloadAssets --no-daemon || ./gradlew downloadAssets --no-daemon
|
||||
./gradlew build
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew build --no-daemon || ./gradlew build --no-daemon
|
||||
|
||||
- name: Upload Jar
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: CC-Tweaked
|
||||
path: build/libs
|
||||
|
||||
- name: Upload Coverage
|
||||
run: bash <(curl -s https://codecov.io/bash)
|
||||
continue-on-error: true
|
||||
|
||||
- name: Generate Java documentation stubs
|
||||
run: ./gradlew luaJavadoc --no-daemon
|
||||
|
||||
- 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
|
||||
- name: Upload Jar
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: cc-restiched
|
||||
path: build/libs
|
||||
|
19
.github/workflows/make-doc.sh
vendored
19
.github/workflows/make-doc.sh
vendored
@@ -1,19 +0,0 @@
|
||||
#!/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/build/docs/lua/" \
|
||||
"$SSH_USER@$SSH_HOST:/var/www/tweaked.cc/$DEST"
|
||||
rsync -avc -e "ssh -i $HOME/.ssh/key -o StrictHostKeyChecking=no -p $SSH_PORT" \
|
||||
"$GITHUB_WORKSPACE/build/docs/javadoc/" \
|
||||
"$SSH_USER@$SSH_HOST:/var/www/tweaked.cc/$DEST/javadoc"
|
50
.github/workflows/make-doc.yml
vendored
50
.github/workflows/make-doc.yml
vendored
@@ -1,50 +0,0 @@
|
||||
name: Build documentation
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- mc-1.15.x
|
||||
|
||||
jobs:
|
||||
make_doc:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Java 8
|
||||
uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: 8
|
||||
|
||||
- name: Cache gradle dependencies
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/.gradle/caches
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('gradle.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Setup illuaminate
|
||||
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
|
||||
|
||||
- name: Setup node
|
||||
run: npm ci
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew compileJava --no-daemon || ./gradlew compileJava --no-daemon
|
||||
|
||||
- name: Generate documentation
|
||||
run: ./gradlew docWebsite javadoc --no-daemon
|
||||
|
||||
- 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 }}
|
18
.gitignore
vendored
18
.gitignore
vendored
@@ -3,27 +3,21 @@
|
||||
/logs
|
||||
/build
|
||||
/out
|
||||
/doc/out/
|
||||
/node_modules
|
||||
|
||||
# Runtime directories
|
||||
/run
|
||||
/run-*
|
||||
/test-files
|
||||
|
||||
# Autogenerated by IDE
|
||||
/bin
|
||||
/.settings
|
||||
.classpath
|
||||
|
||||
*.ipr
|
||||
*.iws
|
||||
*.iml
|
||||
.idea
|
||||
.gradle
|
||||
*.DS_Store
|
||||
|
||||
/.classpath
|
||||
/.project
|
||||
/.settings
|
||||
/.vscode
|
||||
bin/
|
||||
*.launch
|
||||
|
||||
/src/generated/resources/.cache
|
||||
/src/web/mount/*.d.ts
|
||||
.project
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "src/main/resources/resourcepacks/overhaul"]
|
||||
path = src/main/resources/resourcepacks/overhaul
|
||||
url = https://github.com/3prm3/cc-pack
|
34
.luacheckrc
Normal file
34
.luacheckrc
Normal file
@@ -0,0 +1,34 @@
|
||||
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' },
|
||||
}
|
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"java.configuration.updateBuildConfiguration": "automatic"
|
||||
}
|
118
CONTRIBUTING.md
118
CONTRIBUTING.md
@@ -1,118 +0,0 @@
|
||||
# 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.
|
||||
|
||||
## Translations
|
||||
Translations are managed through [Weblate], an online interface for managing language strings. This is synced
|
||||
automatically with GitHub, so please don't submit PRs adding/changing translations!
|
||||
|
||||
## 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. When building on Windows, Use `gradlew.bat` instead of `./gradlew`.
|
||||
|
||||
- **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.
|
||||
|
||||
The following sections describe the more niche sections of CC: Tweaked's build system. Some bits of these are
|
||||
quite-complex, and (dare I say) over-engineered, so you may wish to ignore them. Well tested/documented PRs are always
|
||||
preferred (and I'd definitely recommend setting up the tooling if you're doing serious development work), but for
|
||||
small changes it can be a lot.
|
||||
|
||||
### 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. You may need to generate the Java documentation stubs (see "Documentation" below) for all
|
||||
lints to pass.
|
||||
|
||||
### Documentation
|
||||
When writing documentation for [CC: Tweaked's documentation website][docs], it may be useful to build the documentation
|
||||
and preview it yourself before submitting a PR.
|
||||
|
||||
Building all documentation is, sadly, a multi-stage process (though this is largely hidden by Gradle). First we need to
|
||||
convert Java doc-comments into Lua ones, we also generate some Javascript to embed. All of this is then finally fed into
|
||||
illuaminate, which spits out our HTML.
|
||||
|
||||
#### Setting up the tooling
|
||||
For various reasons, getting the environment set up to build documentation can be pretty complex. I'd quite like to
|
||||
automate this via Docker and/or nix in the future, but this needs to be done manually for now.
|
||||
|
||||
First, you will need JDK 9+ (in addition to JDK 8 which is required to build Minecraft itself). Sadly our version of
|
||||
Gradle doesn't support multiple toolchains, and so you need to install this yourself.
|
||||
|
||||
Gradle needs to be told about this JDK via the `JAVA_HOME_11_X64` environment variable or adding `java11Home` to
|
||||
`~/.gradle/gradle.properties`. On my system this looks like:
|
||||
|
||||
```properties
|
||||
java11Home=/usr/lib/jvm/java-11-openjdk/
|
||||
```
|
||||
|
||||
If you just want to build the documentation stubs for linting, this is enough. However, if you want to build the full
|
||||
website, you will also need to install a few Node packages by running `npm ci`.
|
||||
|
||||
#### Building documentation
|
||||
Gradle should be your entrypoint to building most documentation. There's two tasks which are of interest:
|
||||
|
||||
- `./gradlew luaJavadoc` - Generate documentation stubs for Java methods.
|
||||
- `./gradlew docWebsite` - Generate the whole website (including Javascript pages). The resulting HTML is stored at
|
||||
`./build/docs/lua/`.
|
||||
|
||||
#### Writing documentation
|
||||
illuaminate's documentation system is not currently documented (somewhat ironic), but is _largely_ the same as
|
||||
[ldoc][ldoc]. Documentation comments are written in Markdown,
|
||||
|
||||
Our markdown engine does _not_ support GitHub flavoured markdown, and so does not support all the features one might
|
||||
expect (such as tables). It is very much recommended that you build and preview the docs locally first.
|
||||
|
||||
### Testing
|
||||
Thankfully running tests is much simpler than running the documentation generator! `./gradlew check` will run the
|
||||
entire test suite (and some additional bits of verification).
|
||||
|
||||
Before we get into writing tests, it's worth mentioning the various test suites that CC: Tweaked has:
|
||||
- "Core" Java (`./src/test/java`): These test core bits of the mod which don't require any Minecraft interaction.
|
||||
This includes the `@LuaFunction` system, file system code, etc...
|
||||
|
||||
These tests are run by `./gradlew test`.
|
||||
|
||||
- CraftOS (`./src/test/resources/test-rom/`): These tests are written in Lua, and ensure the Lua environment, libraries
|
||||
and programs work as expected. These are (generally) written to be able to be run on emulators too, to provide some
|
||||
sort of compliance test.
|
||||
|
||||
These tests are run by the '"Core" Java' test suite, and so are also run with `./gradlew test`.
|
||||
|
||||
- In-game (`./src/test/java/dan200/computercraft/ingame/`): These tests are run on an actual Minecraft server, using
|
||||
[the same system Mojang do][mc-test]. The aim of these is to test in-game behaviour of blocks and peripherals.
|
||||
|
||||
These are run by `./gradlew testInGame`.
|
||||
|
||||
## CraftOS tests
|
||||
CraftOS's tests are written using a test system called "mcfly", heavily inspired by [busted] (and thus RSpec). Groups of
|
||||
tests go inside `describe` blocks, and a single test goes inside `it`.
|
||||
|
||||
Assertions are generally written using `expect` (inspired by Hamcrest and the like). For instance, `expect(foo):eq("bar")`
|
||||
asserts that your variable `foo` is equal to the expected value `"bar"`.
|
||||
|
||||
[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 on GitHub"
|
||||
[illuaminate-usage]: https://github.com/SquidDev/illuaminate/blob/master/README.md#usage "Installing Illuaminate"
|
||||
[weblate]: https://i18n.tweaked.cc/projects/cc-tweaked/minecraft/ "CC: Tweaked weblate instance"
|
||||
[docs]: https://tweaked.cc/ "CC: Tweaked documentation"
|
||||
[ldoc]: http://stevedonovan.github.io/ldoc/ "ldoc, a Lua documentation generator."
|
||||
[mc-test]: https://www.youtube.com/watch?v=vXaWOJTCYNg
|
||||
[busted]: https://github.com/Olivine-Labs/busted "busted: Elegant Lua unit testing."
|
116
README.md
116
README.md
@@ -1,72 +1,68 @@
|
||||
# 
|
||||
[](https://github.com/SquidDev-CC/CC-Tweaked/actions "Current build status") [](https://minecraft.curseforge.com/projects/cc-tweaked "Download CC: Tweaked on CurseForge")
|
||||
# CC:Restitched Patchwork
|
||||
# CC:R Version VS CC:T Version
|
||||
CC:R Strives to maintaim perfect pairity with CC:R, however in some cases this is not possible, or atleast, not yet, so just because you might be on CC:R 1.96.6, doesnt mean you are on CC:T 1.96.6.
|
||||
|
||||
CC: Tweaked is a fork of [ComputerCraft](https://github.com/dan200/ComputerCraft), adding programmable computers,
|
||||
turtles and more to Minecraft.
|
||||
<img src="logo.png" alt="CC: Restitched" width="100%"/>
|
||||
|
||||
*it works and runs-ish*
|
||||
|
||||
[](https://github.com/Merith-TK/cc-restitched/actions "Current build status") [](https://www.curseforge.com/minecraft/mc-mods/cc-restitched-updated "Download CC: Restitched on CurseForge")
|
||||
|
||||
## What?
|
||||
ComputerCraft has always held a fond place in my heart: it's the mod which really got me into Minecraft, and it's the
|
||||
mod which has kept me playing it for many years. However, development of the original mod has slowed, as the original
|
||||
developers have had less time to work on the mod, and moved onto other projects and commitments.
|
||||
This is an fork of [Zundrel/cc-tweaked-fabric](https://github.com/Zundrel/cc-tweaked-fabric) who's goal was to port [SquidDev-CC/CC-Tweaked](https://github.com/SquidDev-CC/CC-Tweaked) to the [Fabric](https://fabricmc.net/) modloader. I picked up maintaining the mod because the team working on Zundrel's fork, admitted they had gotten lethargic so I picked it up to make it equal with CC:T
|
||||
|
||||
CC: Tweaked (or CC:T for short) is an attempt to continue ComputerCraft's legacy. It's not intended to be a competitor
|
||||
to CC, nor do I want to take it in a vastly different direction to the original mod. Instead, CC:T focuses on making the
|
||||
ComputerCraft experience as _solid_ as possible, ironing out any wrinkles that may have developed over time.
|
||||
## Resource Packs
|
||||
This mod includes textures that are more in-line with the style of Mojang's new texture-artist, Jappa. If you prefer the original textures, enable the "Classic" resource pack provided by the mod.
|
||||
|
||||
## Features
|
||||
CC: Tweaked contains all the features of the latest version of ComputerCraft, as well as numerous fixes, performance
|
||||
improvements and several nifty additions. I'd recommend checking out [the releases page](https://github.com/SquidDev-CC/CC-Tweaked/releases)
|
||||
to see the full set of changes, but here's a couple of the more interesting additions:
|
||||
|
||||
- Improvements to the `http` library, including websockets, support for other HTTP methods (`PUT`, `DELETE`, etc...)
|
||||
and configurable limits on HTTP usage.
|
||||
- Full-block wired modems, allowing one to wrap non-solid peripherals (such as turtles, or chests if Plethora is
|
||||
installed).
|
||||
- Pocket computers can be held like maps, allowing you to view the screen without entering a GUI.
|
||||
- Printed pages and books can be placed in item frames and held like maps.
|
||||
- Several profiling and administration tools for server owners, via the `/computercraft` command. This allows operators
|
||||
to track which computers are hogging resources, turn on and shutdown multiple computers at once and interact with
|
||||
computers remotely.
|
||||
- Closer emulation of standard Lua, adding the `debug` and `io` libraries. This also enables seeking within binary
|
||||
files, meaning you don't need to read large files into memory.
|
||||
- Allow running multiple computers on multiple threads, reducing latency on worlds with many computers.
|
||||
|
||||
## Relation to CCTweaks?
|
||||
This mod has nothing to do with CCTweaks, though there is no denying the name is a throwback to it. That being said,
|
||||
several features have been included, such as full block modems, the Cobalt runtime and map-like rendering for pocket
|
||||
computers.
|
||||
<img src="https://raw.githubusercontent.com/3prm3/cc-pack/main/pack.png" alt="CC: Restitched" width="16" height="16"/> [3prm3/cc-pack](https://github.com/3prm3/cc-pack/)
|
||||
We also have a second resourcepack made by [3prm3](https://github.com/3prm3), it features a complete overhaul and can be enabled by enabling the `overhaul` resource pack, go check out his resource pack over here!
|
||||
|
||||
## Major Tasks Planned
|
||||
* Rewrite the config system
|
||||
* **Planned for 1.96.0 release**
|
||||
* it currently sets the values that would normally be read from `config/computercraft.json` to the default values, because it does not read the file at all
|
||||
* Fixing `/computercraft` commands,
|
||||
* No clue why they broken, they just are
|
||||
|
||||
## Contributing
|
||||
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).
|
||||
Any contribution is welcome, be that using the mod, reporting bugs or contributing code. In order to start helping develop CC:R there are a few rules
|
||||
1) Any updates that port commits from CC:T, ***MUST*** follow the format defined in [patchwork.md](patchwork.md) otherwise they will not be accepted,
|
||||
* Commit Message must be the same as it is in CC:T,
|
||||
* patchwork.md must be updated in the following format
|
||||
> Comments, optional but useful if you had to do something differently than in CC:T outside of [Fabric](https://fabricmc.net/)/[Forge](https://mcforge.readthedocs.io/en/1.16.x/) differences
|
||||
>
|
||||
> \`\`\`
|
||||
>
|
||||
>commitID
|
||||
>
|
||||
> commit title
|
||||
>
|
||||
> commit desc
|
||||
>
|
||||
> \`\`\`
|
||||
2) Follow the [Fabric](https://fabricmc.net/) programming guidelines as close as possible. This means you have to use [`loom`](https://fabricmc.net/wiki/tutorial:mappings) mappings,
|
||||
3) You cannot intentionally implement bugs and security vulnerabilities
|
||||
4) Unless the commit is a ["patchwork"](https://github.com/Merith-TK/cc-restitched/blob/fabric/patchwork.md) compliant commit, (IE: taken from CC:T), the lua code is off limits
|
||||
## Bleeding Edge Builds
|
||||
Bleeding edge builds can be found [here](https://github.com/Merith-TK/cc-restitched/actions) at Github Actions.
|
||||
|
||||
## 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.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.
|
||||
If you need help getting started with CC: Tweaked, want to show off your latest project, or just want to chat about ComputerCraft, here is the [Forum](https://forums.computercraft.cc/) and the [Discord](https://discord.gg/H2UyJXe)
|
||||
|
||||
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!
|
||||
## Known Issues
|
||||
Main Known issue
|
||||
* Mods that add blocks that can be used as peripherals for CC:T On forge, don't work with CC:R.
|
||||
* This is because of the differences between forge and fabric, and that mod devs, to my knowledge have not agreed upon a standard method in which to implement cross compatibility between mods,
|
||||
* [Fixed (d10f297c): please report if bug persists]</br> ~~Storage Peripherals throw a java "StackOverflowError" when using `pushItems()`,~~
|
||||
* ~~Work around, you are probably using `pushItems(chest, 1)` or similar. please use `pushItems(chest, 1, nil, 1)`.~~
|
||||
* Computers will not run built in commands, saying "File not found"
|
||||
* This is a know bug, dont know what causes it, but just restart the computer (`ctrl+r` for one second) and it will work again
|
||||
* Occurs when server runs `/reload` or a datapack is updated
|
||||
|
||||
## Perpherals
|
||||
Unfortunately, unlike the original CC:Tweaked project, CC:Restitched, does not have any actual peripheral mods, currently the only one we have is an example for mod devs to get started with making/adding the peripheral API to their mods!
|
||||
|
||||
## Using
|
||||
CC: Tweaked is hosted on my maven repo, and so is relatively simple to depend on. You may wish to add a soft (or hard)
|
||||
dependency in your `mods.toml` file, with the appropriate version bounds, to ensure that API functionality you depend
|
||||
on is present.
|
||||
If your a mod dev made a mod with CC:R peripheral support, OR if your a player who found a mod with CC:R support, please open an [issue here](https://github.com/Merith-TK/cc-restitched/issues/new?assignees=&labels=peripheralShoutout&template=peripheral_shoutout.md) to let us know so we can add it to the list!
|
||||
|
||||
```groovy
|
||||
repositories {
|
||||
maven { url 'https://squiddev.cc/maven/' }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fg.deobf("org.squiddev:cc-tweaked-${mc_version}:${cct_version}")
|
||||
}
|
||||
```
|
||||
|
||||
You should also be careful to only use classes within the `dan200.computercraft.api` package. Non-API classes are
|
||||
subject to change at any point. If you depend on functionality outside the API, file an issue, and we can look into
|
||||
exposing more features.
|
||||
|
||||
We bundle the API sources with the jar, so documentation should be easily viewable within your editor. Alternatively,
|
||||
the generated documentation [can be browsed online](https://tweaked.cc/javadoc/).
|
||||
*  [CC Peripheral Test](https://github.com/Toad-Dev/cc-peripheral-test)
|
||||
* This is an example mod for how to make peripherals that work as a block, or as a turtle upgrade!
|
644
build.gradle
644
build.gradle
@@ -1,120 +1,19 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
maven {
|
||||
name = "forge"
|
||||
url = "https://files.minecraftforge.net/maven"
|
||||
}
|
||||
maven {
|
||||
name = "mixin"
|
||||
url = "https://dist.creeper.host/Sponge/maven"
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.google.code.gson:gson:2.8.1'
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:3.0.190'
|
||||
classpath 'net.sf.proguard:proguard-gradle:6.1.0beta2'
|
||||
classpath 'org.ajoberstar.grgit:grgit-gradle:3.0.0'
|
||||
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
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"
|
||||
id "org.jetbrains.kotlin.jvm" version "1.3.72"
|
||||
id 'fabric-loom' version '0.6-SNAPSHOT'
|
||||
id 'maven-publish'
|
||||
}
|
||||
|
||||
apply plugin: 'net.minecraftforge.gradle'
|
||||
apply plugin: 'org.spongepowered.mixin'
|
||||
apply plugin: 'org.ajoberstar.grgit'
|
||||
apply plugin: 'maven-publish'
|
||||
apply plugin: 'maven'
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
|
||||
version = mod_version
|
||||
|
||||
group = "org.squiddev"
|
||||
archivesBaseName = "cc-tweaked-${mc_version}"
|
||||
|
||||
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8'
|
||||
|
||||
minecraft {
|
||||
runs {
|
||||
client {
|
||||
workingDirectory project.file('run')
|
||||
property 'forge.logging.markers', 'REGISTRIES'
|
||||
property 'forge.logging.console.level', 'debug'
|
||||
|
||||
mods {
|
||||
computercraft {
|
||||
source sourceSets.main
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
workingDirectory project.file("run/server")
|
||||
property 'forge.logging.markers', 'REGISTRIES'
|
||||
property 'forge.logging.console.level', 'debug'
|
||||
arg "--nogui"
|
||||
|
||||
mods {
|
||||
computercraft {
|
||||
source sourceSets.main
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data {
|
||||
workingDirectory project.file('run')
|
||||
property 'forge.logging.markers', 'REGISTRIES'
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
testServer {
|
||||
workingDirectory project.file('test-files/server')
|
||||
parent runs.server
|
||||
properties 'mixin.env.disableRefMap': 'true'
|
||||
|
||||
arg "-mixin.config=cctest.mixin.json"
|
||||
arg "--nogui"
|
||||
|
||||
mods {
|
||||
cctest {
|
||||
source sourceSets.test
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mappings channel: 'official', version: mc_version
|
||||
|
||||
accessTransformer file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||
}
|
||||
|
||||
mixin {
|
||||
add sourceSets.test, "cctest.refmap.json"
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main.resources {
|
||||
srcDir 'src/generated/resources'
|
||||
}
|
||||
}
|
||||
group = "dan200.computercraft"
|
||||
archivesBaseName = "cc-restiched"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
jcenter()
|
||||
maven {
|
||||
name "SquidDev"
|
||||
url "https://squiddev.cc/maven"
|
||||
@@ -122,523 +21,100 @@ repositories {
|
||||
}
|
||||
|
||||
configurations {
|
||||
shade
|
||||
compile.extendsFrom shade
|
||||
deployerJars
|
||||
cctJavadoc
|
||||
}
|
||||
|
||||
dependencies {
|
||||
checkstyle "com.puppycrawl.tools:checkstyle:8.25"
|
||||
minecraft "com.mojang:minecraft:${mc_version}"
|
||||
mappings "net.fabricmc:yarn:${mc_version}+build.${mappings_version}:v2"
|
||||
modImplementation "net.fabricmc:fabric-loader:${fabric_loader_version}"
|
||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_api_version}"
|
||||
|
||||
minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}"
|
||||
compile 'com.electronwill.night-config:json:3.6.0'
|
||||
|
||||
compileOnly fg.deobf("mezz.jei:jei-1.16.4:7.6.0.58:api")
|
||||
compileOnly fg.deobf("com.blamejared.crafttweaker:CraftTweaker-1.16.4:7.0.0.63")
|
||||
modImplementation "me.shedaniel.cloth:config-2:${cloth_config_version}"
|
||||
modImplementation "io.github.prospector:modmenu:${modmenu_version}"
|
||||
|
||||
runtimeOnly fg.deobf("mezz.jei:jei-1.16.4:7.6.0.58")
|
||||
modApi "me.shedaniel.cloth.api:cloth-utils-v1:${project.cloth_api_version}"
|
||||
include "me.shedaniel.cloth.api:cloth-utils-v1:${project.cloth_api_version}"
|
||||
|
||||
implementation "blue.endless:jankson:${jankson_version}"
|
||||
implementation 'com.google.code.findbugs:jsr305:3.0.2'
|
||||
|
||||
compileOnly 'com.google.auto.service:auto-service:1.0-rc7'
|
||||
annotationProcessor 'com.google.auto.service:auto-service:1.0-rc7'
|
||||
|
||||
shade 'org.squiddev:Cobalt:0.5.1-SNAPSHOT'
|
||||
include "me.shedaniel.cloth:config-2:${cloth_config_version}"
|
||||
include "blue.endless:jankson:${jankson_version}"
|
||||
include 'javax.vecmath:vecmath:1.5.2'
|
||||
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.7.0'
|
||||
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
|
||||
testImplementation 'org.hamcrest:hamcrest:2.2'
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72'
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-reflect:1.3.72'
|
||||
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8'
|
||||
compile 'javax.vecmath:vecmath:1.5.2'
|
||||
|
||||
deployerJars "org.apache.maven.wagon:wagon-ssh:3.0.0"
|
||||
shade 'org.squiddev:Cobalt:0.5.2-SNAPSHOT'
|
||||
|
||||
cctJavadoc 'cc.tweaked:cct-javadoc:1.3.0'
|
||||
modRuntime "me.shedaniel:RoughlyEnoughItems-api:5.8.9"
|
||||
modRuntime "me.shedaniel:RoughlyEnoughItems:5.8.9"
|
||||
}
|
||||
|
||||
// Compile tasks
|
||||
|
||||
javadoc {
|
||||
include "dan200/computercraft/api/**/*.java"
|
||||
}
|
||||
|
||||
task luaJavadoc(type: Javadoc) {
|
||||
description "Generates documentation for Java-side Lua functions."
|
||||
group "documentation"
|
||||
|
||||
source = sourceSets.main.allJava
|
||||
destinationDir = file("${project.docsDir}/luaJavadoc")
|
||||
classpath = sourceSets.main.compileClasspath
|
||||
|
||||
options.docletpath = configurations.cctJavadoc.files as List
|
||||
options.doclet = "cc.tweaked.javadoc.LuaDoclet"
|
||||
|
||||
// Attempt to run under Java 11 (any Java >= 9 will work though).
|
||||
if(System.getProperty("java.version").startsWith("1.")
|
||||
&& (System.getenv("JAVA_HOME_11_X64") != null || project.hasProperty("java11Home"))) {
|
||||
executable = "${System.getenv("JAVA_HOME_11_X64") ?: project.property("java11Home")}/bin/javadoc"
|
||||
}
|
||||
}
|
||||
|
||||
jar {
|
||||
dependsOn javadoc
|
||||
|
||||
manifest {
|
||||
attributes(["Specification-Title": "computercraft",
|
||||
"Specification-Vendor": "SquidDev",
|
||||
"Specification-Version": "1",
|
||||
"Implementation-Title": "CC: Tweaked",
|
||||
"Implementation-Version": "${mod_version}",
|
||||
"Implementation-Vendor" :"SquidDev",
|
||||
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")])
|
||||
}
|
||||
|
||||
from (sourceSets.main.allSource) {
|
||||
include "dan200/computercraft/api/**/*.java"
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
task proguard(type: ProGuardTask, dependsOn: jar) {
|
||||
description "Removes unused shadowed classes from the jar"
|
||||
group "compact"
|
||||
|
||||
injars jar.archivePath
|
||||
outjars "${jar.archivePath.absolutePath.replace(".jar", "")}-min.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") }
|
||||
.each { libraryjars it }
|
||||
}
|
||||
|
||||
// We want to avoid as much obfuscation as possible. We're only doing this to shrink code size.
|
||||
dontobfuscate; dontoptimize; keepattributes; keepparameternames
|
||||
|
||||
// Proguard will remove directories by default, but that breaks JarMount.
|
||||
keepdirectories 'data/computercraft/lua**'
|
||||
|
||||
// Preserve ComputerCraft classes - we only want to strip shadowed files.
|
||||
keep 'class dan200.computercraft.** { *; }'
|
||||
|
||||
// LWJGL and Apache bundle Java 9 versions, which is great, but rather breaks Proguard
|
||||
dontwarn 'module-info'
|
||||
dontwarn 'org.apache.**,org.lwjgl.**'
|
||||
}
|
||||
|
||||
task proguardMove(dependsOn: proguard) {
|
||||
description "Replace the original jar with the minified version"
|
||||
group "compact"
|
||||
|
||||
doLast {
|
||||
Files.move(
|
||||
file("${jar.archivePath.absolutePath.replace(".jar", "")}-min.jar").toPath(),
|
||||
file(jar.archivePath).toPath(),
|
||||
StandardCopyOption.REPLACE_EXISTING
|
||||
)
|
||||
sourceSets {
|
||||
main {
|
||||
java {
|
||||
exclude 'dan200/computercraft/shared/integration'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
processResources {
|
||||
inputs.property "version", mod_version
|
||||
inputs.property "mcversion", mc_version
|
||||
|
||||
def hash = 'none'
|
||||
Set<String> contributors = []
|
||||
try {
|
||||
def grgit = Grgit.open(dir: '.')
|
||||
hash = grgit.head().id
|
||||
|
||||
def blacklist = ['GitHub', 'dan200', 'Daniel Ratcliffe']
|
||||
grgit.log().each {
|
||||
if (!blacklist.contains(it.author.name)) contributors.add(it.author.name)
|
||||
if (!blacklist.contains(it.committer.name)) contributors.add(it.committer.name)
|
||||
}
|
||||
} catch(Exception ignored) { }
|
||||
|
||||
inputs.property "commithash", hash
|
||||
inputs.property "version", project.version
|
||||
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
include 'META-INF/mods.toml'
|
||||
include 'data/computercraft/lua/rom/help/credits.txt'
|
||||
|
||||
expand 'version': mod_version,
|
||||
'mcversion': mc_version,
|
||||
'gitcontributors': contributors.sort(false, String.CASE_INSENSITIVE_ORDER).join('\n')
|
||||
include "fabric.mod.json"
|
||||
expand "version": project.version
|
||||
}
|
||||
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
exclude 'META-INF/mods.toml'
|
||||
exclude 'data/computercraft/lua/rom/help/credits.txt'
|
||||
exclude "fabric.mod.json"
|
||||
}
|
||||
}
|
||||
|
||||
task compressJson(dependsOn: jar) {
|
||||
group "compact"
|
||||
description "Minifies all JSON files, stripping whitespace"
|
||||
|
||||
def jarPath = file(jar.archivePath)
|
||||
|
||||
def tempPath = File.createTempFile("input", ".jar", temporaryDir)
|
||||
tempPath.deleteOnExit()
|
||||
|
||||
def gson = new GsonBuilder().create()
|
||||
|
||||
doLast {
|
||||
// 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) {
|
||||
outJar.putNextEntry(entry)
|
||||
} else if(!entry.name.endsWith(".json")) {
|
||||
outJar.putNextEntry(entry)
|
||||
inJar.getInputStream(entry).withCloseable { outJar << it }
|
||||
} else {
|
||||
ZipEntry newEntry = new ZipEntry(entry.name)
|
||||
newEntry.setTime(entry.time)
|
||||
outJar.putNextEntry(newEntry)
|
||||
|
||||
def element = inJar.getInputStream(entry).withCloseable { gson.fromJson(it.newReader("UTF8"), JsonElement.class) }
|
||||
outJar.write(gson.toJson(element).getBytes(StandardCharsets.UTF_8))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// And replace the original jar again
|
||||
Files.move(tempPath.toPath(), jarPath.toPath(), StandardCopyOption.REPLACE_EXISTING)
|
||||
}
|
||||
// ensure that the encoding is set to UTF-8, no matter what the system default is
|
||||
// this fixes some edge cases with special characters not displaying correctly
|
||||
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
|
||||
tasks.withType(JavaCompile) {
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
assemble.dependsOn compressJson
|
||||
|
||||
// Web tasks
|
||||
|
||||
import org.apache.tools.ant.taskdefs.condition.Os
|
||||
|
||||
List<String> mkCommand(String command) {
|
||||
return Os.isFamily(Os.FAMILY_WINDOWS) ? ["cmd", "/c", command] : ["sh", "-c", command]
|
||||
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
|
||||
// if it is present.
|
||||
// If you remove this task, sources will not be generated.
|
||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
||||
classifier = "sources"
|
||||
from sourceSets.main.allSource
|
||||
}
|
||||
|
||||
task rollup(type: Exec) {
|
||||
group = "build"
|
||||
description = "Bundles JS into rollup"
|
||||
jar {
|
||||
from "LICENSE"
|
||||
|
||||
inputs.files(fileTree("src/web")).withPropertyName("sources")
|
||||
inputs.file("package-lock.json").withPropertyName("package-lock.json")
|
||||
inputs.file("tsconfig.json").withPropertyName("Typescript config")
|
||||
inputs.file("rollup.config.js").withPropertyName("Rollup config")
|
||||
outputs.file("$buildDir/rollup/index.js").withPropertyName("output")
|
||||
|
||||
commandLine mkCommand('"node_modules/.bin/rollup" --config rollup.config.js')
|
||||
}
|
||||
|
||||
task minifyWeb(type: Exec, dependsOn: rollup) {
|
||||
group = "build"
|
||||
description = "Bundles JS into rollup"
|
||||
|
||||
inputs.file("$buildDir/rollup/index.js").withPropertyName("sources")
|
||||
inputs.file("package-lock.json").withPropertyName("package-lock.json")
|
||||
outputs.file("$buildDir/rollup/index.min.js").withPropertyName("output")
|
||||
|
||||
commandLine mkCommand('"node_modules/.bin/terser"' + " -o '$buildDir/rollup/index.min.js' '$buildDir/rollup/index.js'")
|
||||
}
|
||||
|
||||
task illuaminateDocs(type: Exec, dependsOn: [minifyWeb, luaJavadoc]) {
|
||||
group = "build"
|
||||
description = "Bundles JS into rollup"
|
||||
|
||||
inputs.files(fileTree("doc")).withPropertyName("docs")
|
||||
inputs.files(fileTree("src/main/resources/data/computercraft/lua/rom")).withPropertyName("lua rom")
|
||||
inputs.file("illuaminate.sexp").withPropertyName("illuaminate.sexp")
|
||||
inputs.dir("$buildDir/docs/luaJavadoc")
|
||||
inputs.file("$buildDir/rollup/index.min.js").withPropertyName("scripts")
|
||||
inputs.file("src/web/styles.css").withPropertyName("styles")
|
||||
outputs.dir("$buildDir/docs/lua")
|
||||
|
||||
commandLine mkCommand('"bin/illuaminate" doc-gen')
|
||||
}
|
||||
|
||||
task docWebsite(type: Copy, dependsOn: [illuaminateDocs]) {
|
||||
from 'doc/logo.png'
|
||||
into "${project.docsDir}/lua"
|
||||
}
|
||||
|
||||
// Check tasks
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
testLogging {
|
||||
events "skipped", "failed"
|
||||
}
|
||||
}
|
||||
|
||||
jacocoTestReport {
|
||||
dependsOn('test')
|
||||
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 file('config/license/main.txt')
|
||||
}
|
||||
}
|
||||
|
||||
[licenseTest, licenseFormatTest].forEach {
|
||||
it.configure {
|
||||
include("**/*.java")
|
||||
header 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 file('config/license/api.txt')
|
||||
}
|
||||
}
|
||||
|
||||
task setupServer(type: Copy) {
|
||||
group "test server"
|
||||
description "Sets up the environment for the test server."
|
||||
|
||||
from("src/test/server-files") {
|
||||
include "eula.txt"
|
||||
include "server.properties"
|
||||
}
|
||||
into "test-files/server"
|
||||
}
|
||||
|
||||
tasks.register('testInGame', JavaExec.class).configure {
|
||||
it.group('test server')
|
||||
it.description("Runs tests on a temporary Minecraft server.")
|
||||
it.dependsOn(setupServer, 'prepareRunTestServer')
|
||||
|
||||
// Copy from runTestServer. We do it in this slightly odd way as runTestServer
|
||||
// isn't created until the task is configured (which is no good for us).
|
||||
JavaExec exec = tasks.getByName('runTestServer')
|
||||
it.setWorkingDir(exec.getWorkingDir())
|
||||
it.setSystemProperties(exec.getSystemProperties())
|
||||
it.setBootstrapClasspath(exec.getBootstrapClasspath())
|
||||
it.setClasspath(exec.getClasspath())
|
||||
it.setMain(exec.getMain())
|
||||
it.setEnvironment(exec.getEnvironment())
|
||||
it.setArgs(exec.getArgs())
|
||||
it.setJvmArgs(exec.getJvmArgs())
|
||||
|
||||
it.systemProperty('forge.logging.console.level', 'info')
|
||||
it.systemProperty('cctest.run', 'true')
|
||||
|
||||
// Jacoco and modlauncher don't play well together as the classes loaded in-game don't
|
||||
// match up with those written to disk. We get Jacoco to dump all classes to disk, and
|
||||
// use that when generating the report.
|
||||
def coverageOut = new File(buildDir, 'jacocoClassDump/testInGame')
|
||||
jacoco.applyTo(it)
|
||||
it.jacoco.setIncludes(["dan200.computercraft.*"])
|
||||
it.jacoco.setClassDumpDir(coverageOut)
|
||||
it.outputs.dir(coverageOut)
|
||||
// Older versions of modlauncher don't include a protection domain (and thus no code
|
||||
// source). Jacoco skips such classes by default, so we need to explicitly include them.
|
||||
it.jacoco.setIncludeNoLocationClasses(true)
|
||||
}
|
||||
|
||||
tasks.register('jacocoTestInGameReport', JacocoReport.class).configure {
|
||||
it.group('test server')
|
||||
it.description('Generate coverage reports for in-game tests (testInGame)')
|
||||
it.dependsOn('testInGame')
|
||||
|
||||
it.executionData(new File(buildDir, 'jacoco/testInGame.exec'))
|
||||
it.setSourceDirectories(project.files(sourceSets.main.allJava.srcDirs))
|
||||
it.setClassDirectories(project.files(new File(buildDir, 'jacocoClassDump/testInGame')))
|
||||
|
||||
it.reports {
|
||||
xml.enabled true
|
||||
html.enabled true
|
||||
}
|
||||
}
|
||||
check.dependsOn('jacocoTestInGameReport')
|
||||
|
||||
|
||||
// Upload tasks
|
||||
|
||||
task checkRelease {
|
||||
group "upload"
|
||||
description "Verifies that everything is ready for a release"
|
||||
|
||||
inputs.property "version", mod_version
|
||||
inputs.file("src/main/resources/data/computercraft/lua/rom/help/changelog.txt")
|
||||
inputs.file("src/main/resources/data/computercraft/lua/rom/help/whatsnew.txt")
|
||||
|
||||
doLast {
|
||||
def ok = true
|
||||
|
||||
// Check we're targetting the current version
|
||||
def whatsnew = new File(projectDir, "src/main/resources/data/computercraft/lua/rom/help/whatsnew.txt").readLines()
|
||||
if (whatsnew[0] != "New features in CC: Tweaked $mod_version") {
|
||||
ok = false
|
||||
project.logger.error("Expected `whatsnew.txt' to target $mod_version.")
|
||||
}
|
||||
|
||||
// Check "read more" exists and trim it
|
||||
def idx = whatsnew.findIndexOf { it == 'Type "help changelog" to see the full version history.' }
|
||||
if (idx == -1) {
|
||||
ok = false
|
||||
project.logger.error("Must mention the changelog in whatsnew.txt")
|
||||
} else {
|
||||
whatsnew = whatsnew.getAt(0 ..< idx)
|
||||
}
|
||||
|
||||
// Check whatsnew and changelog match.
|
||||
def versionChangelog = "# " + whatsnew.join("\n")
|
||||
def changelog = new File(projectDir, "src/main/resources/data/computercraft/lua/rom/help/changelog.txt").getText()
|
||||
if (!changelog.startsWith(versionChangelog)) {
|
||||
ok = false
|
||||
project.logger.error("whatsnew and changelog are not in sync")
|
||||
}
|
||||
|
||||
if (!ok) throw new IllegalStateException("Could not check release")
|
||||
}
|
||||
}
|
||||
check.dependsOn checkRelease
|
||||
|
||||
curseforge {
|
||||
apiKey = project.hasProperty('curseForgeApiKey') ? project.curseForgeApiKey : ''
|
||||
project {
|
||||
id = '282001'
|
||||
releaseType = 'release'
|
||||
changelog = "Release notes can be found on the GitHub repository (https://github.com/SquidDev-CC/CC-Tweaked/releases/tag/v${mc_version}-${mod_version})."
|
||||
|
||||
relations {
|
||||
incompatible "computercraft"
|
||||
}
|
||||
}
|
||||
from configurations.shade.collect { it.isDirectory() ? it : zipTree(it) }
|
||||
}
|
||||
|
||||
// configure the maven publication
|
||||
publishing {
|
||||
publications {
|
||||
mavenJava(MavenPublication) {
|
||||
from components.java
|
||||
// artifact sourceJar
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uploadArchives {
|
||||
repositories {
|
||||
if(project.hasProperty('mavenUploadUrl')) {
|
||||
mavenDeployer {
|
||||
configuration = configurations.deployerJars
|
||||
|
||||
repository(url: project.property('mavenUploadUrl')) {
|
||||
authentication(
|
||||
userName: project.property('mavenUploadUser'),
|
||||
privateKey: project.property('mavenUploadKey'))
|
||||
}
|
||||
|
||||
pom.project {
|
||||
name 'CC: Tweaked'
|
||||
packaging 'jar'
|
||||
description 'CC: Tweaked is a fork of ComputerCraft, adding programmable computers, turtles and more to Minecraft.'
|
||||
url 'https://github.com/SquidDev-CC/CC-Tweaked'
|
||||
|
||||
scm {
|
||||
url 'https://github.com/SquidDev-CC/CC-Tweaked.git'
|
||||
}
|
||||
|
||||
issueManagement {
|
||||
system 'github'
|
||||
url 'https://github.com/SquidDev-CC/CC-Tweaked/issues'
|
||||
}
|
||||
|
||||
licenses {
|
||||
license {
|
||||
name 'ComputerCraft Public License, Version 1.0'
|
||||
url 'https://github.com/SquidDev-CC/CC-Tweaked/blob/master/LICENSE'
|
||||
distribution 'repo'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pom.whenConfigured { pom ->
|
||||
pom.dependencies.clear()
|
||||
}
|
||||
// add all the jars that should be included when publishing to maven
|
||||
artifact(remapJar) {
|
||||
builtBy remapJar
|
||||
}
|
||||
artifact(sourcesJar) {
|
||||
builtBy remapSourcesJar
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
githubRelease {
|
||||
token project.hasProperty('githubApiKey') ? project.githubApiKey : ''
|
||||
owner 'SquidDev-CC'
|
||||
repo 'CC-Tweaked'
|
||||
try {
|
||||
targetCommitish = Grgit.open(dir: '.').branch.current().name
|
||||
} catch(Exception ignored) { }
|
||||
|
||||
tagName "v${mc_version}-${mod_version}"
|
||||
releaseName "[${mc_version}] ${mod_version}"
|
||||
body {
|
||||
"## " + new File(projectDir, "src/main/resources/data/computercraft/lua/rom/help/whatsnew.txt")
|
||||
.readLines()
|
||||
.takeWhile { it != 'Type "help changelog" to see the full version history.' }
|
||||
.join("\n").trim()
|
||||
// select the repositories you want to publish to
|
||||
repositories {
|
||||
// uncomment to publish to the local maven
|
||||
// mavenLocal()
|
||||
}
|
||||
prerelease false
|
||||
}
|
||||
|
||||
def uploadTasks = ["uploadArchives", "curseforge", "githubRelease"]
|
||||
uploadTasks.forEach { tasks.getByName(it).dependsOn checkRelease }
|
||||
|
||||
task uploadAll(dependsOn: uploadTasks) {
|
||||
group "upload"
|
||||
description "Uploads to all repositories (Maven, Curse, GitHub release)"
|
||||
}
|
||||
|
@@ -1,164 +0,0 @@
|
||||
<?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_loc}/suppressions.xml" />
|
||||
</module>
|
||||
|
||||
<module name="BeforeExecutionExclusionFileFilter">
|
||||
<property name="fileNamePattern" value="render_old"/>
|
||||
</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" />
|
||||
<module name="MemberName" />
|
||||
<module name="MethodName" />
|
||||
<module name="MethodTypeParameterName" />
|
||||
<module name="PackageName">
|
||||
<property name="format" value="^dan200\.computercraft(\.[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>
|
@@ -1,15 +0,0 @@
|
||||
<?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" />
|
||||
|
||||
<!-- The commands API is documented in Lua. -->
|
||||
<suppress checks="SummaryJavadocCheck" files=".*[\\/]CommandAPI.java" />
|
||||
</suppressions>
|
@@ -1,3 +0,0 @@
|
||||
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.
|
@@ -1,3 +0,0 @@
|
||||
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
|
@@ -1,24 +0,0 @@
|
||||
---
|
||||
module: [kind=event] char
|
||||
see: key To listen to any key press.
|
||||
---
|
||||
|
||||
The @{char} event is fired when a character is _typed_ on the keyboard.
|
||||
|
||||
The @{char} event is different to a key press. Sometimes multiple key presses may result in one character being
|
||||
typed (for instance, on some European keyboards). Similarly, some keys (e.g. <kbd>Ctrl</kbd>) do not have any
|
||||
corresponding character. The @{key} should be used if you want to listen to key presses themselves.
|
||||
|
||||
## Return values
|
||||
1. @{string}: The event name.
|
||||
2. @{string}: The string representing the character that was pressed.
|
||||
|
||||
|
||||
## Example
|
||||
Prints each character the user presses:
|
||||
```lua
|
||||
while true do
|
||||
local event, character = os.pullEvent("char")
|
||||
print(character .. " was pressed.")
|
||||
end
|
||||
```
|
@@ -1,26 +0,0 @@
|
||||
---
|
||||
module: [kind=event] key
|
||||
---
|
||||
|
||||
This event is fired when any key is pressed while the terminal is focused.
|
||||
|
||||
This event returns a numerical "key code" (for instance, <kbd>F1</kbd> is 290). This value may vary between versions and
|
||||
so it is recommended to use the constants in the @{keys} API rather than hard coding numeric values.
|
||||
|
||||
If the button pressed represented a printable character, then the @{key} event will be followed immediately by a @{char}
|
||||
event. If you are consuming text input, use a @{char} event instead!
|
||||
|
||||
## Return values
|
||||
1. [`string`]: The event name.
|
||||
2. [`number`]: The numerical key value of the key pressed.
|
||||
3. [`boolean`]: Whether the key event was generated while holding the key (@{true}), rather than pressing it the first time (@{false}).
|
||||
|
||||
## Example
|
||||
Prints each key when the user presses it, and if the key is being held.
|
||||
|
||||
```lua
|
||||
while true do
|
||||
local event, key, is_held = os.pullEvent("key")
|
||||
print(("%s held=%s"):format(keys.getName(key), is_held))
|
||||
end
|
||||
```
|
@@ -1,24 +0,0 @@
|
||||
---
|
||||
module: [kind=event] key_up
|
||||
see: keys For a lookup table of the given keys.
|
||||
---
|
||||
|
||||
Fired whenever a key is released (or the terminal is closed while a key was being pressed).
|
||||
|
||||
This event returns a numerical "key code" (for instance, <kbd>F1</kbd> is 290). This value may vary between versions and
|
||||
so it is recommended to use the constants in the @{keys} API rather than hard coding numeric values.
|
||||
|
||||
## Return values
|
||||
1. @{string}: The event name.
|
||||
2. @{number}: The numerical key value of the key pressed.
|
||||
|
||||
## Example
|
||||
Prints each key released on the keyboard whenever a @{key_up} event is fired.
|
||||
|
||||
```lua
|
||||
while true do
|
||||
local event, key = os.pullEvent("key_up")
|
||||
local name = keys.getName(key) or "unknown key"
|
||||
print(name .. " was released.")
|
||||
end
|
||||
```
|
@@ -1,34 +0,0 @@
|
||||
---
|
||||
module: [kind=event] mouse_click
|
||||
---
|
||||
|
||||
This event is fired when the terminal is clicked with a mouse. This event is only fired on advanced computers (including
|
||||
advanced turtles and pocket computers).
|
||||
|
||||
## Return values
|
||||
1. @{string}: The event name.
|
||||
2. @{number}: The mouse button that was clicked.
|
||||
3. @{number}: The X-coordinate of the click.
|
||||
4. @{number}: The Y-coordinate of the click.
|
||||
|
||||
## Mouse buttons
|
||||
Several mouse events (@{mouse_click}, @{mouse_up}, @{mouse_scroll}) contain a "mouse button" code. This takes a
|
||||
numerical value depending on which button on your mouse was last pressed when this event occurred.
|
||||
|
||||
<table class="pretty-table">
|
||||
<!-- Our markdown parser doesn't work on tables!? Guess I'll have to roll my own soonish :/. -->
|
||||
<tr><th>Button code</th><th>Mouse button</th></tr>
|
||||
<tr><td align="right">1</td><td>Left button</td></tr>
|
||||
<tr><td align="right">2</td><td>Middle button</td></tr>
|
||||
<tr><td align="right">3</td><td>Right button</td></tr>
|
||||
</table>
|
||||
|
||||
## Example
|
||||
Print the button and the coordinates whenever the mouse is clicked.
|
||||
|
||||
```lua
|
||||
while true do
|
||||
local event, button, x, y = os.pullEvent("mouse_click")
|
||||
print(("The mouse button %s was pressed at %d, %d"):format(button, x, y))
|
||||
end
|
||||
```
|
@@ -1,24 +0,0 @@
|
||||
---
|
||||
module: [kind=event] mouse_drag
|
||||
see: mouse_click For when a mouse button is initially pressed.
|
||||
---
|
||||
|
||||
This event is fired every time the mouse is moved while a mouse button is being held.
|
||||
|
||||
## Return values
|
||||
1. @{string}: The event name.
|
||||
2. @{number}: The [mouse button](mouse_click.html#Mouse_buttons) that is being pressed.
|
||||
3. @{number}: The X-coordinate of the mouse.
|
||||
4. @{number}: The Y-coordinate of the mouse.
|
||||
|
||||
## Example
|
||||
Print the button and the coordinates whenever the mouse is dragged.
|
||||
|
||||
```lua
|
||||
while true do
|
||||
local event, button, x, y = os.pullEvent("mouse_drag")
|
||||
print(("The mouse button %s was dragged at %d, %d"):format(button, x, y))
|
||||
end
|
||||
```
|
||||
|
||||
|
@@ -1,21 +0,0 @@
|
||||
---
|
||||
module: [kind=event] mouse_scroll
|
||||
---
|
||||
|
||||
This event is fired when a mouse wheel is scrolled in the terminal.
|
||||
|
||||
## Return values
|
||||
1. @{string}: The event name.
|
||||
2. @{number}: The direction of the scroll. (-1 = up, 1 = down)
|
||||
3. @{number}: The X-coordinate of the mouse when scrolling.
|
||||
4. @{number}: The Y-coordinate of the mouse when scrolling.
|
||||
|
||||
## Example
|
||||
Prints the direction of each scroll, and the position of the mouse at the time.
|
||||
|
||||
```lua
|
||||
while true do
|
||||
local event, dir, x, y = os.pullEvent("mouse_scroll")
|
||||
print(("The mouse was scrolled in direction %s at %d, %d"):format(dir, x, y))
|
||||
end
|
||||
```
|
@@ -1,24 +0,0 @@
|
||||
---
|
||||
module: [kind=event] mouse_up
|
||||
---
|
||||
|
||||
This event is fired when a mouse button is released or a held mouse leaves the computer's terminal.
|
||||
|
||||
## Return values
|
||||
1. @{string}: The event name.
|
||||
2. @{number}: The [mouse button](mouse_click.html#Mouse_buttons) that was released.
|
||||
3. @{number}: The X-coordinate of the mouse.
|
||||
4. @{number}: The Y-coordinate of the mouse.
|
||||
|
||||
## Example
|
||||
Prints the coordinates and button number whenever the mouse is released.
|
||||
|
||||
```lua
|
||||
while true do
|
||||
local event, button, x, y = os.pullEvent("mouse_up")
|
||||
print(("The mouse button %s was released at %d, %d"):format(button, x, y))
|
||||
end
|
||||
```
|
||||
|
||||
[`string`]: string
|
||||
[`number`]: number
|
@@ -1 +0,0 @@
|
||||
<meta name="theme-color" content="#c8d87c">
|
11
doc/index.md
11
doc/index.md
@@ -1,11 +0,0 @@
|
||||
#  [](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"
|
BIN
doc/logo.png
BIN
doc/logo.png
Binary file not shown.
Before Width: | Height: | Size: 2.2 KiB |
@@ -1,34 +0,0 @@
|
||||
--- The FS API allows you to manipulate files and the filesystem.
|
||||
--
|
||||
-- @module fs
|
||||
|
||||
--- 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
|
||||
|
||||
--[[- Provides completion for a file or directory name, suitable for use with
|
||||
@{_G.read}.
|
||||
|
||||
When a directory is a possible candidate for completion, two entries are
|
||||
included - one with a trailing slash (indicating that entries within this
|
||||
directory exist) and one without it (meaning this entry is an immediate
|
||||
completion candidate). `include_dirs` can be set to @{false} to only include
|
||||
those with a trailing slash.
|
||||
|
||||
@tparam string path The path to complete.
|
||||
@tparam string location The location where paths are resolved from.
|
||||
@tparam[opt] boolean include_files When @{false}, only directories will be
|
||||
included in the returned list.
|
||||
@tparam[opt] boolean include_dirs When @{false}, "raw" directories will not be
|
||||
included in the returned list.
|
||||
@treturn { string... } A list of possible completion candidates.
|
||||
]]
|
||||
function complete(path, location, include_files, include_dirs) end
|
@@ -1,125 +0,0 @@
|
||||
--[[-
|
||||
Functions in the global environment, defined in `bios.lua`. This does not
|
||||
include standard Lua functions.
|
||||
|
||||
@module _G
|
||||
]]
|
||||
|
||||
--[[- Pauses execution for the specified number of seconds.
|
||||
|
||||
As it waits for a fixed amount of world ticks, `time` will automatically be
|
||||
rounded up to the nearest multiple of 0.05 seconds. If you are using coroutines
|
||||
or the @{parallel|parallel API}, it will only pause execution of the current
|
||||
thread, not the whole program.
|
||||
|
||||
**Note** Because sleep internally uses timers, it is a function that yields.
|
||||
This means that you can use it to prevent "Too long without yielding" errors,
|
||||
however, as the minimum sleep time is 0.05 seconds, it will slow your program
|
||||
down.
|
||||
|
||||
**Warning** Internally, this function queues and waits for a timer event (using
|
||||
@{os.startTimer}), however it does not listen for any other events. This means
|
||||
that any event that occurs while sleeping will be entirely discarded. If you
|
||||
need to receive events while sleeping, consider using @{os.startTimer|timers},
|
||||
or the @{parallel|parallel API}.
|
||||
|
||||
@tparam number time The number of seconds to sleep for, rounded up to the
|
||||
nearest multiple of 0.05.
|
||||
|
||||
@see os.startTimer
|
||||
@usage Sleep for three seconds.
|
||||
|
||||
print("Sleeping for three seconds")
|
||||
sleep(3)
|
||||
print("Done!")
|
||||
]]
|
||||
function sleep(time) end
|
||||
|
||||
--- Writes a line of text to the screen without a newline at the end, wrapping
|
||||
-- text if necessary.
|
||||
--
|
||||
-- @tparam string text The text to write to the string
|
||||
-- @treturn number The number of lines written
|
||||
-- @see print A wrapper around write that adds a newline and accepts multiple arguments
|
||||
-- @usage write("Hello, world")
|
||||
function write(text) end
|
||||
|
||||
--- Prints the specified values to the screen separated by spaces, wrapping if
|
||||
-- necessary. After printing, the cursor is moved to the next line.
|
||||
--
|
||||
-- @param ... The values to print on the screen
|
||||
-- @treturn number The number of lines written
|
||||
-- @usage print("Hello, world!")
|
||||
function print(...) end
|
||||
|
||||
--- Prints the specified values to the screen in red, separated by spaces,
|
||||
-- wrapping if necessary. After printing, the cursor is moved to the next line.
|
||||
--
|
||||
-- @param ... The values to print on the screen
|
||||
-- @usage printError("Something went wrong!")
|
||||
function printError(...) end
|
||||
|
||||
--[[- Reads user input from the terminal, automatically handling arrow keys,
|
||||
pasting, character replacement, history scrollback, auto-completion, and
|
||||
default values.
|
||||
|
||||
@tparam[opt] string replaceChar A character to replace each typed character with.
|
||||
This can be used for hiding passwords, for example.
|
||||
@tparam[opt] table history A table holding history items that can be scrolled
|
||||
back to with the up/down arrow keys. The oldest item is at index 1, while the
|
||||
newest item is at the highest index.
|
||||
@tparam[opt] function(partial: string):({ string... }|nil) completeFn A function
|
||||
to be used for completion. This function should take the partial text typed so
|
||||
far, and returns a list of possible completion options.
|
||||
@tparam[opt] string default Default text which should already be entered into
|
||||
the prompt.
|
||||
|
||||
@treturn string The text typed in.
|
||||
|
||||
@see cc.completion For functions to help with completion.
|
||||
@usage Read an string and echo it back to the user
|
||||
|
||||
write("> ")
|
||||
local msg = read()
|
||||
print(msg)
|
||||
|
||||
@usage Prompt a user for a password.
|
||||
|
||||
while true do
|
||||
write("Password> ")
|
||||
local pwd = read("*")
|
||||
if pwd == "let me in" then break end
|
||||
print("Incorrect password, try again.")
|
||||
end
|
||||
print("Logged in!")
|
||||
|
||||
@usage A complete example with completion, history and a default value.
|
||||
|
||||
local completion = require "cc.completion"
|
||||
local history = { "potato", "orange", "apple" }
|
||||
local choices = { "apple", "orange", "banana", "strawberry" }
|
||||
write("> ")
|
||||
local msg = read(nil, history, function(text) return completion.choice(text, choices) end, "app")
|
||||
print(msg)
|
||||
]]
|
||||
function read(replaceChar, history, completeFn, default) end
|
||||
|
||||
--- The ComputerCraft and Minecraft version of the current computer environment.
|
||||
--
|
||||
-- For example, `ComputerCraft 1.93.0 (Minecraft 1.15.2)`.
|
||||
-- @usage _HOST
|
||||
_HOST = _HOST
|
||||
|
||||
--[[- The default computer settings as defined in the ComputerCraft
|
||||
configuration.
|
||||
|
||||
This is a comma-separated list of settings pairs defined by the mod
|
||||
configuration or server owner. By default, it is empty.
|
||||
|
||||
An example value to disable autocompletion:
|
||||
|
||||
shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false
|
||||
|
||||
@usage _CC_DEFAULT_SETTINGS
|
||||
]]
|
||||
_CC_DEFAULT_SETTINGS = _CC_DEFAULT_SETTINGS
|
@@ -1,157 +0,0 @@
|
||||
--- The http library allows communicating with web servers, sending and
|
||||
-- receiving data from them.
|
||||
--
|
||||
-- @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
|
||||
|
||||
--- 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
|
125
doc/stub/os.lua
125
doc/stub/os.lua
@@ -1,125 +0,0 @@
|
||||
-- Defined in bios.lua
|
||||
|
||||
--[[- Loads the given API into the global environment.
|
||||
|
||||
**Warning** This function is deprecated. Use of this function will pollute the
|
||||
global table, use @{require} instead.
|
||||
|
||||
This function loads and executes the file at the given path, and all global
|
||||
variables and functions exported by it will by available through the use of
|
||||
`myAPI.<function name>`, where `myAPI` is the base name of the API file.
|
||||
|
||||
@tparam string path The path of the API to load.
|
||||
@treturn boolean Whether or not the API was successfully loaded.
|
||||
|
||||
@deprecated Use @{require}.
|
||||
]]
|
||||
function loadAPI(path) end
|
||||
|
||||
--- Unloads an API which was loaded by @{os.loadAPI}.
|
||||
--
|
||||
-- This effectively removes the specified table from `_G`.
|
||||
--
|
||||
-- @tparam string name The name of the API to unload.
|
||||
-- @deprecated Use @{require}.
|
||||
function unloadAPI(name) end
|
||||
|
||||
--[[- Pause execution of the current thread and waits for any events matching
|
||||
`filter`.
|
||||
|
||||
This function @{coroutine.yield|yields} the current process and waits for it
|
||||
to be resumed with a vararg list where the first element matches `filter`.
|
||||
If no `filter` is supplied, this will match all events.
|
||||
|
||||
Unlike @{os.pullEventRaw}, it will stop the application upon a "terminate"
|
||||
event, printing the error "Terminated".
|
||||
|
||||
@tparam[opt] string filter Event to filter for.
|
||||
@treturn string event The name of the event that fired.
|
||||
@treturn any param... Optional additional parameters of the event.
|
||||
@usage Listen for `mouse_click` events.
|
||||
|
||||
while true do
|
||||
local event, button, x, y = os.pullEvent("mouse_click")
|
||||
print("Button", button, "was clicked at", x, ",", y)
|
||||
end
|
||||
|
||||
@usage Listen for multiple events.
|
||||
|
||||
while true do
|
||||
local eventData = {os.pullEvent()}
|
||||
local event = eventData[1]
|
||||
|
||||
if event == "mouse_click" then
|
||||
print("Button", eventData[2], "was clicked at", eventData[3], ",", eventData[4])
|
||||
elseif event == "key" then
|
||||
print("Key code", eventData[2], "was pressed")
|
||||
end
|
||||
end
|
||||
|
||||
@see os.pullEventRaw To pull the terminate event.
|
||||
]]
|
||||
function pullEvent(filter) end
|
||||
|
||||
--[[- Pause execution of the current thread and waits for events, including the
|
||||
`terminate` event.
|
||||
|
||||
This behaves almost the same as @{os.pullEvent}, except it allows you to handle
|
||||
the `terminate` event yourself - the program will not stop execution when
|
||||
<kbd>Ctrl+T</kbd> is pressed.
|
||||
|
||||
@tparam[opt] string filter Event to filter for.
|
||||
@treturn string event The name of the event that fired.
|
||||
@treturn any param... Optional additional parameters of the event.
|
||||
@usage Listen for `terminate` events.
|
||||
|
||||
while true do
|
||||
local event = os.pullEventRaw()
|
||||
if event == "terminate" then
|
||||
print("Caught terminate event!")
|
||||
end
|
||||
end
|
||||
|
||||
@see os.pullEvent To pull events normally.
|
||||
]]
|
||||
function pullEventRaw(filter) end
|
||||
|
||||
--- Pauses execution for the specified number of seconds, alias of @{_G.sleep}.
|
||||
--
|
||||
-- @tparam number time The number of seconds to sleep for, rounded up to the
|
||||
-- nearest multiple of 0.05.
|
||||
function sleep(time) end
|
||||
|
||||
--- Get the current CraftOS version (for example, `CraftOS 1.8`).
|
||||
--
|
||||
-- This is defined by `bios.lua`. For the current version of CC:Tweaked, this
|
||||
-- should return `CraftOS 1.8`.
|
||||
--
|
||||
-- @treturn string The current CraftOS version.
|
||||
-- @usage os.version()
|
||||
function version() end
|
||||
|
||||
--[[- Run the program at the given path with the specified environment and
|
||||
arguments.
|
||||
|
||||
This function does not resolve program names like the shell does. This means
|
||||
that, for example, `os.run("edit")` will not work. As well as this, it does not
|
||||
provide access to the @{shell} API in the environment. For this behaviour, use
|
||||
@{shell.run} instead.
|
||||
|
||||
If the program cannot be found, or failed to run, it will print the error and
|
||||
return `false`. If you want to handle this more gracefully, use an alternative
|
||||
such as @{loadfile}.
|
||||
|
||||
@tparam table env The environment to run the program with.
|
||||
@tparam string path The exact path of the program to run.
|
||||
@param ... The arguments to pass to the program.
|
||||
@treturn boolean Whether or not the program ran successfully.
|
||||
@usage Run the default shell from within your program:
|
||||
|
||||
os.run({}, "/rom/programs/shell.lua")
|
||||
|
||||
@see shell.run
|
||||
@see loadfile
|
||||
]]
|
||||
function run(env, path, ...) end
|
@@ -1 +0,0 @@
|
||||
function craft(limit) end
|
@@ -1,6 +1,17 @@
|
||||
# Mod properties
|
||||
mod_version=1.95.2
|
||||
# Done to increase the memory available to gradle.
|
||||
org.gradle.jvmargs=-Xmx1G
|
||||
|
||||
# Minecraft properties (update mods.toml when changing)
|
||||
mc_version=1.16.4
|
||||
forge_version=35.1.16
|
||||
# Mod properties
|
||||
mod_version=1.96.0
|
||||
|
||||
# Minecraft properties
|
||||
mc_version=1.16.5
|
||||
mappings_version=9
|
||||
|
||||
# Dependencies
|
||||
cloth_config_version=4.8.1
|
||||
fabric_loader_version=0.11.3
|
||||
fabric_api_version=0.32.0+1.16
|
||||
jankson_version=1.2.0
|
||||
modmenu_version=1.14.6+
|
||||
cloth_api_version=1.4.5
|
||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
5
gradle/wrapper/gradle-wrapper.properties
vendored
5
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,6 @@
|
||||
#Tue Jul 07 13:15:43 EDT 2020
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-all.zip
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
123
illuaminate.sexp
123
illuaminate.sexp
@@ -1,123 +0,0 @@
|
||||
; -*- mode: Lisp;-*-
|
||||
|
||||
(sources
|
||||
/doc/stub/
|
||||
/doc/events/
|
||||
/build/docs/luaJavadoc/
|
||||
/src/main/resources/*/computercraft/lua/bios.lua
|
||||
/src/main/resources/*/computercraft/lua/rom/
|
||||
/src/test/resources/test-rom
|
||||
/src/web/mount)
|
||||
|
||||
|
||||
(doc
|
||||
(destination build/docs/lua)
|
||||
(index doc/index.md)
|
||||
|
||||
(site
|
||||
(title "CC: Tweaked")
|
||||
(logo src/main/resources/pack.png)
|
||||
(url https://tweaked.cc/)
|
||||
(source-link https://github.com/SquidDev-CC/CC-Tweaked/blob/${commit}/${path}#L${line})
|
||||
|
||||
(styles src/web/styles.css)
|
||||
(scripts build/rollup/index.js)
|
||||
(head doc/head.html))
|
||||
|
||||
(module-kinds
|
||||
(peripheral Peripherals)
|
||||
(generic_peripheral "Generic Peripherals")
|
||||
(event Events))
|
||||
|
||||
(library-path
|
||||
/doc/stub/
|
||||
/build/docs/luaJavadoc/
|
||||
|
||||
/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 _G)
|
||||
|
||||
(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/ /build/docs/luaJavadoc/)
|
||||
(linters -var:unused-global)
|
||||
(lint (allow-toplevel-global true)))
|
||||
|
||||
;; Suppress warnings for currently undocumented modules.
|
||||
(at
|
||||
(; Java APIs
|
||||
/doc/stub/http.lua
|
||||
/doc/stub/os.lua
|
||||
/doc/stub/turtle.lua
|
||||
/doc/stub/global.lua
|
||||
; Java generated APIs
|
||||
/build/docs/luaJavadoc/turtle.lua
|
||||
; Peripherals
|
||||
/build/docs/luaJavadoc/drive.lua
|
||||
/build/docs/luaJavadoc/speaker.lua
|
||||
/build/docs/luaJavadoc/printer.lua
|
||||
; Generic peripherals
|
||||
/build/docs/luaJavadoc/fluid_storage.lua
|
||||
; Lua APIs
|
||||
/src/main/resources/*/computercraft/lua/rom/apis/io.lua
|
||||
/src/main/resources/*/computercraft/lua/rom/apis/window.lua)
|
||||
|
||||
(linters -doc:undocumented -doc:undocumented-arg -doc:undocumented-return))
|
||||
|
||||
;; Suppress warnings for the BIOS using its own deprecated members for now.
|
||||
(at /src/main/resources/*/computercraft/lua/bios.lua
|
||||
(linters -var:deprecated))
|
||||
|
||||
(at /src/test/resources/test-rom
|
||||
; We should still be able to test deprecated members.
|
||||
(linters -var:deprecated)
|
||||
|
||||
(lint
|
||||
(globals
|
||||
:max sleep write
|
||||
cct_test describe expect howlci fail it pending stub)))
|
||||
|
||||
(at /src/web/mount/expr_template.lua (lint (globals :max __expr__)))
|
172
package-lock.json
generated
172
package-lock.json
generated
@@ -1,172 +0,0 @@
|
||||
{
|
||||
"name": "tweaked.cc",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@rollup/plugin-typescript": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-6.1.0.tgz",
|
||||
"integrity": "sha512-hJxaiE6WyNOsK+fZpbFh9CUijZYqPQuAOWO5khaGTUkM8DYNNyA2TDlgamecE+qLOG1G1+CwbWMAx3rbqpp6xQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@rollup/pluginutils": "^3.1.0",
|
||||
"resolve": "^1.17.0"
|
||||
}
|
||||
},
|
||||
"@rollup/pluginutils": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
|
||||
"integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/estree": "0.0.39",
|
||||
"estree-walker": "^1.0.1",
|
||||
"picomatch": "^2.2.2"
|
||||
}
|
||||
},
|
||||
"@types/estree": {
|
||||
"version": "0.0.39",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
|
||||
"integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
|
||||
"dev": true
|
||||
},
|
||||
"buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
|
||||
"dev": true
|
||||
},
|
||||
"commander": {
|
||||
"version": "2.20.3",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
|
||||
"dev": true
|
||||
},
|
||||
"estree-walker": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
|
||||
"integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
|
||||
"dev": true
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
|
||||
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"function-bind": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
|
||||
"dev": true
|
||||
},
|
||||
"has": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"is-core-module": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz",
|
||||
"integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"path-parse": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
|
||||
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
|
||||
"dev": true
|
||||
},
|
||||
"picomatch": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
|
||||
"dev": true
|
||||
},
|
||||
"preact": {
|
||||
"version": "10.5.5",
|
||||
"resolved": "https://registry.npmjs.org/preact/-/preact-10.5.5.tgz",
|
||||
"integrity": "sha512-5ONLNH1SXMzzbQoExZX4TELemNt+TEDb622xXFNfZngjjM9qtrzseJt+EfiUu4TZ6EJ95X5sE1ES4yqHFSIdhg=="
|
||||
},
|
||||
"requirejs": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
|
||||
"integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
|
||||
"dev": true
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.18.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz",
|
||||
"integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-core-module": "^2.0.0",
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
},
|
||||
"rollup": {
|
||||
"version": "2.33.1",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz",
|
||||
"integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fsevents": "~2.1.2"
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.7.3",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
|
||||
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map-support": {
|
||||
"version": "0.5.19",
|
||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
|
||||
"integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffer-from": "^1.0.0",
|
||||
"source-map": "^0.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.3.8",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz",
|
||||
"integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"commander": "^2.20.0",
|
||||
"source-map": "~0.7.2",
|
||||
"source-map-support": "~0.5.19"
|
||||
}
|
||||
},
|
||||
"tslib": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
|
||||
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
|
||||
},
|
||||
"typescript": {
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz",
|
||||
"integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
18
package.json
18
package.json
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"name": "tweaked.cc",
|
||||
"version": "1.0.0",
|
||||
"description": "Website additions for tweaked.cc",
|
||||
"author": "SquidDev",
|
||||
"license": "BSD-3-Clause",
|
||||
"dependencies": {
|
||||
"preact": "^10.5.5",
|
||||
"tslib": "^2.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-typescript": "^6.1.0",
|
||||
"requirejs": "^2.3.6",
|
||||
"rollup": "^2.33.1",
|
||||
"terser": "^5.3.8",
|
||||
"typescript": "^4.0.5"
|
||||
}
|
||||
}
|
627
patchwork.md
Normal file
627
patchwork.md
Normal file
@@ -0,0 +1,627 @@
|
||||
# Just my list of things I have ported over
|
||||
|
||||
Format for the changelog of ported stuff
|
||||
```
|
||||
commit // Shows commit from CC:T
|
||||
commit2 // Shows a commit that is the same thing, just a clean up, only if right after
|
||||
Title // Commit Title
|
||||
SubScript // Desc of commit
|
||||
```
|
||||
|
||||
If a edit that is present in CC:T is not needed, I will skip over it.
|
||||
Any and all references to an issue number, are to be found on CC:T's repo.
|
||||
|
||||
Any commit that starts with `[Patchwork]` are purely edits made by my hand, and not based on other commits from CC:T, this is to help differentiate my changes from the official changes
|
||||
|
||||
Lines that are found above a commit in this log like this one, (excluding this one) are comments about how i had to implement things that are not a simple 1:1 (excluding fabric/forge differences) conversion
|
||||
|
||||
```md
|
||||
5155e18de279a193c558aa029963486fd1294769
|
||||
Added translation for Vietnamese
|
||||
Co-authored-by: Boom <boom@flyingpackets.net>
|
||||
```
|
||||
|
||||
```
|
||||
7e121ff72f2b1504cd6af47b57500876682bac45
|
||||
ae6124d1f477487abab1858abde8c4ec49dfee3c
|
||||
Translations for Vienamese
|
||||
Co-authored-by: Boom <boom@flyingpackets.net>
|
||||
```
|
||||
|
||||
```
|
||||
59de21eae29849988e77fad6bc335f5ce78dfec7
|
||||
Handle tabs when parsing JSON
|
||||
Fixes #539
|
||||
```
|
||||
|
||||
```
|
||||
748ebbe66bf0a4239bde34f557e4b4b75d61d990
|
||||
Bump to 1.92.0
|
||||
A tiny release, but there's new features so it's technically a minor
|
||||
bump.
|
||||
```
|
||||
|
||||
Cherry Picked because this update was partially related to forge updates rather than mod updates
|
||||
```
|
||||
8b4a01df27ff7f6fa9ffd9c2188c6e3166edd515
|
||||
Update to Minecraft 1.16.3
|
||||
|
||||
I hope the Fabric folks now realise this is gonna be a race of who can
|
||||
update first :p. Either way, this was a very easy update - only changes
|
||||
were due to unrelated Forge changes.
|
||||
```
|
||||
|
||||
```
|
||||
87393e8aef9ddfaca465d626ee7cff5ff499a7e8
|
||||
Fix additional `-` in docs
|
||||
|
||||
Why isn't this automatically stripped! Bad squid.
|
||||
```
|
||||
|
||||
```
|
||||
275ca58a82c627128a145a8754cbe32568536bd9
|
||||
HTTP rules now allow filtering by port
|
||||
|
||||
The HTTP filtering system becomes even more complex! Though in this
|
||||
case, it's pretty minimal, and definitely worth doing.
|
||||
|
||||
For instance, the following rule will allow connecting to localhost on
|
||||
port :8080.
|
||||
|
||||
[[http.rules]]
|
||||
host = "127.0.0.1"
|
||||
port = 8080
|
||||
action = "allow"
|
||||
|
||||
# Other rules as before.
|
||||
|
||||
Closes #540
|
||||
```
|
||||
|
||||
The alterations in ColourUtils.java were not needed so they were not ported over
|
||||
```
|
||||
6f868849ab2f264508e12c184cc56f2632aaf5bc
|
||||
Use tags to check if something is a dye
|
||||
|
||||
We half did this already, just needed to change a couple of checks.
|
||||
Closes #541.
|
||||
```
|
||||
|
||||
```
|
||||
6cee4efcd3610536ee74330cd728f7371011e5a8
|
||||
Fix incorrect open container check
|
||||
|
||||
Was this always broken, or did it happen in a Minecraft update? Don't
|
||||
know, but it's a very silly mistake either way. Fixes #544
|
||||
```
|
||||
|
||||
```
|
||||
0832974725b2478c5227b81f82c35bbf03cf6aba
|
||||
Translations for Swedish
|
||||
|
||||
Co-authored-by: David Isaksson <davidisaksson93@gmail.com>
|
||||
```
|
||||
|
||||
```
|
||||
84036d97d99efd8762e0170002060ae3471508bf
|
||||
Fix io.open documentation
|
||||
|
||||
Well, that was silly.
|
||||
```
|
||||
|
||||
I set the default properties for computers as `Block.GLASS` and then set their strength to `2F` and their soundgroup to stone
|
||||
```
|
||||
8472112fc1eaad18ed6ed2c6c62b040fe421e81a
|
||||
Don't propagate adjacent redstone signals for computers (#549)
|
||||
|
||||
Minecraft propagates "strong" redstone signals (such as those directly
|
||||
from comparators or repeaters) through solid blocks. This includes
|
||||
computers, which is a little annoying as it means one cannot feed
|
||||
redstone wire from one side and a repeater from another.
|
||||
|
||||
This changes computers to not propagate strong redstone signals, in the
|
||||
same way transparent blocks like glass do.
|
||||
|
||||
Closes #548.
|
||||
```
|
||||
|
||||
```
|
||||
30d35883b83831900b34040f0131c7e06f5c3e52
|
||||
Fix my docs
|
||||
|
||||
Thanks @plt-hokusai. Kinda embarrassing this slipped through - I
|
||||
evidently need to lint examples too.
|
||||
```
|
||||
|
||||
```
|
||||
34a2c835d412c0d9e1fb20a42b7f2cd2738289c7
|
||||
Add color table to docs (#553)
|
||||
```
|
||||
|
||||
All API Documentation updates,
|
||||
`Not Needed` for this repo.
|
||||
```
|
||||
93068402a2ffec00eedb8fe2d859ebdc005a1989
|
||||
Document remaining OS functions (#554)
|
||||
|
||||
01d81cb91da938836f953b290ad6b8fc87cb7e35
|
||||
Update illuaminate CSS for deprecation (#556)
|
||||
```
|
||||
|
||||
```
|
||||
Not Needed
|
||||
4766833cf2d041ed179529eecb9402ad09b2b79b
|
||||
Bump JEI/crafttweaker versions
|
||||
|
||||
In my defence, they weren't out when I started the 1.15 update.
|
||||
```
|
||||
|
||||
```
|
||||
bf6053906dc6a3c7b0d40d5b097e745dce1f33bc
|
||||
Fix TBO norm issues on old GPUs
|
||||
```
|
||||
|
||||
```
|
||||
Not Needed
|
||||
113b560a201dbdea9de2a2ef536bcce1d6e51978
|
||||
Update configuration to match latest illuaminate
|
||||
|
||||
Ooooooh, it's all fancy now. Well, that or horrifically broken.
|
||||
```
|
||||
|
||||
```
|
||||
c334423d42ba3b653ac3a8c27bce7970457f8f96
|
||||
Add function to get window visibility
|
||||
|
||||
Closes #562
|
||||
|
||||
Co-authored-by: devomaa <lmao@distruzione.org>
|
||||
```
|
||||
|
||||
[WARN] Could not implement changes to the following files
|
||||
* `src/main/java/dan200/computercraft/ComputerCraft.java` < Structure too different, cannot find equivalent to alter
|
||||
* `src/main/java/dan200/computercraft/shared/Config.java` < Files Does not exist in this repo
|
||||
```
|
||||
84a6bb1cf3b0668ddc7d8c409a2477a42390e3f7
|
||||
Make generic peripherals on by default
|
||||
|
||||
This is a long way away from "feature complete" as it were. However,
|
||||
it's definitely at a point where it's suitable for general usage - I'm
|
||||
happy with the API, and don't think I'm going to be breaking things any
|
||||
time soon.
|
||||
|
||||
That said, things aren't exposed yet for Java-side public consumption. I
|
||||
was kinda waiting until working on Plethora to actually do that, but not
|
||||
sure if/when that'll happen.
|
||||
|
||||
If someone else wants to work on an integration mod (or just adding
|
||||
integrations for their own mod), do get in touch and I can work out how
|
||||
to expose this.
|
||||
|
||||
Closes #452
|
||||
```
|
||||
|
||||
```
|
||||
Not Needed
|
||||
6aae4e576621090840724e094aa25e51696530fc
|
||||
Remove superfluous imports
|
||||
|
||||
Hah, this is embarassing
|
||||
```
|
||||
|
||||
[TODO] [M3R1-01] Code has been applied, players still dont get achievments
|
||||
```
|
||||
f6160bdc57b3d9850607c2c7c2ce9734b4963478
|
||||
Fix players not getting advancements when they own turtles
|
||||
|
||||
When we construct a new ServerPlayerEntity (and thus TurtlePlayer), we
|
||||
get the current (global) advancement state and call .setPlayer() on it.
|
||||
|
||||
As grantCriterion blocks FakePlayers from getting advancements, this
|
||||
means a player will no longer receive any advancements, as the "wrong"
|
||||
player object is being consulted.
|
||||
|
||||
As a temporary work around, we attempt to restore the previous player to
|
||||
the advancement store. I'll try to upstream something into Forge to
|
||||
resolve this properly.
|
||||
|
||||
Fixes #564
|
||||
```
|
||||
|
||||
```
|
||||
17a932920711a5c0361a5048c9e0a5e7a58e6364
|
||||
Bump cct-javadoc version
|
||||
|
||||
Documentation will now be sorted (somewhat) correctly!
|
||||
```
|
||||
|
||||
```
|
||||
a6fcfb6af2fc1bef8ca3a19122c9267549202424
|
||||
Draw in-hand pocket computers with blending
|
||||
|
||||
It might be worth switching to RenderTypes here, rather than a pure
|
||||
Tesselator, but this'll do for now.
|
||||
|
||||
Fixes Zundrel/cc-tweaked-fabric#20.
|
||||
```
|
||||
|
||||
```
|
||||
c58441b29c3715f092e7f3747bb3ec65ae5a3d29
|
||||
Various SNBT parsing improvements
|
||||
|
||||
Correctly handle:
|
||||
- Typed arrays ([I; 1, 2, 3])
|
||||
- All suffixed numbers (1.2d)
|
||||
- Single-quoted strings
|
||||
|
||||
Fixes #559
|
||||
```
|
||||
|
||||
```
|
||||
e2a635b6e5f5942f999213434054e06833c5cb06
|
||||
Dont fail when codecov is being finicky
|
||||
```
|
||||
|
||||
```
|
||||
666e83cf4fd0eb327f465d5b919a708790f99b00
|
||||
Fix JSON objects failing to pass
|
||||
|
||||
Maybe I should run the whole test suite, not just the things I think
|
||||
matter? Nah....
|
||||
```
|
||||
|
||||
```
|
||||
741adfa7bb2b950d2851c3f0072d6a4769f22773
|
||||
|
||||
Use blit to draw boxes, add colors.toBlit (#570)
|
||||
```
|
||||
|
||||
```
|
||||
d13bd2cce8d102ad7f61f557e707d6fe3731bc37
|
||||
|
||||
use arg[0] in all usage printouts (#571)
|
||||
```
|
||||
|
||||
```
|
||||
74ac5bb3d17e5bee30643a5d6702696600c06229
|
||||
|
||||
Bump to 1.94.0
|
||||
```
|
||||
|
||||
[TODO] [M3R1-02] Zero Clue how to reimplement this in fabric.
|
||||
```
|
||||
c8aeddedd4ed430f9cb6428676ebb4fa39834182
|
||||
|
||||
Auto-generate monitor models
|
||||
|
||||
I didn't think it was worth it, and then I found myself needing to
|
||||
update a dozen of them. The code isn't especially pretty, but it works,
|
||||
so that's fine.
|
||||
|
||||
Also fixes several issues with us using the wrong texture (closes #572).
|
||||
I've put together a wiki page[1] which describes each texture in a
|
||||
little more detail.
|
||||
|
||||
[1] https://github.com/SquidDev-CC/CC-Tweaked/wiki/Monitor-texture-reference
|
||||
```
|
||||
|
||||
```
|
||||
7f90f2f7cadce0d5b9177b16626979591bce8137
|
||||
|
||||
Clean up some examples a little bit
|
||||
|
||||
Would be good if they didn't crash and burn on entry :).
|
||||
```
|
||||
|
||||
```
|
||||
f194f4fa3a17c48ff1a9088d50063f4a675a23b6
|
||||
|
||||
Fix epoch documentation to use milliseconds (#580)
|
||||
```
|
||||
|
||||
```
|
||||
d2a1a00dc43e5b65f6b64111ce76dd3db16c919f
|
||||
|
||||
Clear gets an option to reset the palette (#582)
|
||||
|
||||
Fixes #555.
|
||||
```
|
||||
|
||||
```
|
||||
aab0cd34cd64fdf837ff1c3b91a957a25c2cf7f9
|
||||
|
||||
Use term.blit on original paint render
|
||||
|
||||
This makes it super speedy, meaning an initial refresh doesn't take ages
|
||||
to load.
|
||||
```
|
||||
|
||||
```
|
||||
b0651082f472baee8f0fa8ec7ba95f433e2637bb
|
||||
|
||||
Cleanup examples for the various modules
|
||||
```
|
||||
|
||||
Ignored Documentation Changes, these are locate
|
||||
|
||||
```
|
||||
9a749642d294506095e697a3a4345dfe260bd68c
|
||||
|
||||
Strict Globals (#583)
|
||||
```
|
||||
|
||||
```
|
||||
fff8353451451be5ae31e0f63d8e529b127fd186
|
||||
|
||||
Remove extra space (#586)
|
||||
```
|
||||
|
||||
```
|
||||
486f41f08286ddcfad91d72b83a9361bd9c215cb
|
||||
|
||||
Fixed length check on function name in `expect` (#589)
|
||||
```
|
||||
|
||||
```
|
||||
04f9644ae75dafc72da4c4790f334d2e90b03e6f
|
||||
|
||||
Allow strings or numbers in textutils.*tabulate
|
||||
|
||||
A little dubious, but apparently CC used to support it. This means we're
|
||||
consistent with methods like io.write or string.len which accept strings
|
||||
or numbers.
|
||||
|
||||
Fixes #591
|
||||
```
|
||||
|
||||
```
|
||||
d4199064ae5ae8023c589f80f12d94e1c6bbc2b5
|
||||
|
||||
Make fs.combine accept multiple arguments
|
||||
|
||||
Means we can now do fs.combine("a", "b", "c"). Of course, one may just
|
||||
write "a/b/c" in this case, but it's definitely useful elsewhere.
|
||||
|
||||
This is /technically/ a breaking change as fs.combine(a, b:gsub(...))
|
||||
will no longer function (as gsub returns multiple arguments). However,
|
||||
I've done a quick search through GH and my Pastebin archives and can't
|
||||
find any programs which would break. Fingers crossed.
|
||||
```
|
||||
|
||||
```
|
||||
24af36743d08fcdb58439c52bf587b33ed828263
|
||||
|
||||
Try to handle a turtle being broken while ticked
|
||||
|
||||
Hopefully fixes #585. Hopefully.
|
||||
```
|
||||
|
||||
```
|
||||
511eea39a11956c82e2c11a47b2e7cad27f9887e
|
||||
|
||||
Remove <!-- -->s in usages
|
||||
```
|
||||
|
||||
```
|
||||
826797cbd579e867f0f35f0be44b6a28c8c094a9
|
||||
|
||||
Added documentation for global functions (#592)
|
||||
```
|
||||
Didn't port the docs over.
|
||||
|
||||
```
|
||||
d83a68f3ff6e3833278a38798d06215293656e85
|
||||
|
||||
Allow $private HTTP rule to block any private IP
|
||||
```
|
||||
The config still uses a `blacklist` and `whitelist` array.
|
||||
|
||||
```
|
||||
24d3777722812f975d2bc4594437fbbb0431d910
|
||||
|
||||
Added improved help viewer (#595)
|
||||
```
|
||||
Didn't port the lua tests over.
|
||||
|
||||
```
|
||||
737b3cb57696fb5517252e7db38bc88ce960b4d8
|
||||
|
||||
Don't use capabilities for generic peripherals
|
||||
```
|
||||
Not ported, related to forges capability system which is not used in the port.
|
||||
|
||||
```
|
||||
ea3a16036794357c3a44edffc90fdb652e03881e
|
||||
|
||||
Remove a couple of todos
|
||||
```
|
||||
|
||||
```
|
||||
bb8f4c624bf87169b73fb631d8250cfc38181e15
|
||||
|
||||
Some sanity checks for get{Direction,Orientation}
|
||||
```
|
||||
Use `getCachedState` instead of forge's `getBlockState` and `contains` instead of `has`.
|
||||
|
||||
```
|
||||
05c3c8ad3269c9025757f9261e7f609889fb6bdc
|
||||
|
||||
Generate docs for generic peripherals
|
||||
```
|
||||
Skipped everything except some removed whitespace.
|
||||
|
||||
```
|
||||
85cf2d5ff1b63010de4661301801aa504e5b9015
|
||||
|
||||
Docs for energy and inventory methods
|
||||
```
|
||||
and
|
||||
```
|
||||
5865e9c41a0140b9f1acdd2fb095353c467fbb45
|
||||
|
||||
Not sure what irritates me more
|
||||
```
|
||||
both skipped because the changes where already ported.
|
||||
|
||||
```
|
||||
4ae370b9dbaf1de0ed32a5f32340b1448136c9cc
|
||||
|
||||
Merge pull request #606 from TheWireLord/numpadenter-support
|
||||
```
|
||||
Just lua changes.
|
||||
|
||||
```
|
||||
f5eb6ce03e0d9bbbf77130452afd4b49e758f7bd
|
||||
|
||||
Fix copy-paste error in inventory docs
|
||||
```
|
||||
Skipped because it was already ported.
|
||||
|
||||
```
|
||||
663859d2e5a97edefebf9ac36206903d7dd33a3e
|
||||
Fix double URL decode
|
||||
```
|
||||
|
||||
```
|
||||
abf425dfb5553483cdc51c50a6b7d8b5e44814f4
|
||||
|
||||
Fix overflow in os.epoch
|
||||
```
|
||||
|
||||
```
|
||||
e3a672099c1b5d2c06f9fe4d8ccd024fef0873a2
|
||||
|
||||
Fix JEI integration with turtle/pocket upgrades
|
||||
```
|
||||
Skipped because there seems to be no REI integration.
|
||||
|
||||
```
|
||||
2f0cae0bc1b038ac092bafa7f65a317537203cd8
|
||||
|
||||
Make upgrade recipe requirements a little more lax
|
||||
```
|
||||
[TODO] [JUMT-01] Crafting is still messed up, but this port didn't change the behavior.
|
||||
[TODO] [JUMT-02] Tag comparison code doesn't need to be that verbose, a simple `isEqual` check would suffice.
|
||||
|
||||
```
|
||||
7f9a707f75636d5816f752dc93d7b6b998c61a03
|
||||
|
||||
Bump version to 1.95.0
|
||||
```
|
||||
Changed the name from CC: Tweaked to CC: Restitched in the changelog and whatsnew files. New version is 1.95.0-beta.
|
||||
|
||||
```
|
||||
4af5bcc0b0ff464e7e7428c389d47140580ea7a7
|
||||
|
||||
Fix serveral 1.15 -> 1.16 issues
|
||||
```
|
||||
Skipped, changes where already made.
|
||||
|
||||
```
|
||||
b8d5a89446ac02fc5b38cc5c0b4805de9d11a7d5
|
||||
|
||||
Add explicit @module annotation
|
||||
```
|
||||
Tiny lua change.
|
||||
|
||||
```
|
||||
8b17ec76a8e94251803e6f4ba4e65970c6a70b7f
|
||||
|
||||
Fixed missing argument names in file handle docs (#632)
|
||||
```
|
||||
A java doc change.
|
||||
|
||||
```
|
||||
e4b0a5b3ce035eb23feb4191432fc49af5772c5b
|
||||
|
||||
2020 -> 2021
|
||||
```
|
||||
A huge amount of changes.
|
||||
|
||||
```
|
||||
542b66c79a9b08e080c39c9a73d74ffe71c0106a
|
||||
|
||||
Add back command computer block drops
|
||||
```
|
||||
Didn't port some forge-related changes, but it works.
|
||||
|
||||
```
|
||||
dd6f97622e6c18ce0d8988da6a5bede45c94ca5d
|
||||
|
||||
Prevent reflection errors crashing the game
|
||||
```
|
||||
|
||||
```
|
||||
92be0126df63927d07fc695945f8b98e328f945a
|
||||
|
||||
Fix disk recipes
|
||||
```
|
||||
Dye recipes actually work now.
|
||||
|
||||
```
|
||||
1edb7288b974aec3764b0a820edce7e9eee38e66
|
||||
|
||||
Merge branch 'mc-1.15.x' into mc-1.16.x
|
||||
```
|
||||
New version: 1.95.1.
|
||||
|
||||
```
|
||||
41226371f3b5fd35f48b6d39c2e8e0c277125b21
|
||||
|
||||
Add isReadOnly to fs.attributes (#639)
|
||||
```
|
||||
Also changed some lua test files, but made the changes anyway.
|
||||
|
||||
```
|
||||
b2e54014869fac4b819b01b6c24e550ca113ce8a
|
||||
|
||||
Added Numpad Enter Support in rom lua programs. (#657)
|
||||
```
|
||||
Just lua changes.
|
||||
|
||||
```
|
||||
247c05305d106af430fcdaee41371a152bf7c38c
|
||||
|
||||
Fix problem with RepeatArgumentType
|
||||
```
|
||||
|
||||
```
|
||||
c864576619751077a0d8ac1a18123e14b095ec03
|
||||
|
||||
Fix impostor recipes for disks
|
||||
```
|
||||
[TODO] [JUMT-03] REI still shows white disks, probably because it doesn' show nbt items.
|
||||
|
||||
```
|
||||
c5694ea9661c7a40021ebd280c378bd7bdc56988
|
||||
|
||||
Merge branch 'mc-1.15.x' into mc-1.16.x
|
||||
```
|
||||
Update to 1.16.4.
|
||||
|
||||
```
|
||||
1f84480a80677cfaaf19d319290f5b44635eba47
|
||||
|
||||
Make rightAlt only close menu, never open it. (#672)
|
||||
```
|
||||
Lua changes.
|
||||
|
||||
```
|
||||
1255bd00fd21247a50046020d7d9a396f66bc6bd
|
||||
|
||||
Fix mounts being usable after a disk is ejected
|
||||
```
|
||||
Reverted a lot of code style changes made by Zundrel, so the diffs are huge.
|
||||
|
||||
```
|
||||
b90611b4b4c176ec1c80df002cc4ac36aa0c4dc8
|
||||
|
||||
Preserve registration order of upgrades
|
||||
```
|
||||
Again, a huge diff because of code style changes.
|
||||
|
||||
```
|
||||
8494ba8ce29cd8d7b9105eef497fe3fe3f89d350
|
||||
|
||||
Improve UX when a resource mount cannot be found
|
||||
```
|
@@ -1,55 +0,0 @@
|
||||
import { readFileSync, promises as fs } from "fs";
|
||||
import path from "path";
|
||||
|
||||
import typescript from "@rollup/plugin-typescript";
|
||||
|
||||
const input = "src/web";
|
||||
const requirejs = readFileSync("node_modules/requirejs/require.js");
|
||||
|
||||
export default {
|
||||
input: [`${input}/index.tsx`],
|
||||
output: {
|
||||
file: "build/rollup/index.js",
|
||||
// We bundle requirejs (and config) into the header. It's rather gross
|
||||
// but also works reasonably well.
|
||||
banner: `${requirejs}\nrequire.config({ paths: { copycat: "https://copy-cat.squiddev.cc" } });`,
|
||||
format: "amd",
|
||||
preferConst: true,
|
||||
amd: {
|
||||
define: "require",
|
||||
}
|
||||
},
|
||||
context: "window",
|
||||
external: ["copycat/embed"],
|
||||
|
||||
plugins: [
|
||||
typescript(),
|
||||
|
||||
{
|
||||
name: "cc-tweaked",
|
||||
async options(options) {
|
||||
// Generate .d.ts files for all /mount files. This is the worst way to do it,
|
||||
// but we need to run before the TS pass.
|
||||
const template = "declare const contents : string;\nexport default contents;\n";
|
||||
const files = await fs.readdir(`${input}/mount`);
|
||||
|
||||
await Promise.all(files
|
||||
.filter(x => path.extname(x) !== ".ts")
|
||||
.map(async file => {
|
||||
const path = `${input}/mount/${file}.d.ts`;
|
||||
const contents = await fs.readFile(path, { encoding: "utf-8" }).catch(() => "");
|
||||
if (contents !== template) await fs.writeFile(path, template);
|
||||
})
|
||||
);
|
||||
return options;
|
||||
},
|
||||
async transform(code, file) {
|
||||
// Allow loading files in /mount.
|
||||
const ext = path.extname(file);
|
||||
return ext != '.tsx' && ext != '.ts' && path.dirname(file) === path.resolve(`${input}/mount`)
|
||||
? `export default ${JSON.stringify(code)};\n`
|
||||
: null;
|
||||
},
|
||||
}
|
||||
],
|
||||
};
|
@@ -1 +1,12 @@
|
||||
rootProject.name = "cc-tweaked-${mc_version}"
|
||||
pluginManagement {
|
||||
repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
name = 'Fabric'
|
||||
url = 'https://maven.fabricmc.net/'
|
||||
}
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.name = "cc-restiched"
|
||||
|
@@ -1,49 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"facing=north,state=off": {
|
||||
"model": "computercraft:block/computer_advanced_off"
|
||||
},
|
||||
"facing=south,state=off": {
|
||||
"model": "computercraft:block/computer_advanced_off",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,state=off": {
|
||||
"model": "computercraft:block/computer_advanced_off",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,state=off": {
|
||||
"model": "computercraft:block/computer_advanced_off",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,state=on": {
|
||||
"model": "computercraft:block/computer_advanced_on"
|
||||
},
|
||||
"facing=south,state=on": {
|
||||
"model": "computercraft:block/computer_advanced_on",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,state=on": {
|
||||
"model": "computercraft:block/computer_advanced_on",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,state=on": {
|
||||
"model": "computercraft:block/computer_advanced_on",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,state=blinking": {
|
||||
"model": "computercraft:block/computer_advanced_blinking"
|
||||
},
|
||||
"facing=south,state=blinking": {
|
||||
"model": "computercraft:block/computer_advanced_blinking",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,state=blinking": {
|
||||
"model": "computercraft:block/computer_advanced_blinking",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,state=blinking": {
|
||||
"model": "computercraft:block/computer_advanced_blinking",
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,49 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"facing=north,state=off": {
|
||||
"model": "computercraft:block/computer_command_off"
|
||||
},
|
||||
"facing=south,state=off": {
|
||||
"model": "computercraft:block/computer_command_off",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,state=off": {
|
||||
"model": "computercraft:block/computer_command_off",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,state=off": {
|
||||
"model": "computercraft:block/computer_command_off",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,state=on": {
|
||||
"model": "computercraft:block/computer_command_on"
|
||||
},
|
||||
"facing=south,state=on": {
|
||||
"model": "computercraft:block/computer_command_on",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,state=on": {
|
||||
"model": "computercraft:block/computer_command_on",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,state=on": {
|
||||
"model": "computercraft:block/computer_command_on",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,state=blinking": {
|
||||
"model": "computercraft:block/computer_command_blinking"
|
||||
},
|
||||
"facing=south,state=blinking": {
|
||||
"model": "computercraft:block/computer_command_blinking",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,state=blinking": {
|
||||
"model": "computercraft:block/computer_command_blinking",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,state=blinking": {
|
||||
"model": "computercraft:block/computer_command_blinking",
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,49 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"facing=north,state=off": {
|
||||
"model": "computercraft:block/computer_normal_off"
|
||||
},
|
||||
"facing=south,state=off": {
|
||||
"model": "computercraft:block/computer_normal_off",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,state=off": {
|
||||
"model": "computercraft:block/computer_normal_off",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,state=off": {
|
||||
"model": "computercraft:block/computer_normal_off",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,state=on": {
|
||||
"model": "computercraft:block/computer_normal_on"
|
||||
},
|
||||
"facing=south,state=on": {
|
||||
"model": "computercraft:block/computer_normal_on",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,state=on": {
|
||||
"model": "computercraft:block/computer_normal_on",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,state=on": {
|
||||
"model": "computercraft:block/computer_normal_on",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,state=blinking": {
|
||||
"model": "computercraft:block/computer_normal_blinking"
|
||||
},
|
||||
"facing=south,state=blinking": {
|
||||
"model": "computercraft:block/computer_normal_blinking",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,state=blinking": {
|
||||
"model": "computercraft:block/computer_normal_blinking",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,state=blinking": {
|
||||
"model": "computercraft:block/computer_normal_blinking",
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,852 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"facing=north,orientation=down,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced"
|
||||
},
|
||||
"facing=south,orientation=north,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=none": {
|
||||
"model": "computercraft:block/monitor_advanced",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l"
|
||||
},
|
||||
"facing=south,orientation=north,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=l": {
|
||||
"model": "computercraft:block/monitor_advanced_l",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r"
|
||||
},
|
||||
"facing=south,orientation=north,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=r": {
|
||||
"model": "computercraft:block/monitor_advanced_r",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr"
|
||||
},
|
||||
"facing=south,orientation=north,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lr": {
|
||||
"model": "computercraft:block/monitor_advanced_lr",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u"
|
||||
},
|
||||
"facing=south,orientation=north,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=u": {
|
||||
"model": "computercraft:block/monitor_advanced_u",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d"
|
||||
},
|
||||
"facing=south,orientation=north,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=d": {
|
||||
"model": "computercraft:block/monitor_advanced_d",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud"
|
||||
},
|
||||
"facing=south,orientation=north,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=ud": {
|
||||
"model": "computercraft:block/monitor_advanced_ud",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd"
|
||||
},
|
||||
"facing=south,orientation=north,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=rd": {
|
||||
"model": "computercraft:block/monitor_advanced_rd",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld"
|
||||
},
|
||||
"facing=south,orientation=north,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=ld": {
|
||||
"model": "computercraft:block/monitor_advanced_ld",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru"
|
||||
},
|
||||
"facing=south,orientation=north,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=ru": {
|
||||
"model": "computercraft:block/monitor_advanced_ru",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu"
|
||||
},
|
||||
"facing=south,orientation=north,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lu": {
|
||||
"model": "computercraft:block/monitor_advanced_lu",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd"
|
||||
},
|
||||
"facing=south,orientation=north,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lrd": {
|
||||
"model": "computercraft:block/monitor_advanced_lrd",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud"
|
||||
},
|
||||
"facing=south,orientation=north,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=rud": {
|
||||
"model": "computercraft:block/monitor_advanced_rud",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud"
|
||||
},
|
||||
"facing=south,orientation=north,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lud": {
|
||||
"model": "computercraft:block/monitor_advanced_lud",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru"
|
||||
},
|
||||
"facing=south,orientation=north,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lru": {
|
||||
"model": "computercraft:block/monitor_advanced_lru",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud"
|
||||
},
|
||||
"facing=south,orientation=north,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lrud": {
|
||||
"model": "computercraft:block/monitor_advanced_lrud",
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,852 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"facing=north,orientation=down,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=none": {
|
||||
"model": "computercraft:block/monitor_normal"
|
||||
},
|
||||
"facing=south,orientation=north,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=none": {
|
||||
"model": "computercraft:block/monitor_normal",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l"
|
||||
},
|
||||
"facing=south,orientation=north,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=l": {
|
||||
"model": "computercraft:block/monitor_normal_l",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r"
|
||||
},
|
||||
"facing=south,orientation=north,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=r": {
|
||||
"model": "computercraft:block/monitor_normal_r",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr"
|
||||
},
|
||||
"facing=south,orientation=north,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lr": {
|
||||
"model": "computercraft:block/monitor_normal_lr",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u"
|
||||
},
|
||||
"facing=south,orientation=north,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=u": {
|
||||
"model": "computercraft:block/monitor_normal_u",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d"
|
||||
},
|
||||
"facing=south,orientation=north,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=d": {
|
||||
"model": "computercraft:block/monitor_normal_d",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud"
|
||||
},
|
||||
"facing=south,orientation=north,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=ud": {
|
||||
"model": "computercraft:block/monitor_normal_ud",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd"
|
||||
},
|
||||
"facing=south,orientation=north,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=rd": {
|
||||
"model": "computercraft:block/monitor_normal_rd",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld"
|
||||
},
|
||||
"facing=south,orientation=north,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=ld": {
|
||||
"model": "computercraft:block/monitor_normal_ld",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru"
|
||||
},
|
||||
"facing=south,orientation=north,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=ru": {
|
||||
"model": "computercraft:block/monitor_normal_ru",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu"
|
||||
},
|
||||
"facing=south,orientation=north,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lu": {
|
||||
"model": "computercraft:block/monitor_normal_lu",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd"
|
||||
},
|
||||
"facing=south,orientation=north,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lrd": {
|
||||
"model": "computercraft:block/monitor_normal_lrd",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud"
|
||||
},
|
||||
"facing=south,orientation=north,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=rud": {
|
||||
"model": "computercraft:block/monitor_normal_rud",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud"
|
||||
},
|
||||
"facing=south,orientation=north,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lud": {
|
||||
"model": "computercraft:block/monitor_normal_lud",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru"
|
||||
},
|
||||
"facing=south,orientation=north,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lru": {
|
||||
"model": "computercraft:block/monitor_normal_lru",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=down,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south,orientation=down,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=down,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=down,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=up,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"x": 270
|
||||
},
|
||||
"facing=south,orientation=up,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"x": 270,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=up,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"x": 270,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=up,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"x": 270,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,orientation=north,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud"
|
||||
},
|
||||
"facing=south,orientation=north,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,orientation=north,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,orientation=north,state=lrud": {
|
||||
"model": "computercraft:block/monitor_normal_lrud",
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"parent": "block/orientable",
|
||||
"textures": {
|
||||
"top": "computercraft:block/computer_advanced_top",
|
||||
"side": "computercraft:block/computer_advanced_side",
|
||||
"front": "computercraft:block/computer_advanced_front_blink"
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"parent": "block/orientable",
|
||||
"textures": {
|
||||
"top": "computercraft:block/computer_advanced_top",
|
||||
"side": "computercraft:block/computer_advanced_side",
|
||||
"front": "computercraft:block/computer_advanced_front"
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"parent": "block/orientable",
|
||||
"textures": {
|
||||
"top": "computercraft:block/computer_advanced_top",
|
||||
"side": "computercraft:block/computer_advanced_side",
|
||||
"front": "computercraft:block/computer_advanced_front_on"
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"parent": "block/orientable",
|
||||
"textures": {
|
||||
"top": "computercraft:block/computer_command_top",
|
||||
"side": "computercraft:block/computer_command_side",
|
||||
"front": "computercraft:block/computer_command_front_blink"
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"parent": "block/orientable",
|
||||
"textures": {
|
||||
"top": "computercraft:block/computer_command_top",
|
||||
"side": "computercraft:block/computer_command_side",
|
||||
"front": "computercraft:block/computer_command_front"
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"parent": "block/orientable",
|
||||
"textures": {
|
||||
"top": "computercraft:block/computer_command_top",
|
||||
"side": "computercraft:block/computer_command_side",
|
||||
"front": "computercraft:block/computer_command_front_on"
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"parent": "block/orientable",
|
||||
"textures": {
|
||||
"top": "computercraft:block/computer_normal_top",
|
||||
"side": "computercraft:block/computer_normal_side",
|
||||
"front": "computercraft:block/computer_normal_front_blink"
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"parent": "block/orientable",
|
||||
"textures": {
|
||||
"top": "computercraft:block/computer_normal_top",
|
||||
"side": "computercraft:block/computer_normal_side",
|
||||
"front": "computercraft:block/computer_normal_front"
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"parent": "block/orientable",
|
||||
"textures": {
|
||||
"top": "computercraft:block/computer_normal_top",
|
||||
"side": "computercraft:block/computer_normal_side",
|
||||
"front": "computercraft:block/computer_normal_front_on"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_16",
|
||||
"side": "computercraft:block/monitor_advanced_4",
|
||||
"top": "computercraft:block/monitor_advanced_0",
|
||||
"back": "computercraft:block/monitor_advanced_32"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_20",
|
||||
"side": "computercraft:block/monitor_advanced_7",
|
||||
"top": "computercraft:block/monitor_advanced_0",
|
||||
"back": "computercraft:block/monitor_advanced_36"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_19",
|
||||
"side": "computercraft:block/monitor_advanced_4",
|
||||
"top": "computercraft:block/monitor_advanced_1",
|
||||
"back": "computercraft:block/monitor_advanced_33"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_31",
|
||||
"side": "computercraft:block/monitor_advanced_7",
|
||||
"top": "computercraft:block/monitor_advanced_1",
|
||||
"back": "computercraft:block/monitor_advanced_45"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_18",
|
||||
"side": "computercraft:block/monitor_advanced_4",
|
||||
"top": "computercraft:block/monitor_advanced_2",
|
||||
"back": "computercraft:block/monitor_advanced_34"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_30",
|
||||
"side": "computercraft:block/monitor_advanced_7",
|
||||
"top": "computercraft:block/monitor_advanced_2",
|
||||
"back": "computercraft:block/monitor_advanced_46"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_24",
|
||||
"side": "computercraft:block/monitor_advanced_5",
|
||||
"top": "computercraft:block/monitor_advanced_2",
|
||||
"back": "computercraft:block/monitor_advanced_40"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_27",
|
||||
"side": "computercraft:block/monitor_advanced_6",
|
||||
"top": "computercraft:block/monitor_advanced_2",
|
||||
"back": "computercraft:block/monitor_advanced_43"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_25",
|
||||
"side": "computercraft:block/monitor_advanced_5",
|
||||
"top": "computercraft:block/monitor_advanced_1",
|
||||
"back": "computercraft:block/monitor_advanced_39"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_28",
|
||||
"side": "computercraft:block/monitor_advanced_6",
|
||||
"top": "computercraft:block/monitor_advanced_1",
|
||||
"back": "computercraft:block/monitor_advanced_42"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_17",
|
||||
"side": "computercraft:block/monitor_advanced_4",
|
||||
"top": "computercraft:block/monitor_advanced_3",
|
||||
"back": "computercraft:block/monitor_advanced_35"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_29",
|
||||
"side": "computercraft:block/monitor_advanced_7",
|
||||
"top": "computercraft:block/monitor_advanced_3",
|
||||
"back": "computercraft:block/monitor_advanced_47"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_23",
|
||||
"side": "computercraft:block/monitor_advanced_5",
|
||||
"top": "computercraft:block/monitor_advanced_3",
|
||||
"back": "computercraft:block/monitor_advanced_41"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_26",
|
||||
"side": "computercraft:block/monitor_advanced_6",
|
||||
"top": "computercraft:block/monitor_advanced_3",
|
||||
"back": "computercraft:block/monitor_advanced_44"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_22",
|
||||
"side": "computercraft:block/monitor_advanced_5",
|
||||
"top": "computercraft:block/monitor_advanced_0",
|
||||
"back": "computercraft:block/monitor_advanced_38"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_advanced_21",
|
||||
"side": "computercraft:block/monitor_advanced_6",
|
||||
"top": "computercraft:block/monitor_advanced_0",
|
||||
"back": "computercraft:block/monitor_advanced_37"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_16",
|
||||
"side": "computercraft:block/monitor_normal_4",
|
||||
"top": "computercraft:block/monitor_normal_0",
|
||||
"back": "computercraft:block/monitor_normal_32"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_20",
|
||||
"side": "computercraft:block/monitor_normal_7",
|
||||
"top": "computercraft:block/monitor_normal_0",
|
||||
"back": "computercraft:block/monitor_normal_36"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_19",
|
||||
"side": "computercraft:block/monitor_normal_4",
|
||||
"top": "computercraft:block/monitor_normal_1",
|
||||
"back": "computercraft:block/monitor_normal_33"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_31",
|
||||
"side": "computercraft:block/monitor_normal_7",
|
||||
"top": "computercraft:block/monitor_normal_1",
|
||||
"back": "computercraft:block/monitor_normal_45"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_18",
|
||||
"side": "computercraft:block/monitor_normal_4",
|
||||
"top": "computercraft:block/monitor_normal_2",
|
||||
"back": "computercraft:block/monitor_normal_34"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_30",
|
||||
"side": "computercraft:block/monitor_normal_7",
|
||||
"top": "computercraft:block/monitor_normal_2",
|
||||
"back": "computercraft:block/monitor_normal_46"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_24",
|
||||
"side": "computercraft:block/monitor_normal_5",
|
||||
"top": "computercraft:block/monitor_normal_2",
|
||||
"back": "computercraft:block/monitor_normal_40"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_27",
|
||||
"side": "computercraft:block/monitor_normal_6",
|
||||
"top": "computercraft:block/monitor_normal_2",
|
||||
"back": "computercraft:block/monitor_normal_43"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_25",
|
||||
"side": "computercraft:block/monitor_normal_5",
|
||||
"top": "computercraft:block/monitor_normal_1",
|
||||
"back": "computercraft:block/monitor_normal_39"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_28",
|
||||
"side": "computercraft:block/monitor_normal_6",
|
||||
"top": "computercraft:block/monitor_normal_1",
|
||||
"back": "computercraft:block/monitor_normal_42"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_17",
|
||||
"side": "computercraft:block/monitor_normal_4",
|
||||
"top": "computercraft:block/monitor_normal_3",
|
||||
"back": "computercraft:block/monitor_normal_35"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_29",
|
||||
"side": "computercraft:block/monitor_normal_7",
|
||||
"top": "computercraft:block/monitor_normal_3",
|
||||
"back": "computercraft:block/monitor_normal_47"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_23",
|
||||
"side": "computercraft:block/monitor_normal_5",
|
||||
"top": "computercraft:block/monitor_normal_3",
|
||||
"back": "computercraft:block/monitor_normal_41"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_26",
|
||||
"side": "computercraft:block/monitor_normal_6",
|
||||
"top": "computercraft:block/monitor_normal_3",
|
||||
"back": "computercraft:block/monitor_normal_44"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_22",
|
||||
"side": "computercraft:block/monitor_normal_5",
|
||||
"top": "computercraft:block/monitor_normal_0",
|
||||
"back": "computercraft:block/monitor_normal_38"
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"parent": "computercraft:block/monitor_base",
|
||||
"textures": {
|
||||
"front": "computercraft:block/monitor_normal_21",
|
||||
"side": "computercraft:block/monitor_normal_6",
|
||||
"top": "computercraft:block/monitor_normal_0",
|
||||
"back": "computercraft:block/monitor_normal_37"
|
||||
}
|
||||
}
|
@@ -1,22 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"###",
|
||||
"#R#",
|
||||
"#D#"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"tag": "forge:stone"
|
||||
},
|
||||
"R": {
|
||||
"tag": "forge:dusts/redstone"
|
||||
},
|
||||
"D": {
|
||||
"tag": "forge:dyes"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "computercraft:printer"
|
||||
}
|
||||
}
|
@@ -3,120 +3,137 @@
|
||||
* Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
|
||||
* Send enquiries to dratcliffe@gmail.com
|
||||
*/
|
||||
|
||||
package dan200.computercraft;
|
||||
|
||||
import dan200.computercraft.api.turtle.event.TurtleAction;
|
||||
import dan200.computercraft.core.apis.http.options.Action;
|
||||
import dan200.computercraft.core.apis.http.options.AddressRule;
|
||||
import dan200.computercraft.core.asm.GenericSource;
|
||||
import dan200.computercraft.shared.Config;
|
||||
import dan200.computercraft.shared.Registry;
|
||||
import dan200.computercraft.shared.computer.core.ClientComputerRegistry;
|
||||
import dan200.computercraft.shared.computer.core.ServerComputerRegistry;
|
||||
import dan200.computercraft.shared.peripheral.monitor.MonitorRenderer;
|
||||
import dan200.computercraft.shared.pocket.peripherals.PocketModem;
|
||||
import dan200.computercraft.shared.pocket.peripherals.PocketSpeaker;
|
||||
import dan200.computercraft.shared.turtle.upgrades.*;
|
||||
import dan200.computercraft.shared.util.ServiceUtil;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import static dan200.computercraft.shared.ComputerCraftRegistry.ModBlocks;
|
||||
import static dan200.computercraft.shared.ComputerCraftRegistry.init;
|
||||
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Mod( ComputerCraft.MOD_ID )
|
||||
public final class ComputerCraft
|
||||
{
|
||||
public static final String MOD_ID = "computercraft";
|
||||
|
||||
import dan200.computercraft.api.turtle.event.TurtleAction;
|
||||
import dan200.computercraft.core.apis.http.options.Action;
|
||||
import dan200.computercraft.core.apis.http.options.AddressRule;
|
||||
import dan200.computercraft.core.apis.http.websocket.Websocket;
|
||||
import dan200.computercraft.shared.common.ColourableRecipe;
|
||||
import dan200.computercraft.shared.computer.core.ClientComputerRegistry;
|
||||
import dan200.computercraft.shared.computer.core.ServerComputerRegistry;
|
||||
import dan200.computercraft.shared.computer.recipe.ComputerUpgradeRecipe;
|
||||
import dan200.computercraft.shared.data.BlockNamedEntityLootCondition;
|
||||
import dan200.computercraft.shared.data.HasComputerIdLootCondition;
|
||||
import dan200.computercraft.shared.data.PlayerCreativeLootCondition;
|
||||
import dan200.computercraft.shared.media.recipes.DiskRecipe;
|
||||
import dan200.computercraft.shared.media.recipes.PrintoutRecipe;
|
||||
import dan200.computercraft.shared.peripheral.monitor.MonitorRenderer;
|
||||
import dan200.computercraft.shared.pocket.recipes.PocketComputerUpgradeRecipe;
|
||||
import dan200.computercraft.shared.proxy.ComputerCraftProxyCommon;
|
||||
import dan200.computercraft.shared.turtle.recipes.TurtleRecipe;
|
||||
import dan200.computercraft.shared.turtle.recipes.TurtleUpgradeRecipe;
|
||||
import dan200.computercraft.shared.util.Config;
|
||||
import dan200.computercraft.shared.util.ImpostorRecipe;
|
||||
import dan200.computercraft.shared.util.ImpostorShapelessRecipe;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
|
||||
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
|
||||
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
|
||||
public final class ComputerCraft implements ModInitializer {
|
||||
public static final String MOD_ID = "computercraft";
|
||||
// Configuration options
|
||||
public static final int terminalWidth_computer = 51;
|
||||
public static final int terminalHeight_computer = 19;
|
||||
public static final int terminalWidth_turtle = 39;
|
||||
public static final int terminalHeight_turtle = 13;
|
||||
public static final int terminalWidth_pocketComputer = 26;
|
||||
public static final int terminalHeight_pocketComputer = 20;
|
||||
// Registries
|
||||
public static final ClientComputerRegistry clientComputerRegistry = new ClientComputerRegistry();
|
||||
public static final ServerComputerRegistry serverComputerRegistry = new ServerComputerRegistry();
|
||||
// Logging
|
||||
public static final Logger log = LogManager.getLogger(MOD_ID);
|
||||
public static ItemGroup MAIN_GROUP = FabricItemGroupBuilder.build(new Identifier(MOD_ID, "main"), () -> new ItemStack(ModBlocks.COMPUTER_NORMAL));
|
||||
public static boolean commandRequireCreative = false;
|
||||
public static MonitorRenderer monitorRenderer = MonitorRenderer.BEST;
|
||||
public static int computerSpaceLimit = 1000 * 1000;
|
||||
public static int floppySpaceLimit = 125 * 1000;
|
||||
public static int maximumFilesOpen = 128;
|
||||
public static boolean disableLua51Features = false;
|
||||
public static String defaultComputerSettings = "";
|
||||
public static boolean debugEnable = true;
|
||||
public static boolean logComputerErrors = true;
|
||||
public static boolean commandRequireCreative = true;
|
||||
|
||||
public static int computerThreads = 1;
|
||||
public static long maxMainGlobalTime = TimeUnit.MILLISECONDS.toNanos( 10 );
|
||||
public static long maxMainComputerTime = TimeUnit.MILLISECONDS.toNanos( 5 );
|
||||
|
||||
public static boolean httpEnabled = true;
|
||||
public static boolean httpWebsocketEnabled = true;
|
||||
public static List<AddressRule> httpRules = Collections.unmodifiableList( Arrays.asList(
|
||||
AddressRule.parse( "$private", null, Action.DENY.toPartial() ),
|
||||
AddressRule.parse( "*", null, Action.ALLOW.toPartial() )
|
||||
) );
|
||||
|
||||
public static boolean disable_lua51_features = false;
|
||||
public static String default_computer_settings = "";
|
||||
public static boolean debug_enable = true;
|
||||
public static boolean logPeripheralErrors = false;
|
||||
public static int computer_threads = 1;
|
||||
public static long maxMainGlobalTime = TimeUnit.MILLISECONDS.toNanos(10);
|
||||
public static long maxMainComputerTime = TimeUnit.MILLISECONDS.toNanos(5);
|
||||
public static boolean http_enable = true;
|
||||
public static boolean http_websocket_enable = true;
|
||||
public static int httpTimeout = 30000;
|
||||
public static int httpMaxRequests = 16;
|
||||
public static long httpMaxDownload = 16 * 1024 * 1024;
|
||||
public static long httpMaxUpload = 4 * 1024 * 1024;
|
||||
public static int httpMaxWebsockets = 4;
|
||||
|
||||
public static int httpMaxWebsocketMessage = Websocket.MAX_MESSAGE_SIZE;
|
||||
public static boolean enableCommandBlock = false;
|
||||
public static int modemRange = 64;
|
||||
public static int modemHighAltitudeRange = 384;
|
||||
public static int modemRangeDuringStorm = 64;
|
||||
public static int modemHighAltitudeRangeDuringStorm = 384;
|
||||
public static int modem_range = 64;
|
||||
public static int modem_highAltitudeRange = 384;
|
||||
public static int modem_rangeDuringStorm = 64;
|
||||
public static int modem_highAltitudeRangeDuringStorm = 384;
|
||||
public static int maxNotesPerTick = 8;
|
||||
public static MonitorRenderer monitorRenderer = MonitorRenderer.BEST;
|
||||
public static double monitorDistanceSq = 4096;
|
||||
public static long monitorBandwidth = 1_000_000;
|
||||
|
||||
public static boolean turtlesNeedFuel = true;
|
||||
public static int turtleFuelLimit = 20000;
|
||||
public static int advancedTurtleFuelLimit = 100000;
|
||||
public static boolean turtlesObeyBlockProtection = true;
|
||||
public static boolean turtlesCanPush = true;
|
||||
public static EnumSet<TurtleAction> turtleDisabledActions = EnumSet.noneOf( TurtleAction.class );
|
||||
|
||||
public static int computerTermWidth = 51;
|
||||
public static int computerTermHeight = 19;
|
||||
|
||||
public static final int turtleTermWidth = 39;
|
||||
public static final int turtleTermHeight = 13;
|
||||
|
||||
public static int pocketTermWidth = 26;
|
||||
public static int pocketTermHeight = 20;
|
||||
|
||||
public static EnumSet<TurtleAction> turtleDisabledActions = EnumSet.noneOf(TurtleAction.class);
|
||||
public static int monitorWidth = 8;
|
||||
public static int monitorHeight = 6;
|
||||
public static double monitorDistanceSq = 4096;
|
||||
|
||||
public static final class TurtleUpgrades
|
||||
{
|
||||
public static TurtleModem wirelessModemNormal;
|
||||
public static TurtleModem wirelessModemAdvanced;
|
||||
public static TurtleSpeaker speaker;
|
||||
public static List<AddressRule> httpRules = Collections.unmodifiableList( Arrays.asList(
|
||||
AddressRule.parse( "$private", null, Action.DENY.toPartial() ),
|
||||
AddressRule.parse( "*", null, Action.ALLOW.toPartial() )
|
||||
) );
|
||||
|
||||
public static TurtleCraftingTable craftingTable;
|
||||
public static TurtleSword diamondSword;
|
||||
public static TurtleShovel diamondShovel;
|
||||
public static TurtleTool diamondPickaxe;
|
||||
public static TurtleAxe diamondAxe;
|
||||
public static TurtleHoe diamondHoe;
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
Config.load(Paths.get(FabricLoader.getInstance()
|
||||
.getConfigDir()
|
||||
.toFile()
|
||||
.getPath(), MOD_ID + ".json5"));
|
||||
ComputerCraftProxyCommon.init();
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(ComputerCraft.MOD_ID, "colour"), ColourableRecipe.SERIALIZER);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(ComputerCraft.MOD_ID, "computer_upgrade"), ComputerUpgradeRecipe.SERIALIZER);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER,
|
||||
new Identifier(ComputerCraft.MOD_ID, "pocket_computer_upgrade"),
|
||||
PocketComputerUpgradeRecipe.SERIALIZER);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(ComputerCraft.MOD_ID, "disk"), DiskRecipe.SERIALIZER);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(ComputerCraft.MOD_ID, "printout"), PrintoutRecipe.SERIALIZER);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(ComputerCraft.MOD_ID, "turtle"), TurtleRecipe.SERIALIZER);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(ComputerCraft.MOD_ID, "turtle_upgrade"), TurtleUpgradeRecipe.SERIALIZER);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(ComputerCraft.MOD_ID, "impostor_shaped"), ImpostorRecipe.SERIALIZER);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, new Identifier(ComputerCraft.MOD_ID, "impostor_shapeless"), ImpostorShapelessRecipe.SERIALIZER);
|
||||
Registry.register(Registry.LOOT_CONDITION_TYPE, new Identifier(ComputerCraft.MOD_ID, "block_named"), BlockNamedEntityLootCondition.TYPE);
|
||||
Registry.register(Registry.LOOT_CONDITION_TYPE, new Identifier(ComputerCraft.MOD_ID, "player_creative"), PlayerCreativeLootCondition.TYPE);
|
||||
Registry.register(Registry.LOOT_CONDITION_TYPE, new Identifier(ComputerCraft.MOD_ID, "has_id"), HasComputerIdLootCondition.TYPE);
|
||||
init();
|
||||
FabricLoader.getInstance().getModContainer(MOD_ID).ifPresent(modContainer -> {
|
||||
ResourceManagerHelper.registerBuiltinResourcePack(new Identifier(MOD_ID, "classic"), modContainer, ResourcePackActivationType.NORMAL);
|
||||
ResourceManagerHelper.registerBuiltinResourcePack(new Identifier(MOD_ID, "overhaul"), modContainer, ResourcePackActivationType.NORMAL);
|
||||
});
|
||||
}
|
||||
|
||||
public static final class PocketUpgrades
|
||||
{
|
||||
public static PocketModem wirelessModemNormal;
|
||||
public static PocketModem wirelessModemAdvanced;
|
||||
public static PocketSpeaker speaker;
|
||||
}
|
||||
|
||||
// Registries
|
||||
public static final ClientComputerRegistry clientComputerRegistry = new ClientComputerRegistry();
|
||||
public static final ServerComputerRegistry serverComputerRegistry = new ServerComputerRegistry();
|
||||
|
||||
// Logging
|
||||
public static final Logger log = LogManager.getLogger( MOD_ID );
|
||||
|
||||
public ComputerCraft()
|
||||
{
|
||||
Config.setup();
|
||||
Registry.setup();
|
||||
GenericSource.setup( () -> ServiceUtil.loadServicesForge( GenericSource.class ) );
|
||||
}
|
||||
}
|
||||
|
@@ -3,11 +3,20 @@
|
||||
* Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
|
||||
* Send enquiries to dratcliffe@gmail.com
|
||||
*/
|
||||
|
||||
package dan200.computercraft;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import dan200.computercraft.api.ComputerCraftAPI.IComputerCraftAPI;
|
||||
import dan200.computercraft.api.filesystem.IMount;
|
||||
import dan200.computercraft.api.filesystem.IWritableMount;
|
||||
import dan200.computercraft.api.lua.GenericSource;
|
||||
import dan200.computercraft.api.lua.ILuaAPIFactory;
|
||||
import dan200.computercraft.api.media.IMediaProvider;
|
||||
import dan200.computercraft.api.network.IPacketNetwork;
|
||||
@@ -18,151 +27,156 @@ import dan200.computercraft.api.pocket.IPocketUpgrade;
|
||||
import dan200.computercraft.api.redstone.IBundledRedstoneProvider;
|
||||
import dan200.computercraft.api.turtle.ITurtleUpgrade;
|
||||
import dan200.computercraft.core.apis.ApiFactories;
|
||||
import dan200.computercraft.core.asm.GenericMethod;
|
||||
import dan200.computercraft.core.filesystem.FileMount;
|
||||
import dan200.computercraft.core.filesystem.ResourceMount;
|
||||
import dan200.computercraft.shared.*;
|
||||
import dan200.computercraft.fabric.mixin.MinecraftServerAccess;
|
||||
import dan200.computercraft.shared.BundledRedstone;
|
||||
import dan200.computercraft.shared.MediaProviders;
|
||||
import dan200.computercraft.shared.Peripherals;
|
||||
import dan200.computercraft.shared.PocketUpgrades;
|
||||
import dan200.computercraft.shared.TurtleUpgrades;
|
||||
import dan200.computercraft.shared.peripheral.modem.wired.TileCable;
|
||||
import dan200.computercraft.shared.peripheral.modem.wired.TileWiredModemFull;
|
||||
import dan200.computercraft.shared.peripheral.modem.wireless.WirelessNetwork;
|
||||
import dan200.computercraft.shared.util.IDAssigner;
|
||||
import dan200.computercraft.shared.wired.WiredNode;
|
||||
import net.minecraft.resources.IReloadableResourceManager;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import me.shedaniel.cloth.api.utils.v1.GameInstanceUtils;
|
||||
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.resource.ReloadableResourceManager;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.world.BlockView;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.fml.server.ServerLifecycleHooks;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
|
||||
import static dan200.computercraft.shared.Capabilities.CAPABILITY_WIRED_ELEMENT;
|
||||
|
||||
public final class ComputerCraftAPIImpl implements IComputerCraftAPI
|
||||
{
|
||||
public final class ComputerCraftAPIImpl implements IComputerCraftAPI {
|
||||
public static final ComputerCraftAPIImpl INSTANCE = new ComputerCraftAPIImpl();
|
||||
|
||||
private String version;
|
||||
|
||||
private ComputerCraftAPIImpl()
|
||||
{
|
||||
private ComputerCraftAPIImpl() {
|
||||
}
|
||||
|
||||
public static InputStream getResourceFile( String domain, String subPath )
|
||||
{
|
||||
IReloadableResourceManager manager = (IReloadableResourceManager) ServerLifecycleHooks.getCurrentServer().getDataPackRegistries().getResourceManager();
|
||||
try
|
||||
{
|
||||
return manager.getResource( new ResourceLocation( domain, subPath ) ).getInputStream();
|
||||
}
|
||||
catch( IOException ignored )
|
||||
{
|
||||
return null;
|
||||
public static InputStream getResourceFile(String domain, String subPath) {
|
||||
MinecraftServer server = GameInstanceUtils.getServer();
|
||||
if (server != null) {
|
||||
ReloadableResourceManager manager = (ReloadableResourceManager) ((MinecraftServerAccess)server).getServerResourceManager().getResourceManager();
|
||||
try {
|
||||
return manager.getResource(new Identifier(domain, subPath))
|
||||
.getInputStream();
|
||||
} catch (IOException ignored) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public String getInstalledVersion()
|
||||
{
|
||||
if( version != null ) return version;
|
||||
return version = ModList.get().getModContainerById( ComputerCraft.MOD_ID )
|
||||
.map( x -> x.getModInfo().getVersion().toString() )
|
||||
.orElse( "unknown" );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int createUniqueNumberedSaveDir( @Nonnull World world, @Nonnull String parentSubPath )
|
||||
{
|
||||
return IDAssigner.getNextId( parentSubPath );
|
||||
}
|
||||
|
||||
@Override
|
||||
public IWritableMount createSaveDirMount( @Nonnull World world, @Nonnull String subPath, long capacity )
|
||||
{
|
||||
try
|
||||
{
|
||||
return new FileMount( new File( IDAssigner.getDir(), subPath ), capacity );
|
||||
public String getInstalledVersion() {
|
||||
if (this.version != null) {
|
||||
return this.version;
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
return this.version = FabricLoader.getInstance()
|
||||
.getModContainer(ComputerCraft.MOD_ID)
|
||||
.map(x -> x.getMetadata()
|
||||
.getVersion()
|
||||
.toString())
|
||||
.orElse("unknown");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int createUniqueNumberedSaveDir(@Nonnull World world, @Nonnull String parentSubPath) {
|
||||
return IDAssigner.getNextId(parentSubPath);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IWritableMount createSaveDirMount(@Nonnull World world, @Nonnull String subPath, long capacity) {
|
||||
try {
|
||||
return new FileMount(new File(IDAssigner.getDir(), subPath), capacity);
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMount createResourceMount( @Nonnull String domain, @Nonnull String subPath )
|
||||
{
|
||||
IReloadableResourceManager manager = (IReloadableResourceManager) ServerLifecycleHooks.getCurrentServer().getDataPackRegistries().getResourceManager();
|
||||
ResourceMount mount = ResourceMount.get( domain, subPath, manager );
|
||||
return mount.exists( "" ) ? mount : null;
|
||||
public IMount createResourceMount(@Nonnull String domain, @Nonnull String subPath) {
|
||||
MinecraftServer server = GameInstanceUtils.getServer();
|
||||
if (server != null) {
|
||||
ReloadableResourceManager manager = (ReloadableResourceManager) ((MinecraftServerAccess)server).getServerResourceManager().getResourceManager();
|
||||
ResourceMount mount = ResourceMount.get(domain, subPath, manager);
|
||||
return mount.exists("") ? mount : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerPeripheralProvider( @Nonnull IPeripheralProvider provider )
|
||||
{
|
||||
Peripherals.register( provider );
|
||||
public void registerPeripheralProvider(@Nonnull IPeripheralProvider provider) {
|
||||
Peripherals.register(provider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerTurtleUpgrade( @Nonnull ITurtleUpgrade upgrade )
|
||||
{
|
||||
TurtleUpgrades.register( upgrade );
|
||||
public void registerTurtleUpgrade(@Nonnull ITurtleUpgrade upgrade) {
|
||||
TurtleUpgrades.register(upgrade);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerBundledRedstoneProvider( @Nonnull IBundledRedstoneProvider provider )
|
||||
{
|
||||
BundledRedstone.register( provider );
|
||||
public void registerBundledRedstoneProvider(@Nonnull IBundledRedstoneProvider provider) {
|
||||
BundledRedstone.register(provider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBundledRedstoneOutput( @Nonnull World world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
{
|
||||
return BundledRedstone.getDefaultOutput( world, pos, side );
|
||||
public int getBundledRedstoneOutput(@Nonnull World world, @Nonnull BlockPos pos, @Nonnull Direction side) {
|
||||
return BundledRedstone.getDefaultOutput(world, pos, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerMediaProvider( @Nonnull IMediaProvider provider )
|
||||
{
|
||||
MediaProviders.register( provider );
|
||||
public void registerMediaProvider(@Nonnull IMediaProvider provider) {
|
||||
MediaProviders.register(provider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerPocketUpgrade( @Nonnull IPocketUpgrade upgrade )
|
||||
public void registerPocketUpgrade(@Nonnull IPocketUpgrade upgrade) {
|
||||
PocketUpgrades.register(upgrade);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerGenericSource( @Nonnull GenericSource source )
|
||||
{
|
||||
PocketUpgrades.register( upgrade );
|
||||
GenericMethod.register( source );
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public IPacketNetwork getWirelessNetwork()
|
||||
{
|
||||
public IPacketNetwork getWirelessNetwork() {
|
||||
return WirelessNetwork.getUniversal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerAPIFactory( @Nonnull ILuaAPIFactory factory )
|
||||
{
|
||||
ApiFactories.register( factory );
|
||||
public void registerAPIFactory(@Nonnull ILuaAPIFactory factory) {
|
||||
ApiFactories.register(factory);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public IWiredNode createWiredNodeForElement( @Nonnull IWiredElement element )
|
||||
{
|
||||
return new WiredNode( element );
|
||||
public IWiredNode createWiredNodeForElement(@Nonnull IWiredElement element) {
|
||||
return new WiredNode(element);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Nullable
|
||||
@Override
|
||||
public LazyOptional<IWiredElement> getWiredElementAt( @Nonnull IBlockReader world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
{
|
||||
TileEntity tile = world.getBlockEntity( pos );
|
||||
return tile == null ? LazyOptional.empty() : tile.getCapability( CAPABILITY_WIRED_ELEMENT, side );
|
||||
public IWiredElement getWiredElementAt(@Nonnull BlockView world, @Nonnull BlockPos pos, @Nonnull Direction side) {
|
||||
BlockEntity tile = world.getBlockEntity(pos);
|
||||
if (tile instanceof TileCable) {
|
||||
return ((TileCable) tile).getElement(side);
|
||||
} else if (tile instanceof TileWiredModemFull) {
|
||||
return ((TileWiredModemFull) tile).getElement();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@@ -3,10 +3,15 @@
|
||||
* Copyright Daniel Ratcliffe, 2011-2021. 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.
|
||||
*/
|
||||
|
||||
package dan200.computercraft.api;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import dan200.computercraft.api.filesystem.IMount;
|
||||
import dan200.computercraft.api.filesystem.IWritableMount;
|
||||
import dan200.computercraft.api.lua.GenericSource;
|
||||
import dan200.computercraft.api.lua.ILuaAPIFactory;
|
||||
import dan200.computercraft.api.media.IMedia;
|
||||
import dan200.computercraft.api.media.IMediaProvider;
|
||||
@@ -19,34 +24,44 @@ import dan200.computercraft.api.peripheral.IPeripheralProvider;
|
||||
import dan200.computercraft.api.pocket.IPocketUpgrade;
|
||||
import dan200.computercraft.api.redstone.IBundledRedstoneProvider;
|
||||
import dan200.computercraft.api.turtle.ITurtleUpgrade;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.world.BlockView;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
* The static entry point to the ComputerCraft API.
|
||||
*
|
||||
* Members in this class must be called after mod_ComputerCraft has been initialised, but may be called before it is
|
||||
* fully loaded.
|
||||
* Members in this class must be called after mod_ComputerCraft has been initialised, but may be called before it is fully loaded.
|
||||
*/
|
||||
public final class ComputerCraftAPI
|
||||
{
|
||||
public final class ComputerCraftAPI {
|
||||
private static IComputerCraftAPI instance;
|
||||
|
||||
@Nonnull
|
||||
public static String getInstalledVersion()
|
||||
{
|
||||
@Deprecated
|
||||
public static String getAPIVersion() {
|
||||
return getInstalledVersion();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public static String getInstalledVersion() {
|
||||
return getInstance().getInstalledVersion();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Deprecated
|
||||
public static String getAPIVersion()
|
||||
{
|
||||
return getInstalledVersion();
|
||||
private static IComputerCraftAPI getInstance() {
|
||||
if (instance != null) {
|
||||
return instance;
|
||||
}
|
||||
|
||||
try {
|
||||
return instance = (IComputerCraftAPI) Class.forName("dan200.computercraft.ComputerCraftAPIImpl")
|
||||
.getField("INSTANCE")
|
||||
.get(null);
|
||||
} catch (ReflectiveOperationException e) {
|
||||
throw new IllegalStateException("Cannot find ComputerCraft API", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -54,31 +69,29 @@ public final class ComputerCraftAPI
|
||||
*
|
||||
* Use in conjunction with createSaveDirMount() to create a unique place for your peripherals or media items to store files.
|
||||
*
|
||||
* @param world The world for which the save dir should be created. This should be the server side world object.
|
||||
* @param world The world for which the save dir should be created. This should be the server side world object.
|
||||
* @param parentSubPath The folder path within the save directory where the new directory should be created. eg: "computercraft/disk"
|
||||
* @return The numerical value of the name of the new folder, or -1 if the folder could not be created for some reason.
|
||||
*
|
||||
* eg: if createUniqueNumberedSaveDir( world, "computer/disk" ) was called returns 42, then "computer/disk/42" is now
|
||||
* available for writing.
|
||||
* eg: if createUniqueNumberedSaveDir( world, "computer/disk" ) was called returns 42, then "computer/disk/42" is now available for writing.
|
||||
* @see #createSaveDirMount(World, String, long)
|
||||
*/
|
||||
public static int createUniqueNumberedSaveDir( @Nonnull World world, @Nonnull String parentSubPath )
|
||||
{
|
||||
return getInstance().createUniqueNumberedSaveDir( world, parentSubPath );
|
||||
public static int createUniqueNumberedSaveDir(@Nonnull World world, @Nonnull String parentSubPath) {
|
||||
return getInstance().createUniqueNumberedSaveDir(world, parentSubPath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a file system mount that maps to a subfolder of the save directory for a given world, and returns it.
|
||||
*
|
||||
* Use in conjunction with IComputerAccess.mount() or IComputerAccess.mountWritable() to mount a folder from the
|
||||
* users save directory onto a computers file system.
|
||||
* Use in conjunction with IComputerAccess.mount() or IComputerAccess.mountWritable() to mount a folder from the users save directory onto a computers
|
||||
* file system.
|
||||
*
|
||||
* @param world The world for which the save dir can be found. This should be the server side world object.
|
||||
* @param subPath The folder path within the save directory that the mount should map to. eg: "computer/disk/42".
|
||||
* Use createUniqueNumberedSaveDir() to create a new numbered folder to use.
|
||||
* @param world The world for which the save dir can be found. This should be the server side world object.
|
||||
* @param subPath The folder path within the save directory that the mount should map to. eg: "computer/disk/42". Use createUniqueNumberedSaveDir()
|
||||
* to create a new numbered folder to use.
|
||||
* @param capacity The amount of data that can be stored in the directory before it fills up, in bytes.
|
||||
* @return The mount, or null if it could be created for some reason. Use IComputerAccess.mount() or IComputerAccess.mountWritable()
|
||||
* to mount this on a Computers' file system.
|
||||
* @return The mount, or null if it could be created for some reason. Use IComputerAccess.mount() or IComputerAccess.mountWritable() to mount this on a
|
||||
* Computers' file system.
|
||||
* @see #createUniqueNumberedSaveDir(World, String)
|
||||
* @see IComputerAccess#mount(String, IMount)
|
||||
* @see IComputerAccess#mountWritable(String, IWritableMount)
|
||||
@@ -86,21 +99,22 @@ public final class ComputerCraftAPI
|
||||
* @see IWritableMount
|
||||
*/
|
||||
@Nullable
|
||||
public static IWritableMount createSaveDirMount( @Nonnull World world, @Nonnull String subPath, long capacity )
|
||||
{
|
||||
return getInstance().createSaveDirMount( world, subPath, capacity );
|
||||
public static IWritableMount createSaveDirMount(@Nonnull World world, @Nonnull String subPath, long capacity) {
|
||||
return getInstance().createSaveDirMount(world, subPath, capacity);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a file system mount to a resource folder, and returns it.
|
||||
*
|
||||
* Use in conjunction with {@link IComputerAccess#mount} or {@link IComputerAccess#mountWritable} to mount a
|
||||
* resource folder onto a computer's file system.
|
||||
* Use in conjunction with {@link IComputerAccess#mount} or {@link IComputerAccess#mountWritable} to mount a resource folder onto a computer's file
|
||||
* system.
|
||||
*
|
||||
* The files in this mount will be a combination of files in all mod jar, and data packs that contain
|
||||
* resources with the same domain and path.
|
||||
* resources with the same domain and path. For instance, ComputerCraft's resources are stored in
|
||||
* "/data/computercraft/lua/rom". We construct a mount for that with
|
||||
* {@code createResourceMount("computercraft", "lua/rom")}.
|
||||
*
|
||||
* @param domain The domain under which to look for resources. eg: "mymod".
|
||||
* @param domain The domain under which to look for resources. eg: "mymod".
|
||||
* @param subPath The subPath under which to look for resources. eg: "lua/myfiles".
|
||||
* @return The mount, or {@code null} if it could be created for some reason.
|
||||
* @see IComputerAccess#mount(String, IMount)
|
||||
@@ -108,9 +122,8 @@ public final class ComputerCraftAPI
|
||||
* @see IMount
|
||||
*/
|
||||
@Nullable
|
||||
public static IMount createResourceMount( @Nonnull String domain, @Nonnull String subPath )
|
||||
{
|
||||
return getInstance().createResourceMount( domain, subPath );
|
||||
public static IMount createResourceMount(@Nonnull String domain, @Nonnull String subPath) {
|
||||
return getInstance().createResourceMount(domain, subPath);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -120,22 +133,30 @@ public final class ComputerCraftAPI
|
||||
* @see IPeripheral
|
||||
* @see IPeripheralProvider
|
||||
*/
|
||||
public static void registerPeripheralProvider( @Nonnull IPeripheralProvider provider )
|
||||
{
|
||||
getInstance().registerPeripheralProvider( provider );
|
||||
public static void registerPeripheralProvider(@Nonnull IPeripheralProvider provider) {
|
||||
getInstance().registerPeripheralProvider(provider);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a new turtle turtle for use in ComputerCraft. After calling this,
|
||||
* users should be able to craft Turtles with your new turtle. It is recommended to call
|
||||
* this during the load() method of your mod.
|
||||
* Registers a method source for generic peripherals.
|
||||
*
|
||||
* @param source The method source to register.
|
||||
* @see GenericSource
|
||||
*/
|
||||
public static void registerGenericSource( @Nonnull GenericSource source )
|
||||
{
|
||||
getInstance().registerGenericSource( source );
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a new turtle turtle for use in ComputerCraft. After calling this, users should be able to craft Turtles with your new turtle. It is
|
||||
* recommended to call this during the load() method of your mod.
|
||||
*
|
||||
* @param upgrade The turtle upgrade to register.
|
||||
* @see ITurtleUpgrade
|
||||
*/
|
||||
public static void registerTurtleUpgrade( @Nonnull ITurtleUpgrade upgrade )
|
||||
{
|
||||
getInstance().registerTurtleUpgrade( upgrade );
|
||||
public static void registerTurtleUpgrade(@Nonnull ITurtleUpgrade upgrade) {
|
||||
getInstance().registerTurtleUpgrade(upgrade);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -144,24 +165,22 @@ public final class ComputerCraftAPI
|
||||
* @param provider The bundled redstone provider to register.
|
||||
* @see IBundledRedstoneProvider
|
||||
*/
|
||||
public static void registerBundledRedstoneProvider( @Nonnull IBundledRedstoneProvider provider )
|
||||
{
|
||||
getInstance().registerBundledRedstoneProvider( provider );
|
||||
public static void registerBundledRedstoneProvider(@Nonnull IBundledRedstoneProvider provider) {
|
||||
getInstance().registerBundledRedstoneProvider(provider);
|
||||
}
|
||||
|
||||
/**
|
||||
* If there is a Computer or Turtle at a certain position in the world, get it's bundled redstone output.
|
||||
*
|
||||
* @param world The world this block is in.
|
||||
* @param pos The position this block is at.
|
||||
* @param side The side to extract the bundled redstone output from.
|
||||
* @return If there is a block capable of emitting bundled redstone at the location, it's signal (0-65535) will be returned.
|
||||
* If there is no block capable of emitting bundled redstone at the location, -1 will be returned.
|
||||
* @param pos The position this block is at.
|
||||
* @param side The side to extract the bundled redstone output from.
|
||||
* @return If there is a block capable of emitting bundled redstone at the location, it's signal (0-65535) will be returned. If there is no block
|
||||
* capable of emitting bundled redstone at the location, -1 will be returned.
|
||||
* @see IBundledRedstoneProvider
|
||||
*/
|
||||
public static int getBundledRedstoneOutput( @Nonnull World world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
{
|
||||
return getInstance().getBundledRedstoneOutput( world, pos, side );
|
||||
public static int getBundledRedstoneOutput(@Nonnull World world, @Nonnull BlockPos pos, @Nonnull Direction side) {
|
||||
return getInstance().getBundledRedstoneOutput(world, pos, side);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,14 +189,12 @@ public final class ComputerCraftAPI
|
||||
* @param provider The media provider to register.
|
||||
* @see IMediaProvider
|
||||
*/
|
||||
public static void registerMediaProvider( @Nonnull IMediaProvider provider )
|
||||
{
|
||||
getInstance().registerMediaProvider( provider );
|
||||
public static void registerMediaProvider(@Nonnull IMediaProvider provider) {
|
||||
getInstance().registerMediaProvider(provider);
|
||||
}
|
||||
|
||||
public static void registerPocketUpgrade( @Nonnull IPocketUpgrade upgrade )
|
||||
{
|
||||
getInstance().registerPocketUpgrade( upgrade );
|
||||
public static void registerPocketUpgrade(@Nonnull IPocketUpgrade upgrade) {
|
||||
getInstance().registerPocketUpgrade(upgrade);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -185,14 +202,12 @@ public final class ComputerCraftAPI
|
||||
*
|
||||
* @return The global wireless network, or {@code null} if it could not be fetched.
|
||||
*/
|
||||
public static IPacketNetwork getWirelessNetwork()
|
||||
{
|
||||
public static IPacketNetwork getWirelessNetwork() {
|
||||
return getInstance().getWirelessNetwork();
|
||||
}
|
||||
|
||||
public static void registerAPIFactory( @Nonnull ILuaAPIFactory factory )
|
||||
{
|
||||
getInstance().registerAPIFactory( factory );
|
||||
public static void registerAPIFactory(@Nonnull ILuaAPIFactory factory) {
|
||||
getInstance().registerAPIFactory(factory);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -203,78 +218,59 @@ public final class ComputerCraftAPI
|
||||
* @see IWiredElement#getNode()
|
||||
*/
|
||||
@Nonnull
|
||||
public static IWiredNode createWiredNodeForElement( @Nonnull IWiredElement element )
|
||||
{
|
||||
return getInstance().createWiredNodeForElement( element );
|
||||
public static IWiredNode createWiredNodeForElement(@Nonnull IWiredElement element) {
|
||||
return getInstance().createWiredNodeForElement(element);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the wired network element for a block in world.
|
||||
*
|
||||
* @param world The world the block exists in
|
||||
* @param pos The position the block exists in
|
||||
* @param side The side to extract the network element from
|
||||
* @param pos The position the block exists in
|
||||
* @param side The side to extract the network element from
|
||||
* @return The element's node
|
||||
* @see IWiredElement#getNode()
|
||||
*/
|
||||
@Nonnull
|
||||
public static LazyOptional<IWiredElement> getWiredElementAt( @Nonnull IBlockReader world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
{
|
||||
return getInstance().getWiredElementAt( world, pos, side );
|
||||
@Nullable
|
||||
public static IWiredElement getWiredElementAt(@Nonnull BlockView world, @Nonnull BlockPos pos, @Nonnull Direction side) {
|
||||
return getInstance().getWiredElementAt(world, pos, side);
|
||||
}
|
||||
|
||||
private static IComputerCraftAPI instance;
|
||||
|
||||
@Nonnull
|
||||
private static IComputerCraftAPI getInstance()
|
||||
{
|
||||
if( instance != null ) return instance;
|
||||
|
||||
try
|
||||
{
|
||||
return instance = (IComputerCraftAPI) Class.forName( "dan200.computercraft.ComputerCraftAPIImpl" )
|
||||
.getField( "INSTANCE" ).get( null );
|
||||
}
|
||||
catch( ReflectiveOperationException e )
|
||||
{
|
||||
throw new IllegalStateException( "Cannot find ComputerCraft API", e );
|
||||
}
|
||||
}
|
||||
|
||||
public interface IComputerCraftAPI
|
||||
{
|
||||
public interface IComputerCraftAPI {
|
||||
@Nonnull
|
||||
String getInstalledVersion();
|
||||
|
||||
int createUniqueNumberedSaveDir( @Nonnull World world, @Nonnull String parentSubPath );
|
||||
int createUniqueNumberedSaveDir(@Nonnull World world, @Nonnull String parentSubPath);
|
||||
|
||||
@Nullable
|
||||
IWritableMount createSaveDirMount( @Nonnull World world, @Nonnull String subPath, long capacity );
|
||||
IWritableMount createSaveDirMount(@Nonnull World world, @Nonnull String subPath, long capacity);
|
||||
|
||||
@Nullable
|
||||
IMount createResourceMount( @Nonnull String domain, @Nonnull String subPath );
|
||||
IMount createResourceMount(@Nonnull String domain, @Nonnull String subPath);
|
||||
|
||||
void registerPeripheralProvider( @Nonnull IPeripheralProvider provider );
|
||||
void registerPeripheralProvider(@Nonnull IPeripheralProvider provider);
|
||||
|
||||
void registerTurtleUpgrade( @Nonnull ITurtleUpgrade upgrade );
|
||||
void registerGenericSource( @Nonnull GenericSource source );
|
||||
|
||||
void registerBundledRedstoneProvider( @Nonnull IBundledRedstoneProvider provider );
|
||||
void registerTurtleUpgrade(@Nonnull ITurtleUpgrade upgrade);
|
||||
|
||||
int getBundledRedstoneOutput( @Nonnull World world, @Nonnull BlockPos pos, @Nonnull Direction side );
|
||||
void registerBundledRedstoneProvider(@Nonnull IBundledRedstoneProvider provider);
|
||||
|
||||
void registerMediaProvider( @Nonnull IMediaProvider provider );
|
||||
int getBundledRedstoneOutput(@Nonnull World world, @Nonnull BlockPos pos, @Nonnull Direction side);
|
||||
|
||||
void registerPocketUpgrade( @Nonnull IPocketUpgrade upgrade );
|
||||
void registerMediaProvider(@Nonnull IMediaProvider provider);
|
||||
|
||||
void registerPocketUpgrade(@Nonnull IPocketUpgrade upgrade);
|
||||
|
||||
@Nonnull
|
||||
IPacketNetwork getWirelessNetwork();
|
||||
|
||||
void registerAPIFactory( @Nonnull ILuaAPIFactory factory );
|
||||
void registerAPIFactory(@Nonnull ILuaAPIFactory factory);
|
||||
|
||||
@Nonnull
|
||||
IWiredNode createWiredNodeForElement( @Nonnull IWiredElement element );
|
||||
IWiredNode createWiredNodeForElement(@Nonnull IWiredElement element);
|
||||
|
||||
@Nonnull
|
||||
LazyOptional<IWiredElement> getWiredElementAt( @Nonnull IBlockReader world, @Nonnull BlockPos pos, @Nonnull Direction side );
|
||||
@Nullable
|
||||
IWiredElement getWiredElementAt(@Nonnull BlockView world, @Nonnull BlockPos pos, @Nonnull Direction side);
|
||||
}
|
||||
}
|
||||
|
@@ -8,8 +8,8 @@ package dan200.computercraft.api;
|
||||
import dan200.computercraft.api.pocket.IPocketUpgrade;
|
||||
import dan200.computercraft.api.turtle.ITurtleUpgrade;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
@@ -28,7 +28,7 @@ public interface IUpgradeBase
|
||||
* @return The unique ID for this upgrade.
|
||||
*/
|
||||
@Nonnull
|
||||
ResourceLocation getUpgradeID();
|
||||
Identifier getUpgradeID();
|
||||
|
||||
/**
|
||||
* Return an unlocalised string to describe this type of computer in item names.
|
||||
@@ -76,8 +76,8 @@ public interface IUpgradeBase
|
||||
|
||||
// A more expanded form of ItemStack.areShareTagsEqual, but allowing an empty tag to be equal to a
|
||||
// null one.
|
||||
CompoundNBT shareTag = stack.getItem().getShareTag( stack );
|
||||
CompoundNBT craftingShareTag = crafting.getItem().getShareTag( crafting );
|
||||
CompoundTag shareTag = stack.getTag();
|
||||
CompoundTag craftingShareTag = crafting.getTag();
|
||||
if( shareTag == craftingShareTag ) return true;
|
||||
if( shareTag == null ) return craftingShareTag.isEmpty();
|
||||
if( craftingShareTag == null ) return shareTag.isEmpty();
|
||||
|
@@ -3,59 +3,81 @@
|
||||
* Copyright Daniel Ratcliffe, 2011-2021. 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.
|
||||
*/
|
||||
|
||||
package dan200.computercraft.api.client;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.model.ModelManager;
|
||||
import net.minecraft.client.renderer.model.ModelResourceLocation;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.vector.TransformationMatrix;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Objects;
|
||||
|
||||
import dan200.computercraft.fabric.mixin.AffineTransformationAccess;
|
||||
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.render.model.BakedModel;
|
||||
import net.minecraft.client.render.model.BakedModelManager;
|
||||
import net.minecraft.client.util.ModelIdentifier;
|
||||
import net.minecraft.client.util.math.AffineTransformation;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
|
||||
/**
|
||||
* A model to render, combined with a transformation matrix to apply.
|
||||
*/
|
||||
public final class TransformedModel
|
||||
{
|
||||
private final IBakedModel model;
|
||||
private final TransformationMatrix matrix;
|
||||
@Environment (EnvType.CLIENT)
|
||||
public final class TransformedModel {
|
||||
private final BakedModel model;
|
||||
private final AffineTransformation matrix;
|
||||
|
||||
public TransformedModel( @Nonnull IBakedModel model, @Nonnull TransformationMatrix matrix )
|
||||
{
|
||||
this.model = Objects.requireNonNull( model );
|
||||
this.matrix = Objects.requireNonNull( matrix );
|
||||
public TransformedModel(@Nonnull BakedModel model, @Nonnull AffineTransformation matrix) {
|
||||
this.model = Objects.requireNonNull(model);
|
||||
this.matrix = Objects.requireNonNull(matrix);
|
||||
}
|
||||
|
||||
public TransformedModel( @Nonnull IBakedModel model )
|
||||
{
|
||||
this.model = Objects.requireNonNull( model );
|
||||
this.matrix = TransformationMatrix.identity();
|
||||
public TransformedModel(@Nonnull BakedModel model) {
|
||||
this.model = Objects.requireNonNull(model);
|
||||
this.matrix = AffineTransformation.identity();
|
||||
}
|
||||
|
||||
public static TransformedModel of( @Nonnull ModelResourceLocation location )
|
||||
{
|
||||
ModelManager modelManager = Minecraft.getInstance().getModelManager();
|
||||
return new TransformedModel( modelManager.getModel( location ) );
|
||||
public static TransformedModel of(@Nonnull ModelIdentifier location) {
|
||||
BakedModelManager modelManager = MinecraftClient.getInstance()
|
||||
.getBakedModelManager();
|
||||
return new TransformedModel(modelManager.getModel(location));
|
||||
}
|
||||
|
||||
public static TransformedModel of( @Nonnull ItemStack item, @Nonnull TransformationMatrix transform )
|
||||
{
|
||||
IBakedModel model = Minecraft.getInstance().getItemRenderer().getItemModelShaper().getItemModel( item );
|
||||
return new TransformedModel( model, transform );
|
||||
public static TransformedModel of(@Nonnull ItemStack item, @Nonnull AffineTransformation transform) {
|
||||
BakedModel model = MinecraftClient.getInstance()
|
||||
.getItemRenderer()
|
||||
.getModels()
|
||||
.getModel(item);
|
||||
return new TransformedModel(model, transform);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public IBakedModel getModel()
|
||||
{
|
||||
return model;
|
||||
public BakedModel getModel() {
|
||||
return this.model;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public TransformationMatrix getMatrix()
|
||||
{
|
||||
return matrix;
|
||||
public AffineTransformation getMatrix() {
|
||||
return this.matrix;
|
||||
}
|
||||
|
||||
public void push(MatrixStack matrixStack) {
|
||||
matrixStack.push();
|
||||
|
||||
AffineTransformationAccess access = (AffineTransformationAccess) (Object) this.matrix;
|
||||
if (access.getTranslation() != null)
|
||||
matrixStack.translate(access.getTranslation().getX(), access.getTranslation().getY(), access.getTranslation().getZ());
|
||||
|
||||
matrixStack.multiply(this.matrix.getRotation2());
|
||||
|
||||
if (access.getScale() != null)
|
||||
matrixStack.scale(access.getScale().getX(), access.getScale().getY(), access.getScale().getZ());
|
||||
|
||||
if (access.getRotation1() != null)
|
||||
matrixStack.multiply(access.getRotation1());
|
||||
}
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@
|
||||
* Copyright Daniel Ratcliffe, 2011-2021. 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.
|
||||
*/
|
||||
|
||||
package dan200.computercraft.api.filesystem;
|
||||
|
||||
import java.nio.file.attribute.BasicFileAttributes;
|
||||
@@ -12,70 +13,59 @@ import java.time.Instant;
|
||||
/**
|
||||
* A simple version of {@link BasicFileAttributes}, which provides what information a {@link IMount} already exposes.
|
||||
*/
|
||||
final class FileAttributes implements BasicFileAttributes
|
||||
{
|
||||
private static final FileTime EPOCH = FileTime.from( Instant.EPOCH );
|
||||
final class FileAttributes implements BasicFileAttributes {
|
||||
private static final FileTime EPOCH = FileTime.from(Instant.EPOCH);
|
||||
|
||||
private final boolean isDirectory;
|
||||
private final long size;
|
||||
|
||||
FileAttributes( boolean isDirectory, long size )
|
||||
{
|
||||
FileAttributes(boolean isDirectory, long size) {
|
||||
this.isDirectory = isDirectory;
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileTime lastModifiedTime()
|
||||
{
|
||||
public FileTime lastModifiedTime() {
|
||||
return EPOCH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileTime lastAccessTime()
|
||||
{
|
||||
public FileTime lastAccessTime() {
|
||||
return EPOCH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileTime creationTime()
|
||||
{
|
||||
public FileTime creationTime() {
|
||||
return EPOCH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRegularFile()
|
||||
{
|
||||
return !isDirectory;
|
||||
public boolean isRegularFile() {
|
||||
return !this.isDirectory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDirectory()
|
||||
{
|
||||
return isDirectory;
|
||||
public boolean isDirectory() {
|
||||
return this.isDirectory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSymbolicLink()
|
||||
{
|
||||
public boolean isSymbolicLink() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOther()
|
||||
{
|
||||
public boolean isOther() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long size()
|
||||
{
|
||||
return size;
|
||||
public long size() {
|
||||
return this.size;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object fileKey()
|
||||
{
|
||||
public Object fileKey() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@@ -3,39 +3,37 @@
|
||||
* Copyright Daniel Ratcliffe, 2011-2021. 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.
|
||||
*/
|
||||
|
||||
package dan200.computercraft.api.filesystem;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* An {@link IOException} which occurred on a specific file.
|
||||
*
|
||||
* This may be thrown from a {@link IMount} or {@link IWritableMount} to give more information about a failure.
|
||||
*/
|
||||
public class FileOperationException extends IOException
|
||||
{
|
||||
public class FileOperationException extends IOException {
|
||||
private static final long serialVersionUID = -8809108200853029849L;
|
||||
|
||||
private final String filename;
|
||||
|
||||
public FileOperationException( @Nullable String filename, @Nonnull String message )
|
||||
{
|
||||
super( Objects.requireNonNull( message, "message cannot be null" ) );
|
||||
public FileOperationException(@Nullable String filename, @Nonnull String message) {
|
||||
super(Objects.requireNonNull(message, "message cannot be null"));
|
||||
this.filename = filename;
|
||||
}
|
||||
|
||||
public FileOperationException( @Nonnull String message )
|
||||
{
|
||||
super( Objects.requireNonNull( message, "message cannot be null" ) );
|
||||
public FileOperationException(@Nonnull String message) {
|
||||
super(Objects.requireNonNull(message, "message cannot be null"));
|
||||
this.filename = null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getFilename()
|
||||
{
|
||||
return filename;
|
||||
public String getFilename() {
|
||||
return this.filename;
|
||||
}
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@
|
||||
* Copyright Daniel Ratcliffe, 2011-2021. 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.
|
||||
*/
|
||||
|
||||
package dan200.computercraft.api.filesystem;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -12,32 +13,31 @@ import java.io.IOException;
|
||||
*
|
||||
* This exists for use by various APIs - one should not attempt to mount it.
|
||||
*/
|
||||
public interface IFileSystem extends IWritableMount
|
||||
{
|
||||
public interface IFileSystem extends IWritableMount {
|
||||
/**
|
||||
* Combine two paths together, reducing them into a normalised form.
|
||||
*
|
||||
* @param path The main path.
|
||||
* @param path The main path.
|
||||
* @param child The path to append.
|
||||
* @return The combined, normalised path.
|
||||
*/
|
||||
String combine( String path, String child );
|
||||
String combine(String path, String child);
|
||||
|
||||
/**
|
||||
* Copy files from one location to another.
|
||||
*
|
||||
* @param from The location to copy from.
|
||||
* @param to The location to copy to. This should not exist.
|
||||
* @param to The location to copy to. This should not exist.
|
||||
* @throws IOException If the copy failed.
|
||||
*/
|
||||
void copy( String from, String to ) throws IOException;
|
||||
void copy(String from, String to) throws IOException;
|
||||
|
||||
/**
|
||||
* Move files from one location to another.
|
||||
*
|
||||
* @param from The location to move from.
|
||||
* @param to The location to move to. This should not exist.
|
||||
* @param to The location to move to. This should not exist.
|
||||
* @throws IOException If the move failed.
|
||||
*/
|
||||
void move( String from, String to ) throws IOException;
|
||||
void move(String from, String to) throws IOException;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user