2023-03-15 21:52:13 +00:00
|
|
|
# SPDX-FileCopyrightText: 2022 The CC: Tweaked Developers
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: MPL-2.0
|
|
|
|
|
2022-10-21 23:10:18 +01:00
|
|
|
[versions]
|
2022-10-22 21:09:08 +01:00
|
|
|
|
|
|
|
# Minecraft
|
|
|
|
# MC version is specified in gradle.properties, as we need that in settings.gradle.
|
2024-04-26 17:57:20 +01:00
|
|
|
# Remember to update corresponding versions in fabric.mod.json/neoforge.mods.toml
|
2024-08-14 18:38:07 +01:00
|
|
|
fabric-api = "0.102.1+1.21.1"
|
Update to Minecraft 1.21
API Changes:
- Minecraft had updated ModelResourceLocation to no longer inherit from
ResourceLocation.
To allow referencing both already baked models
(ModelResourceLocation) and loading new models (via ResourceLocation)
in turtle model loadders, we add a new "ModelLocation" class, that
acts as a union between the two.
I'm not entirely convinced by the design here, so might end up
changing again before a stable release.o
- Merge IMedia.getAudioTitle and IMedia.getAudio into a single
IMedia.getAudio method, which now returns a JukeboxSong rather than a
SoundEvent.
Other update notes:
- Minecraft had rewritten how buffers are managed again. This is a
fairly minor change for us (vertex -> addVertex, normal -> setNormal,
etc...), with the exception that you can no longer use
MultiBufferSource.immediate with the tesselator.
I've replaced this with GuiGraphics.bufferSource, which appears to be
fine, but worth keeping an eye on in case there's any odd render
state issues.
- Crafting now uses a CraftingInput (a list of items) rather than a
CraftingContainer, which allows us to simplify turtle crafting code.
2024-06-22 16:19:59 +01:00
|
|
|
fabric-loader = "0.15.11"
|
2024-08-14 18:38:07 +01:00
|
|
|
neoForge = "21.1.9"
|
2024-01-31 20:55:14 +00:00
|
|
|
neoForgeSpi = "8.0.1"
|
2022-11-10 19:32:13 +00:00
|
|
|
mixin = "0.8.5"
|
2024-07-28 16:47:41 +01:00
|
|
|
parchment = "2024.07.28"
|
|
|
|
parchmentMc = "1.21"
|
2024-08-14 18:38:07 +01:00
|
|
|
yarn = "1.21.1+build.1"
|
2022-10-22 21:09:08 +01:00
|
|
|
|
2023-12-19 18:12:21 +00:00
|
|
|
# Core dependencies (these versions are tied to the version Minecraft uses)
|
2024-01-31 20:55:14 +00:00
|
|
|
fastutil = "8.5.12"
|
|
|
|
guava = "32.1.2-jre"
|
|
|
|
netty = "4.1.97.Final"
|
2024-04-25 21:32:48 +01:00
|
|
|
slf4j = "2.0.9"
|
2023-12-19 18:12:21 +00:00
|
|
|
|
|
|
|
# Core dependencies (independent of Minecraft)
|
|
|
|
asm = "9.6"
|
|
|
|
autoService = "1.1.1"
|
|
|
|
checkerFramework = "3.42.0"
|
2024-11-12 21:11:22 +00:00
|
|
|
cobalt = { strictly = "0.9.5" }
|
2023-12-19 18:12:21 +00:00
|
|
|
commonsCli = "1.6.0"
|
|
|
|
jetbrainsAnnotations = "24.1.0"
|
2022-11-04 21:41:59 +00:00
|
|
|
jsr305 = "3.0.2"
|
2023-03-29 09:30:29 +01:00
|
|
|
jzlib = "1.1.3"
|
2025-01-12 18:26:51 +00:00
|
|
|
kotlin = "2.1.0"
|
|
|
|
kotlin-coroutines = "1.10.1"
|
|
|
|
nightConfig = "3.8.1"
|
2022-10-21 23:10:18 +01:00
|
|
|
|
2022-11-08 16:43:27 +00:00
|
|
|
# Minecraft mods
|
Update to Minecraft 1.21
API Changes:
- Minecraft had updated ModelResourceLocation to no longer inherit from
ResourceLocation.
To allow referencing both already baked models
(ModelResourceLocation) and loading new models (via ResourceLocation)
in turtle model loadders, we add a new "ModelLocation" class, that
acts as a union between the two.
I'm not entirely convinced by the design here, so might end up
changing again before a stable release.o
- Merge IMedia.getAudioTitle and IMedia.getAudio into a single
IMedia.getAudio method, which now returns a JukeboxSong rather than a
SoundEvent.
Other update notes:
- Minecraft had rewritten how buffers are managed again. This is a
fairly minor change for us (vertex -> addVertex, normal -> setNormal,
etc...), with the exception that you can no longer use
MultiBufferSource.immediate with the tesselator.
I've replaced this with GuiGraphics.bufferSource, which appears to be
fine, but worth keeping an eye on in case there's any odd render
state issues.
- Crafting now uses a CraftingInput (a list of items) rather than a
CraftingContainer, which allows us to simplify turtle crafting code.
2024-06-22 16:19:59 +01:00
|
|
|
emi = "1.1.7+1.21"
|
2024-05-07 22:58:25 +01:00
|
|
|
fabricPermissions = "0.3.1"
|
2024-09-11 20:07:12 +01:00
|
|
|
iris-fabric = "1.8.0-beta.3+1.21-fabric"
|
|
|
|
iris-forge = "1.8.0-beta.3+1.21-neoforge"
|
2024-08-19 18:28:59 +01:00
|
|
|
jei = "19.8.2.99"
|
Update to Minecraft 1.21
API Changes:
- Minecraft had updated ModelResourceLocation to no longer inherit from
ResourceLocation.
To allow referencing both already baked models
(ModelResourceLocation) and loading new models (via ResourceLocation)
in turtle model loadders, we add a new "ModelLocation" class, that
acts as a union between the two.
I'm not entirely convinced by the design here, so might end up
changing again before a stable release.o
- Merge IMedia.getAudioTitle and IMedia.getAudio into a single
IMedia.getAudio method, which now returns a JukeboxSong rather than a
SoundEvent.
Other update notes:
- Minecraft had rewritten how buffers are managed again. This is a
fairly minor change for us (vertex -> addVertex, normal -> setNormal,
etc...), with the exception that you can no longer use
MultiBufferSource.immediate with the tesselator.
I've replaced this with GuiGraphics.bufferSource, which appears to be
fine, but worth keeping an eye on in case there's any odd render
state issues.
- Crafting now uses a CraftingInput (a list of items) rather than a
CraftingContainer, which allows us to simplify turtle crafting code.
2024-06-22 16:19:59 +01:00
|
|
|
modmenu = "11.0.0-rc.4"
|
2023-08-28 00:04:46 +01:00
|
|
|
moreRed = "4.0.0.4"
|
Update to Minecraft 1.21
API Changes:
- Minecraft had updated ModelResourceLocation to no longer inherit from
ResourceLocation.
To allow referencing both already baked models
(ModelResourceLocation) and loading new models (via ResourceLocation)
in turtle model loadders, we add a new "ModelLocation" class, that
acts as a union between the two.
I'm not entirely convinced by the design here, so might end up
changing again before a stable release.o
- Merge IMedia.getAudioTitle and IMedia.getAudio into a single
IMedia.getAudio method, which now returns a JukeboxSong rather than a
SoundEvent.
Other update notes:
- Minecraft had rewritten how buffers are managed again. This is a
fairly minor change for us (vertex -> addVertex, normal -> setNormal,
etc...), with the exception that you can no longer use
MultiBufferSource.immediate with the tesselator.
I've replaced this with GuiGraphics.bufferSource, which appears to be
fine, but worth keeping an eye on in case there's any odd render
state issues.
- Crafting now uses a CraftingInput (a list of items) rather than a
CraftingContainer, which allows us to simplify turtle crafting code.
2024-06-22 16:19:59 +01:00
|
|
|
rei = "16.0.729"
|
2024-09-11 20:07:12 +01:00
|
|
|
sodium-fabric = "mc1.21-0.6.0-beta.1-fabric"
|
|
|
|
sodium-forge = "mc1.21-0.6.0-beta.1-neoforge"
|
2024-04-25 21:32:48 +01:00
|
|
|
mixinExtra = "0.3.5"
|
2024-07-26 18:28:13 +01:00
|
|
|
create-forge = "0.5.1.f-33"
|
|
|
|
create-fabric = "0.5.1-f-build.1467+mc1.20.1"
|
2022-11-08 16:43:27 +00:00
|
|
|
|
2022-10-21 23:10:18 +01:00
|
|
|
# Testing
|
|
|
|
hamcrest = "2.2"
|
2023-12-19 18:12:21 +00:00
|
|
|
jqwik = "1.8.2"
|
2025-01-13 21:54:20 +00:00
|
|
|
junit = "5.11.4"
|
|
|
|
junitPlatform = "1.11.4"
|
2024-02-24 14:52:44 +00:00
|
|
|
jmh = "1.37"
|
2022-10-21 23:10:18 +01:00
|
|
|
|
2022-10-22 17:47:39 +01:00
|
|
|
# Build tools
|
2024-11-12 09:05:27 +00:00
|
|
|
cctJavadoc = "1.8.3"
|
2024-11-15 09:25:10 +00:00
|
|
|
checkstyle = "10.20.1"
|
2024-04-28 18:32:19 +01:00
|
|
|
errorProne-core = "2.27.0"
|
2023-08-31 19:14:37 +01:00
|
|
|
errorProne-plugin = "3.1.0"
|
2025-01-12 18:26:51 +00:00
|
|
|
fabric-loom = "1.9.2"
|
2023-12-19 18:12:21 +00:00
|
|
|
githubRelease = "2.5.2"
|
|
|
|
gradleVersions = "0.50.0"
|
2023-08-31 19:14:37 +01:00
|
|
|
ideaExt = "1.1.7"
|
2024-10-27 10:01:29 +00:00
|
|
|
illuaminate = "0.1.0-74-gf1551d5"
|
2023-12-19 18:12:21 +00:00
|
|
|
lwjgl = "3.3.3"
|
2024-01-31 20:55:14 +00:00
|
|
|
minotaur = "2.8.7"
|
Clean up Javadocs a little
I've no motivation for modding right now, but always got time for build
system busywork!
CC:T (and CC before that) has always published its API docs. However,
they're not always the most helpful — they're useful if you know what
you're looking for, but aren't a good getting-started guide.
Part of the issue here is there's no examples, and everything is
described pretty abstractly. I have occasionally tried to improve this
(e.g. the peripheral docs in bdffabc08e2eb9895f966c949acc8334a2bf4475),
but it's a long road.
This commit adds a new example mod, which registers peripherals, an API
and a turtle upgrade. While the mod itself isn't exported as part of the
docs, we reference blocks of it using Java's new {@snippet} tag.
- Switch the Forge project to use NeoForge's new Legacy MDG plugin. We
don't *need* to do this, but it means the build logic for Forge and
NeoForge is more closely aligned.
- Add a new SnippetTaglet, which is a partial backport of Java 18+'s
{@snippet}.
- Add an example mod. This is a working multi-loader mod, complete with
datagen (albeit with no good multi-loader abstractions).
- Move our existing <pre>{@code ...}</pre> blocks into the example mod,
replacing them with {@snippet}s.
- Add a new overview page to the docs, providing some getting-started
information. We had this already in the dan200.computercraft.api
package docs, but it's not especially visible there.
2025-01-09 20:47:51 +00:00
|
|
|
modDevGradle = "2.0.74"
|
2024-04-06 08:38:44 +01:00
|
|
|
nullAway = "0.10.25"
|
2024-09-11 18:00:11 +01:00
|
|
|
shadow = "8.3.1"
|
2023-12-19 18:12:21 +00:00
|
|
|
spotless = "6.23.3"
|
2023-03-14 18:41:31 +00:00
|
|
|
taskTree = "2.1.1"
|
2024-06-26 18:07:56 +01:00
|
|
|
teavm = "0.11.0-SQUID.1"
|
2025-01-12 18:26:51 +00:00
|
|
|
vanillaExtract = "0.2.0"
|
2023-12-19 18:12:21 +00:00
|
|
|
versionCatalogUpdate = "0.8.1"
|
2022-10-22 17:47:39 +01:00
|
|
|
|
2022-10-21 23:10:18 +01:00
|
|
|
[libraries]
|
2022-11-08 16:43:27 +00:00
|
|
|
# Normal dependencies
|
2022-11-04 21:41:59 +00:00
|
|
|
asm = { module = "org.ow2.asm:asm", version.ref = "asm" }
|
2023-10-03 09:19:19 +01:00
|
|
|
asm-commons = { module = "org.ow2.asm:asm-commons", version.ref = "asm" }
|
2022-10-21 23:10:18 +01:00
|
|
|
autoService = { module = "com.google.auto.service:auto-service", version.ref = "autoService" }
|
2022-11-04 21:41:59 +00:00
|
|
|
checkerFramework = { module = "org.checkerframework:checker-qual", version.ref = "checkerFramework" }
|
2023-11-08 18:42:17 +00:00
|
|
|
cobalt = { module = "cc.tweaked:cobalt", version.ref = "cobalt" }
|
Add a standalone CC:T UI
Does it count as an emulator when it's official? I hope not, as this'd
make it my fourth or fifth emulator at this point.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Developing/debugging CraftOS is a massive pain to do inside Minecraft,
as any change to resources requires a compile+hot swap cycle (and
sometimes a `/reload` in-game). As such, it's often more convenient to
spin up an emulator, pointing it to load the ROM from CC:T's sources.
However, this isn't practical when also making changes to the Java
classes. In this case, we either need to go in-game, or build a custom
version of CCEmuX.
This commit offers an alternative option: we now have our own emulator,
which allows us to hot swap both Lua and Java to our heart's content.
Most of the code here is based on our monitor TBO renderer. We probably
could share some more of this, but there's not really a good place for
it - feels a bit weird just to chuck it in :core.
This is *not* a general-purpose emulator. It's limited in a lot of
ways (won't launch on Mac[^1], no support for multiple computers) - just
stick to what's there already.
[^1]: We require OpenGL 4.5 due to our use of DSA.
2023-10-28 17:55:56 +01:00
|
|
|
commonsCli = { module = "commons-cli:commons-cli", version.ref = "commonsCli" }
|
2022-11-04 21:41:59 +00:00
|
|
|
fastutil = { module = "it.unimi.dsi:fastutil", version.ref = "fastutil" }
|
2024-01-31 20:55:14 +00:00
|
|
|
neoForgeSpi = { module = "net.neoforged:neoforgespi", version.ref = "neoForgeSpi" }
|
2022-11-04 21:41:59 +00:00
|
|
|
guava = { module = "com.google.guava:guava", version.ref = "guava" }
|
2022-10-21 23:50:44 +01:00
|
|
|
jetbrainsAnnotations = { module = "org.jetbrains:annotations", version.ref = "jetbrainsAnnotations" }
|
2022-11-04 21:41:59 +00:00
|
|
|
jsr305 = { module = "com.google.code.findbugs:jsr305", version.ref = "jsr305" }
|
2023-03-29 09:30:29 +01:00
|
|
|
jzlib = { module = "com.jcraft:jzlib", version.ref = "jzlib" }
|
2022-10-21 23:10:18 +01:00
|
|
|
kotlin-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlin-coroutines" }
|
2023-03-29 09:30:29 +01:00
|
|
|
kotlin-platform = { module = "org.jetbrains.kotlin:kotlin-bom", version.ref = "kotlin" }
|
2023-01-17 19:33:49 +00:00
|
|
|
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }
|
2024-09-11 18:00:11 +01:00
|
|
|
netty-codec = { module = "io.netty:netty-codec", version.ref = "netty" }
|
2022-11-04 21:41:59 +00:00
|
|
|
netty-http = { module = "io.netty:netty-codec-http", version.ref = "netty" }
|
2023-06-06 19:58:24 +01:00
|
|
|
netty-proxy = { module = "io.netty:netty-handler-proxy", version.ref = "netty" }
|
2024-09-11 18:00:11 +01:00
|
|
|
netty-socks = { module = "io.netty:netty-codec-socks", version.ref = "netty" }
|
2022-11-09 23:58:56 +00:00
|
|
|
nightConfig-core = { module = "com.electronwill.night-config:core", version.ref = "nightConfig" }
|
|
|
|
nightConfig-toml = { module = "com.electronwill.night-config:toml", version.ref = "nightConfig" }
|
2022-11-04 21:41:59 +00:00
|
|
|
slf4j = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" }
|
2022-10-21 23:10:18 +01:00
|
|
|
|
2022-11-08 16:43:27 +00:00
|
|
|
# Minecraft mods
|
2024-07-26 18:28:13 +01:00
|
|
|
create-fabric = { module = "com.simibubi.create:create-fabric-1.20.1", version.ref = "create-fabric" }
|
|
|
|
create-forge = { module = "com.simibubi.create:create-1.20.1", version.ref = "create-forge" }
|
|
|
|
emi = { module = "dev.emi:emi-xplat-mojmap", version.ref = "emi" }
|
2022-11-10 19:32:13 +00:00
|
|
|
fabric-api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric-api" }
|
2023-10-26 22:06:40 +01:00
|
|
|
fabric-junit = { module = "net.fabricmc:fabric-loader-junit", version.ref = "fabric-loader" }
|
2024-07-26 18:28:13 +01:00
|
|
|
fabric-loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric-loader" }
|
2023-08-27 12:15:55 +01:00
|
|
|
fabricPermissions = { module = "me.lucko:fabric-permissions-api", version.ref = "fabricPermissions" }
|
2024-09-11 20:07:12 +01:00
|
|
|
iris-fabric = { module = "maven.modrinth:iris", version.ref = "iris-fabric" }
|
|
|
|
iris-forge = { module = "maven.modrinth:iris", version.ref = "iris-forge" }
|
Update to Minecraft 1.21
API Changes:
- Minecraft had updated ModelResourceLocation to no longer inherit from
ResourceLocation.
To allow referencing both already baked models
(ModelResourceLocation) and loading new models (via ResourceLocation)
in turtle model loadders, we add a new "ModelLocation" class, that
acts as a union between the two.
I'm not entirely convinced by the design here, so might end up
changing again before a stable release.o
- Merge IMedia.getAudioTitle and IMedia.getAudio into a single
IMedia.getAudio method, which now returns a JukeboxSong rather than a
SoundEvent.
Other update notes:
- Minecraft had rewritten how buffers are managed again. This is a
fairly minor change for us (vertex -> addVertex, normal -> setNormal,
etc...), with the exception that you can no longer use
MultiBufferSource.immediate with the tesselator.
I've replaced this with GuiGraphics.bufferSource, which appears to be
fine, but worth keeping an eye on in case there's any odd render
state issues.
- Crafting now uses a CraftingInput (a list of items) rather than a
CraftingContainer, which allows us to simplify turtle crafting code.
2024-06-22 16:19:59 +01:00
|
|
|
jei-api = { module = "mezz.jei:jei-1.21-common-api", version.ref = "jei" }
|
|
|
|
jei-fabric = { module = "mezz.jei:jei-1.21-fabric", version.ref = "jei" }
|
|
|
|
jei-forge = { module = "mezz.jei:jei-1.21-neoforge", version.ref = "jei" }
|
2022-11-09 23:58:56 +00:00
|
|
|
mixin = { module = "org.spongepowered:mixin", version.ref = "mixin" }
|
2024-04-25 21:32:48 +01:00
|
|
|
mixinExtra = { module = "io.github.llamalad7:mixinextras-common", version.ref = "mixinExtra" }
|
2022-11-20 13:00:43 +00:00
|
|
|
modmenu = { module = "com.terraformersmc:modmenu", version.ref = "modmenu" }
|
2023-08-28 00:04:46 +01:00
|
|
|
moreRed = { module = "commoble.morered:morered-1.20.1", version.ref = "moreRed" }
|
2022-11-10 19:32:13 +00:00
|
|
|
rei-api = { module = "me.shedaniel:RoughlyEnoughItems-api", version.ref = "rei" }
|
|
|
|
rei-builtin = { module = "me.shedaniel:RoughlyEnoughItems-default-plugin", version.ref = "rei" }
|
|
|
|
rei-fabric = { module = "me.shedaniel:RoughlyEnoughItems-fabric", version.ref = "rei" }
|
2024-09-11 20:07:12 +01:00
|
|
|
sodium-fabric = { module = "maven.modrinth:sodium", version.ref = "sodium.fabric" }
|
|
|
|
sodium-forge = { module = "maven.modrinth:sodium", version.ref = "sodium.forge" }
|
2022-11-08 16:43:27 +00:00
|
|
|
|
2022-10-21 23:10:18 +01:00
|
|
|
# Testing
|
|
|
|
hamcrest = { module = "org.hamcrest:hamcrest", version.ref = "hamcrest" }
|
|
|
|
jqwik-api = { module = "net.jqwik:jqwik-api", version.ref = "jqwik" }
|
|
|
|
jqwik-engine = { module = "net.jqwik:jqwik-engine", version.ref = "jqwik" }
|
|
|
|
junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" }
|
|
|
|
junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" }
|
|
|
|
junit-jupiter-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junit" }
|
2025-01-13 21:54:20 +00:00
|
|
|
junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher", version.ref = "junitPlatform" }
|
2022-12-15 17:53:50 +00:00
|
|
|
slf4j-simple = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j" }
|
2024-02-24 14:52:44 +00:00
|
|
|
jmh = { module = "org.openjdk.jmh:jmh-core", version.ref = "jmh" }
|
|
|
|
jmh-processor = { module = "org.openjdk.jmh:jmh-generator-annprocess", version.ref = "jmh" }
|
2022-10-21 23:10:18 +01:00
|
|
|
|
Add a standalone CC:T UI
Does it count as an emulator when it's official? I hope not, as this'd
make it my fourth or fifth emulator at this point.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Developing/debugging CraftOS is a massive pain to do inside Minecraft,
as any change to resources requires a compile+hot swap cycle (and
sometimes a `/reload` in-game). As such, it's often more convenient to
spin up an emulator, pointing it to load the ROM from CC:T's sources.
However, this isn't practical when also making changes to the Java
classes. In this case, we either need to go in-game, or build a custom
version of CCEmuX.
This commit offers an alternative option: we now have our own emulator,
which allows us to hot swap both Lua and Java to our heart's content.
Most of the code here is based on our monitor TBO renderer. We probably
could share some more of this, but there's not really a good place for
it - feels a bit weird just to chuck it in :core.
This is *not* a general-purpose emulator. It's limited in a lot of
ways (won't launch on Mac[^1], no support for multiple computers) - just
stick to what's there already.
[^1]: We require OpenGL 4.5 due to our use of DSA.
2023-10-28 17:55:56 +01:00
|
|
|
# LWJGL
|
|
|
|
lwjgl-bom = { module = "org.lwjgl:lwjgl-bom", version.ref = "lwjgl" }
|
|
|
|
lwjgl-core = { module = "org.lwjgl:lwjgl" }
|
|
|
|
lwjgl-opengl = { module = "org.lwjgl:lwjgl-opengl" }
|
|
|
|
lwjgl-glfw = { module = "org.lwjgl:lwjgl-glfw" }
|
|
|
|
|
2022-10-22 20:47:47 +01:00
|
|
|
# Build tools
|
2022-10-22 21:09:08 +01:00
|
|
|
cctJavadoc = { module = "cc.tweaked:cct-javadoc", version.ref = "cctJavadoc" }
|
2022-10-22 20:47:47 +01:00
|
|
|
checkstyle = { module = "com.puppycrawl.tools:checkstyle", version.ref = "checkstyle" }
|
2022-11-06 10:28:49 +00:00
|
|
|
errorProne-annotations = { module = "com.google.errorprone:error_prone_annotations", version.ref = "errorProne-core" }
|
|
|
|
errorProne-api = { module = "com.google.errorprone:error_prone_check_api", version.ref = "errorProne-core" }
|
|
|
|
errorProne-core = { module = "com.google.errorprone:error_prone_core", version.ref = "errorProne-core" }
|
|
|
|
errorProne-plugin = { module = "net.ltgt.gradle:gradle-errorprone-plugin", version.ref = "errorProne-plugin" }
|
|
|
|
errorProne-testHelpers = { module = "com.google.errorprone:error_prone_test_helpers", version.ref = "errorProne-core" }
|
2022-11-10 19:32:13 +00:00
|
|
|
fabric-loom = { module = "net.fabricmc:fabric-loom", version.ref = "fabric-loom" }
|
2023-10-26 22:06:40 +01:00
|
|
|
ideaExt = { module = "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext", version.ref = "ideaExt" }
|
2022-10-29 18:17:02 +01:00
|
|
|
kotlin-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
|
2023-03-15 23:20:07 +00:00
|
|
|
minotaur = { module = "com.modrinth.minotaur:Minotaur", version.ref = "minotaur" }
|
2022-11-06 10:28:49 +00:00
|
|
|
nullAway = { module = "com.uber.nullaway:nullaway", version.ref = "nullAway" }
|
Clean up Javadocs a little
I've no motivation for modding right now, but always got time for build
system busywork!
CC:T (and CC before that) has always published its API docs. However,
they're not always the most helpful — they're useful if you know what
you're looking for, but aren't a good getting-started guide.
Part of the issue here is there's no examples, and everything is
described pretty abstractly. I have occasionally tried to improve this
(e.g. the peripheral docs in bdffabc08e2eb9895f966c949acc8334a2bf4475),
but it's a long road.
This commit adds a new example mod, which registers peripherals, an API
and a turtle upgrade. While the mod itself isn't exported as part of the
docs, we reference blocks of it using Java's new {@snippet} tag.
- Switch the Forge project to use NeoForge's new Legacy MDG plugin. We
don't *need* to do this, but it means the build logic for Forge and
NeoForge is more closely aligned.
- Add a new SnippetTaglet, which is a partial backport of Java 18+'s
{@snippet}.
- Add an example mod. This is a working multi-loader mod, complete with
datagen (albeit with no good multi-loader abstractions).
- Move our existing <pre>{@code ...}</pre> blocks into the example mod,
replacing them with {@snippet}s.
- Add a new overview page to the docs, providing some getting-started
information. We had this already in the dan200.computercraft.api
package docs, but it's not especially visible there.
2025-01-09 20:47:51 +00:00
|
|
|
modDevGradle = { module = "net.neoforged:moddev-gradle", version.ref = "modDevGradle" }
|
2022-10-22 17:47:39 +01:00
|
|
|
spotless = { module = "com.diffplug.spotless:spotless-plugin-gradle", version.ref = "spotless" }
|
2023-10-03 09:19:19 +01:00
|
|
|
teavm-classlib = { module = "org.teavm:teavm-classlib", version.ref = "teavm" }
|
2024-04-17 21:57:11 +01:00
|
|
|
teavm-core = { module = "org.teavm:teavm-core", version.ref = "teavm" }
|
2023-10-03 09:19:19 +01:00
|
|
|
teavm-jso = { module = "org.teavm:teavm-jso", version.ref = "teavm" }
|
|
|
|
teavm-jso-apis = { module = "org.teavm:teavm-jso-apis", version.ref = "teavm" }
|
|
|
|
teavm-jso-impl = { module = "org.teavm:teavm-jso-impl", version.ref = "teavm" }
|
|
|
|
teavm-metaprogramming-api = { module = "org.teavm:teavm-metaprogramming-api", version.ref = "teavm" }
|
|
|
|
teavm-metaprogramming-impl = { module = "org.teavm:teavm-metaprogramming-impl", version.ref = "teavm" }
|
|
|
|
teavm-platform = { module = "org.teavm:teavm-platform", version.ref = "teavm" }
|
|
|
|
teavm-tooling = { module = "org.teavm:teavm-tooling", version.ref = "teavm" }
|
2024-01-29 20:59:16 +00:00
|
|
|
vanillaExtract = { module = "cc.tweaked.vanilla-extract:plugin", version.ref = "vanillaExtract" }
|
|
|
|
yarn = { module = "net.fabricmc:yarn", version.ref = "yarn" }
|
2022-10-22 17:47:39 +01:00
|
|
|
|
2022-10-22 21:09:08 +01:00
|
|
|
[plugins]
|
2022-11-06 10:28:49 +00:00
|
|
|
githubRelease = { id = "com.github.breadmoirai.github-release", version.ref = "githubRelease" }
|
2023-12-19 18:12:21 +00:00
|
|
|
gradleVersions = { id = "com.github.ben-manes.versions", version.ref = "gradleVersions" }
|
2022-11-06 10:28:49 +00:00
|
|
|
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
|
2024-09-11 18:00:11 +01:00
|
|
|
shadow = { id = "com.gradleup.shadow", version.ref = "shadow" }
|
2022-11-06 10:28:49 +00:00
|
|
|
taskTree = { id = "com.dorongold.task-tree", version.ref = "taskTree" }
|
2023-12-19 18:12:21 +00:00
|
|
|
versionCatalogUpdate = { id = "nl.littlerobots.version-catalog-update", version.ref = "versionCatalogUpdate" }
|
2022-10-22 21:09:08 +01:00
|
|
|
|
2022-10-21 23:10:18 +01:00
|
|
|
[bundles]
|
2023-10-03 09:19:19 +01:00
|
|
|
annotations = ["jsr305", "checkerFramework", "jetbrainsAnnotations"]
|
2022-10-21 23:10:18 +01:00
|
|
|
kotlin = ["kotlin-stdlib", "kotlin-coroutines"]
|
|
|
|
|
2022-11-08 16:43:27 +00:00
|
|
|
# Minecraft
|
2024-09-11 20:07:12 +01:00
|
|
|
externalMods-common = ["iris-forge", "jei-api", "nightConfig-core", "nightConfig-toml"]
|
|
|
|
externalMods-forge-compile = ["moreRed", "iris-forge", "jei-api"]
|
Update to Minecraft 1.21
API Changes:
- Minecraft had updated ModelResourceLocation to no longer inherit from
ResourceLocation.
To allow referencing both already baked models
(ModelResourceLocation) and loading new models (via ResourceLocation)
in turtle model loadders, we add a new "ModelLocation" class, that
acts as a union between the two.
I'm not entirely convinced by the design here, so might end up
changing again before a stable release.o
- Merge IMedia.getAudioTitle and IMedia.getAudio into a single
IMedia.getAudio method, which now returns a JukeboxSong rather than a
SoundEvent.
Other update notes:
- Minecraft had rewritten how buffers are managed again. This is a
fairly minor change for us (vertex -> addVertex, normal -> setNormal,
etc...), with the exception that you can no longer use
MultiBufferSource.immediate with the tesselator.
I've replaced this with GuiGraphics.bufferSource, which appears to be
fine, but worth keeping an eye on in case there's any odd render
state issues.
- Crafting now uses a CraftingInput (a list of items) rather than a
CraftingContainer, which allows us to simplify turtle crafting code.
2024-06-22 16:19:59 +01:00
|
|
|
externalMods-forge-runtime = ["jei-forge"]
|
2024-09-11 20:07:12 +01:00
|
|
|
externalMods-fabric-compile = ["fabricPermissions", "iris-fabric", "jei-api", "rei-api", "rei-builtin"]
|
Update to Minecraft 1.21
API Changes:
- Minecraft had updated ModelResourceLocation to no longer inherit from
ResourceLocation.
To allow referencing both already baked models
(ModelResourceLocation) and loading new models (via ResourceLocation)
in turtle model loadders, we add a new "ModelLocation" class, that
acts as a union between the two.
I'm not entirely convinced by the design here, so might end up
changing again before a stable release.o
- Merge IMedia.getAudioTitle and IMedia.getAudio into a single
IMedia.getAudio method, which now returns a JukeboxSong rather than a
SoundEvent.
Other update notes:
- Minecraft had rewritten how buffers are managed again. This is a
fairly minor change for us (vertex -> addVertex, normal -> setNormal,
etc...), with the exception that you can no longer use
MultiBufferSource.immediate with the tesselator.
I've replaced this with GuiGraphics.bufferSource, which appears to be
fine, but worth keeping an eye on in case there's any odd render
state issues.
- Crafting now uses a CraftingInput (a list of items) rather than a
CraftingContainer, which allows us to simplify turtle crafting code.
2024-06-22 16:19:59 +01:00
|
|
|
externalMods-fabric-runtime = ["jei-fabric", "modmenu"]
|
2022-11-08 16:43:27 +00:00
|
|
|
|
2022-10-21 23:10:18 +01:00
|
|
|
# Testing
|
|
|
|
test = ["junit-jupiter-api", "junit-jupiter-params", "hamcrest", "jqwik-api"]
|
2025-01-13 21:54:20 +00:00
|
|
|
testRuntime = ["junit-jupiter-engine", "junit-platform-launcher", "jqwik-engine"]
|
2023-10-03 09:19:19 +01:00
|
|
|
|
|
|
|
# Build tools
|
2023-12-19 18:12:21 +00:00
|
|
|
teavm-api = ["teavm-jso", "teavm-jso-apis", "teavm-platform", "teavm-classlib", "teavm-metaprogramming-api"]
|
|
|
|
teavm-tooling = ["teavm-tooling", "teavm-metaprogramming-impl", "teavm-jso-impl"]
|