1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-12-25 17:40:30 +00:00
Modernized/improved/actually updated version of ComputerCraft: https://tweaked.cc
Go to file
Jonathan Coates c0643fadca
Build a web-based emulator for the documentation site (#1597)
Historically we've used copy-cat to provide a web-based emulator for
running example code on our documentation site. However, copy-cat is
often out-of-date with CC:T, which means example snippets fail when you
try to run them!

This commit vendors in copy-cat (or rather an updated version of it)
into CC:T itself, allowing us to ensure the emulator is always in sync
with the mod.

While the ARCHITECTURE.md documentation goes into a little bit more
detail here, the general implementation is as follows

 - In project/src/main we implement the core of the emulator. This
   includes a basic reimplementation of some of CC's classes to work on
   the web (mostly the HTTP API and ComputerThread), and some additional
   code to expose the computers to Javascript.

 - This is all then compiled to Javascript using [TeaVM][1] (we actually
   use a [personal fork of it][2] as there's a couple of changes I've
   not upstreamed yet).

 - The Javascript side then pulls in the these compiled classes (and
   the CC ROM) and hooks them up to [cc-web-term][3] to display the
   actual computer.

 - As we're no longer pulling in copy-cat, we can simplify our bundling
   system a little - we now just compile to ESM modules directly.

[1]: https://github.com/konsoletyper/teavm
[2]: https://github.com/SquidDev/teavm/tree/squid-patches
[3]: https://github.com/squiddev-cc/cc-web-term
2023-10-03 09:19:19 +01:00
.github Bump FG and Loom 2023-07-05 20:58:15 +01:00
.reuse Relocate our existing web code to subdirectories 2023-09-28 21:00:07 +01:00
buildSrc Build a web-based emulator for the documentation site (#1597) 2023-10-03 09:19:19 +01:00
config Build a web-based emulator for the documentation site (#1597) 2023-10-03 09:19:19 +01:00
doc Build a web-based emulator for the documentation site (#1597) 2023-10-03 09:19:19 +01:00
gradle Build a web-based emulator for the documentation site (#1597) 2023-10-03 09:19:19 +01:00
LICENSES License CC:T according to the REUSE specification (#1351) 2023-03-15 21:52:13 +00:00
projects Build a web-based emulator for the documentation site (#1597) 2023-10-03 09:19:19 +01:00
tools Generic dependency update 2023-08-31 19:14:37 +01:00
.editorconfig License CC:T according to the REUSE specification (#1351) 2023-03-15 21:52:13 +00:00
.git-blame-ignore-revs License CC:T according to the REUSE specification (#1351) 2023-03-15 21:52:13 +00:00
.gitattributes Force LF for .kts files too 2023-05-17 13:28:03 +01:00
.gitignore Turtle flags 2023-03-31 18:14:44 +01:00
.gitpod.yml Further licensing work 2023-03-29 23:00:18 +01:00
.pre-commit-config.yaml Run checkstyle on all source sets 2023-10-03 09:06:17 +01:00
build.gradle.kts Use method handlees in our generated Lua methods (#1579) 2023-09-03 16:12:37 +00:00
CODE_OF_CONDUCT.md License CC:T according to the REUSE specification (#1351) 2023-03-15 21:52:13 +00:00
CONTRIBUTING.md Run checkstyle on all source sets 2023-10-03 09:06:17 +01:00
gradle.properties Bump CC:T to 1.108.1 2023-09-06 09:51:16 +01:00
gradlew Update to Gradle 8.x 2023-06-29 20:10:17 +01:00
gradlew.bat Update to Gradle 8.x 2023-06-29 20:10:17 +01:00
illuaminate.sexp Build a web-based emulator for the documentation site (#1597) 2023-10-03 09:19:19 +01:00
package-lock.json Build a web-based emulator for the documentation site (#1597) 2023-10-03 09:19:19 +01:00
package.json Build a web-based emulator for the documentation site (#1597) 2023-10-03 09:19:19 +01:00
README.md Add dark-mode compatible logo to README (#1521) 2023-07-18 19:26:45 +00:00
settings.gradle.kts License CC:T according to the REUSE specification (#1351) 2023-03-15 21:52:13 +00:00

CC: Tweaked

Current build status Download CC: Tweaked on CurseForge Download CC: Tweaked on Modrinth

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 improved performance and stability, along with a wealth of new features.

CC: Tweaked can be installed from CurseForge or Modrinth. It runs on both Minecraft Forge and Fabric.

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.

Community

If you need help getting started with CC: Tweaked, want to show off your latest project, or just want to chat about ComputerCraft, do check out our forum and GitHub discussions page! There's also a fairly populated, albeit quiet IRC channel, if that's more your cup of tea.

We also host fairly comprehensive documentation at tweaked.cc.

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.

repositories {
  maven {
    url "https://squiddev.cc/maven/"
    content {
      includeGroup("cc.tweaked")
      includeModule("org.squiddev", "Cobalt")
    }
  }
}

dependencies {
  // Vanilla (i.e. for multi-loader systems)
  compileOnly("cc.tweaked:cc-tweaked-$mcVersion-common-api:$cctVersion")

  // Forge Gradle
  compileOnly("cc.tweaked:cc-tweaked-$mcVersion-core-api:$cctVersion")
  compileOnly(fg.deobf("cc.tweaked:cc-tweaked-$mcVersion-forge-api:$cctVersion"))
  runtimeOnly(fg.deobf("cc.tweaked:cc-tweaked-$mcVersion-forge:$cctVersion"))

  // Fabric Loom
  modCompileOnly("cc.tweaked:cc-tweaked-$mcVersion-fabric-api:$cctVersion")
  modRuntimeOnly("cc.tweaked:cc-tweaked-$mcVersion-fabric:$cctVersion")
}

When using ForgeGradle, you may also need to add the following:

minecraft {
    runs {
        configureEach {
            property 'mixin.env.remapRefMap', 'true'
            property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg"
        }
    }
}

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.