1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-11-07 17:03:00 +00:00

Compare commits

...

36 Commits

Author SHA1 Message Date
Jonathan Coates
bbf3e48763 Increase timeout of some more tests 2021-08-22 18:01:06 +01:00
Jonathan Coates
92fe1d4bc2 Merge branch 'mc-1.16.x' into mc-1.17.x 2021-08-22 17:50:33 +01:00
Jonathan Coates
9fbcbae5b3 Bump version to 1.98.2 2021-08-22 17:39:32 +01:00
Jonathan Coates
36a779dc18 Use data generators in a few more places
As always, a massive diff which is largely just moving files between
projects. This does fix a couple of issues with advancements, but
otherwise should behave the same.

Speaking of which, should probably go and test some of these recipes...
2021-08-21 15:50:01 +01:00
Jonathan Coates
cd8b8bbc74 Bump codecov action version
This'll be deprecated next year. We've plenty of time, but worth fixing
while I'm looking at this stuff.
2021-08-20 22:33:09 +01:00
Jonathan Coates
d8319bb35c Fix coverage not being generated for in-game tests 2021-08-20 22:13:21 +01:00
Jonathan Coates
afd6adbffa npm update
The worst ecosystem
2021-08-20 21:54:44 +01:00
Jonathan Coates
4d591c600c Use clearRemoved rather than onLoad
Latter is broken on Forge right now.
2021-08-20 21:48:34 +01:00
Jonathan Coates
0a8e427c61 Merge branch 'mc-1.16.x' into mc-1.17.x 2021-08-20 21:47:55 +01:00
Jonathan Coates
d3a5d1e314 Add tests for transmitting via wired modems
It crashes on 1.17 right now, so worth checking!
2021-08-20 18:35:00 +01:00
Jonathan Coates
56010382fb Rethink how computers run tests in game
Instead of using ids for each computer each computer is spawned with id
0 but has a label which matches up to its test name. This has several
advantages:

 - No more confusing IDs: the test code now just does thenComputerOk()
   and that's it - the computer to track is inferred from the test name.
 - All files are stored on one computer, which means we can write code
   which is shared between tests.
2021-08-20 17:05:27 +01:00
Jonathan Coates
0ff6b0ca70 Client-side tests
This spins up a Minecraft instance (much like we do for the server) and
instructs the client to take screenshots at particular times. We then
compare those screenshots and assert they match (modulo some small
delta).
2021-08-20 17:05:13 +01:00
Jonathan Coates
4b33306940 Refactor the test code to be closer to 1.17
Basically mimic the actual API that Minecraft would expose if the
methods hadn't been stripped. Lots of ATs and unsafe hacks to get this
working, but thankfully the API we can expose to the user is pretty
nice. Yay for Kotlin?

Anyway, will cause some immediate pain (yay merge conflicts) but should
make keeping the two in sync much easier.
2021-08-20 17:05:13 +01:00
Jonathan Coates
4dea3dff36 Move some Forge hooks into a separate class 2021-08-20 17:05:13 +01:00
Jonathan Coates
3e8c741170 Update test mod "generated" tags 2021-08-18 13:03:53 +01:00
Jonathan Coates
62baa72457 Add some tests for wired modems 2021-08-18 12:55:58 +01:00
Jonathan Coates
5eb711da87 Relocate test mod to testMod source set
This'll be fun to rebase 1.17 on to :).
2021-08-18 12:55:58 +01:00
Jonathan Coates
79c5df1d92 Fix weblate exporting the wrong language
Ughghgr.
2021-08-18 12:53:19 +01:00
Jonathan Coates
991ea6e829 Switch mappings over to Parchment
These are still equivalent to the official mappings but also include
method names and javadoc. Yay!

A bit weird to be on versioned mappings after 8 months of MojMap :).!
2021-08-18 12:49:50 +01:00
Weblate
1d160641a4 Translations for Japanese
Co-authored-by: MORIMORI0317 <morimori.0317@outlook.jp>
2021-08-18 10:53:58 +00:00
Weblate
c2b3d914f7 Added translation for Japanese
Co-authored-by: MORIMORI0317 <morimori.0317@outlook.jp>
2021-08-18 10:22:58 +00:00
Jonathan Coates
0a537eaeee Rewrite some in-hand rendering code
- Fix missing shader for printout render type
 - Use current buffer provider for pocket computers rather than the
   tesselator. This requires us to use a non-depth-writing terminal +
   depth blocker, as otherwise one gets z-fighting.
 - Thus refactor some of the shaders to be terminal wide, not just for
   monitors.

Fixes #894
2021-08-17 13:00:52 +01:00
Jonathan Coates
143b2bdbcd 🦀 ComputerCraft is dead 🦀 2021-08-15 22:25:31 +01:00
Jonathan Coates
8cb21ed4d1 Woops
I had this as assume-unchanged for some reason
2021-08-13 22:45:42 +01:00
Jonathan Coates
8aa7695fdd Some doc updates
- Fix some spacing in code blocks
 - Rewrite the index page
 - You can't see it, but update illuaminate.
2021-08-13 22:35:08 +01:00
Jonathan Coates
fa78818069 Several fixes to speaker volume
- Use linear attenuation.
 - Fix speakers being 16 times as loud as they should be. They correctly
   cut off at the right distance, but didn't fade out as one might
   expect.
 - Clamp volume at 0, not 1. Fixes #892
2021-08-12 18:19:53 +01:00
Jonathan Coates
aa857c1be3 Start using Java's instanceof pattern matching
Well, not really pattern matching, but it's still an improvement!
2021-08-08 12:45:30 +01:00
Jonathan Coates
e4ced551eb Remove most of the turtle events
I don't think anybody actually used these, and I'm not convinced they
had much value anyway.

It might be worth switching the refueling code to work as a registry
instead, though events are kinda nice.
2021-08-08 12:43:03 +01:00
Jonathan Coates
6eec9ba1a3 Merge branch 'mc-1.16.x' into mc-1.17.x 2021-08-08 12:40:00 +01:00
Jonathan Coates
62172c6049 Fix depending on a client-only class
I checked matrix but not transformationmatrix >_>.
2021-08-08 12:38:06 +01:00
Jonathan Coates
39f3cf8cbe Cache the tool's transformation matrix 2021-08-08 12:28:25 +01:00
Jonathan Coates
5082947331 Add 1.17 to the issue template 2021-08-08 12:23:02 +01:00
Jonathan Coates
a8f675c59d Make current branch detection more robust 2021-08-06 18:04:05 +01:00
Jonathan Coates
bb1ebaee4f Bump Forge and prepare for a release
I've been shown up[1]. Unacceptable!

[1]: https://twitter.com/SangarWasTaken/status/1423676992336060417
2021-08-06 17:25:34 +01:00
Jonathan Coates
bb1183d274 Update to Minecraft 1.17.1
- Remap everything to use MojMap class names too. This is what Forge
   uses, so \o/.

   This does NOT currently rename any classes to use suffix notation or
   BlockEntity. That will come in a later change. We do however rename
   references of "World" to "Level".

 - Move the test mod into a separate "cctest" source set. As Forge now
   works using Jigsaw we cannot have multiple mods defining the same
   package, which causes problems with our JUnit test classes.

 - Remove our custom test framework and replace it with vanilla's (this
   is no longer stripped from the jar). RIP kotlin coroutines.

   It's still worth using Kotlin here though, just for extension
   methods.

 - Other 1.17-related changes:
    - Use separate tile/block entity tick methods for server and client
      side, often avoiding ticking at all on the client.

    - Switch much of the monitor rendering code to use vanilla's
      built-in shader system. It's still an incredibly ugly hack, so not
      really expecting this to work with any rendering mods, but we'll
      cross that bridge when we come to it.
2021-08-06 17:18:09 +01:00
Jonathan Coates
01ddb2b4e4 A couple of documentation improvements
- Add some missing to the turtle API docs
 - Version history for peripheral and redstone. I /think/ this is
   complete.
