mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-10-23 18:07:39 +00:00
Compare commits
32 Commits
v1.16.5-1.
...
v1.17.1-1.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
af966179ce | ||
![]() |
2418cfb87b | ||
![]() |
095101831c | ||
![]() |
7b7527ec80 | ||
![]() |
a4c5ecf8df | ||
![]() |
99de00e16e | ||
![]() |
600227e481 | ||
![]() |
cf3f1d3d48 | ||
![]() |
bca964629a | ||
![]() |
0e94355a85 | ||
![]() |
0d35331b82 | ||
![]() |
076b454c8f | ||
![]() |
36e0dcbad0 | ||
![]() |
0b5fe990e5 | ||
![]() |
29ece2a6e3 | ||
![]() |
eba26dedab | ||
![]() |
3eb601e554 | ||
![]() |
d0e79f310e | ||
![]() |
0d6528aaf0 | ||
![]() |
b447b0e308 | ||
![]() |
b2273c9b29 | ||
![]() |
bbf3e48763 | ||
![]() |
92fe1d4bc2 | ||
![]() |
4d591c600c | ||
![]() |
0a8e427c61 | ||
![]() |
0a537eaeee | ||
![]() |
aa857c1be3 | ||
![]() |
e4ced551eb | ||
![]() |
6eec9ba1a3 | ||
![]() |
a8f675c59d | ||
![]() |
bb1ebaee4f | ||
![]() |
bb1183d274 |
2
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@@ -8,9 +8,9 @@ body:
|
||||
label: Minecraft Version
|
||||
description: What version of Minecraft are you using?
|
||||
options:
|
||||
- 1.15.x
|
||||
- 1.16.x
|
||||
- 1.17.x
|
||||
- 1.18.x
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
|
94
build.gradle
94
build.gradle
@@ -5,7 +5,7 @@ buildscript {
|
||||
maven { url = 'https://maven.parchmentmc.org' }
|
||||
}
|
||||
dependencies {
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:5.1.+'
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:5.1.24'
|
||||
classpath 'org.parchmentmc:librarian:1.+'
|
||||
}
|
||||
}
|
||||
@@ -29,7 +29,7 @@ version = mod_version
|
||||
group = "org.squiddev"
|
||||
archivesBaseName = "cc-tweaked-${mc_version}"
|
||||
|
||||
def javaVersion = JavaLanguageVersion.of(8)
|
||||
def javaVersion = JavaLanguageVersion.of(16)
|
||||
java {
|
||||
toolchain {
|
||||
languageVersion = javaVersion
|
||||
@@ -46,6 +46,9 @@ tasks.withType(JavaExec).configureEach {
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main.java {
|
||||
exclude 'dan200/computercraft/shared/integration/morered/**'
|
||||
}
|
||||
main.resources {
|
||||
srcDir 'src/generated/resources'
|
||||
}
|
||||
@@ -56,6 +59,10 @@ sourceSets {
|
||||
minecraft {
|
||||
runs {
|
||||
all {
|
||||
lazyToken('minecraft_classpath') {
|
||||
configurations.shade.copyRecursive().resolve().collect { it.absolutePath }.join(File.pathSeparator)
|
||||
}
|
||||
|
||||
property 'forge.logging.markers', 'REGISTRIES'
|
||||
property 'forge.logging.console.level', 'debug'
|
||||
|
||||
@@ -89,6 +96,12 @@ minecraft {
|
||||
source sourceSets.testMod
|
||||
}
|
||||
}
|
||||
|
||||
lazyToken('minecraft_classpath') {
|
||||
(configurations.shade.copyRecursive().resolve() + configurations.testModExtra.copyRecursive().resolve())
|
||||
.collect { it.absolutePath }
|
||||
.join(File.pathSeparator)
|
||||
}
|
||||
}
|
||||
|
||||
testServer {
|
||||
@@ -100,6 +113,12 @@ minecraft {
|
||||
source sourceSets.testMod
|
||||
}
|
||||
}
|
||||
|
||||
lazyToken('minecraft_classpath') {
|
||||
(configurations.shade.copyRecursive().resolve() + configurations.testModExtra.copyRecursive().resolve())
|
||||
.collect { it.absolutePath }
|
||||
.join(File.pathSeparator)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +127,6 @@ minecraft {
|
||||
accessTransformer file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||
accessTransformer file('src/testMod/resources/META-INF/accesstransformer.cfg')
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven {
|
||||
@@ -120,22 +138,23 @@ repositories {
|
||||
configurations {
|
||||
shade
|
||||
implementation.extendsFrom shade
|
||||
|
||||
cctJavadoc
|
||||
|
||||
testModExtra
|
||||
testModImplementation.extendsFrom(testModExtra)
|
||||
testModImplementation.extendsFrom(implementation)
|
||||
testModImplementation.extendsFrom(testImplementation)
|
||||
}
|
||||
|
||||
dependencies {
|
||||
checkstyle "com.puppycrawl.tools:checkstyle:8.25"
|
||||
checkstyle "com.puppycrawl.tools:checkstyle:8.45"
|
||||
|
||||
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("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("mezz.jei:jei-1.17.1:8.0.0.14:api")
|
||||
// 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.17.1:8.0.0.14")
|
||||
|
||||
shade 'org.squiddev:Cobalt:0.5.2-SNAPSHOT'
|
||||
|
||||
@@ -144,10 +163,10 @@ dependencies {
|
||||
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
|
||||
testImplementation 'org.hamcrest:hamcrest:2.2'
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0'
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-reflect:1.6.0'
|
||||
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2'
|
||||
|
||||
testModImplementation sourceSets.main.output
|
||||
testModExtra 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.21'
|
||||
|
||||
cctJavadoc 'cc.tweaked:cct-javadoc:1.4.2'
|
||||
}
|
||||
@@ -175,24 +194,28 @@ task luaJavadoc(type: Javadoc) {
|
||||
options.noTimestamp = false
|
||||
|
||||
javadocTool = javaToolchains.javadocToolFor {
|
||||
languageVersion = JavaLanguageVersion.of(11)
|
||||
languageVersion = javaVersion
|
||||
}
|
||||
}
|
||||
|
||||
jar {
|
||||
manifest {
|
||||
attributes(["Specification-Title" : "computercraft",
|
||||
"Specification-Vendor" : "SquidDev",
|
||||
"Specification-Version" : "1",
|
||||
"Implementation-Title" : "CC: Tweaked",
|
||||
"Implementation-Version" : "${mod_version}",
|
||||
"Implementation-Vendor" : "SquidDev",
|
||||
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")])
|
||||
attributes([
|
||||
"Specification-Title" : "computercraft",
|
||||
"Specification-Vendor" : "SquidDev",
|
||||
"Specification-Version" : "1",
|
||||
"Implementation-Title" : "CC: Tweaked",
|
||||
"Implementation-Version" : "${mod_version}",
|
||||
"Implementation-Vendor" : "SquidDev",
|
||||
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
|
||||
])
|
||||
}
|
||||
|
||||
from configurations.shade.collect { it.isDirectory() ? it : zipTree(it) }
|
||||
}
|
||||
|
||||
jar.finalizedBy('reobfJar')
|
||||
|
||||
[compileJava, compileTestJava, compileTestModJava].forEach {
|
||||
it.configure {
|
||||
options.compilerArgs << "-Xlint" << "-Xlint:-processing"
|
||||
@@ -200,9 +223,6 @@ jar {
|
||||
}
|
||||
|
||||
processResources {
|
||||
inputs.property "version", mod_version
|
||||
inputs.property "mcversion", mc_version
|
||||
|
||||
def hash = 'none'
|
||||
Set<String> contributors = []
|
||||
try {
|
||||
@@ -219,16 +239,14 @@ processResources {
|
||||
duplicatesStrategy = DuplicatesStrategy.INCLUDE
|
||||
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
include 'META-INF/mods.toml'
|
||||
include 'data/computercraft/lua/rom/help/credits.txt'
|
||||
|
||||
expand 'version': mod_version,
|
||||
'mcversion': mc_version,
|
||||
'gitcontributors': contributors.sort(false, String.CASE_INSENSITIVE_ORDER).join('\n')
|
||||
expand(
|
||||
'gitcontributors': contributors.sort(false, String.CASE_INSENSITIVE_ORDER).join('\n')
|
||||
)
|
||||
}
|
||||
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
exclude 'META-INF/mods.toml'
|
||||
exclude 'data/computercraft/lua/rom/help/credits.txt'
|
||||
}
|
||||
}
|
||||
@@ -242,6 +260,7 @@ sourcesJar {
|
||||
|
||||
import com.hierynomus.gradle.license.tasks.LicenseCheck
|
||||
import com.hierynomus.gradle.license.tasks.LicenseFormat
|
||||
import com.modrinth.minotaur.TaskModrinthUpload
|
||||
import org.apache.tools.ant.taskdefs.condition.Os
|
||||
|
||||
List<String> mkCommand(String command) {
|
||||
@@ -458,18 +477,19 @@ task checkRelease {
|
||||
}
|
||||
check.dependsOn checkRelease
|
||||
|
||||
def isStable = false
|
||||
|
||||
curseforge {
|
||||
apiKey = project.hasProperty('curseForgeApiKey') ? project.curseForgeApiKey : ''
|
||||
project {
|
||||
id = '282001'
|
||||
releaseType = 'release'
|
||||
releaseType = isStable ? 'release' : 'alpha'
|
||||
changelog = "Release notes can be found on the GitHub repository (https://github.com/cc-tweaked/CC-Tweaked/releases/tag/v${mc_version}-${mod_version})."
|
||||
|
||||
addGameVersion "${mc_version}"
|
||||
}
|
||||
}
|
||||
|
||||
import com.modrinth.minotaur.TaskModrinthUpload
|
||||
tasks.register('publishModrinth', TaskModrinthUpload.class).configure {
|
||||
dependsOn('assemble', 'reobfJar')
|
||||
onlyIf {
|
||||
@@ -480,6 +500,7 @@ tasks.register('publishModrinth', TaskModrinthUpload.class).configure {
|
||||
projectId = 'gu7yAYhd'
|
||||
versionNumber = "${project.mc_version}-${project.mod_version}"
|
||||
uploadFile = jar
|
||||
versionType = isStable ? 'RELEASE' : 'ALPHA'
|
||||
addGameVersion(project.mc_version)
|
||||
changelog = "Release notes can be found on the [GitHub repository](https://github.com/cc-tweaked/CC-Tweaked/releases/tag/v${mc_version}-${mod_version})."
|
||||
addLoader('forge')
|
||||
@@ -540,12 +561,17 @@ githubRelease {
|
||||
owner 'cc-tweaked'
|
||||
repo 'CC-Tweaked'
|
||||
targetCommitish.set(project.provider({
|
||||
try {
|
||||
return ["git", "-C", projectDir, "rev-parse", "--abbrev-ref", "HEAD"].execute().text.trim()
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace()
|
||||
def cmd = ["git", "rev-parse", "--abbrev-ref", "HEAD"]
|
||||
println(cmd)
|
||||
def proc = cmd.execute([], projectDir)
|
||||
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}"
|
||||
@@ -556,7 +582,7 @@ githubRelease {
|
||||
.takeWhile { it != 'Type "help changelog" to see the full version history.' }
|
||||
.join("\n").trim()
|
||||
}))
|
||||
prerelease false
|
||||
prerelease isStable
|
||||
}
|
||||
|
||||
def uploadTasks = ["publish", "curseforge", "publishModrinth", "githubRelease"]
|
||||
|
@@ -58,13 +58,20 @@
|
||||
<module name="SimplifyBooleanExpression" />
|
||||
<module name="SimplifyBooleanReturn" />
|
||||
<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="UnnecessarySemicolonInTryWithResources" />
|
||||
<module name="UnnecessarySemicolonInEnumeration" />
|
||||
|
||||
<!-- Imports -->
|
||||
<module name="CustomImportOrder" />
|
||||
<module name="CustomImportOrder">
|
||||
<property name="customImportOrderRules"
|
||||
value="THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE###STATIC"
|
||||
/>
|
||||
</module>
|
||||
<module name="IllegalImport" />
|
||||
<module name="RedundantImport" />
|
||||
<module name="UnusedImports" />
|
||||
@@ -154,6 +161,7 @@
|
||||
<property name="allowEmptyLambdas" value="true" />
|
||||
<property name="allowEmptyMethods" value="true" />
|
||||
<property name="allowEmptyConstructors" value="true" />
|
||||
<property name="allowEmptyTypes" value="true" />
|
||||
|
||||
<property name="tokens" value="ASSIGN,BAND,BAND_ASSIGN,BOR,BOR_ASSIGN,BSR,BSR_ASSIGN,BXOR,BXOR_ASSIGN,COLON,DIV,DIV_ASSIGN,EQUAL,GE,GT,LAMBDA,LAND,LCURLY,LE,LITERAL_RETURN,LOR,LT,MINUS,MINUS_ASSIGN,MOD,MOD_ASSIGN,NOT_EQUAL,PLUS,PLUS_ASSIGN,QUESTION,RCURLY,SL,SLIST,SL_ASSIGN,SR,SR_ASSIGN,STAR,STAR_ASSIGN,LITERAL_ASSERT,TYPE_EXTENSION_AND" />
|
||||
</module>
|
||||
|
@@ -3,6 +3,6 @@ FROM gitpod/workspace-base
|
||||
USER gitpod
|
||||
|
||||
RUN sudo apt-get -q update \
|
||||
&& sudo apt-get install -yq openjdk-8-jdk openjdk-16-jdk python3-pip npm \
|
||||
&& sudo apt-get install -yq openjdk-16-jdk python3-pip npm \
|
||||
&& sudo pip3 install pre-commit \
|
||||
&& sudo update-java-alternatives --set java-1.8.0-openjdk-amd64
|
||||
&& sudo update-java-alternatives --set java-1.16.0-openjdk-amd64
|
||||
|
@@ -1,8 +1,10 @@
|
||||
org.gradle.jvmargs=-Xmx3G
|
||||
|
||||
# Mod properties
|
||||
mod_version=1.99.1
|
||||
mod_version=1.99.0
|
||||
|
||||
# Minecraft properties (update mods.toml when changing)
|
||||
mc_version=1.16.5
|
||||
mapping_version=2021.08.08
|
||||
forge_version=36.1.0
|
||||
mc_version=1.17.1
|
||||
mapping_version=2021.09.05
|
||||
forge_version=37.0.85
|
||||
# NO SERIOUSLY, UPDATE mods.toml WHEN CHANGING
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "minecraft:redstone"
|
||||
"items": [
|
||||
"minecraft:redstone"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:gold_ingot"
|
||||
"items": [
|
||||
"minecraft:gold_ingot"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "minecraft:command_block"
|
||||
"items": [
|
||||
"minecraft:command_block"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:disk_drive"
|
||||
"items": [
|
||||
"computercraft:disk_drive"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:pocket_computer_advanced"
|
||||
"items": [
|
||||
"computercraft:pocket_computer_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:speaker"
|
||||
"items": [
|
||||
"computercraft:speaker"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:pocket_computer_advanced"
|
||||
"items": [
|
||||
"computercraft:pocket_computer_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:wireless_modem_advanced"
|
||||
"items": [
|
||||
"computercraft:wireless_modem_advanced"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:pocket_computer_advanced"
|
||||
"items": [
|
||||
"computercraft:pocket_computer_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:wireless_modem_normal"
|
||||
"items": [
|
||||
"computercraft:wireless_modem_normal"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -21,7 +21,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "minecraft:golden_apple"
|
||||
"items": [
|
||||
"minecraft:golden_apple"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -21,7 +21,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "minecraft:golden_apple"
|
||||
"items": [
|
||||
"minecraft:golden_apple"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:pocket_computer_normal"
|
||||
"items": [
|
||||
"computercraft:pocket_computer_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:speaker"
|
||||
"items": [
|
||||
"computercraft:speaker"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:pocket_computer_normal"
|
||||
"items": [
|
||||
"computercraft:pocket_computer_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:wireless_modem_advanced"
|
||||
"items": [
|
||||
"computercraft:wireless_modem_advanced"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:pocket_computer_normal"
|
||||
"items": [
|
||||
"computercraft:pocket_computer_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:wireless_modem_normal"
|
||||
"items": [
|
||||
"computercraft:wireless_modem_normal"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:printer"
|
||||
"items": [
|
||||
"computercraft:printer"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:printer"
|
||||
"items": [
|
||||
"computercraft:printer"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_advanced"
|
||||
"items": [
|
||||
"computercraft:turtle_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:speaker"
|
||||
"items": [
|
||||
"computercraft:speaker"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_advanced"
|
||||
"items": [
|
||||
"computercraft:turtle_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:wireless_modem_advanced"
|
||||
"items": [
|
||||
"computercraft:wireless_modem_advanced"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_advanced"
|
||||
"items": [
|
||||
"computercraft:turtle_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:wireless_modem_normal"
|
||||
"items": [
|
||||
"computercraft:wireless_modem_normal"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_advanced"
|
||||
"items": [
|
||||
"computercraft:turtle_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:crafting_table"
|
||||
"items": [
|
||||
"minecraft:crafting_table"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_advanced"
|
||||
"items": [
|
||||
"computercraft:turtle_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond_axe"
|
||||
"items": [
|
||||
"minecraft:diamond_axe"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_advanced"
|
||||
"items": [
|
||||
"computercraft:turtle_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond_hoe"
|
||||
"items": [
|
||||
"minecraft:diamond_hoe"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_advanced"
|
||||
"items": [
|
||||
"computercraft:turtle_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond_pickaxe"
|
||||
"items": [
|
||||
"minecraft:diamond_pickaxe"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_advanced"
|
||||
"items": [
|
||||
"computercraft:turtle_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond_shovel"
|
||||
"items": [
|
||||
"minecraft:diamond_shovel"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_advanced"
|
||||
"items": [
|
||||
"computercraft:turtle_advanced"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond_sword"
|
||||
"items": [
|
||||
"minecraft:diamond_sword"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_normal"
|
||||
"items": [
|
||||
"computercraft:turtle_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:speaker"
|
||||
"items": [
|
||||
"computercraft:speaker"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_normal"
|
||||
"items": [
|
||||
"computercraft:turtle_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:wireless_modem_advanced"
|
||||
"items": [
|
||||
"computercraft:wireless_modem_advanced"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_normal"
|
||||
"items": [
|
||||
"computercraft:turtle_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "computercraft:wireless_modem_normal"
|
||||
"items": [
|
||||
"computercraft:wireless_modem_normal"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_normal"
|
||||
"items": [
|
||||
"computercraft:turtle_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:crafting_table"
|
||||
"items": [
|
||||
"minecraft:crafting_table"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_normal"
|
||||
"items": [
|
||||
"computercraft:turtle_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond_axe"
|
||||
"items": [
|
||||
"minecraft:diamond_axe"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_normal"
|
||||
"items": [
|
||||
"computercraft:turtle_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond_hoe"
|
||||
"items": [
|
||||
"minecraft:diamond_hoe"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_normal"
|
||||
"items": [
|
||||
"computercraft:turtle_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond_pickaxe"
|
||||
"items": [
|
||||
"minecraft:diamond_pickaxe"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_normal"
|
||||
"items": [
|
||||
"computercraft:turtle_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond_shovel"
|
||||
"items": [
|
||||
"minecraft:diamond_shovel"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,10 +11,14 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:turtle_normal"
|
||||
"items": [
|
||||
"computercraft:turtle_normal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond_sword"
|
||||
"items": [
|
||||
"minecraft:diamond_sword"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -21,7 +21,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:cable"
|
||||
"items": [
|
||||
"computercraft:cable"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -21,7 +21,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:wireless_modem_normal"
|
||||
"items": [
|
||||
"computercraft:wireless_modem_normal"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:monitor_normal"
|
||||
"items": [
|
||||
"computercraft:monitor_normal"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -11,7 +11,9 @@
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "computercraft:computer_advanced"
|
||||
"items": [
|
||||
"computercraft:computer_advanced"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
4
src/generated/resources/data/computercraft/computercraft/pocket_upgrades/speaker.json
generated
Normal file
4
src/generated/resources/data/computercraft/computercraft/pocket_upgrades/speaker.json
generated
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"type": "computercraft:speaker",
|
||||
"item": "computercraft:speaker"
|
||||
}
|
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"type": "computercraft:wireless_modem_advanced",
|
||||
"item": "computercraft:wireless_modem_advanced"
|
||||
}
|
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"type": "computercraft:wireless_modem_normal",
|
||||
"item": "computercraft:wireless_modem_normal"
|
||||
}
|
4
src/generated/resources/data/computercraft/computercraft/turtle_upgrades/speaker.json
generated
Normal file
4
src/generated/resources/data/computercraft/computercraft/turtle_upgrades/speaker.json
generated
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"type": "computercraft:speaker",
|
||||
"item": "computercraft:speaker"
|
||||
}
|
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"type": "computercraft:wireless_modem_advanced",
|
||||
"item": "computercraft:wireless_modem_advanced"
|
||||
}
|
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"type": "computercraft:wireless_modem_normal",
|
||||
"item": "computercraft:wireless_modem_normal"
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "cable",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
@@ -21,11 +22,13 @@
|
||||
"cable": "true"
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
},
|
||||
{
|
||||
"name": "wired_modem",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
@@ -46,7 +49,8 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:dynamic",
|
||||
@@ -28,7 +29,8 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:dynamic",
|
||||
@@ -28,7 +29,8 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:dynamic",
|
||||
@@ -28,7 +29,8 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
@@ -14,7 +15,8 @@
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
@@ -14,7 +15,8 @@
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
@@ -14,7 +15,8 @@
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
@@ -14,7 +15,8 @@
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
@@ -14,7 +15,8 @@
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:dynamic",
|
||||
@@ -28,7 +29,8 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:dynamic",
|
||||
@@ -28,7 +29,8 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
@@ -14,7 +15,8 @@
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
@@ -14,7 +15,8 @@
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -3,7 +3,8 @@
|
||||
"pools": [
|
||||
{
|
||||
"name": "main",
|
||||
"rolls": 1,
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
@@ -14,7 +15,8 @@
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
],
|
||||
"functions": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -2,6 +2,7 @@
|
||||
"replace": false,
|
||||
"values": [
|
||||
"#minecraft:crops",
|
||||
"#minecraft:mineable/hoe",
|
||||
"minecraft:cactus",
|
||||
"minecraft:melon",
|
||||
"minecraft:pumpkin",
|
||||
|
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"#minecraft:mineable/shovel",
|
||||
"minecraft:melon",
|
||||
"minecraft:pumpkin",
|
||||
"minecraft:carved_pumpkin",
|
||||
|
4
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/crafting_table.json
generated
Normal file
4
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/crafting_table.json
generated
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"type": "computercraft:workbench",
|
||||
"item": "minecraft:crafting_table"
|
||||
}
|
5
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/diamond_axe.json
generated
Normal file
5
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/diamond_axe.json
generated
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"type": "computercraft:tool",
|
||||
"item": "minecraft:diamond_axe",
|
||||
"damageMultiplier": 6.0
|
||||
}
|
5
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/diamond_hoe.json
generated
Normal file
5
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/diamond_hoe.json
generated
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"type": "computercraft:tool",
|
||||
"item": "minecraft:diamond_hoe",
|
||||
"breakable": "computercraft:turtle_hoe_harvestable"
|
||||
}
|
4
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/diamond_pickaxe.json
generated
Normal file
4
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/diamond_pickaxe.json
generated
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"type": "computercraft:tool",
|
||||
"item": "minecraft:diamond_pickaxe"
|
||||
}
|
5
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/diamond_shovel.json
generated
Normal file
5
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/diamond_shovel.json
generated
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"type": "computercraft:tool",
|
||||
"item": "minecraft:diamond_shovel",
|
||||
"breakable": "computercraft:turtle_shovel_harvestable"
|
||||
}
|
6
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/diamond_sword.json
generated
Normal file
6
src/generated/resources/data/minecraft/computercraft/turtle_upgrades/diamond_sword.json
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"type": "computercraft:tool",
|
||||
"item": "minecraft:diamond_sword",
|
||||
"damageMultiplier": 9.0,
|
||||
"breakable": "computercraft:turtle_sword_harvestable"
|
||||
}
|
18
src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json
generated
Normal file
18
src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json
generated
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"computercraft:computer_normal",
|
||||
"computercraft:computer_advanced",
|
||||
"computercraft:turtle_normal",
|
||||
"computercraft:turtle_advanced",
|
||||
"computercraft:speaker",
|
||||
"computercraft:disk_drive",
|
||||
"computercraft:printer",
|
||||
"computercraft:monitor_normal",
|
||||
"computercraft:monitor_advanced",
|
||||
"computercraft:wireless_modem_normal",
|
||||
"computercraft:wireless_modem_advanced",
|
||||
"computercraft:wired_modem_full",
|
||||
"computercraft:cable"
|
||||
]
|
||||
}
|
@@ -5,7 +5,6 @@
|
||||
*/
|
||||
package dan200.computercraft;
|
||||
|
||||
import dan200.computercraft.api.turtle.event.TurtleAction;
|
||||
import dan200.computercraft.core.apis.http.options.Action;
|
||||
import dan200.computercraft.core.apis.http.options.AddressRule;
|
||||
import dan200.computercraft.shared.Config;
|
||||
@@ -13,16 +12,10 @@ import dan200.computercraft.shared.Registry;
|
||||
import dan200.computercraft.shared.computer.core.ClientComputerRegistry;
|
||||
import dan200.computercraft.shared.computer.core.ServerComputerRegistry;
|
||||
import dan200.computercraft.shared.peripheral.monitor.MonitorRenderer;
|
||||
import dan200.computercraft.shared.pocket.peripherals.PocketModem;
|
||||
import dan200.computercraft.shared.pocket.peripherals.PocketSpeaker;
|
||||
import dan200.computercraft.shared.turtle.upgrades.*;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@@ -45,10 +38,10 @@ public final class ComputerCraft
|
||||
|
||||
public static boolean httpEnabled = true;
|
||||
public static boolean httpWebsocketEnabled = true;
|
||||
public static List<AddressRule> httpRules = Collections.unmodifiableList( Arrays.asList(
|
||||
public static List<AddressRule> httpRules = List.of(
|
||||
AddressRule.parse( "$private", null, Action.DENY.toPartial() ),
|
||||
AddressRule.parse( "*", null, Action.ALLOW.toPartial() )
|
||||
) );
|
||||
);
|
||||
|
||||
public static int httpMaxRequests = 16;
|
||||
public static int httpMaxWebsockets = 4;
|
||||
@@ -62,7 +55,7 @@ public final class ComputerCraft
|
||||
public static int modemHighAltitudeRangeDuringStorm = 384;
|
||||
public static int maxNotesPerTick = 8;
|
||||
public static MonitorRenderer monitorRenderer = MonitorRenderer.BEST;
|
||||
public static double monitorDistanceSq = 4096;
|
||||
public static int monitorDistance = 65;
|
||||
public static long monitorBandwidth = 1_000_000;
|
||||
|
||||
public static boolean turtlesNeedFuel = true;
|
||||
@@ -70,7 +63,6 @@ public final class ComputerCraft
|
||||
public static int advancedTurtleFuelLimit = 100000;
|
||||
public static boolean turtlesObeyBlockProtection = true;
|
||||
public static boolean turtlesCanPush = true;
|
||||
public static EnumSet<TurtleAction> turtleDisabledActions = EnumSet.noneOf( TurtleAction.class );
|
||||
|
||||
public static int computerTermWidth = 51;
|
||||
public static int computerTermHeight = 19;
|
||||
@@ -84,27 +76,6 @@ public final class ComputerCraft
|
||||
public static int monitorWidth = 8;
|
||||
public static int monitorHeight = 6;
|
||||
|
||||
public static final class TurtleUpgrades
|
||||
{
|
||||
public static TurtleModem wirelessModemNormal;
|
||||
public static TurtleModem wirelessModemAdvanced;
|
||||
public static TurtleSpeaker speaker;
|
||||
|
||||
public static TurtleCraftingTable craftingTable;
|
||||
public static TurtleSword diamondSword;
|
||||
public static TurtleShovel diamondShovel;
|
||||
public static TurtleTool diamondPickaxe;
|
||||
public static TurtleAxe diamondAxe;
|
||||
public static TurtleHoe diamondHoe;
|
||||
}
|
||||
|
||||
public static final class PocketUpgrades
|
||||
{
|
||||
public static PocketModem wirelessModemNormal;
|
||||
public static PocketModem wirelessModemAdvanced;
|
||||
public static PocketSpeaker speaker;
|
||||
}
|
||||
|
||||
// Registries
|
||||
public static final ClientComputerRegistry clientComputerRegistry = new ClientComputerRegistry();
|
||||
public static final ServerComputerRegistry serverComputerRegistry = new ServerComputerRegistry();
|
||||
|
@@ -15,30 +15,30 @@ import dan200.computercraft.api.network.IPacketNetwork;
|
||||
import dan200.computercraft.api.network.wired.IWiredElement;
|
||||
import dan200.computercraft.api.network.wired.IWiredNode;
|
||||
import dan200.computercraft.api.peripheral.IPeripheralProvider;
|
||||
import dan200.computercraft.api.pocket.IPocketUpgrade;
|
||||
import dan200.computercraft.api.redstone.IBundledRedstoneProvider;
|
||||
import dan200.computercraft.api.turtle.ITurtleUpgrade;
|
||||
import dan200.computercraft.core.apis.ApiFactories;
|
||||
import dan200.computercraft.core.asm.GenericMethod;
|
||||
import dan200.computercraft.core.filesystem.FileMount;
|
||||
import dan200.computercraft.core.filesystem.ResourceMount;
|
||||
import dan200.computercraft.shared.*;
|
||||
import dan200.computercraft.shared.BundledRedstone;
|
||||
import dan200.computercraft.shared.MediaProviders;
|
||||
import dan200.computercraft.shared.Peripherals;
|
||||
import dan200.computercraft.shared.peripheral.generic.GenericPeripheralProvider;
|
||||
import dan200.computercraft.shared.peripheral.modem.wireless.WirelessNetwork;
|
||||
import dan200.computercraft.shared.util.IDAssigner;
|
||||
import dan200.computercraft.shared.wired.WiredNode;
|
||||
import net.minecraft.resources.IReloadableResourceManager;
|
||||
import net.minecraft.resources.IResourceManager;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.packs.resources.ReloadableResourceManager;
|
||||
import net.minecraft.server.packs.resources.ResourceManager;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.fml.server.ServerLifecycleHooks;
|
||||
import net.minecraftforge.fmllegacy.server.ServerLifecycleHooks;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.io.File;
|
||||
@@ -59,7 +59,7 @@ public final class ComputerCraftAPIImpl implements IComputerCraftAPI
|
||||
|
||||
public static InputStream getResourceFile( String domain, String subPath )
|
||||
{
|
||||
IReloadableResourceManager manager = (IReloadableResourceManager) ServerLifecycleHooks.getCurrentServer().getDataPackRegistries().getResourceManager();
|
||||
ReloadableResourceManager manager = (ReloadableResourceManager) ServerLifecycleHooks.getCurrentServer().getResourceManager();
|
||||
try
|
||||
{
|
||||
return manager.getResource( new ResourceLocation( domain, subPath ) ).getInputStream();
|
||||
@@ -81,13 +81,13 @@ public final class ComputerCraftAPIImpl implements IComputerCraftAPI
|
||||
}
|
||||
|
||||
@Override
|
||||
public int createUniqueNumberedSaveDir( @Nonnull World world, @Nonnull String parentSubPath )
|
||||
public int createUniqueNumberedSaveDir( @Nonnull Level world, @Nonnull String parentSubPath )
|
||||
{
|
||||
return IDAssigner.getNextId( parentSubPath );
|
||||
}
|
||||
|
||||
@Override
|
||||
public IWritableMount createSaveDirMount( @Nonnull World world, @Nonnull String subPath, long capacity )
|
||||
public IWritableMount createSaveDirMount( @Nonnull Level world, @Nonnull String subPath, long capacity )
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -102,7 +102,7 @@ public final class ComputerCraftAPIImpl implements IComputerCraftAPI
|
||||
@Override
|
||||
public IMount createResourceMount( @Nonnull String domain, @Nonnull String subPath )
|
||||
{
|
||||
IResourceManager manager = ServerLifecycleHooks.getCurrentServer().getDataPackRegistries().getResourceManager();
|
||||
ResourceManager manager = ServerLifecycleHooks.getCurrentServer().getResourceManager();
|
||||
ResourceMount mount = ResourceMount.get( domain, subPath, manager );
|
||||
return mount.exists( "" ) ? mount : null;
|
||||
}
|
||||
@@ -125,12 +125,6 @@ public final class ComputerCraftAPIImpl implements IComputerCraftAPI
|
||||
GenericPeripheralProvider.addCapability( capability );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerTurtleUpgrade( @Nonnull ITurtleUpgrade upgrade )
|
||||
{
|
||||
TurtleUpgrades.register( upgrade );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerBundledRedstoneProvider( @Nonnull IBundledRedstoneProvider provider )
|
||||
{
|
||||
@@ -138,7 +132,7 @@ public final class ComputerCraftAPIImpl implements IComputerCraftAPI
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBundledRedstoneOutput( @Nonnull World world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
public int getBundledRedstoneOutput( @Nonnull Level world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
{
|
||||
return BundledRedstone.getDefaultOutput( world, pos, side );
|
||||
}
|
||||
@@ -149,12 +143,6 @@ public final class ComputerCraftAPIImpl implements IComputerCraftAPI
|
||||
MediaProviders.register( provider );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerPocketUpgrade( @Nonnull IPocketUpgrade upgrade )
|
||||
{
|
||||
PocketUpgrades.register( upgrade );
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public IPacketNetwork getWirelessNetwork()
|
||||
@@ -177,9 +165,9 @@ public final class ComputerCraftAPIImpl implements IComputerCraftAPI
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public LazyOptional<IWiredElement> getWiredElementAt( @Nonnull IBlockReader world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
public LazyOptional<IWiredElement> getWiredElementAt( @Nonnull BlockGetter world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
{
|
||||
TileEntity tile = world.getBlockEntity( pos );
|
||||
BlockEntity tile = world.getBlockEntity( pos );
|
||||
return tile == null ? LazyOptional.empty() : tile.getCapability( CAPABILITY_WIRED_ELEMENT, side );
|
||||
}
|
||||
}
|
||||
|
@@ -17,13 +17,11 @@ import dan200.computercraft.api.network.wired.IWiredNode;
|
||||
import dan200.computercraft.api.peripheral.IComputerAccess;
|
||||
import dan200.computercraft.api.peripheral.IPeripheral;
|
||||
import dan200.computercraft.api.peripheral.IPeripheralProvider;
|
||||
import dan200.computercraft.api.pocket.IPocketUpgrade;
|
||||
import dan200.computercraft.api.redstone.IBundledRedstoneProvider;
|
||||
import dan200.computercraft.api.turtle.ITurtleUpgrade;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
|
||||
@@ -38,19 +36,14 @@ import javax.annotation.Nullable;
|
||||
*/
|
||||
public final class ComputerCraftAPI
|
||||
{
|
||||
public static final String MOD_ID = "computercraft";
|
||||
|
||||
@Nonnull
|
||||
public static String getInstalledVersion()
|
||||
{
|
||||
return getInstance().getInstalledVersion();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Deprecated
|
||||
public static String getAPIVersion()
|
||||
{
|
||||
return getInstalledVersion();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a numbered directory in a subfolder of the save directory for a given world, and returns that number.
|
||||
*
|
||||
@@ -62,9 +55,9 @@ public final class ComputerCraftAPI
|
||||
*
|
||||
* eg: if createUniqueNumberedSaveDir( world, "computer/disk" ) was called returns 42, then "computer/disk/42" is now
|
||||
* available for writing.
|
||||
* @see #createSaveDirMount(World, String, long)
|
||||
* @see #createSaveDirMount(Level, String, long)
|
||||
*/
|
||||
public static int createUniqueNumberedSaveDir( @Nonnull World world, @Nonnull String parentSubPath )
|
||||
public static int createUniqueNumberedSaveDir( @Nonnull Level world, @Nonnull String parentSubPath )
|
||||
{
|
||||
return getInstance().createUniqueNumberedSaveDir( world, parentSubPath );
|
||||
}
|
||||
@@ -81,14 +74,14 @@ public final class ComputerCraftAPI
|
||||
* @param capacity The amount of data that can be stored in the directory before it fills up, in bytes.
|
||||
* @return The mount, or null if it could be created for some reason. Use IComputerAccess.mount() or IComputerAccess.mountWritable()
|
||||
* to mount this on a Computers' file system.
|
||||
* @see #createUniqueNumberedSaveDir(World, String)
|
||||
* @see #createUniqueNumberedSaveDir(Level, String)
|
||||
* @see IComputerAccess#mount(String, IMount)
|
||||
* @see IComputerAccess#mountWritable(String, IWritableMount)
|
||||
* @see IMount
|
||||
* @see IWritableMount
|
||||
*/
|
||||
@Nullable
|
||||
public static IWritableMount createSaveDirMount( @Nonnull World world, @Nonnull String subPath, long capacity )
|
||||
public static IWritableMount createSaveDirMount( @Nonnull Level world, @Nonnull String subPath, long capacity )
|
||||
{
|
||||
return getInstance().createSaveDirMount( world, subPath, capacity );
|
||||
}
|
||||
@@ -151,19 +144,6 @@ public final class ComputerCraftAPI
|
||||
getInstance().registerGenericCapability( capability );
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a new turtle turtle for use in ComputerCraft. After calling this,
|
||||
* users should be able to craft Turtles with your new turtle. It is recommended to call
|
||||
* this during the load() method of your mod.
|
||||
*
|
||||
* @param upgrade The turtle upgrade to register.
|
||||
* @see ITurtleUpgrade
|
||||
*/
|
||||
public static void registerTurtleUpgrade( @Nonnull ITurtleUpgrade upgrade )
|
||||
{
|
||||
getInstance().registerTurtleUpgrade( upgrade );
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a bundled redstone provider to provide bundled redstone output for blocks.
|
||||
*
|
||||
@@ -185,7 +165,7 @@ public final class ComputerCraftAPI
|
||||
* If there is no block capable of emitting bundled redstone at the location, -1 will be returned.
|
||||
* @see IBundledRedstoneProvider
|
||||
*/
|
||||
public static int getBundledRedstoneOutput( @Nonnull World world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
public static int getBundledRedstoneOutput( @Nonnull Level world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
{
|
||||
return getInstance().getBundledRedstoneOutput( world, pos, side );
|
||||
}
|
||||
@@ -201,11 +181,6 @@ public final class ComputerCraftAPI
|
||||
getInstance().registerMediaProvider( provider );
|
||||
}
|
||||
|
||||
public static void registerPocketUpgrade( @Nonnull IPocketUpgrade upgrade )
|
||||
{
|
||||
getInstance().registerPocketUpgrade( upgrade );
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to get the game-wide wireless network.
|
||||
*
|
||||
@@ -244,7 +219,7 @@ public final class ComputerCraftAPI
|
||||
* @see IWiredElement#getNode()
|
||||
*/
|
||||
@Nonnull
|
||||
public static LazyOptional<IWiredElement> getWiredElementAt( @Nonnull IBlockReader world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
public static LazyOptional<IWiredElement> getWiredElementAt( @Nonnull BlockGetter world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||
{
|
||||
return getInstance().getWiredElementAt( world, pos, side );
|
||||
}
|
||||
@@ -272,10 +247,10 @@ public final class ComputerCraftAPI
|
||||
@Nonnull
|
||||
String getInstalledVersion();
|
||||
|
||||
int createUniqueNumberedSaveDir( @Nonnull World world, @Nonnull String parentSubPath );
|
||||
int createUniqueNumberedSaveDir( @Nonnull Level world, @Nonnull String parentSubPath );
|
||||
|
||||
@Nullable
|
||||
IWritableMount createSaveDirMount( @Nonnull World world, @Nonnull String subPath, long capacity );
|
||||
IWritableMount createSaveDirMount( @Nonnull Level world, @Nonnull String subPath, long capacity );
|
||||
|
||||
@Nullable
|
||||
IMount createResourceMount( @Nonnull String domain, @Nonnull String subPath );
|
||||
@@ -286,16 +261,12 @@ public final class ComputerCraftAPI
|
||||
|
||||
void registerGenericCapability( @Nonnull Capability<?> capability );
|
||||
|
||||
void registerTurtleUpgrade( @Nonnull ITurtleUpgrade upgrade );
|
||||
|
||||
void registerBundledRedstoneProvider( @Nonnull IBundledRedstoneProvider provider );
|
||||
|
||||
int getBundledRedstoneOutput( @Nonnull World world, @Nonnull BlockPos pos, @Nonnull Direction side );
|
||||
int getBundledRedstoneOutput( @Nonnull Level world, @Nonnull BlockPos pos, @Nonnull Direction side );
|
||||
|
||||
void registerMediaProvider( @Nonnull IMediaProvider provider );
|
||||
|
||||
void registerPocketUpgrade( @Nonnull IPocketUpgrade upgrade );
|
||||
|
||||
@Nonnull
|
||||
IPacketNetwork getWirelessNetwork();
|
||||
|
||||
@@ -305,6 +276,6 @@ public final class ComputerCraftAPI
|
||||
IWiredNode createWiredNodeForElement( @Nonnull IWiredElement element );
|
||||
|
||||
@Nonnull
|
||||
LazyOptional<IWiredElement> getWiredElementAt( @Nonnull IBlockReader world, @Nonnull BlockPos pos, @Nonnull Direction side );
|
||||
LazyOptional<IWiredElement> getWiredElementAt( @Nonnull BlockGetter world, @Nonnull BlockPos pos, @Nonnull Direction side );
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* This file is part of the public ComputerCraft API - http://www.computercraft.info
|
||||
* Copyright Daniel Ratcliffe, 2011-2021. This API may be redistributed unmodified and in full only.
|
||||
* For help using the API, and posting your mods, visit the forums at computercraft.info.
|
||||
*/
|
||||
package dan200.computercraft.api;
|
||||
|
||||
import dan200.computercraft.ComputerCraft;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
import net.minecraft.tags.ItemTags;
|
||||
import net.minecraft.tags.Tag;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
|
||||
/**
|
||||
* Tags provided by ComputerCraft.
|
||||
*/
|
||||
public class ComputerCraftTags
|
||||
{
|
||||
public static class Items
|
||||
{
|
||||
public static final Tag.Named<Item> COMPUTER = make( "computer" );
|
||||
public static final Tag.Named<Item> TURTLE = make( "turtle" );
|
||||
public static final Tag.Named<Item> WIRED_MODEM = make( "wired_modem" );
|
||||
public static final Tag.Named<Item> MONITOR = make( "monitor" );
|
||||
|
||||
private static Tag.Named<Item> make( String name )
|
||||
{
|
||||
return ItemTags.bind( new ResourceLocation( ComputerCraft.MOD_ID, name ).toString() );
|
||||
}
|
||||
}
|
||||
|
||||
public static class Blocks
|
||||
{
|
||||
public static final Tag.Named<Block> COMPUTER = make( "computer" );
|
||||
public static final Tag.Named<Block> TURTLE = make( "turtle" );
|
||||
public static final Tag.Named<Block> WIRED_MODEM = make( "wired_modem" );
|
||||
public static final Tag.Named<Block> MONITOR = make( "monitor" );
|
||||
|
||||
/**
|
||||
* Blocks which can be broken by any turtle tool.
|
||||
*/
|
||||
public static final Tag.Named<Block> TURTLE_ALWAYS_BREAKABLE = make( "turtle_always_breakable" );
|
||||
|
||||
/**
|
||||
* Blocks which can be broken by the default shovel tool.
|
||||
*/
|
||||
public static final Tag.Named<Block> TURTLE_SHOVEL_BREAKABLE = make( "turtle_shovel_harvestable" );
|
||||
|
||||
/**
|
||||
* Blocks which can be broken with the default sword tool.
|
||||
*/
|
||||
public static final Tag.Named<Block> TURTLE_SWORD_BREAKABLE = make( "turtle_sword_harvestable" );
|
||||
|
||||
/**
|
||||
* Blocks which can be broken with the default hoe tool.
|
||||
*/
|
||||
public static final Tag.Named<Block> TURTLE_HOE_BREAKABLE = make( "turtle_hoe_harvestable" );
|
||||
|
||||
private static Tag.Named<Block> make( String name )
|
||||
{
|
||||
return BlockTags.bind( new ResourceLocation( ComputerCraft.MOD_ID, name ).toString() );
|
||||
}
|
||||
}
|
||||
}
|
@@ -5,12 +5,12 @@
|
||||
*/
|
||||
package dan200.computercraft.api.client;
|
||||
|
||||
import com.mojang.math.Transformation;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.model.ModelManager;
|
||||
import net.minecraft.client.renderer.model.ModelResourceLocation;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.vector.TransformationMatrix;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.client.resources.model.ModelManager;
|
||||
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Objects;
|
||||
@@ -20,19 +20,19 @@ import java.util.Objects;
|
||||
*/
|
||||
public final class TransformedModel
|
||||
{
|
||||
private final IBakedModel model;
|
||||
private final TransformationMatrix matrix;
|
||||
private final BakedModel model;
|
||||
private final Transformation matrix;
|
||||
|
||||
public TransformedModel( @Nonnull IBakedModel model, @Nonnull TransformationMatrix matrix )
|
||||
public TransformedModel( @Nonnull BakedModel model, @Nonnull Transformation matrix )
|
||||
{
|
||||
this.model = Objects.requireNonNull( model );
|
||||
this.matrix = Objects.requireNonNull( matrix );
|
||||
}
|
||||
|
||||
public TransformedModel( @Nonnull IBakedModel model )
|
||||
public TransformedModel( @Nonnull BakedModel model )
|
||||
{
|
||||
this.model = Objects.requireNonNull( model );
|
||||
matrix = TransformationMatrix.identity();
|
||||
matrix = Transformation.identity();
|
||||
}
|
||||
|
||||
public static TransformedModel of( @Nonnull ModelResourceLocation location )
|
||||
@@ -41,20 +41,20 @@ public final class TransformedModel
|
||||
return new TransformedModel( modelManager.getModel( location ) );
|
||||
}
|
||||
|
||||
public static TransformedModel of( @Nonnull ItemStack item, @Nonnull TransformationMatrix transform )
|
||||
public static TransformedModel of( @Nonnull ItemStack item, @Nonnull Transformation transform )
|
||||
{
|
||||
IBakedModel model = Minecraft.getInstance().getItemRenderer().getItemModelShaper().getItemModel( item );
|
||||
BakedModel model = Minecraft.getInstance().getItemRenderer().getItemModelShaper().getItemModel( item );
|
||||
return new TransformedModel( model, transform );
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public IBakedModel getModel()
|
||||
public BakedModel getModel()
|
||||
{
|
||||
return model;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public TransformationMatrix getMatrix()
|
||||
public Transformation getMatrix()
|
||||
{
|
||||
return matrix;
|
||||
}
|
||||
|
@@ -7,7 +7,7 @@ package dan200.computercraft.api.filesystem;
|
||||
|
||||
import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.api.peripheral.IComputerAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.io.IOException;
|
||||
@@ -20,10 +20,10 @@ import java.util.List;
|
||||
* {@link IComputerAccess#mount(String, IMount)}.
|
||||
*
|
||||
* Ready made implementations of this interface can be created using
|
||||
* {@link ComputerCraftAPI#createSaveDirMount(World, String, long)} or
|
||||
* {@link ComputerCraftAPI#createSaveDirMount(Level, String, long)} or
|
||||
* {@link ComputerCraftAPI#createResourceMount(String, String)}, or you're free to implement it yourselves!
|
||||
*
|
||||
* @see ComputerCraftAPI#createSaveDirMount(World, String, long)
|
||||
* @see ComputerCraftAPI#createSaveDirMount(Level, String, long)
|
||||
* @see ComputerCraftAPI#createResourceMount(String, String)
|
||||
* @see IComputerAccess#mount(String, IMount)
|
||||
* @see IWritableMount
|
||||
|
@@ -7,7 +7,7 @@ package dan200.computercraft.api.filesystem;
|
||||
|
||||
import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.api.peripheral.IComputerAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.io.IOException;
|
||||
@@ -20,9 +20,9 @@ import java.util.OptionalLong;
|
||||
* or {@link IComputerAccess#mountWritable(String, IWritableMount)}, that can also be written to.
|
||||
*
|
||||
* Ready made implementations of this interface can be created using
|
||||
* {@link ComputerCraftAPI#createSaveDirMount(World, String, long)}, or you're free to implement it yourselves!
|
||||
* {@link ComputerCraftAPI#createSaveDirMount(Level, String, long)}, or you're free to implement it yourselves!
|
||||
*
|
||||
* @see ComputerCraftAPI#createSaveDirMount(World, String, long)
|
||||
* @see ComputerCraftAPI#createSaveDirMount(Level, String, long)
|
||||
* @see IComputerAccess#mount(String, IMount)
|
||||
* @see IComputerAccess#mountWritable(String, IWritableMount)
|
||||
* @see IMount
|
||||
|
@@ -9,7 +9,7 @@ import dan200.computercraft.api.ComputerCraftAPI;
|
||||
import dan200.computercraft.api.peripheral.IPeripheral;
|
||||
import dan200.computercraft.api.peripheral.IPeripheralProvider;
|
||||
import dan200.computercraft.core.asm.LuaMethod;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
|
@@ -183,24 +183,6 @@ public interface IArguments
|
||||
return (Map<?, ?>) value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an argument as a table in an unsafe manner.
|
||||
*
|
||||
* Classes implementing this interface may choose to implement a more optimised version which does not copy the
|
||||
* table, instead returning a wrapper version, making it more efficient. However, the caller must guarantee that
|
||||
* they do not access off the computer thread (and so should not be used with main-thread functions) or once the
|
||||
* function call has finished (for instance, in callbacks).
|
||||
*
|
||||
* @param index The argument number.
|
||||
* @return The argument's value.
|
||||
* @throws LuaException If the value is not a table.
|
||||
*/
|
||||
@Nonnull
|
||||
default LuaTable<?, ?> getTableUnsafe( int index ) throws LuaException
|
||||
{
|
||||
return new ObjectLuaTable( getTable( index ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an argument as a double.
|
||||
*
|
||||
@@ -332,27 +314,6 @@ public interface IArguments
|
||||
return Optional.of( (Map<?, ?>) value );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an argument as a table in an unsafe manner.
|
||||
*
|
||||
* Classes implementing this interface may choose to implement a more optimised version which does not copy the
|
||||
* table, instead returning a wrapper version, making it more efficient. However, the caller must guarantee that
|
||||
* they do not access off the computer thread (and so should not be used with main-thread functions) or once the
|
||||
* function call has finished (for instance, in callbacks).
|
||||
*
|
||||
* @param index The argument number.
|
||||
* @return The argument's value, or {@link Optional#empty()} if not present.
|
||||
* @throws LuaException If the value is not a table.
|
||||
*/
|
||||
@Nonnull
|
||||
default Optional<LuaTable<?, ?>> optTableUnsafe( int index ) throws LuaException
|
||||
{
|
||||
Object value = get( index );
|
||||
if( value == null ) return Optional.empty();
|
||||
if( !(value instanceof Map) ) throw LuaValues.badArgumentOf( index, "map", value );
|
||||
return Optional.of( new ObjectLuaTable( (Map<?, ?>) value ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an argument as a double.
|
||||
*
|
||||
@@ -443,13 +404,4 @@ public interface IArguments
|
||||
{
|
||||
return optTable( index ).orElse( def );
|
||||
}
|
||||
|
||||
/**
|
||||
* This is called when the current function finishes, before any main thread tasks have run.
|
||||
*
|
||||
* Called when the current function returns, and so some values are no longer guaranteed to be safe to access.
|
||||
*/
|
||||
default void releaseImmediate()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@@ -51,17 +51,8 @@ public @interface LuaFunction
|
||||
* Run this function on the main server thread. This should be specified for any method which interacts with
|
||||
* Minecraft in a thread-unsafe manner.
|
||||
*
|
||||
* @return Whether this function should be run on the main thread.
|
||||
* @return Whether this functi
|
||||
* @see ILuaContext#issueMainThreadTask(ILuaTask)
|
||||
*/
|
||||
boolean mainThread() default false;
|
||||
|
||||
/**
|
||||
* Allow using "unsafe" arguments, such {@link IArguments#getTableUnsafe(int)}.
|
||||
*
|
||||
* This is incompatible with {@link #mainThread()}.
|
||||
*
|
||||
* @return Whether this function supports unsafe arguments.
|
||||
*/
|
||||
boolean unsafe() default false;
|
||||
}
|
||||
|
@@ -1,114 +0,0 @@
|
||||
/*
|
||||
* This file is part of the public ComputerCraft API - http://www.computercraft.info
|
||||
* Copyright Daniel Ratcliffe, 2011-2021. This API may be redistributed unmodified and in full only.
|
||||
* For help using the API, and posting your mods, visit the forums at computercraft.info.
|
||||
*/
|
||||
package dan200.computercraft.api.lua;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Map;
|
||||
|
||||
import static dan200.computercraft.api.lua.LuaValues.*;
|
||||
|
||||
public interface LuaTable<K, V> extends Map<K, V>
|
||||
{
|
||||
/**
|
||||
* Compute the length of the array part of this table.
|
||||
*
|
||||
* @return This table's length.
|
||||
*/
|
||||
default int length()
|
||||
{
|
||||
int size = 0;
|
||||
while( containsKey( (double) (size + 1) ) ) size++;
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array entry as an integer.
|
||||
*
|
||||
* @param index The index in the table, starting at 1.
|
||||
* @return The table's value.
|
||||
* @throws LuaException If the value is not an integer.
|
||||
*/
|
||||
default long getLong( int index ) throws LuaException
|
||||
{
|
||||
Object value = get( (double) index );
|
||||
if( !(value instanceof Number) ) throw badTableItem( index, "number", getType( value ) );
|
||||
|
||||
Number number = (Number) value;
|
||||
double asDouble = number.doubleValue();
|
||||
if( !Double.isFinite( asDouble ) ) throw badTableItem( index, "number", getNumericType( asDouble ) );
|
||||
return number.longValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a table entry as an integer.
|
||||
*
|
||||
* @param key The name of the field in the table.
|
||||
* @return The table's value.
|
||||
* @throws LuaException If the value is not an integer.
|
||||
*/
|
||||
default long getLong( String key ) throws LuaException
|
||||
{
|
||||
Object value = get( key );
|
||||
if( !(value instanceof Number) ) throw badField( key, "number", getType( value ) );
|
||||
|
||||
Number number = (Number) value;
|
||||
double asDouble = number.doubleValue();
|
||||
if( !Double.isFinite( asDouble ) ) throw badField( key, "number", getNumericType( asDouble ) );
|
||||
return number.longValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array entry as an integer.
|
||||
*
|
||||
* @param index The index in the table, starting at 1.
|
||||
* @return The table's value.
|
||||
* @throws LuaException If the value is not an integer.
|
||||
*/
|
||||
default int getInt( int index ) throws LuaException
|
||||
{
|
||||
return (int) getLong( index );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a table entry as an integer.
|
||||
*
|
||||
* @param key The name of the field in the table.
|
||||
* @return The table's value.
|
||||
* @throws LuaException If the value is not an integer.
|
||||
*/
|
||||
default int getInt( String key ) throws LuaException
|
||||
{
|
||||
return (int) getLong( key );
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
default V put( K o, V o2 )
|
||||
{
|
||||
throw new UnsupportedOperationException( "Cannot modify LuaTable" );
|
||||
}
|
||||
|
||||
@Override
|
||||
default V remove( Object o )
|
||||
{
|
||||
throw new UnsupportedOperationException( "Cannot modify LuaTable" );
|
||||
}
|
||||
|
||||
@Override
|
||||
default void putAll( @Nonnull Map<? extends K, ? extends V> map )
|
||||
{
|
||||
throw new UnsupportedOperationException( "Cannot modify LuaTable" );
|
||||
}
|
||||
|
||||
@Override
|
||||
default void clear()
|
||||
{
|
||||
throw new UnsupportedOperationException( "Cannot modify LuaTable" );
|
||||
}
|
||||
}
|
@@ -102,34 +102,6 @@ public final class LuaValues
|
||||
return new LuaException( "bad argument #" + (index + 1) + " (" + expected + " expected, got " + actual + ")" );
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a table item exception, from an expected and actual type.
|
||||
*
|
||||
* @param index The index into the table, starting from 1.
|
||||
* @param expected The expected type for this table item.
|
||||
* @param actual The provided type for this table item.
|
||||
* @return The constructed exception, which should be thrown immediately.
|
||||
*/
|
||||
@Nonnull
|
||||
public static LuaException badTableItem( int index, @Nonnull String expected, @Nonnull String actual )
|
||||
{
|
||||
return new LuaException( "table item #" + index + " is not " + expected + " (got " + actual + ")" );
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a field exception, from an expected and actual type.
|
||||
*
|
||||
* @param key The name of the field.
|
||||
* @param expected The expected type for this table item.
|
||||
* @param actual The provided type for this table item.
|
||||
* @return The constructed exception, which should be thrown immediately.
|
||||
*/
|
||||
@Nonnull
|
||||
public static LuaException badField( String key, @Nonnull String expected, @Nonnull String actual )
|
||||
{
|
||||
return new LuaException( "field " + key + " is not " + expected + " (got " + actual + ")" );
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure a numeric argument is finite (i.e. not infinite or {@link Double#NaN}.
|
||||
*
|
||||
|
@@ -98,10 +98,7 @@ public final class MethodResult
|
||||
{
|
||||
Objects.requireNonNull( callback, "callback cannot be null" );
|
||||
return new MethodResult( new Object[] { filter }, results -> {
|
||||
if( results.length >= 1 && Objects.equals( results[0], "terminate" ) )
|
||||
{
|
||||
throw new LuaException( "Terminated", 0 );
|
||||
}
|
||||
if( results.length >= 1 && results[0].equals( "terminate" ) ) throw new LuaException( "Terminated", 0 );
|
||||
return callback.resume( results );
|
||||
} );
|
||||
}
|
||||
|
@@ -5,12 +5,10 @@
|
||||
*/
|
||||
package dan200.computercraft.api.lua;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* An implementation of {@link IArguments} which wraps an array of {@link Object}.
|
||||
@@ -18,8 +16,6 @@ import java.util.Optional;
|
||||
public final class ObjectArguments implements IArguments
|
||||
{
|
||||
private static final IArguments EMPTY = new ObjectArguments();
|
||||
|
||||
private boolean released = false;
|
||||
private final List<Object> args;
|
||||
|
||||
@Deprecated
|
||||
@@ -67,34 +63,4 @@ public final class ObjectArguments implements IArguments
|
||||
{
|
||||
return args.toArray();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public LuaTable<?, ?> getTableUnsafe( int index ) throws LuaException
|
||||
{
|
||||
if( released )
|
||||
{
|
||||
throw new IllegalStateException( "Cannot use getTableUnsafe after IArguments has been released" );
|
||||
}
|
||||
|
||||
return IArguments.super.getTableUnsafe( index );
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public Optional<LuaTable<?, ?>> optTableUnsafe( int index ) throws LuaException
|
||||
{
|
||||
if( released )
|
||||
{
|
||||
throw new IllegalStateException( "Cannot use optTableUnsafe after IArguments has been released" );
|
||||
}
|
||||
|
||||
return IArguments.super.optTableUnsafe( index );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseImmediate()
|
||||
{
|
||||
released = true;
|
||||
}
|
||||
}
|
||||
|
@@ -1,73 +0,0 @@
|
||||
/*
|
||||
* This file is part of the public ComputerCraft API - http://www.computercraft.info
|
||||
* Copyright Daniel Ratcliffe, 2011-2021. This API may be redistributed unmodified and in full only.
|
||||
* For help using the API, and posting your mods, visit the forums at computercraft.info.
|
||||
*/
|
||||
package dan200.computercraft.api.lua;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class ObjectLuaTable implements LuaTable<Object, Object>
|
||||
{
|
||||
private final Map<Object, Object> map;
|
||||
|
||||
public ObjectLuaTable( Map<?, ?> map )
|
||||
{
|
||||
this.map = Collections.unmodifiableMap( map );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size()
|
||||
{
|
||||
return map.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty()
|
||||
{
|
||||
return map.isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsKey( Object o )
|
||||
{
|
||||
return map.containsKey( o );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsValue( Object o )
|
||||
{
|
||||
return map.containsKey( o );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object get( Object o )
|
||||
{
|
||||
return map.get( o );
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public Set<Object> keySet()
|
||||
{
|
||||
return map.keySet();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public Collection<Object> values()
|
||||
{
|
||||
return map.values();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public Set<Entry<Object, Object>> entrySet()
|
||||
{
|
||||
return map.entrySet();
|
||||
}
|
||||
}
|
@@ -6,10 +6,10 @@
|
||||
package dan200.computercraft.api.media;
|
||||
|
||||
import dan200.computercraft.api.filesystem.IMount;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.SoundEvent;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
@@ -78,11 +78,11 @@ public interface IMedia
|
||||
* implements {@link dan200.computercraft.api.filesystem.IWritableMount}, it will mounted using mountWritable()
|
||||
* @see IMount
|
||||
* @see dan200.computercraft.api.filesystem.IWritableMount
|
||||
* @see dan200.computercraft.api.ComputerCraftAPI#createSaveDirMount(World, String, long)
|
||||
* @see dan200.computercraft.api.ComputerCraftAPI#createSaveDirMount(Level, String, long)
|
||||
* @see dan200.computercraft.api.ComputerCraftAPI#createResourceMount(String, String)
|
||||
*/
|
||||
@Nullable
|
||||
default IMount createDataMount( @Nonnull ItemStack stack, @Nonnull World world )
|
||||
default IMount createDataMount( @Nonnull ItemStack stack, @Nonnull Level world )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user