2021-08-05 19:25:10 +01:00
603 changed files with 9182 additions and 13615 deletions

2
.gitattributes vendored
View File

@@ -1,6 +1,6 @@
# Ignore changes in generated files # Ignore changes in generated files
src/generated/resources/data/** linguist-generated src/generated/resources/data/** linguist-generated
src/test/server-files/structures linguist-generated src/testMod/server-files/structures linguist-generated
* text=auto * text=auto

View File

@@ -10,6 +10,7 @@ body:
options: options:
- 1.15.x - 1.15.x
- 1.16.x - 1.16.x
- 1.17.x
validations: validations:
required: true required: true
- type: input - type: input

View File

@@ -32,7 +32,7 @@ jobs:
run: | run: |
./gradlew assemble || ./gradlew assemble ./gradlew assemble || ./gradlew assemble
./gradlew downloadAssets || ./gradlew downloadAssets ./gradlew downloadAssets || ./gradlew downloadAssets
./gradlew build xvfb-run ./gradlew build
- name: Upload Jar - name: Upload Jar
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
@@ -40,8 +40,17 @@ jobs:
name: CC-Tweaked name: CC-Tweaked
path: build/libs path: build/libs
- name: Upload Screnshots
uses: actions/upload-artifact@v2
with:
name: Screenshots
path: test-files/client/screenshots
if-no-files-found: ignore
retention-days: 5
if: failure()
- name: Upload Coverage - name: Upload Coverage
uses: codecov/codecov-action@v1 uses: codecov/codecov-action@v2
- name: Parse test reports - name: Parse test reports
run: ./tools/parse-reports.py run: ./tools/parse-reports.py

View File

@@ -90,10 +90,11 @@ Before we get into writing tests, it's worth mentioning the various test suites
These tests are run by the '"Core" Java' test suite, and so are also run with `./gradlew 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 - In-game (`./src/testMod/java/dan200/computercraft/ingame/`): These tests are run on an actual Minecraft server and client,
[the same system Mojang do][mc-test]. The aim of these is to test in-game behaviour of blocks and peripherals. 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`. These are run by `./gradlew testClient` and `./gradlew testServer`. You may want to run the client under `xvfb-run`
or similar when running in a headless environment.
## CraftOS tests ## CraftOS tests
CraftOS's tests are written using a test system called "mcfly", heavily inspired by [busted] (and thus RSpec). Groups of CraftOS's tests are written using a test system called "mcfly", heavily inspired by [busted] (and thus RSpec). Groups of

View File

@@ -1,40 +1,11 @@
# ![CC: Tweaked](doc/logo.png) # ![CC: Tweaked](doc/logo.png)
[![Current build status](https://github.com/SquidDev-CC/CC-Tweaked/workflows/Build/badge.svg)](https://github.com/SquidDev-CC/CC-Tweaked/actions "Current build status") [![Download CC: Tweaked on CurseForge](http://cf.way2muchnoise.eu/title/cc-tweaked.svg)](https://minecraft.curseforge.com/projects/cc-tweaked "Download CC: Tweaked on CurseForge") [![Current build status](https://github.com/SquidDev-CC/CC-Tweaked/workflows/Build/badge.svg)](https://github.com/SquidDev-CC/CC-Tweaked/actions "Current build status") [![Download CC: Tweaked on CurseForge](http://cf.way2muchnoise.eu/title/cc-tweaked.svg)][CurseForge]
CC: Tweaked is a fork of [ComputerCraft](https://github.com/dan200/ComputerCraft), adding programmable computers, CC: Tweaked is a mod for Minecraft which adds programmable computers, turtles and more to the game. A fork of the
turtles and more to Minecraft. much-beloved [ComputerCraft], it continues its legacy with better performance, stability, and a wealth of new features.
## What? CC: Tweaked can be installed from [CurseForge] or [Modrinth]. It requires the [Minecraft Forge][forge] mod loader, but
ComputerCraft has always held a fond place in my heart: it's the mod which really got me into Minecraft, and it's the [versions are available for Fabric][ccrestitched].
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.
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.
## 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.
## Contributing ## Contributing
Any contribution is welcome, be that using the mod, reporting bugs or contributing code. If you want to get started Any contribution is welcome, be that using the mod, reporting bugs or contributing code. If you want to get started
@@ -46,8 +17,7 @@ ComputerCraft we have a [forum](https://forums.computercraft.cc/) and [Discord g
There's also a fairly populated, albeit quiet [IRC channel](http://webchat.esper.net/?channels=computercraft), if that's There's also a fairly populated, albeit quiet [IRC channel](http://webchat.esper.net/?channels=computercraft), if that's
more your cup of tea. more your cup of tea.
I'd generally recommend you don't contact me directly (email, DM, etc...) unless absolutely necessary (i.e. in order to We also host fairly comprehensive documentation at [tweaked.cc](https://tweaked.cc/ "The CC: Tweaked website").
report exploits). You'll get a far quicker response if you ask the whole community!
## Using ## 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) 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)
@@ -70,3 +40,9 @@ exposing more features.
We bundle the API sources with the jar, so documentation should be easily viewable within your editor. Alternatively, 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/). the generated documentation [can be browsed online](https://tweaked.cc/javadoc/).
[computercraft]: https://github.com/dan200/ComputerCraft "ComputerCraft on GitHub"
[curseforge]: https://minecraft.curseforge.com/projects/cc-tweaked "Download CC: Tweaked from CurseForge"
[modrinth]: https://modrinth.com/mod/gu7yAYhd "Download CC: Tweaked from Modrinth"
[forge]: https://files.minecraftforge.net/ "Download Minecraft Forge."
[ccrestitched]: https://www.curseforge.com/minecraft/mc-mods/cc-restitched "Download CC: Restitched from CurseForge"

View File

@@ -1,13 +1,12 @@
buildscript { buildscript {
repositories { repositories {
mavenCentral() mavenCentral()
maven { maven { url = "https://maven.minecraftforge.net" }
name = "forge" maven { url = 'https://maven.parchmentmc.org' }
url = "https://maven.minecraftforge.net"
}
} }
dependencies { dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:5.0.24' classpath 'net.minecraftforge.gradle:ForgeGradle:5.1.+'
classpath 'org.parchmentmc:librarian:1.+'
} }
} }
@@ -18,18 +17,19 @@ plugins {
id "com.github.hierynomus.license" version "0.16.1" id "com.github.hierynomus.license" version "0.16.1"
id "com.matthewprenger.cursegradle" version "1.4.0" id "com.matthewprenger.cursegradle" version "1.4.0"
id "com.github.breadmoirai.github-release" version "2.2.12" id "com.github.breadmoirai.github-release" version "2.2.12"
id "org.jetbrains.kotlin.jvm" version "1.3.72" id "org.jetbrains.kotlin.jvm" version "1.5.21"
id "com.modrinth.minotaur" version "1.2.1" id "com.modrinth.minotaur" version "1.2.1"
} }
apply plugin: 'net.minecraftforge.gradle' apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'org.parchmentmc.librarian.forgegradle'
version = mod_version version = mod_version
group = "org.squiddev" group = "org.squiddev"
archivesBaseName = "cc-tweaked-${mc_version}" archivesBaseName = "cc-tweaked-${mc_version}"
def javaVersion = JavaLanguageVersion.of(8) def javaVersion = JavaLanguageVersion.of(16)
java { java {
toolchain { toolchain {
languageVersion = javaVersion languageVersion = javaVersion
@@ -45,10 +45,24 @@ tasks.withType(JavaExec).configureEach {
} }
} }
sourceSets {
main.java {
exclude 'dan200/computercraft/shared/integration/**'
}
main.resources {
srcDir 'src/generated/resources'
}
testMod {}
}
minecraft { minecraft {
runs { runs {
client { all {
workingDirectory project.file('run') lazyToken('minecraft_classpath') {
configurations.shade.copyRecursive().resolve().collect { it.absolutePath }.join(File.pathSeparator)
}
property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.markers', 'REGISTRIES'
property 'forge.logging.console.level', 'debug' property 'forge.logging.console.level', 'debug'
@@ -59,57 +73,60 @@ minecraft {
} }
} }
client {
workingDirectory project.file('run')
}
server { server {
workingDirectory project.file("run/server") workingDirectory project.file("run/server")
property 'forge.logging.markers', 'REGISTRIES'
property 'forge.logging.console.level', 'debug'
arg "--nogui" arg "--nogui"
mods {
computercraft {
source sourceSets.main
}
}
} }
data { data {
workingDirectory project.file('run') 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/') args '--mod', 'computercraft', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
}
testClient {
workingDirectory project.file('test-files/client')
parent runs.client
mods { mods {
computercraft { cctest {
source sourceSets.main source sourceSets.testMod
} }
} }
lazyToken('minecraft_classpath') {
(configurations.shade.copyRecursive().resolve() + configurations.testModExtra.copyRecursive().resolve())
.collect { it.absolutePath }
.join(File.pathSeparator)
}
} }
testServer { testServer {
workingDirectory project.file('test-files/server') workingDirectory project.file('test-files/server')
parent runs.server parent runs.server
arg "--nogui"
mods { mods {
cctest { cctest {
source sourceSets.test source sourceSets.testMod
} }
} }
lazyToken('minecraft_classpath') {
(configurations.shade.copyRecursive().resolve() + configurations.testModExtra.copyRecursive().resolve())
.collect { it.absolutePath }
.join(File.pathSeparator)
}
} }
} }
mappings channel: 'official', version: mc_version mappings channel: 'parchment', version: "${mapping_version}-${mc_version}"
accessTransformer file('src/main/resources/META-INF/accesstransformer.cfg') accessTransformer file('src/main/resources/META-INF/accesstransformer.cfg')
accessTransformer file('src/test/resources/META-INF/accesstransformer.cfg') accessTransformer file('src/testMod/resources/META-INF/accesstransformer.cfg')
} }
sourceSets {
main.resources {
srcDir 'src/generated/resources'
}
}
repositories { repositories {
mavenCentral() mavenCentral()
maven { maven {
@@ -120,20 +137,25 @@ repositories {
configurations { configurations {
shade shade
compile.extendsFrom shade implementation.extendsFrom shade
cctJavadoc cctJavadoc
testModExtra
testModImplementation.extendsFrom(testModExtra)
testModImplementation.extendsFrom(implementation)
} }
dependencies { dependencies {
checkstyle "com.puppycrawl.tools:checkstyle:8.25" checkstyle "com.puppycrawl.tools:checkstyle:8.45"
minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}"
compileOnly fg.deobf("mezz.jei:jei-1.16.5:7.7.0.104:api") compileOnly fg.deobf("mezz.jei:jei-1.16.5:7.7.0.104:api")
compileOnly fg.deobf("com.blamejared.crafttweaker:CraftTweaker-1.16.5:7.1.0.313") // compileOnly fg.deobf("com.blamejared.crafttweaker:CraftTweaker-1.16.5:7.1.0.313")
compileOnly fg.deobf("commoble.morered:morered-1.16.5:2.1.1.0") // compileOnly fg.deobf("commoble.morered:morered-1.16.5:2.1.1.0")
runtimeOnly fg.deobf("mezz.jei:jei-1.16.5:7.7.0.104") // runtimeOnly fg.deobf("mezz.jei:jei-1.16.5:7.7.0.104")
shade 'org.squiddev:Cobalt:0.5.2-SNAPSHOT' shade 'org.squiddev:Cobalt:0.5.2-SNAPSHOT'
@@ -141,15 +163,21 @@ dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.7.0' testImplementation 'org.junit.jupiter:junit-jupiter-params:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
testImplementation 'org.hamcrest:hamcrest:2.2' testImplementation 'org.hamcrest:hamcrest:2.2'
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72' testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.21'
testImplementation 'org.jetbrains.kotlin:kotlin-reflect:1.3.72' testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1'
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8'
testModImplementation sourceSets.main.output
testModExtra 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.21'
cctJavadoc 'cc.tweaked:cct-javadoc:1.4.1' cctJavadoc 'cc.tweaked:cct-javadoc:1.4.1'
} }
// Compile tasks // Compile tasks
compileTestModJava {
dependsOn(compileJava)
}
javadoc { javadoc {
include "dan200/computercraft/api/**/*.java" include "dan200/computercraft/api/**/*.java"
} }
@@ -167,25 +195,29 @@ task luaJavadoc(type: Javadoc) {
options.noTimestamp = false options.noTimestamp = false
javadocTool = javaToolchains.javadocToolFor { javadocTool = javaToolchains.javadocToolFor {
languageVersion = JavaLanguageVersion.of(11) languageVersion = javaVersion
} }
} }
jar { jar {
manifest { manifest {
attributes(["Specification-Title" : "computercraft", attributes([
"Specification-Vendor" : "SquidDev", "Specification-Title" : "computercraft",
"Specification-Version" : "1", "Specification-Vendor" : "SquidDev",
"Implementation-Title" : "CC: Tweaked", "Specification-Version" : "1",
"Implementation-Version" : "${mod_version}", "Implementation-Title" : "CC: Tweaked",
"Implementation-Vendor" : "SquidDev", "Implementation-Version" : "${mod_version}",
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")]) "Implementation-Vendor" : "SquidDev",
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
])
} }
from configurations.shade.collect { it.isDirectory() ? it : zipTree(it) } from configurations.shade.collect { it.isDirectory() ? it : zipTree(it) }
} }
[compileJava, compileTestJava].forEach { jar.finalizedBy('reobfJar')
[compileJava, compileTestJava, compileTestModJava].forEach {
it.configure { it.configure {
options.compilerArgs << "-Xlint" << "-Xlint:-processing" options.compilerArgs << "-Xlint" << "-Xlint:-processing"
} }
@@ -214,9 +246,11 @@ processResources {
include 'META-INF/mods.toml' include 'META-INF/mods.toml'
include 'data/computercraft/lua/rom/help/credits.txt' include 'data/computercraft/lua/rom/help/credits.txt'
expand 'version': mod_version, expand(
'mcversion': mc_version, 'version': mod_version,
'gitcontributors': contributors.sort(false, String.CASE_INSENSITIVE_ORDER).join('\n') 'mcversion': mc_version,
'gitcontributors': contributors.sort(false, String.CASE_INSENSITIVE_ORDER).join('\n')
)
} }
from(sourceSets.main.resources.srcDirs) { from(sourceSets.main.resources.srcDirs) {
@@ -234,6 +268,7 @@ sourcesJar {
import com.hierynomus.gradle.license.tasks.LicenseCheck import com.hierynomus.gradle.license.tasks.LicenseCheck
import com.hierynomus.gradle.license.tasks.LicenseFormat import com.hierynomus.gradle.license.tasks.LicenseFormat
import com.modrinth.minotaur.TaskModrinthUpload
import org.apache.tools.ant.taskdefs.condition.Os import org.apache.tools.ant.taskdefs.condition.Os
List<String> mkCommand(String command) { List<String> mkCommand(String command) {
@@ -280,7 +315,9 @@ task illuaminateDocs(type: Exec, dependsOn: [minifyWeb, luaJavadoc]) {
} }
task docWebsite(type: Copy, dependsOn: [illuaminateDocs]) { task docWebsite(type: Copy, dependsOn: [illuaminateDocs]) {
from 'doc/logo.png' from 'doc'
include 'logo.png'
include 'images/**'
into "${project.docsDir}/lua" into "${project.docsDir}/lua"
} }
@@ -318,7 +355,7 @@ license {
} }
} }
[licenseTest, licenseFormatTest].forEach { [licenseTest, licenseFormatTest, licenseTestMod, licenseFormatTestMod].forEach {
it.configure { it.configure {
include("**/*.java") include("**/*.java")
header file('config/license/main.txt') header file('config/license/main.txt')
@@ -346,57 +383,60 @@ task setupServer(type: Copy) {
group "test server" group "test server"
description "Sets up the environment for the test server." description "Sets up the environment for the test server."
from("src/test/server-files") { from("src/testMod/server-files") {
include "eula.txt" include "eula.txt"
include "server.properties" include "server.properties"
} }
into "test-files/server" into "test-files/server"
} }
tasks.register('testInGame', JavaExec.class).configure { ["Client", "Server"].forEach { name ->
it.group('test server') tasks.register("test$name", JavaExec.class).configure {
it.description("Runs tests on a temporary Minecraft server.") it.group('In-game tests')
it.dependsOn(setupServer, 'prepareRunTestServer', 'cleanTestInGame') it.description("Runs tests on a temporary Minecraft instance.")
it.dependsOn(setupServer, "prepareRunTest$name", "cleanTest$name", 'compileTestModJava')
// Copy from runTestServer. We do it in this slightly odd way as runTestServer // 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). // isn't created until the task is configured (which is no good for us).
JavaExec exec = tasks.getByName('runTestServer') JavaExec exec = tasks.getByName("runTest$name")
exec.copyTo(it) exec.copyTo(it)
it.setClasspath(exec.getClasspath()) it.setClasspath(exec.getClasspath())
it.mainClass = exec.mainClass it.mainClass = exec.mainClass
it.setArgs(exec.getArgs()) it.setArgs(exec.getArgs())
it.systemProperty('forge.logging.console.level', 'info') it.systemProperty('forge.logging.console.level', 'info')
it.systemProperty('cctest.run', 'true') it.systemProperty('cctest.run', 'true')
// Jacoco and modlauncher don't play well together as the classes loaded in-game don't // 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 // match up with those written to disk. We get Jacoco to dump all classes to disk, and
// use that when generating the report. // use that when generating the report.
def coverageOut = new File(buildDir, 'jacocoClassDump/testInGame') def coverageOut = new File(buildDir, "jacocoClassDump/test$name")
jacoco.applyTo(it) jacoco.applyTo(it)
it.jacoco.setIncludes(["dan200.computercraft.*"]) it.jacoco.setIncludes(["dan200.computercraft.*"])
it.jacoco.setClassDumpDir(coverageOut) it.jacoco.setClassDumpDir(coverageOut)
it.outputs.dir(coverageOut) it.outputs.dir(coverageOut)
// Older versions of modlauncher don't include a protection domain (and thus no code // 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. // source). Jacoco skips such classes by default, so we need to explicitly include them.
it.jacoco.setIncludeNoLocationClasses(true) 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.sourceDirectories.from(sourceSets.main.allJava.srcDirs)
it.classDirectories.from(new File(buildDir, 'jacocoClassDump/testInGame'))
it.reports {
xml.enabled true
html.enabled true
} }
tasks.register("jacocoTest${name}Report", JacocoReport.class).configure {
it.group('In-game')
it.description("Generate coverage reports for test$name")
it.dependsOn("test$name")
it.executionData(new File(buildDir, "jacoco/test${name}.exec"))
it.sourceDirectories.from(sourceSets.main.allJava.srcDirs)
it.classDirectories.from(new File(buildDir, "jacocoClassDump/test$name"))
it.reports {
xml.enabled true
html.enabled true
}
}
check.dependsOn("jacocoTest${name}Report")
} }
check.dependsOn('jacocoTestInGameReport')
// Upload tasks // Upload tasks
@@ -441,22 +481,19 @@ task checkRelease {
} }
check.dependsOn checkRelease check.dependsOn checkRelease
def isStable = false
curseforge { curseforge {
apiKey = project.hasProperty('curseForgeApiKey') ? project.curseForgeApiKey : '' apiKey = project.hasProperty('curseForgeApiKey') ? project.curseForgeApiKey : ''
project { project {
id = '282001' id = '282001'
releaseType = 'release' releaseType = isStable ? 'release' : 'alpha'
changelog = "Release notes can be found on the GitHub repository (https://github.com/SquidDev-CC/CC-Tweaked/releases/tag/v${mc_version}-${mod_version})." 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"
}
addGameVersion "${mc_version}" addGameVersion "${mc_version}"
} }
} }
import com.modrinth.minotaur.TaskModrinthUpload
tasks.register('publishModrinth', TaskModrinthUpload.class).configure { tasks.register('publishModrinth', TaskModrinthUpload.class).configure {
dependsOn('assemble', 'reobfJar') dependsOn('assemble', 'reobfJar')
onlyIf { onlyIf {
@@ -467,6 +504,7 @@ tasks.register('publishModrinth', TaskModrinthUpload.class).configure {
projectId = 'gu7yAYhd' projectId = 'gu7yAYhd'
versionNumber = "${project.mc_version}-${project.mod_version}" versionNumber = "${project.mc_version}-${project.mod_version}"
uploadFile = jar uploadFile = jar
versionType = isStable ? 'RELEASE' : 'ALPHA'
addGameVersion(project.mc_version) addGameVersion(project.mc_version)
changelog = "Release notes can be found on the [GitHub repository](https://github.com/SquidDev-CC/CC-Tweaked/releases/tag/v${mc_version}-${mod_version})." changelog = "Release notes can be found on the [GitHub repository](https://github.com/SquidDev-CC/CC-Tweaked/releases/tag/v${mc_version}-${mod_version})."
addLoader('forge') addLoader('forge')
@@ -527,12 +565,17 @@ githubRelease {
owner 'SquidDev-CC' owner 'SquidDev-CC'
repo 'CC-Tweaked' repo 'CC-Tweaked'
targetCommitish.set(project.provider({ targetCommitish.set(project.provider({
try { def cmd = ["git", "rev-parse", "--abbrev-ref", "HEAD"]
return ["git", "-C", projectDir, "rev-parse", "--abbrev-ref", "HEAD"].execute().text.trim() println(cmd)
} catch (Exception e) { def proc = cmd.execute([], projectDir)
e.printStackTrace() if (proc.waitFor() != 0) {
println(proc.err.text.trim())
throw new IllegalStateException("Executed with a non-0 exit code (${proc.exitValue()}).")
} }
return "master"
def branch = proc.text.trim()
if (branch == "") throw new IllegalStateException("Cannot determine branch")
return branch
})) }))
tagName "v${mc_version}-${mod_version}" tagName "v${mc_version}-${mod_version}"
@@ -543,7 +586,7 @@ githubRelease {
.takeWhile { it != 'Type "help changelog" to see the full version history.' } .takeWhile { it != 'Type "help changelog" to see the full version history.' }
.join("\n").trim() .join("\n").trim()
})) }))
prerelease false prerelease isStable
} }
def uploadTasks = ["publish", "curseforge", "publishModrinth", "githubRelease"] def uploadTasks = ["publish", "curseforge", "publishModrinth", "githubRelease"]

View File

@@ -58,13 +58,20 @@
<module name="SimplifyBooleanExpression" /> <module name="SimplifyBooleanExpression" />
<module name="SimplifyBooleanReturn" /> <module name="SimplifyBooleanReturn" />
<module name="StringLiteralEquality" /> <module name="StringLiteralEquality" />
<module name="UnnecessaryParentheses" /> <module name="UnnecessaryParentheses">
<!-- Default minus LAND. -->
<property name="tokens" value="EXPR,IDENT,NUM_DOUBLE,NUM_FLOAT,NUM_INT,NUM_LONG,STRING_LITERAL,LITERAL_NULL,LITERAL_FALSE,LITERAL_TRUE,ASSIGN,BAND_ASSIGN,BOR_ASSIGN,BSR_ASSIGN,BXOR_ASSIGN,DIV_ASSIGN,MINUS_ASSIGN,MOD_ASSIGN,PLUS_ASSIGN,SL_ASSIGN,SR_ASSIGN,STAR_ASSIGN,LAMBDA,TEXT_BLOCK_LITERAL_BEGIN,LITERAL_INSTANCEOF,GT,LT,GE,LE,EQUAL,NOT_EQUAL,UNARY_MINUS,UNARY_PLUS,INC,DEC,LNOT,BNOT,POST_INC,POST_DEC" />
</module>
<module name="UnnecessarySemicolonAfterTypeMemberDeclaration" /> <module name="UnnecessarySemicolonAfterTypeMemberDeclaration" />
<module name="UnnecessarySemicolonInTryWithResources" /> <module name="UnnecessarySemicolonInTryWithResources" />
<module name="UnnecessarySemicolonInEnumeration" /> <module name="UnnecessarySemicolonInEnumeration" />
<!-- Imports --> <!-- Imports -->
<module name="CustomImportOrder" /> <module name="CustomImportOrder">
<property name="customImportOrderRules"
value="THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE###STATIC"
/>
</module>
<module name="IllegalImport" /> <module name="IllegalImport" />
<module name="RedundantImport" /> <module name="RedundantImport" />
<module name="UnusedImports" /> <module name="UnusedImports" />

View File

@@ -50,6 +50,6 @@ exclude: |
(?x)^( (?x)^(
src/generated| src/generated|
src/test/resources/test-rom/data/json-parsing/| src/test/resources/test-rom/data/json-parsing/|
src/test/server-files/| src/testMod/server-files/|
config/idea/ config/idea/
) )

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
doc/images/peripherals.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

BIN
doc/images/turtle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

View File

@@ -1,11 +1,55 @@
# ![CC: Tweaked](logo.png) [![Download CC: Tweaked on CurseForge](https://cf.way2muchnoise.eu/title/cc-tweaked.svg)](https://minecraft.curseforge.com/projects/cc-tweaked "Download CC: Tweaked on CurseForge") # ![CC: Tweaked](logo.png)
CC: Tweaked is a mod for Minecraft which adds programmable computers, turtles and more to the game. A fork of the
much-beloved [ComputerCraft], it continues its legacy with better performance, stability, and a wealth of new features.
CC: Tweaked is a fork of [ComputerCraft], adding programmable computers, turtles and more to Minecraft. CC: Tweaked can be installed from [CurseForge] or [Modrinth]. It requires the [Minecraft Forge][forge] mod loader, but
[versions are available for Fabric][ccrestitched].
This website contains documentation for all Lua libraries and APIs from the latest version of CC: Tweaked. This ## Features
documentation is still in development, so will most likely be incomplete. If you've found something you think is wrong, Controlled using the [Lua programming language][lua], CC: Tweaked's computers provides all the tools you need to start
or would like to help out [please get in touch on GitHub][gh]. writing code and automating your Minecraft world.
![A ComputerCraft terminal open and ready to be programmed.](images/basic-terminal.png){.big-image}
While computers are incredibly powerful, they're rather limited by their inability to move about. *Turtles* are the
solution here. They can move about the world, placing and breaking blocks, swinging a sword to protect you from zombies,
or whatever else you program them to!
![A turtle tunneling in Minecraft.](images/turtle.png){.big-image}
Not all problems can be solved with a pickaxe though, and so CC: Tweaked also provides a bunch of additional peripherals
for your computers. You can play a tune with speakers, display text or images on a monitor, connect all your
computers together with modems, and much more.
Computers can now also interact with inventories such as chests, allowing you to build complex inventory and item
management systems.
![A chest's contents being read by a computer and displayed on a monitor.](images/peripherals.png){.big-image}
## Getting Started
While ComputerCraft is lovely for both experienced programmers and for people who have never coded before, it can be a
little daunting getting started. Thankfully, there's several fantastic tutorials out there:
- [Direwolf20's ComputerCraft tutorials](https://www.youtube.com/watch?v=wrUHUhfCY5A "ComputerCraft Tutorial Episode 1 - HELP! and Hello World")
- [Sethbling's ComputerCraft series](https://www.youtube.com/watch?v=DSsx4VSe-Uk "Programming Tutorial with Minecraft Turtles -- Ep. 1: Intro to Turtles and If-Then-Else_End")
- [Lyqyd's Computer Basics 1](http://www.computercraft.info/forums2/index.php?/topic/15033-computer-basics-i/ "Computer Basics I")
Once you're a little more familiar with the mod, the sidebar and links below provide more detailed documentation on the
various APIs and peripherals provided by the mod.
If you get stuck, do pop in to the [Minecraft Computer Mod Discord guild][discord] or ComputerCraft's
[IRC channel][irc].
## Get Involved
CC: Tweaked lives on [GitHub]. If you've got any ideas, feedback or bugs please do [create an issue][bug].
[github]: https://github.com/SquidDev-CC/CC-Tweaked/ "CC: Tweaked on GitHub"
[bug]: https://github.com/SquidDev-CC/CC-Tweaked/issues/new/choose [bug]: https://github.com/SquidDev-CC/CC-Tweaked/issues/new/choose
[computercraft]: https://github.com/dan200/ComputerCraft "ComputerCraft on GitHub" [computercraft]: https://github.com/dan200/ComputerCraft "ComputerCraft on GitHub"
[gh]: https://github.com/SquidDev-CC/CC-Tweaked "CC:Tweaked on GitHub" [curseforge]: https://minecraft.curseforge.com/projects/cc-tweaked "Download CC: Tweaked from CurseForge"
[modrinth]: https://modrinth.com/mod/gu7yAYhd "Download CC: Tweaked from Modrinth"
[forge]: https://files.minecraftforge.net/ "Download Minecraft Forge."
[ccrestitched]: https://www.curseforge.com/minecraft/mc-mods/cc-restitched "Download CC: Restitched from CurseForge"
[lua]: https://www.lua.org/ "Lua's main website"
[discord]: https://discord.computercraft.cc "The Minecraft Computer Mods Discord"
[irc]: http://webchat.esper.net/?channels=computercraft "IRC webchat on EsperNet"

View File

@@ -1,7 +1,8 @@
# Mod properties # Mod properties
mod_version=1.98.1 mod_version=1.98.2
# Minecraft properties (update mods.toml when changing) # Minecraft properties (update mods.toml when changing)
mc_version=1.16.5 mc_version=1.17.1
forge_version=36.1.0 mapping_version=2021.08.15
forge_version=37.0.34
# NO SERIOUSLY, UPDATE mods.toml WHEN CHANGING # NO SERIOUSLY, UPDATE mods.toml WHEN CHANGING

176
package-lock.json generated
View File

@@ -13,7 +13,7 @@
"tslib": "^2.0.3" "tslib": "^2.0.3"
}, },
"devDependencies": { "devDependencies": {
"@rollup/plugin-typescript": "^6.1.0", "@rollup/plugin-typescript": "^8.2.5",
"requirejs": "^2.3.6", "requirejs": "^2.3.6",
"rollup": "^2.33.1", "rollup": "^2.33.1",
"terser": "^5.3.8", "terser": "^5.3.8",
@@ -21,9 +21,9 @@
} }
}, },
"node_modules/@rollup/plugin-typescript": { "node_modules/@rollup/plugin-typescript": {
"version": "6.1.0", "version": "8.2.5",
"resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-6.1.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.2.5.tgz",
"integrity": "sha512-hJxaiE6WyNOsK+fZpbFh9CUijZYqPQuAOWO5khaGTUkM8DYNNyA2TDlgamecE+qLOG1G1+CwbWMAx3rbqpp6xQ==", "integrity": "sha512-QL/LvDol/PAGB2O0S7/+q2HpSUNodpw7z6nGn9BfoVCPOZ0r4EALrojFU29Bkoi2Hr2jgTocTejJ5GGWZfOxbQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@rollup/pluginutils": "^3.1.0", "@rollup/pluginutils": "^3.1.0",
@@ -31,6 +31,11 @@
}, },
"engines": { "engines": {
"node": ">=8.0.0" "node": ">=8.0.0"
},
"peerDependencies": {
"rollup": "^2.14.0",
"tslib": "*",
"typescript": ">=3.7.0"
} }
}, },
"node_modules/@rollup/pluginutils": { "node_modules/@rollup/pluginutils": {
@@ -45,6 +50,9 @@
}, },
"engines": { "engines": {
"node": ">= 8.0.0" "node": ">= 8.0.0"
},
"peerDependencies": {
"rollup": "^1.20.0||^2.0.0"
} }
}, },
"node_modules/@types/estree": { "node_modules/@types/estree": {
@@ -54,9 +62,9 @@
"dev": true "dev": true
}, },
"node_modules/buffer-from": { "node_modules/buffer-from": {
"version": "1.1.1", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true "dev": true
}, },
"node_modules/commander": { "node_modules/commander": {
@@ -72,10 +80,11 @@
"dev": true "dev": true
}, },
"node_modules/fsevents": { "node_modules/fsevents": {
"version": "2.1.3", "version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true, "dev": true,
"hasInstallScript": true,
"optional": true, "optional": true,
"os": [ "os": [
"darwin" "darwin"
@@ -103,33 +112,43 @@
} }
}, },
"node_modules/is-core-module": { "node_modules/is-core-module": {
"version": "2.1.0", "version": "2.6.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
"integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"has": "^1.0.3" "has": "^1.0.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/path-parse": { "node_modules/path-parse": {
"version": "1.0.6", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true "dev": true
}, },
"node_modules/picomatch": { "node_modules/picomatch": {
"version": "2.2.2", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": ">=8.6" "node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
} }
}, },
"node_modules/preact": { "node_modules/preact": {
"version": "10.5.5", "version": "10.5.14",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.5.5.tgz", "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.14.tgz",
"integrity": "sha512-5ONLNH1SXMzzbQoExZX4TELemNt+TEDb622xXFNfZngjjM9qtrzseJt+EfiUu4TZ6EJ95X5sE1ES4yqHFSIdhg==" "integrity": "sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
}
}, },
"node_modules/requirejs": { "node_modules/requirejs": {
"version": "2.3.6", "version": "2.3.6",
@@ -145,19 +164,22 @@
} }
}, },
"node_modules/resolve": { "node_modules/resolve": {
"version": "1.18.1", "version": "1.20.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
"integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"is-core-module": "^2.0.0", "is-core-module": "^2.2.0",
"path-parse": "^1.0.6" "path-parse": "^1.0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/rollup": { "node_modules/rollup": {
"version": "2.33.1", "version": "2.56.2",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.2.tgz",
"integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "integrity": "sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ==",
"dev": true, "dev": true,
"bin": { "bin": {
"rollup": "dist/bin/rollup" "rollup": "dist/bin/rollup"
@@ -166,7 +188,7 @@
"node": ">=10.0.0" "node": ">=10.0.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"fsevents": "~2.1.2" "fsevents": "~2.3.2"
} }
}, },
"node_modules/source-map": { "node_modules/source-map": {
@@ -198,9 +220,9 @@
} }
}, },
"node_modules/terser": { "node_modules/terser": {
"version": "5.3.8", "version": "5.7.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz",
"integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"commander": "^2.20.0", "commander": "^2.20.0",
@@ -215,14 +237,14 @@
} }
}, },
"node_modules/tslib": { "node_modules/tslib": {
"version": "2.0.3", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
}, },
"node_modules/typescript": { "node_modules/typescript": {
"version": "4.0.5", "version": "4.3.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
"integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==", "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
"dev": true, "dev": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
@@ -235,9 +257,9 @@
}, },
"dependencies": { "dependencies": {
"@rollup/plugin-typescript": { "@rollup/plugin-typescript": {
"version": "6.1.0", "version": "8.2.5",
"resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-6.1.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.2.5.tgz",
"integrity": "sha512-hJxaiE6WyNOsK+fZpbFh9CUijZYqPQuAOWO5khaGTUkM8DYNNyA2TDlgamecE+qLOG1G1+CwbWMAx3rbqpp6xQ==", "integrity": "sha512-QL/LvDol/PAGB2O0S7/+q2HpSUNodpw7z6nGn9BfoVCPOZ0r4EALrojFU29Bkoi2Hr2jgTocTejJ5GGWZfOxbQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@rollup/pluginutils": "^3.1.0", "@rollup/pluginutils": "^3.1.0",
@@ -262,9 +284,9 @@
"dev": true "dev": true
}, },
"buffer-from": { "buffer-from": {
"version": "1.1.1", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true "dev": true
}, },
"commander": { "commander": {
@@ -280,9 +302,9 @@
"dev": true "dev": true
}, },
"fsevents": { "fsevents": {
"version": "2.1.3", "version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
@@ -302,30 +324,30 @@
} }
}, },
"is-core-module": { "is-core-module": {
"version": "2.1.0", "version": "2.6.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
"integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"has": "^1.0.3" "has": "^1.0.3"
} }
}, },
"path-parse": { "path-parse": {
"version": "1.0.6", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true "dev": true
}, },
"picomatch": { "picomatch": {
"version": "2.2.2", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
"dev": true "dev": true
}, },
"preact": { "preact": {
"version": "10.5.5", "version": "10.5.14",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.5.5.tgz", "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.14.tgz",
"integrity": "sha512-5ONLNH1SXMzzbQoExZX4TELemNt+TEDb622xXFNfZngjjM9qtrzseJt+EfiUu4TZ6EJ95X5sE1ES4yqHFSIdhg==" "integrity": "sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ=="
}, },
"requirejs": { "requirejs": {
"version": "2.3.6", "version": "2.3.6",
@@ -334,22 +356,22 @@
"dev": true "dev": true
}, },
"resolve": { "resolve": {
"version": "1.18.1", "version": "1.20.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
"integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
"dev": true, "dev": true,
"requires": { "requires": {
"is-core-module": "^2.0.0", "is-core-module": "^2.2.0",
"path-parse": "^1.0.6" "path-parse": "^1.0.6"
} }
}, },
"rollup": { "rollup": {
"version": "2.33.1", "version": "2.56.2",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.2.tgz",
"integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", "integrity": "sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"fsevents": "~2.1.2" "fsevents": "~2.3.2"
} }
}, },
"source-map": { "source-map": {
@@ -377,9 +399,9 @@
} }
}, },
"terser": { "terser": {
"version": "5.3.8", "version": "5.7.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz",
"integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==",
"dev": true, "dev": true,
"requires": { "requires": {
"commander": "^2.20.0", "commander": "^2.20.0",
@@ -388,14 +410,14 @@
} }
}, },
"tslib": { "tslib": {
"version": "2.0.3", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
}, },
"typescript": { "typescript": {
"version": "4.0.5", "version": "4.3.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
"integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==", "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
"dev": true "dev": true
} }
} }

View File

@@ -9,7 +9,7 @@
"tslib": "^2.0.3" "tslib": "^2.0.3"
}, },
"devDependencies": { "devDependencies": {
"@rollup/plugin-typescript": "^6.1.0", "@rollup/plugin-typescript": "^8.2.5",
"requirejs": "^2.3.6", "requirejs": "^2.3.6",
"rollup": "^2.33.1", "rollup": "^2.33.1",
"terser": "^5.3.8", "terser": "^5.3.8",

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=north": {
"model": "computercraft:block/speaker"
},
"facing=south": {
"model": "computercraft:block/speaker",
"y": 180
},
"facing=west": {
"model": "computercraft:block/speaker",
"y": 270
},
"facing=east": {
"model": "computercraft:block/speaker",
"y": 90
}
}
}

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=north": {
"model": "computercraft:block/turtle_advanced"
},
"facing=south": {
"model": "computercraft:block/turtle_advanced",
"y": 180
},
"facing=west": {
"model": "computercraft:block/turtle_advanced",
"y": 270
},
"facing=east": {
"model": "computercraft:block/turtle_advanced",
"y": 90
}
}
}

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=north": {
"model": "computercraft:block/turtle_normal"
},
"facing=south": {
"model": "computercraft:block/turtle_normal",
"y": 180
},
"facing=west": {
"model": "computercraft:block/turtle_normal",
"y": 270
},
"facing=east": {
"model": "computercraft:block/turtle_normal",
"y": 90
}
}
}

View File

@@ -0,0 +1,16 @@
{
"variants": {
"modem=false,peripheral=false": {
"model": "computercraft:block/wired_modem_full_off"
},
"modem=true,peripheral=false": {
"model": "computercraft:block/wired_modem_full_on"
},
"modem=false,peripheral=true": {
"model": "computercraft:block/wired_modem_full_off_peripheral"
},
"modem=true,peripheral=true": {
"model": "computercraft:block/wired_modem_full_on_peripheral"
}
}
}

View File

@@ -0,0 +1,54 @@
{
"variants": {
"facing=down,on=false": {
"model": "computercraft:block/wireless_modem_advanced_off",
"x": 90,
"y": 90
},
"facing=up,on=false": {
"model": "computercraft:block/wireless_modem_advanced_off",
"x": 270,
"y": 90
},
"facing=north,on=false": {
"model": "computercraft:block/wireless_modem_advanced_off"
},
"facing=south,on=false": {
"model": "computercraft:block/wireless_modem_advanced_off",
"y": 180
},
"facing=west,on=false": {
"model": "computercraft:block/wireless_modem_advanced_off",
"y": 270
},
"facing=east,on=false": {
"model": "computercraft:block/wireless_modem_advanced_off",
"y": 90
},
"facing=down,on=true": {
"model": "computercraft:block/wireless_modem_advanced_on",
"x": 90,
"y": 90
},
"facing=up,on=true": {
"model": "computercraft:block/wireless_modem_advanced_on",
"x": 270,
"y": 90
},
"facing=north,on=true": {
"model": "computercraft:block/wireless_modem_advanced_on"
},
"facing=south,on=true": {
"model": "computercraft:block/wireless_modem_advanced_on",
"y": 180
},
"facing=west,on=true": {
"model": "computercraft:block/wireless_modem_advanced_on",
"y": 270
},
"facing=east,on=true": {
"model": "computercraft:block/wireless_modem_advanced_on",
"y": 90
}
}
}

View File

@@ -0,0 +1,54 @@
{
"variants": {
"facing=down,on=false": {
"model": "computercraft:block/wireless_modem_normal_off",
"x": 90,
"y": 90
},
"facing=up,on=false": {
"model": "computercraft:block/wireless_modem_normal_off",
"x": 270,
"y": 90
},
"facing=north,on=false": {
"model": "computercraft:block/wireless_modem_normal_off"
},
"facing=south,on=false": {
"model": "computercraft:block/wireless_modem_normal_off",
"y": 180
},
"facing=west,on=false": {
"model": "computercraft:block/wireless_modem_normal_off",
"y": 270
},
"facing=east,on=false": {
"model": "computercraft:block/wireless_modem_normal_off",
"y": 90
},
"facing=down,on=true": {
"model": "computercraft:block/wireless_modem_normal_on",
"x": 90,
"y": 90
},
"facing=up,on=true": {
"model": "computercraft:block/wireless_modem_normal_on",
"x": 270,
"y": 90
},
"facing=north,on=true": {
"model": "computercraft:block/wireless_modem_normal_on"
},
"facing=south,on=true": {
"model": "computercraft:block/wireless_modem_normal_on",
"y": 180
},
"facing=west,on=true": {
"model": "computercraft:block/wireless_modem_normal_on",
"y": 270
},
"facing=east,on=true": {
"model": "computercraft:block/wireless_modem_normal_on",
"y": 90
}
}
}

View File

@@ -1,8 +1,8 @@
{ {
"parent": "block/orientable", "parent": "minecraft:block/orientable",
"textures": { "textures": {
"top": "computercraft:block/computer_advanced_top",
"side": "computercraft:block/computer_advanced_side", "side": "computercraft:block/computer_advanced_side",
"front": "computercraft:block/computer_advanced_front_blink" "front": "computercraft:block/computer_advanced_front_blink",
"top": "computercraft:block/computer_advanced_top"
} }
} }

View File

@@ -1,8 +1,8 @@
{ {
"parent": "block/orientable", "parent": "minecraft:block/orientable",
"textures": { "textures": {
"top": "computercraft:block/computer_advanced_top",
"side": "computercraft:block/computer_advanced_side", "side": "computercraft:block/computer_advanced_side",
"front": "computercraft:block/computer_advanced_front" "front": "computercraft:block/computer_advanced_front",
"top": "computercraft:block/computer_advanced_top"
} }
} }

View File

@@ -1,8 +1,8 @@
{ {
"parent": "block/orientable", "parent": "minecraft:block/orientable",
"textures": { "textures": {
"top": "computercraft:block/computer_advanced_top",
"side": "computercraft:block/computer_advanced_side", "side": "computercraft:block/computer_advanced_side",
"front": "computercraft:block/computer_advanced_front_on" "front": "computercraft:block/computer_advanced_front_on",
"top": "computercraft:block/computer_advanced_top"
} }
} }

View File

@@ -1,8 +1,8 @@
{ {
"parent": "block/orientable", "parent": "minecraft:block/orientable",
"textures": { "textures": {
"top": "computercraft:block/computer_command_top",
"side": "computercraft:block/computer_command_side", "side": "computercraft:block/computer_command_side",
"front": "computercraft:block/computer_command_front_blink" "front": "computercraft:block/computer_command_front_blink",
"top": "computercraft:block/computer_command_top"
} }
} }

View File

@@ -1,8 +1,8 @@
{ {
"parent": "block/orientable", "parent": "minecraft:block/orientable",
"textures": { "textures": {
"top": "computercraft:block/computer_command_top",
"side": "computercraft:block/computer_command_side", "side": "computercraft:block/computer_command_side",
"front": "computercraft:block/computer_command_front" "front": "computercraft:block/computer_command_front",
"top": "computercraft:block/computer_command_top"
} }
} }

View File

@@ -1,8 +1,8 @@
{ {
"parent": "block/orientable", "parent": "minecraft:block/orientable",
"textures": { "textures": {
"top": "computercraft:block/computer_command_top",
"side": "computercraft:block/computer_command_side", "side": "computercraft:block/computer_command_side",
"front": "computercraft:block/computer_command_front_on" "front": "computercraft:block/computer_command_front_on",
"top": "computercraft:block/computer_command_top"
} }
} }

View File

@@ -1,8 +1,8 @@
{ {
"parent": "block/orientable", "parent": "minecraft:block/orientable",
"textures": { "textures": {
"top": "computercraft:block/computer_normal_top",
"side": "computercraft:block/computer_normal_side", "side": "computercraft:block/computer_normal_side",
"front": "computercraft:block/computer_normal_front_blink" "front": "computercraft:block/computer_normal_front_blink",
"top": "computercraft:block/computer_normal_top"
} }
} }

View File

@@ -1,8 +1,8 @@
{ {
"parent": "block/orientable", "parent": "minecraft:block/orientable",
"textures": { "textures": {
"top": "computercraft:block/computer_normal_top",
"side": "computercraft:block/computer_normal_side", "side": "computercraft:block/computer_normal_side",
"front": "computercraft:block/computer_normal_front" "front": "computercraft:block/computer_normal_front",
"top": "computercraft:block/computer_normal_top"
} }
} }

View File

@@ -1,8 +1,8 @@
{ {
"parent": "block/orientable", "parent": "minecraft:block/orientable",
"textures": { "textures": {
"top": "computercraft:block/computer_normal_top",
"side": "computercraft:block/computer_normal_side", "side": "computercraft:block/computer_normal_side",
"front": "computercraft:block/computer_normal_front_on" "front": "computercraft:block/computer_normal_front_on",
"top": "computercraft:block/computer_normal_top"
} }
} }

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"side": "computercraft:block/monitor_advanced_4",
"front": "computercraft:block/monitor_advanced_15",
"top": "computercraft:block/monitor_advanced_0"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"side": "computercraft:block/monitor_normal_4",
"front": "computercraft:block/monitor_normal_15",
"top": "computercraft:block/monitor_normal_0"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"side": "computercraft:block/speaker_side",
"front": "computercraft:block/speaker_front",
"top": "computercraft:block/speaker_top"
}
}

View File

@@ -0,0 +1,4 @@
{
"loader": "computercraft:turtle",
"model": "computercraft:block/turtle_advanced_base"
}

View File

@@ -0,0 +1,6 @@
{
"parent": "computercraft:block/turtle_base",
"textures": {
"texture": "computercraft:block/turtle_advanced"
}
}

View File

@@ -0,0 +1,4 @@
{
"loader": "computercraft:turtle",
"model": "computercraft:block/turtle_normal_base"
}

View File

@@ -0,0 +1,6 @@
{
"parent": "computercraft:block/turtle_base",
"textures": {
"texture": "computercraft:block/turtle_normal"
}
}

View File

@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "computercraft:block/wired_modem_face"
}
}

View File

@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "computercraft:block/wired_modem_face_peripheral"
}
}

View File

@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "computercraft:block/wired_modem_face_on"
}
}

View File

@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "computercraft:block/wired_modem_face_peripheral_on"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "computercraft:block/modem",
"textures": {
"front": "computercraft:block/wired_modem_face",
"back": "computercraft:block/modem_back"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "computercraft:block/modem",
"textures": {
"front": "computercraft:block/wired_modem_face_peripheral",
"back": "computercraft:block/modem_back"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "computercraft:block/modem",
"textures": {
"front": "computercraft:block/wired_modem_face_on",
"back": "computercraft:block/modem_back"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "computercraft:block/modem",
"textures": {
"front": "computercraft:block/wired_modem_face_peripheral_on",
"back": "computercraft:block/modem_back"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "computercraft:block/modem",
"textures": {
"front": "computercraft:block/wireless_modem_advanced_face",
"back": "computercraft:block/modem_back"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "computercraft:block/modem",
"textures": {
"front": "computercraft:block/wireless_modem_advanced_face_on",
"back": "computercraft:block/modem_back"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "computercraft:block/modem",
"textures": {
"front": "computercraft:block/wireless_modem_normal_face",
"back": "computercraft:block/modem_back"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "computercraft:block/modem",
"textures": {
"front": "computercraft:block/wireless_modem_normal_face_on",
"back": "computercraft:block/modem_back"
}
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/computer_advanced_blinking"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/computer_command_blinking"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/computer_normal_blinking"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/monitor_advanced_item"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/monitor_normal_item"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/speaker"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/turtle_advanced"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/turtle_normal"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/wired_modem_off"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/wired_modem_full_off"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/wireless_modem_advanced_off"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "computercraft:block/wireless_modem_normal_off"
}

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "minecraft:redstone" "items": [
"minecraft:redstone"
]
}, },
{ {
"item": "minecraft:gold_ingot" "items": [
"minecraft:gold_ingot"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "minecraft:command_block" "items": [
"minecraft:command_block"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,7 +11,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:disk_drive" "items": [
"computercraft:disk_drive"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:pocket_computer_advanced" "items": [
"computercraft:pocket_computer_advanced"
]
}, },
{ {
"item": "computercraft:speaker" "items": [
"computercraft:speaker"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:pocket_computer_advanced" "items": [
"computercraft:pocket_computer_advanced"
]
}, },
{ {
"item": "computercraft:wireless_modem_advanced" "items": [
"computercraft:wireless_modem_advanced"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:pocket_computer_advanced" "items": [
"computercraft:pocket_computer_advanced"
]
}, },
{ {
"item": "computercraft:wireless_modem_normal" "items": [
"computercraft:wireless_modem_normal"
]
} }
] ]
} }

View File

@@ -21,7 +21,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "minecraft:golden_apple" "items": [
"minecraft:golden_apple"
]
} }
] ]
} }

View File

@@ -21,7 +21,9 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "minecraft:golden_apple" "items": [
"minecraft:golden_apple"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:pocket_computer_normal" "items": [
"computercraft:pocket_computer_normal"
]
}, },
{ {
"item": "computercraft:speaker" "items": [
"computercraft:speaker"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:pocket_computer_normal" "items": [
"computercraft:pocket_computer_normal"
]
}, },
{ {
"item": "computercraft:wireless_modem_advanced" "items": [
"computercraft:wireless_modem_advanced"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:pocket_computer_normal" "items": [
"computercraft:pocket_computer_normal"
]
}, },
{ {
"item": "computercraft:wireless_modem_normal" "items": [
"computercraft:wireless_modem_normal"
]
} }
] ]
} }

View File

@@ -0,0 +1,34 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"computercraft:printed_book"
]
},
"criteria": {
"has_printer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"computercraft:printer"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "computercraft:printed_book"
}
}
},
"requirements": [
[
"has_printer",
"has_the_recipe"
]
]
}

View File

@@ -0,0 +1,34 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"computercraft:printed_pages"
]
},
"criteria": {
"has_printer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"computercraft:printer"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "computercraft:printed_pages"
}
}
},
"requirements": [
[
"has_printer",
"has_the_recipe"
]
]
}

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_advanced" "items": [
"computercraft:turtle_advanced"
]
}, },
{ {
"item": "computercraft:speaker" "items": [
"computercraft:speaker"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_advanced" "items": [
"computercraft:turtle_advanced"
]
}, },
{ {
"item": "computercraft:wireless_modem_advanced" "items": [
"computercraft:wireless_modem_advanced"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_advanced" "items": [
"computercraft:turtle_advanced"
]
}, },
{ {
"item": "computercraft:wireless_modem_normal" "items": [
"computercraft:wireless_modem_normal"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_advanced" "items": [
"computercraft:turtle_advanced"
]
}, },
{ {
"item": "minecraft:crafting_table" "items": [
"minecraft:crafting_table"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_advanced" "items": [
"computercraft:turtle_advanced"
]
}, },
{ {
"item": "minecraft:diamond_axe" "items": [
"minecraft:diamond_axe"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_advanced" "items": [
"computercraft:turtle_advanced"
]
}, },
{ {
"item": "minecraft:diamond_hoe" "items": [
"minecraft:diamond_hoe"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_advanced" "items": [
"computercraft:turtle_advanced"
]
}, },
{ {
"item": "minecraft:diamond_pickaxe" "items": [
"minecraft:diamond_pickaxe"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_advanced" "items": [
"computercraft:turtle_advanced"
]
}, },
{ {
"item": "minecraft:diamond_shovel" "items": [
"minecraft:diamond_shovel"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_advanced" "items": [
"computercraft:turtle_advanced"
]
}, },
{ {
"item": "minecraft:diamond_sword" "items": [
"minecraft:diamond_sword"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_normal" "items": [
"computercraft:turtle_normal"
]
}, },
{ {
"item": "computercraft:speaker" "items": [
"computercraft:speaker"
]
} }
] ]
} }

View File

@@ -11,10 +11,14 @@
"conditions": { "conditions": {
"items": [ "items": [
{ {
"item": "computercraft:turtle_normal" "items": [
"computercraft:turtle_normal"
]
}, },
{ {
"item": "computercraft:wireless_modem_advanced" "items": [
"computercraft:wireless_modem_advanced"
]
} }
] ]
} }

Some files were not shown because too many files have changed in this diff Show More