Pondering Alone, Part V

- merge mc1.18/dev
- reuse transform interfaces from Flywheel and include them in catnip
- extend SBB interface slightly
- copy .editorconfig to catnip and ponder
This commit is contained in:
zelophed 2022-10-14 00:15:44 +02:00
commit 25f259e0bc
1328 changed files with 36567 additions and 21590 deletions

View file

@ -49,6 +49,9 @@ body:
label: Mod Version label: Mod Version
description: The version of the mod you were using when the bug occured description: The version of the mod you were using when the bug occured
options: options:
- "0.5.0f"
- "0.5.0e"
- "0.5.0d"
- "0.5.0c" - "0.5.0c"
- "0.5.0b" - "0.5.0b"
- "0.5.0a" - "0.5.0a"
@ -106,6 +109,7 @@ body:
label: Minecraft Version label: Minecraft Version
description: The version of Minecraft you were using when the bug occured description: The version of Minecraft you were using when the bug occured
options: options:
- "1.19.2"
- "1.18.2" - "1.18.2"
- "1.18.1" - "1.18.1"
- "1.18" - "1.18"

View file

@ -8,3 +8,5 @@
- "1.17" - "1.17"
1.18: 1.18:
- "1.18" - "1.18"
1.19:
- "1.19"

View file

@ -1,26 +0,0 @@
# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
name: Java CI with Gradle
on:
push:
branches: [ mc1.15/dev ]
pull_request:
branches: [ mc1.15/dev ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build

View file

@ -9,9 +9,9 @@
<br><br> <br><br>
</h1> </h1>
<p>Welcome to Create, a mod offering a variety of tools and blocks for Building, Decoration and Aesthetic Automation.</p> <p>Welcome to Create, a mod offering a variety of tools and blocks for Building, Decoration, and Aesthetic Automation.</p>
<p>The added elements of tech are designed to leave as many design choices to the player as possible. With Create, the game isn't played inside a bunch of UIs, it challenges you to set up contraptions of animated components working together in many possible arrangements.</p> <p>The added elements of tech are designed to leave as many design choices to the player as possible. With Create, the game isn't played inside a bunch of UIs, it challenges you to set up contraptions of animated components working together in many possible arrangements.</p>
<p>Create's visual in-game documentation called 'Ponder' will guide you though all added mechanics and gadgets.</p> <p>Create's visual in-game documentation called 'Ponder' will guide you through all added mechanics and gadgets.</p>
<p>&nbsp;</p> <p>&nbsp;</p>
<p align="center"><a href="https://github.com/Creators-of-Create/Create/issues"><img src="https://i.imgur.com/qPmjSXy.png" width="160" /></a> <a href="https://www.youtube.com/channel/UCrKV2QTuyGcv4E3eSJpBiYA/playlists"><img src="https://i.imgur.com/L1bU9mr.png" width="160" /></a><a href="https://discord.gg/hmaD7Se"><img src="https://i.imgur.com/uf6V9ZX.png" width="160" /></a> <a href="https://github.com/Creators-of-Create/Create/wiki/Supporting-the-Project"><img src="https://i.imgur.com/fHQ45KR.png" width="227" /></a></p> <p align="center"><a href="https://github.com/Creators-of-Create/Create/issues"><img src="https://i.imgur.com/qPmjSXy.png" width="160" /></a> <a href="https://www.youtube.com/channel/UCrKV2QTuyGcv4E3eSJpBiYA/playlists"><img src="https://i.imgur.com/L1bU9mr.png" width="160" /></a><a href="https://discord.gg/hmaD7Se"><img src="https://i.imgur.com/uf6V9ZX.png" width="160" /></a> <a href="https://github.com/Creators-of-Create/Create/wiki/Supporting-the-Project"><img src="https://i.imgur.com/fHQ45KR.png" width="227" /></a></p>

View file

@ -7,13 +7,13 @@ buildscript {
maven { url = 'https://maven.parchmentmc.org' } maven { url = 'https://maven.parchmentmc.org' }
} }
dependencies { dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: "${forgegradle_version}", changing: true classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: "${forgegradle_version}", changing: false
classpath "org.spongepowered:mixingradle:${mixingradle_version}" classpath "org.spongepowered:mixingradle:${mixingradle_version}"
classpath "org.parchmentmc:librarian:${librarian_version}" classpath "org.parchmentmc:librarian:${librarian_version}"
} }
} }
plugins { plugins {
id 'com.github.johnrengelman.shadow' version "${shadow_version}"
id 'com.matthewprenger.cursegradle' version "${cursegradle_version}" id 'com.matthewprenger.cursegradle' version "${cursegradle_version}"
} }
apply plugin: 'net.minecraftforge.gradle' apply plugin: 'net.minecraftforge.gradle'
@ -22,6 +22,8 @@ apply plugin: 'eclipse'
apply plugin: 'maven-publish' apply plugin: 'maven-publish'
apply plugin: 'org.spongepowered.mixin' apply plugin: 'org.spongepowered.mixin'
jarJar.enable()
boolean dev = System.getenv('RELEASE') == null || System.getenv('RELEASE').equals('false'); boolean dev = System.getenv('RELEASE') == null || System.getenv('RELEASE').equals('false');
// jozu: I use a gradle workspace with both projects. // jozu: I use a gradle workspace with both projects.
// The project is named Flywheel-Forge, but sub-projects are named by folder. // The project is named Flywheel-Forge, but sub-projects are named by folder.
@ -40,11 +42,10 @@ if (ponderInWorkspace) {
} }
ext.buildNumber = System.getenv('BUILD_NUMBER') ext.buildNumber = System.getenv('BUILD_NUMBER')
if (buildNumber == null) buildNumber = 'custom'
version = "mc${minecraft_version}_v${mod_version}" + (dev && !buildNumber.equals('custom') ? "+${buildNumber}" : '')
group = 'com.simibubi.create' group = 'com.simibubi.create'
archivesBaseName = 'create' archivesBaseName = "create-${artifact_minecraft_version}"
version = mod_version + (dev && buildNumber != null ? "-${buildNumber}" : '')
java.toolchain.languageVersion = JavaLanguageVersion.of(17) java.toolchain.languageVersion = JavaLanguageVersion.of(17)
@ -68,6 +69,7 @@ minecraft {
arg '-mixin.config=catnip.mixins.json' arg '-mixin.config=catnip.mixins.json'
} }
//jvmArgs("-XX:+IgnoreUnrecognizedVMOptions", "-XX:+AllowEnhancedClassRedefinition") // uncomment with jbr
//jvmArgs '-XX:+UnlockCommercialFeatures' // uncomment for profiling //jvmArgs '-XX:+UnlockCommercialFeatures' // uncomment for profiling
property 'forge.logging.console.level', 'info' property 'forge.logging.console.level', 'info'
mods { mods {
@ -166,18 +168,6 @@ minecraft {
} }
} }
compileJava {
options.compilerArgs = ['-Xdiags:verbose']
}
sourceSets.main.resources {
srcDir 'src/generated/resources'
}
mixin {
add sourceSets.main, 'create.refmap.json'
}
repositories { repositories {
maven { maven {
// Location of the maven that hosts JEI files (and TiC) // Location of the maven that hosts JEI files (and TiC)
@ -218,23 +208,32 @@ repositories {
name 'createmod maven' name 'createmod maven'
url 'https://maven.createmod.net' url 'https://maven.createmod.net'
} }
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
content {
includeGroup "maven.modrinth"
}
} }
configurations {
shade
} }
dependencies { dependencies {
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
def registrate = "com.tterrag.registrate:Registrate:${registrate_version}" jarJar(group: 'com.tterrag.registrate', name: 'Registrate', version: '[MC1.18.2-1.1.3,)') {
implementation fg.deobf(registrate) jarJar.pin(it, project.registrate_version)
shade registrate }
// Uncomment once Forge fixes mixins for included jars
//jarJar(group: 'com.jozufozu.flywheel', name: "flywheel-forge-${flywheel_minecraft_version}", version: '[0.6.4,0.6.5)') {
// jarJar.pin(it, project.flywheel_version)
//}
implementation fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}")
if (flywheelInWorkspace) { if (flywheelInWorkspace) {
implementation project(':Flywheel') implementation project(':Flywheel')
} else { } else {
implementation fg.deobf("com.jozufozu.flywheel:Flywheel-Forge:${flywheel_version}") implementation fg.deobf("com.jozufozu.flywheel:flywheel-forge-${flywheel_minecraft_version}:${flywheel_version}")
} }
if (catnipInWorkspace) { if (catnipInWorkspace) {
@ -263,6 +262,7 @@ dependencies {
// runtimeOnly fg.deobf("vazkii.quark:Quark:r2.0-212.984") // runtimeOnly fg.deobf("vazkii.quark:Quark:r2.0-212.984")
// runtimeOnly fg.deobf("slimeknights.mantle:Mantle:1.16.5-1.6.115") // runtimeOnly fg.deobf("slimeknights.mantle:Mantle:1.16.5-1.6.115")
// runtimeOnly fg.deobf("slimeknights.tconstruct:TConstruct:1.16.5-3.1.1.252") // runtimeOnly fg.deobf("slimeknights.tconstruct:TConstruct:1.16.5-3.1.1.252")
// runtimeOnly fg.deobf("maven.modrinth:rubidium:0.5.3")
// https://discord.com/channels/313125603924639766/725850371834118214/910619168821354497 // https://discord.com/channels/313125603924639766/725850371834118214/910619168821354497
// Prevent Mixin annotation processor from getting into IntelliJ's annotation processor settings // Prevent Mixin annotation processor from getting into IntelliJ's annotation processor settings
@ -272,6 +272,29 @@ dependencies {
} }
} }
sourceSets.main.resources {
srcDir 'src/generated/resources'
exclude '.cache/'
}
mixin {
add sourceSets.main, 'create.refmap.json'
}
// Workaround for SpongePowered/MixinGradle#38
afterEvaluate {
tasks.configureReobfTaskForReobfJar.mustRunAfter(tasks.compileJava)
tasks.configureReobfTaskForReobfJarJar.mustRunAfter(tasks.compileJava)
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
}
compileJava {
options.compilerArgs = ['-Xdiags:verbose']
}
jar { jar {
classifier = 'slim' classifier = 'slim'
manifest { manifest {
@ -279,8 +302,8 @@ jar {
'Specification-Title': 'create', 'Specification-Title': 'create',
'Specification-Vendor': 'simibubi', 'Specification-Vendor': 'simibubi',
'Specification-Version': '1', 'Specification-Version': '1',
'Implementation-Title': project.name, 'Implementation-Title': project.jar.baseName,
'Implementation-Version': "${version}", 'Implementation-Version': project.jar.archiveVersion,
'Implementation-Vendor': 'simibubi', 'Implementation-Vendor': 'simibubi',
'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
'MixinConfigs': 'create.mixins.json' 'MixinConfigs': 'create.mixins.json'
@ -288,40 +311,40 @@ jar {
} }
} }
shadowJar { task jarJarRelease {
doLast {
tasks.jarJar {
classifier = '' classifier = ''
configurations = [project.configurations.shade] }
relocate 'com.tterrag.registrate', 'com.simibubi.create.repack.registrate' }
finalizedBy tasks.jarJar
} }
reobf { java {
shadowJar {} withSourcesJar()
withJavadocJar()
} }
void addLicense(jarTask) {
task sourcesJar(type: Jar) { jarTask.from('LICENSE') {
from sourceSets.main.allSource rename { "${it}_${project.archivesBaseName}" }
archiveBaseName.set(project.archivesBaseName) }
archiveVersion.set("${project.version}")
archiveClassifier.set('sources')
} }
task javadocJar(type: Jar, dependsOn: javadoc) { jar.finalizedBy('reobfJar')
from javadoc.destinationDir tasks.jarJar.finalizedBy('reobfJarJar')
archiveClassifier.set('javadoc')
}
artifacts { addLicense(jar)
archives jar, shadowJar, sourcesJar, javadocJar addLicense(tasks.jarJar)
}
publishing { publishing {
tasks.publish.dependsOn 'build'
publications { publications {
mavenJava(MavenPublication) { mavenJava(MavenPublication) {
artifact shadowJar artifactId = archivesBaseName
artifact sourcesJar
artifact javadocJar from components.java
fg.component(it)
jarJar.component(it)
} }
} }

View file

@ -4,28 +4,30 @@ org.gradle.jvmargs = -Xmx3G
org.gradle.daemon = false org.gradle.daemon = false
# mod version info # mod version info
mod_version = 0.5.0c mod_version = 0.5.0.e
artifact_minecraft_version = 1.18.2
minecraft_version = 1.18.2 minecraft_version = 1.18.2
forge_version = 40.1.60 forge_version = 40.1.60
# build dependency versions # build dependency versions
forgegradle_version = 5.1.+ forgegradle_version = 5.1.53
mixingradle_version = 0.7-SNAPSHOT mixingradle_version = 0.7-SNAPSHOT
mixin_version = 0.8.5 mixin_version = 0.8.5
librarian_version = 1.+ librarian_version = 1.+
shadow_version = 7.1.0
cursegradle_version = 1.4.0 cursegradle_version = 1.4.0
parchment_version = 2022.07.10 parchment_version = 2022.07.10
# dependency versions # dependency versions
registrate_version = MC1.18.2-1.1.3 registrate_version = MC1.18.2-1.1.3
flywheel_version = 1.18-0.6.4.86 flywheel_minecraft_version = 1.18.2
flywheel_version = 0.6.5-91
jei_minecraft_version = 1.18.2 jei_minecraft_version = 1.18.2
jei_version = 9.5.3.143 jei_version = 9.7.0.209
curios_minecraft_version = 1.18.2 curios_minecraft_version = 1.18.2
curios_version = 5.0.7.0 curios_version = 5.0.7.0
catnip_version = 0.5.5 catnip_version = 0.5.6
ponder_version = 0.5.6 ponder_version = 0.5.7
# curseforge information # curseforge information
projectId = 328085 projectId = 328085

View file

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

File diff suppressed because it is too large Load diff

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/black_valve_handle", "model": "create:block/black_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/black_valve_handle" "model": "create:block/black_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/black_valve_handle", "model": "create:block/black_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/black_valve_handle", "model": "create:block/black_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/black_valve_handle", "model": "create:block/black_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/black_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/black_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/black_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/black_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/black_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/black_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/black_valve_handle", "model": "create:block/black_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/blue_valve_handle", "model": "create:block/blue_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/blue_valve_handle" "model": "create:block/blue_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/blue_valve_handle", "model": "create:block/blue_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/blue_valve_handle", "model": "create:block/blue_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/blue_valve_handle", "model": "create:block/blue_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/blue_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/blue_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/blue_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/blue_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/blue_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/blue_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/blue_valve_handle", "model": "create:block/blue_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/brown_valve_handle", "model": "create:block/brown_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/brown_valve_handle" "model": "create:block/brown_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/brown_valve_handle", "model": "create:block/brown_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/brown_valve_handle", "model": "create:block/brown_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/brown_valve_handle", "model": "create:block/brown_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/brown_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/brown_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/brown_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/brown_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/brown_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/brown_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/brown_valve_handle", "model": "create:block/brown_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/copper_valve_handle", "model": "create:block/copper_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/copper_valve_handle" "model": "create:block/copper_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/copper_valve_handle", "model": "create:block/copper_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/copper_valve_handle", "model": "create:block/copper_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/copper_valve_handle", "model": "create:block/copper_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/copper_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/copper_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/copper_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/copper_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/copper_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/copper_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/copper_valve_handle", "model": "create:block/copper_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/cyan_valve_handle", "model": "create:block/cyan_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/cyan_valve_handle" "model": "create:block/cyan_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/cyan_valve_handle", "model": "create:block/cyan_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/cyan_valve_handle", "model": "create:block/cyan_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/cyan_valve_handle", "model": "create:block/cyan_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/cyan_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/cyan_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/cyan_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/cyan_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/cyan_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/cyan_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/cyan_valve_handle", "model": "create:block/cyan_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,53 +1,5 @@
{ {
"multipart": [ "multipart": [
{
"when": {
"down": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/down"
}
},
{
"when": {
"up": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/up"
}
},
{
"when": {
"north": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/north"
}
},
{
"when": {
"south": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/south"
}
},
{
"when": {
"west": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/west"
}
},
{
"when": {
"east": "true"
},
"apply": {
"model": "create:block/fluid_pipe/connection/east"
}
},
{ {
"when": { "when": {
"up": "true", "up": "true",
@ -158,17 +110,6 @@
"model": "create:block/fluid_pipe/r_x" "model": "create:block/fluid_pipe/r_x"
} }
}, },
{
"when": {
"up": "false",
"south": "false",
"north": "false",
"down": "false"
},
"apply": {
"model": "create:block/fluid_pipe/none_x"
}
},
{ {
"when": { "when": {
"south": "true", "south": "true",
@ -279,17 +220,6 @@
"model": "create:block/fluid_pipe/r_y" "model": "create:block/fluid_pipe/r_y"
} }
}, },
{
"when": {
"south": "false",
"east": "false",
"west": "false",
"north": "false"
},
"apply": {
"model": "create:block/fluid_pipe/none_y"
}
},
{ {
"when": { "when": {
"up": "true", "up": "true",
@ -399,17 +329,6 @@
"apply": { "apply": {
"model": "create:block/fluid_pipe/r_z" "model": "create:block/fluid_pipe/r_z"
} }
},
{
"when": {
"up": "false",
"east": "false",
"west": "false",
"down": "false"
},
"apply": {
"model": "create:block/fluid_pipe/none_z"
}
} }
] ]
} }

View file

@ -1,98 +1,194 @@
{ {
"variants": { "variants": {
"axis_along_first=false,enabled=false,facing=down": { "axis_along_first=false,enabled=false,facing=down,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_closed", "model": "create:block/fluid_valve/block_horizontal_closed",
"x": 270, "x": 270,
"y": 90 "y": 90
}, },
"axis_along_first=true,enabled=false,facing=down": { "axis_along_first=true,enabled=false,facing=down,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_closed", "model": "create:block/fluid_valve/block_horizontal_closed",
"x": 270 "x": 270
}, },
"axis_along_first=false,enabled=true,facing=down": { "axis_along_first=false,enabled=true,facing=down,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_open", "model": "create:block/fluid_valve/block_horizontal_open",
"x": 270, "x": 270,
"y": 90 "y": 90
}, },
"axis_along_first=true,enabled=true,facing=down": { "axis_along_first=true,enabled=true,facing=down,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_open", "model": "create:block/fluid_valve/block_horizontal_open",
"x": 270 "x": 270
}, },
"axis_along_first=false,enabled=false,facing=up": { "axis_along_first=false,enabled=false,facing=up,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_closed", "model": "create:block/fluid_valve/block_horizontal_closed",
"x": 90, "x": 90,
"y": 90 "y": 90
}, },
"axis_along_first=true,enabled=false,facing=up": { "axis_along_first=true,enabled=false,facing=up,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_closed", "model": "create:block/fluid_valve/block_horizontal_closed",
"x": 90 "x": 90
}, },
"axis_along_first=false,enabled=true,facing=up": { "axis_along_first=false,enabled=true,facing=up,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_open", "model": "create:block/fluid_valve/block_horizontal_open",
"x": 90, "x": 90,
"y": 90 "y": 90
}, },
"axis_along_first=true,enabled=true,facing=up": { "axis_along_first=true,enabled=true,facing=up,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_open", "model": "create:block/fluid_valve/block_horizontal_open",
"x": 90 "x": 90
}, },
"axis_along_first=false,enabled=false,facing=north": { "axis_along_first=false,enabled=false,facing=north,waterlogged=false": {
"model": "create:block/fluid_valve/block_vertical_closed", "model": "create:block/fluid_valve/block_vertical_closed",
"y": 180 "y": 180
}, },
"axis_along_first=true,enabled=false,facing=north": { "axis_along_first=true,enabled=false,facing=north,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_closed", "model": "create:block/fluid_valve/block_horizontal_closed",
"y": 180 "y": 180
}, },
"axis_along_first=false,enabled=true,facing=north": { "axis_along_first=false,enabled=true,facing=north,waterlogged=false": {
"model": "create:block/fluid_valve/block_vertical_open", "model": "create:block/fluid_valve/block_vertical_open",
"y": 180 "y": 180
}, },
"axis_along_first=true,enabled=true,facing=north": { "axis_along_first=true,enabled=true,facing=north,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_open", "model": "create:block/fluid_valve/block_horizontal_open",
"y": 180 "y": 180
}, },
"axis_along_first=false,enabled=false,facing=south": { "axis_along_first=false,enabled=false,facing=south,waterlogged=false": {
"model": "create:block/fluid_valve/block_vertical_closed" "model": "create:block/fluid_valve/block_vertical_closed"
}, },
"axis_along_first=true,enabled=false,facing=south": { "axis_along_first=true,enabled=false,facing=south,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_closed" "model": "create:block/fluid_valve/block_horizontal_closed"
}, },
"axis_along_first=false,enabled=true,facing=south": { "axis_along_first=false,enabled=true,facing=south,waterlogged=false": {
"model": "create:block/fluid_valve/block_vertical_open" "model": "create:block/fluid_valve/block_vertical_open"
}, },
"axis_along_first=true,enabled=true,facing=south": { "axis_along_first=true,enabled=true,facing=south,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_open" "model": "create:block/fluid_valve/block_horizontal_open"
}, },
"axis_along_first=false,enabled=false,facing=west": { "axis_along_first=false,enabled=false,facing=west,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_closed", "model": "create:block/fluid_valve/block_horizontal_closed",
"y": 90 "y": 90
}, },
"axis_along_first=true,enabled=false,facing=west": { "axis_along_first=true,enabled=false,facing=west,waterlogged=false": {
"model": "create:block/fluid_valve/block_vertical_closed", "model": "create:block/fluid_valve/block_vertical_closed",
"y": 90 "y": 90
}, },
"axis_along_first=false,enabled=true,facing=west": { "axis_along_first=false,enabled=true,facing=west,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_open", "model": "create:block/fluid_valve/block_horizontal_open",
"y": 90 "y": 90
}, },
"axis_along_first=true,enabled=true,facing=west": { "axis_along_first=true,enabled=true,facing=west,waterlogged=false": {
"model": "create:block/fluid_valve/block_vertical_open", "model": "create:block/fluid_valve/block_vertical_open",
"y": 90 "y": 90
}, },
"axis_along_first=false,enabled=false,facing=east": { "axis_along_first=false,enabled=false,facing=east,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_closed", "model": "create:block/fluid_valve/block_horizontal_closed",
"y": 270 "y": 270
}, },
"axis_along_first=true,enabled=false,facing=east": { "axis_along_first=true,enabled=false,facing=east,waterlogged=false": {
"model": "create:block/fluid_valve/block_vertical_closed", "model": "create:block/fluid_valve/block_vertical_closed",
"y": 270 "y": 270
}, },
"axis_along_first=false,enabled=true,facing=east": { "axis_along_first=false,enabled=true,facing=east,waterlogged=false": {
"model": "create:block/fluid_valve/block_horizontal_open", "model": "create:block/fluid_valve/block_horizontal_open",
"y": 270 "y": 270
}, },
"axis_along_first=true,enabled=true,facing=east": { "axis_along_first=true,enabled=true,facing=east,waterlogged=false": {
"model": "create:block/fluid_valve/block_vertical_open",
"y": 270
},
"axis_along_first=false,enabled=false,facing=down,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_closed",
"x": 270,
"y": 90
},
"axis_along_first=true,enabled=false,facing=down,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_closed",
"x": 270
},
"axis_along_first=false,enabled=true,facing=down,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_open",
"x": 270,
"y": 90
},
"axis_along_first=true,enabled=true,facing=down,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_open",
"x": 270
},
"axis_along_first=false,enabled=false,facing=up,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_closed",
"x": 90,
"y": 90
},
"axis_along_first=true,enabled=false,facing=up,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_closed",
"x": 90
},
"axis_along_first=false,enabled=true,facing=up,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_open",
"x": 90,
"y": 90
},
"axis_along_first=true,enabled=true,facing=up,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_open",
"x": 90
},
"axis_along_first=false,enabled=false,facing=north,waterlogged=true": {
"model": "create:block/fluid_valve/block_vertical_closed",
"y": 180
},
"axis_along_first=true,enabled=false,facing=north,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_closed",
"y": 180
},
"axis_along_first=false,enabled=true,facing=north,waterlogged=true": {
"model": "create:block/fluid_valve/block_vertical_open",
"y": 180
},
"axis_along_first=true,enabled=true,facing=north,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_open",
"y": 180
},
"axis_along_first=false,enabled=false,facing=south,waterlogged=true": {
"model": "create:block/fluid_valve/block_vertical_closed"
},
"axis_along_first=true,enabled=false,facing=south,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_closed"
},
"axis_along_first=false,enabled=true,facing=south,waterlogged=true": {
"model": "create:block/fluid_valve/block_vertical_open"
},
"axis_along_first=true,enabled=true,facing=south,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_open"
},
"axis_along_first=false,enabled=false,facing=west,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_closed",
"y": 90
},
"axis_along_first=true,enabled=false,facing=west,waterlogged=true": {
"model": "create:block/fluid_valve/block_vertical_closed",
"y": 90
},
"axis_along_first=false,enabled=true,facing=west,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_open",
"y": 90
},
"axis_along_first=true,enabled=true,facing=west,waterlogged=true": {
"model": "create:block/fluid_valve/block_vertical_open",
"y": 90
},
"axis_along_first=false,enabled=false,facing=east,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_closed",
"y": 270
},
"axis_along_first=true,enabled=false,facing=east,waterlogged=true": {
"model": "create:block/fluid_valve/block_vertical_closed",
"y": 270
},
"axis_along_first=false,enabled=true,facing=east,waterlogged=true": {
"model": "create:block/fluid_valve/block_horizontal_open",
"y": 270
},
"axis_along_first=true,enabled=true,facing=east,waterlogged=true": {
"model": "create:block/fluid_valve/block_vertical_open", "model": "create:block/fluid_valve/block_vertical_open",
"y": 270 "y": 270
} }

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/gray_valve_handle", "model": "create:block/gray_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/gray_valve_handle" "model": "create:block/gray_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/gray_valve_handle", "model": "create:block/gray_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/gray_valve_handle", "model": "create:block/gray_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/gray_valve_handle", "model": "create:block/gray_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/gray_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/gray_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/gray_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/gray_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/gray_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/gray_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/gray_valve_handle", "model": "create:block/gray_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/green_valve_handle", "model": "create:block/green_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/green_valve_handle" "model": "create:block/green_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/green_valve_handle", "model": "create:block/green_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/green_valve_handle", "model": "create:block/green_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/green_valve_handle", "model": "create:block/green_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/green_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/green_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/green_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/green_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/green_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/green_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/green_valve_handle", "model": "create:block/green_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/hand_crank/block", "model": "create:block/hand_crank/block",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/hand_crank/block" "model": "create:block/hand_crank/block"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/hand_crank/block", "model": "create:block/hand_crank/block",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/hand_crank/block", "model": "create:block/hand_crank/block",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/hand_crank/block", "model": "create:block/hand_crank/block",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/hand_crank/block",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/hand_crank/block",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/hand_crank/block"
},
"facing=north,waterlogged=true": {
"model": "create:block/hand_crank/block",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/hand_crank/block",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/hand_crank/block",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/hand_crank/block", "model": "create:block/hand_crank/block",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/light_blue_valve_handle", "model": "create:block/light_blue_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/light_blue_valve_handle" "model": "create:block/light_blue_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/light_blue_valve_handle", "model": "create:block/light_blue_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/light_blue_valve_handle", "model": "create:block/light_blue_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/light_blue_valve_handle", "model": "create:block/light_blue_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/light_blue_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/light_blue_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/light_blue_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/light_blue_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/light_blue_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/light_blue_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/light_blue_valve_handle", "model": "create:block/light_blue_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/light_gray_valve_handle", "model": "create:block/light_gray_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/light_gray_valve_handle" "model": "create:block/light_gray_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/light_gray_valve_handle", "model": "create:block/light_gray_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/light_gray_valve_handle", "model": "create:block/light_gray_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/light_gray_valve_handle", "model": "create:block/light_gray_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/light_gray_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/light_gray_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/light_gray_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/light_gray_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/light_gray_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/light_gray_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/light_gray_valve_handle", "model": "create:block/light_gray_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/lime_valve_handle", "model": "create:block/lime_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/lime_valve_handle" "model": "create:block/lime_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/lime_valve_handle", "model": "create:block/lime_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/lime_valve_handle", "model": "create:block/lime_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/lime_valve_handle", "model": "create:block/lime_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/lime_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/lime_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/lime_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/lime_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/lime_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/lime_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/lime_valve_handle", "model": "create:block/lime_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/magenta_valve_handle", "model": "create:block/magenta_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/magenta_valve_handle" "model": "create:block/magenta_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/magenta_valve_handle", "model": "create:block/magenta_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/magenta_valve_handle", "model": "create:block/magenta_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/magenta_valve_handle", "model": "create:block/magenta_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/magenta_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/magenta_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/magenta_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/magenta_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/magenta_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/magenta_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/magenta_valve_handle", "model": "create:block/magenta_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/mechanical_drill/block", "model": "create:block/mechanical_drill/block",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/mechanical_drill/block" "model": "create:block/mechanical_drill/block"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/mechanical_drill/block", "model": "create:block/mechanical_drill/block",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/mechanical_drill/block", "model": "create:block/mechanical_drill/block",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/mechanical_drill/block", "model": "create:block/mechanical_drill/block",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/mechanical_drill/block",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/mechanical_drill/block",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/mechanical_drill/block"
},
"facing=north,waterlogged=true": {
"model": "create:block/mechanical_drill/block",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/mechanical_drill/block",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/mechanical_drill/block",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/mechanical_drill/block", "model": "create:block/mechanical_drill/block",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/orange_valve_handle", "model": "create:block/orange_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/orange_valve_handle" "model": "create:block/orange_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/orange_valve_handle", "model": "create:block/orange_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/orange_valve_handle", "model": "create:block/orange_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/orange_valve_handle", "model": "create:block/orange_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/orange_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/orange_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/orange_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/orange_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/orange_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/orange_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/orange_valve_handle", "model": "create:block/orange_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/pink_valve_handle", "model": "create:block/pink_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/pink_valve_handle" "model": "create:block/pink_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/pink_valve_handle", "model": "create:block/pink_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/pink_valve_handle", "model": "create:block/pink_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/pink_valve_handle", "model": "create:block/pink_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/pink_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/pink_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/pink_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/pink_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/pink_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/pink_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/pink_valve_handle", "model": "create:block/pink_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/purple_valve_handle", "model": "create:block/purple_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/purple_valve_handle" "model": "create:block/purple_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/purple_valve_handle", "model": "create:block/purple_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/purple_valve_handle", "model": "create:block/purple_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/purple_valve_handle", "model": "create:block/purple_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/purple_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/purple_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/purple_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/purple_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/purple_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/purple_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/purple_valve_handle", "model": "create:block/purple_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/red_valve_handle", "model": "create:block/red_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/red_valve_handle" "model": "create:block/red_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/red_valve_handle", "model": "create:block/red_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/red_valve_handle", "model": "create:block/red_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/red_valve_handle", "model": "create:block/red_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/red_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/red_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/red_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/red_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/red_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/red_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/red_valve_handle", "model": "create:block/red_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,54 +1,107 @@
{ {
"variants": { "variants": {
"face=floor,facing=north": { "face=floor,facing=north,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"y": 180 "y": 180
}, },
"face=wall,facing=north": { "face=wall,facing=north,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"x": 270, "x": 270,
"y": 180 "y": 180
}, },
"face=ceiling,facing=north": { "face=ceiling,facing=north,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"x": 180 "x": 180
}, },
"face=floor,facing=south": { "face=floor,facing=south,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block" "model": "create:block/smart_fluid_pipe/block"
}, },
"face=wall,facing=south": { "face=wall,facing=south,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"x": 270 "x": 270
}, },
"face=ceiling,facing=south": { "face=ceiling,facing=south,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"x": 180, "x": 180,
"y": 180 "y": 180
}, },
"face=floor,facing=west": { "face=floor,facing=west,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"y": 90 "y": 90
}, },
"face=wall,facing=west": { "face=wall,facing=west,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"x": 270, "x": 270,
"y": 90 "y": 90
}, },
"face=ceiling,facing=west": { "face=ceiling,facing=west,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"x": 180, "x": 180,
"y": 270 "y": 270
}, },
"face=floor,facing=east": { "face=floor,facing=east,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"y": 270 "y": 270
}, },
"face=wall,facing=east": { "face=wall,facing=east,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"x": 270, "x": 270,
"y": 270 "y": 270
}, },
"face=ceiling,facing=east": { "face=ceiling,facing=east,waterlogged=false": {
"model": "create:block/smart_fluid_pipe/block",
"x": 180,
"y": 90
},
"face=floor,facing=north,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block",
"y": 180
},
"face=wall,facing=north,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block",
"x": 270,
"y": 180
},
"face=ceiling,facing=north,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block",
"x": 180
},
"face=floor,facing=south,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block"
},
"face=wall,facing=south,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block",
"x": 270
},
"face=ceiling,facing=south,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block",
"x": 180,
"y": 180
},
"face=floor,facing=west,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block",
"y": 90
},
"face=wall,facing=west,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block",
"x": 270,
"y": 90
},
"face=ceiling,facing=west,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block",
"x": 180,
"y": 270
},
"face=floor,facing=east,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block",
"y": 270
},
"face=wall,facing=east,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block",
"x": 270,
"y": 270
},
"face=ceiling,facing=east,waterlogged=true": {
"model": "create:block/smart_fluid_pipe/block", "model": "create:block/smart_fluid_pipe/block",
"x": 180, "x": 180,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/white_valve_handle", "model": "create:block/white_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/white_valve_handle" "model": "create:block/white_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/white_valve_handle", "model": "create:block/white_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/white_valve_handle", "model": "create:block/white_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/white_valve_handle", "model": "create:block/white_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/white_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/white_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/white_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/white_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/white_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/white_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/white_valve_handle", "model": "create:block/white_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -1,27 +1,53 @@
{ {
"variants": { "variants": {
"facing=down": { "facing=down,waterlogged=false": {
"model": "create:block/yellow_valve_handle", "model": "create:block/yellow_valve_handle",
"x": 180 "x": 180
}, },
"facing=up": { "facing=up,waterlogged=false": {
"model": "create:block/yellow_valve_handle" "model": "create:block/yellow_valve_handle"
}, },
"facing=north": { "facing=north,waterlogged=false": {
"model": "create:block/yellow_valve_handle", "model": "create:block/yellow_valve_handle",
"x": 90 "x": 90
}, },
"facing=south": { "facing=south,waterlogged=false": {
"model": "create:block/yellow_valve_handle", "model": "create:block/yellow_valve_handle",
"x": 90, "x": 90,
"y": 180 "y": 180
}, },
"facing=west": { "facing=west,waterlogged=false": {
"model": "create:block/yellow_valve_handle", "model": "create:block/yellow_valve_handle",
"x": 90, "x": 90,
"y": 270 "y": 270
}, },
"facing=east": { "facing=east,waterlogged=false": {
"model": "create:block/yellow_valve_handle",
"x": 90,
"y": 90
},
"facing=down,waterlogged=true": {
"model": "create:block/yellow_valve_handle",
"x": 180
},
"facing=up,waterlogged=true": {
"model": "create:block/yellow_valve_handle"
},
"facing=north,waterlogged=true": {
"model": "create:block/yellow_valve_handle",
"x": 90
},
"facing=south,waterlogged=true": {
"model": "create:block/yellow_valve_handle",
"x": 90,
"y": 180
},
"facing=west,waterlogged=true": {
"model": "create:block/yellow_valve_handle",
"x": 90,
"y": 270
},
"facing=east,waterlogged=true": {
"model": "create:block/yellow_valve_handle", "model": "create:block/yellow_valve_handle",
"x": 90, "x": 90,
"y": 90 "y": 90

View file

@ -666,28 +666,28 @@
"_": "->------------------------] Advancements [------------------------<-", "_": "->------------------------] Advancements [------------------------<-",
"advancement.create.root": "Welcome to Create", "advancement.create.root": "Welcome to Create",
"advancement.create.root.desc": "Here be Contraptions", "advancement.create.root.desc": "Here Be Contraptions",
"advancement.create.andesite_alloy": "Sturdier Rocks", "advancement.create.andesite_alloy": "Sturdier Rocks",
"advancement.create.andesite_alloy.desc": "Obtain some Andesite Alloy, Create's most important resource", "advancement.create.andesite_alloy.desc": "Obtain some Andesite Alloy, Create's most important resource",
"advancement.create.andesite_casing": "The Andesite Age", "advancement.create.andesite_casing": "The Andesite Age",
"advancement.create.andesite_casing.desc": "Apply Andesite Alloy to wood creating a basic casing for your machines", "advancement.create.andesite_casing.desc": "Apply Andesite Alloy to stripped wood, creating a basic casing for your machines",
"advancement.create.mechanical_press": "Bonk", "advancement.create.mechanical_press": "Bonk!",
"advancement.create.mechanical_press.desc": "Create some sheets in a Mechanical Press", "advancement.create.mechanical_press.desc": "Create some sheets in a Mechanical Press",
"advancement.create.encased_fan": "Wind maker", "advancement.create.encased_fan": "Wind Maker",
"advancement.create.encased_fan.desc": "Place and activate an Encased Fan", "advancement.create.encased_fan.desc": "Place and power an Encased Fan",
"advancement.create.fan_processing": "Processing by Particle", "advancement.create.fan_processing": "Processing by Particle",
"advancement.create.fan_processing.desc": "Use an Encased Fan to process materials", "advancement.create.fan_processing.desc": "Use an Encased Fan to process materials",
"advancement.create.saw_processing": "Workshop's most feared", "advancement.create.saw_processing": "Workshop's Most Feared",
"advancement.create.saw_processing.desc": "Use an upright Mechanical Saw to process materials", "advancement.create.saw_processing.desc": "Use an upright Mechanical Saw to process materials",
"advancement.create.compacting": "Compactification", "advancement.create.compacting": "Compactification",
"advancement.create.compacting.desc": "Use a Press and a Basin to create less items from more items", "advancement.create.compacting.desc": "Use a Mechanical Press and a Basin to create fewer items from more",
"advancement.create.belt": "Kelp Drive", "advancement.create.belt": "Kelp Drive",
"advancement.create.belt.desc": "Connect two Shafts with a Mechanical Belt", "advancement.create.belt.desc": "Connect two Shafts with a Mechanical Belt",
"advancement.create.funnel": "Airport Aesthetic", "advancement.create.funnel": "Airport Aesthetic",
"advancement.create.funnel.desc": "Extract or insert items into a container using a Funnel", "advancement.create.funnel.desc": "Extract or insert items into a container using a Funnel",
"advancement.create.chute": "Vertical Logistics", "advancement.create.chute": "Vertical Logistics",
"advancement.create.chute.desc": "Transport some items by Chute", "advancement.create.chute.desc": "Transport some items by Chute",
"advancement.create.mechanical_mixer": "Mixing it up", "advancement.create.mechanical_mixer": "Mixing It Up",
"advancement.create.mechanical_mixer.desc": "Combine ingredients in a Mechanical Mixer", "advancement.create.mechanical_mixer.desc": "Combine ingredients in a Mechanical Mixer",
"advancement.create.burner": "Sentient Fireplace", "advancement.create.burner": "Sentient Fireplace",
"advancement.create.burner.desc": "Obtain a Blaze Burner", "advancement.create.burner.desc": "Obtain a Blaze Burner",
@ -702,25 +702,25 @@
"advancement.create.super_glue": "Area of Connect", "advancement.create.super_glue": "Area of Connect",
"advancement.create.super_glue.desc": "Super Glue some blocks into a group", "advancement.create.super_glue.desc": "Super Glue some blocks into a group",
"advancement.create.contraption_actors": "Moving with Purpose", "advancement.create.contraption_actors": "Moving with Purpose",
"advancement.create.contraption_actors.desc": "Create a contraption with drills, saws or harvesters on board", "advancement.create.contraption_actors.desc": "Create a Contraption with drills, saws, or harvesters on board",
"advancement.create.portable_storage_interface": "Drive-by exchange", "advancement.create.portable_storage_interface": "Drive-By Exchange",
"advancement.create.portable_storage_interface.desc": "Use a Portable Storage Interface to take or insert items into a contraption", "advancement.create.portable_storage_interface.desc": "Use a Portable Storage Interface to take or insert items into a Contraption",
"advancement.create.wrench_goggles": "Kitted out", "advancement.create.wrench_goggles": "Kitted Out",
"advancement.create.wrench_goggles.desc": "Equip Engineer's goggles and a Wrench", "advancement.create.wrench_goggles.desc": "Equip Engineer's Goggles and a Wrench",
"advancement.create.stressometer": "Stress for Nerds", "advancement.create.stressometer": "Stress for Nerds",
"advancement.create.stressometer.desc": "Get an exact readout with the help of Goggles and a Stressometer", "advancement.create.stressometer.desc": "Get an exact readout with the help of Engineer's Goggles and a Stressometer",
"advancement.create.cuckoo_clock": "Is it Time?", "advancement.create.cuckoo_clock": "Is It Time?",
"advancement.create.cuckoo_clock.desc": "Witness your Cuckoo Clock announce bedtime", "advancement.create.cuckoo_clock.desc": "Witness your Cuckoo Clock announce bedtime",
"advancement.create.windmill_maxed": "A Strong Breeze", "advancement.create.windmill_maxed": "A Strong Breeze",
"advancement.create.windmill_maxed.desc": "Assemble a windmill of maximum strength", "advancement.create.windmill_maxed.desc": "Assemble a windmill of maximum strength",
"advancement.create.ejector_maxed": "Springboard Champion", "advancement.create.ejector_maxed": "Springboard Champion",
"advancement.create.ejector_maxed.desc": "Get launched for more than 30 blocks by a Weighted Ejector", "advancement.create.ejector_maxed.desc": "Get launched more than 30 blocks by a Weighted Ejector",
"advancement.create.pulley_maxed": "Rope to Nowhere", "advancement.create.pulley_maxed": "Rope to Nowhere",
"advancement.create.pulley_maxed.desc": "Extend a Rope Pulley over 200 blocks deep", "advancement.create.pulley_maxed.desc": "Extend a Rope Pulley over 200 blocks deep",
"advancement.create.cart_pickup": "Strong Arms", "advancement.create.cart_pickup": "Strong Arms",
"advancement.create.cart_pickup.desc": "Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.cart_pickup.desc": "Pick up a Minecart Contraption with at least 200 attached blocks",
"advancement.create.anvil_plough": "Blacksmith Artillery", "advancement.create.anvil_plough": "Blacksmith Artillery",
"advancement.create.anvil_plough.desc": "Launch an Anvil with Mechanical ploughs", "advancement.create.anvil_plough.desc": "Launch an Anvil with Mechanical Ploughs",
"advancement.create.lava_wheel_00000": "Magma Wheel", "advancement.create.lava_wheel_00000": "Magma Wheel",
"advancement.create.lava_wheel_00000.desc": "This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.lava_wheel_00000.desc": "This shouldn't have worked§7\n(Hidden Advancement)",
"advancement.create.hand_crank_000": "Workout Session", "advancement.create.hand_crank_000": "Workout Session",
@ -729,62 +729,62 @@
"advancement.create.belt_funnel_kiss.desc": "Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", "advancement.create.belt_funnel_kiss.desc": "Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)",
"advancement.create.stressometer_maxed": "Perfectly Stressed", "advancement.create.stressometer_maxed": "Perfectly Stressed",
"advancement.create.stressometer_maxed.desc": "Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed.desc": "Get a 100% readout from a Stressometer§7\n(Hidden Advancement)",
"advancement.create.copper": "More Sturdier Rocks", "advancement.create.copper": "Cuprum Bokum",
"advancement.create.copper.desc": "Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper.desc": "Amass some Copper Ingots for your exploits in fluid manipulation",
"advancement.create.copper_casing": "The Copper Age", "advancement.create.copper_casing": "The Copper Age",
"advancement.create.copper_casing.desc": "Apply Copper Ingots to wood creating a waterproof casing for your machines", "advancement.create.copper_casing.desc": "Apply Copper Ingots to stripped wood, creating a waterproof casing for your machines",
"advancement.create.spout": "Sploosh", "advancement.create.spout": "Sploosh",
"advancement.create.spout.desc": "Watch a fluid containing item be filled using a Spout", "advancement.create.spout.desc": "Watch a fluid-containing item be filled by a Spout",
"advancement.create.drain": "Tumble Draining", "advancement.create.drain": "Tumble Draining",
"advancement.create.drain.desc": "Watch a fluid containing item be emptied by an Item Drain", "advancement.create.drain.desc": "Watch a fluid-containing item be emptied by an Item Drain",
"advancement.create.steam_engine": "The Powerhouse", "advancement.create.steam_engine": "The Powerhouse",
"advancement.create.steam_engine.desc": "Use a Steam engine to generate torque", "advancement.create.steam_engine.desc": "Use a Steam Engine to generate torque",
"advancement.create.steam_whistle": "Voice of an Angel", "advancement.create.steam_whistle": "Voice of an Angel",
"advancement.create.steam_whistle.desc": "Activate a Steam Whistle", "advancement.create.steam_whistle.desc": "Activate a Steam Whistle",
"advancement.create.backtank": "Pressure to Go", "advancement.create.backtank": "Pressure to Go",
"advancement.create.backtank.desc": "Create a copper backtank and make it accumulate Air Pressure", "advancement.create.backtank.desc": "Create a Copper Backtank and make it accumulate air pressure",
"advancement.create.diving_suit": "Ready for the Depths", "advancement.create.diving_suit": "Ready for the Depths",
"advancement.create.diving_suit.desc": "Equip a diving helmet together with your backtank and jump into water", "advancement.create.diving_suit.desc": "Equip a Diving Helmet and a Copper Backtank, then jump into water",
"advancement.create.mechanical_pump_0": "Under Pressure", "advancement.create.mechanical_pump_0": "Under Pressure",
"advancement.create.mechanical_pump_0.desc": "Place and power a Mechanical Pump", "advancement.create.mechanical_pump_0.desc": "Place and power a Mechanical Pump",
"advancement.create.glass_pipe": "Flow Discovery", "advancement.create.glass_pipe": "Flow Discovery",
"advancement.create.glass_pipe.desc": "Use your Wrench on a pipe that contains a fluid", "advancement.create.glass_pipe.desc": "Use your Wrench on a pipe that contains a fluid",
"advancement.create.water_supply": "Puddle Collector", "advancement.create.water_supply": "Puddle Collector",
"advancement.create.water_supply.desc": "Use the pulling end of a pipe or pump to collect a water block", "advancement.create.water_supply.desc": "Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water",
"advancement.create.hose_pulley": "Industrial Spillage", "advancement.create.hose_pulley": "Industrial Spillage",
"advancement.create.hose_pulley.desc": "Lower a Hose Pulley and watch it drain or fill a body of fluid", "advancement.create.hose_pulley.desc": "Lower a Hose Pulley and watch it drain or fill a body of fluid",
"advancement.create.chocolate_bucket": "A World of Imagination", "advancement.create.chocolate_bucket": "A World of Imagination",
"advancement.create.chocolate_bucket.desc": "Obtain a Bucket of Molten Chocolate", "advancement.create.chocolate_bucket.desc": "Obtain a bucket of molten chocolate",
"advancement.create.honey_drain": "Autonomous Bee-Keeping", "advancement.create.honey_drain": "Autonomous Bee-Keeping",
"advancement.create.honey_drain.desc": "Use pipes to pull honey from a Bee Nest or Bee House", "advancement.create.honey_drain.desc": "Use pipes to pull honey from a Bee Nest or Beehive",
"advancement.create.hose_pulley_lava": "Tapping the Mantle", "advancement.create.hose_pulley_lava": "Tapping the Mantle",
"advancement.create.hose_pulley_lava.desc": "Pump from a body of Lava large enough to be considered infinite", "advancement.create.hose_pulley_lava.desc": "Pump from a body of lava large enough to be considered infinite",
"advancement.create.steam_engine_maxed": "Full Steam", "advancement.create.steam_engine_maxed": "Full Steam",
"advancement.create.steam_engine_maxed.desc": "Run a boiler at the maximum level of power", "advancement.create.steam_engine_maxed.desc": "Run a boiler at the maximum level of power",
"advancement.create.foods": "Balanced Diet", "advancement.create.foods": "Balanced Diet",
"advancement.create.foods.desc": "Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", "advancement.create.foods.desc": "Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout",
"advancement.create.diving_suit_lava": "Swimming with the Striders", "advancement.create.diving_suit_lava": "Swimming with the Striders",
"advancement.create.diving_suit_lava.desc": "Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", "advancement.create.diving_suit_lava.desc": "Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)",
"advancement.create.chained_drain": "On a Roll", "advancement.create.chained_drain": "On a Roll",
"advancement.create.chained_drain.desc": "Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", "advancement.create.chained_drain.desc": "Watch an item move across a row of Item Drains§7\n(Hidden Advancement)",
"advancement.create.cross_streams": "Don't cross the Streams!", "advancement.create.cross_streams": "Don't Cross the Streams!",
"advancement.create.cross_streams.desc": "Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.cross_streams.desc": "Watch two fluids meet in your pipe network§7\n(Hidden Advancement)",
"advancement.create.pipe_organ": "The Pipe Organ", "advancement.create.pipe_organ": "The Pipe Organ",
"advancement.create.pipe_organ.desc": "Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", "advancement.create.pipe_organ.desc": "Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)",
"advancement.create.brass": "Real Alloys", "advancement.create.brass": "Real Alloys",
"advancement.create.brass.desc": "Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer", "advancement.create.brass.desc": "Create Brass Ingots by alloying Copper and Zinc Ingots in your Blaze-heated Mechanical Mixer",
"advancement.create.brass_casing": "The Brass Age", "advancement.create.brass_casing": "The Brass Age",
"advancement.create.brass_casing.desc": "Apply Brass Ingots to wood creating a casing for more sophisticated machines", "advancement.create.brass_casing.desc": "Apply Brass Ingots to stripped wood, creating a casing for more sophisticated machines",
"advancement.create.rose_quartz": "Pink Diamonds", "advancement.create.rose_quartz": "Pink Diamonds",
"advancement.create.rose_quartz.desc": "Polish some Rose Quartz", "advancement.create.rose_quartz.desc": "Polish some Rose Quartz",
"advancement.create.deployer": "Artificial Intelligence", "advancement.create.deployer": "Artificial Intelligence",
"advancement.create.deployer.desc": "Place and activate a Deployer, the perfect reflection of yourself", "advancement.create.deployer.desc": "Place and power a Deployer, the perfect reflection of yourself",
"advancement.create.precision_mechanism": "Complex Curiosities", "advancement.create.precision_mechanism": "Complex Curiosities",
"advancement.create.precision_mechanism.desc": "Assemble a Precision Mechanism", "advancement.create.precision_mechanism.desc": "Assemble a Precision Mechanism",
"advancement.create.speed_controller": "Engineers Hate Him!", "advancement.create.speed_controller": "Engineers Hate Him!",
"advancement.create.speed_controller.desc": "Fine tune your contraption with a Rotation Speed Controller", "advancement.create.speed_controller.desc": "Fine-tune your Contraption with a Rotation Speed Controller",
"advancement.create.mechanical_arm": "Busy Hands", "advancement.create.mechanical_arm": "Busy Hands",
"advancement.create.mechanical_arm.desc": "Watch your Mechanical Arm transport its first Item", "advancement.create.mechanical_arm.desc": "Watch your Mechanical Arm transport its first item",
"advancement.create.mechanical_crafter": "Automated Assembly", "advancement.create.mechanical_crafter": "Automated Assembly",
"advancement.create.mechanical_crafter.desc": "Place and power some Mechanical Crafters", "advancement.create.mechanical_crafter.desc": "Place and power some Mechanical Crafters",
"advancement.create.crushing_wheel": "A Pair of Giants", "advancement.create.crushing_wheel": "A Pair of Giants",
@ -794,7 +794,7 @@
"advancement.create.clockwork_bearing": "Contraption O'Clock", "advancement.create.clockwork_bearing": "Contraption O'Clock",
"advancement.create.clockwork_bearing.desc": "Assemble a structure mounted on a Clockwork Bearing", "advancement.create.clockwork_bearing.desc": "Assemble a structure mounted on a Clockwork Bearing",
"advancement.create.display_link": "Big Data", "advancement.create.display_link": "Big Data",
"advancement.create.display_link.desc": "Use a Display link to visualise information", "advancement.create.display_link.desc": "Use a Display Link to visualise information",
"advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon": "Fwoomp!",
"advancement.create.potato_cannon.desc": "Defeat an enemy with your Potato Cannon", "advancement.create.potato_cannon.desc": "Defeat an enemy with your Potato Cannon",
"advancement.create.extendo_grip": "Boioioing!", "advancement.create.extendo_grip": "Boioioing!",
@ -803,54 +803,54 @@
"advancement.create.linked_controller.desc": "Activate a Redstone Link using a Linked Controller", "advancement.create.linked_controller.desc": "Activate a Redstone Link using a Linked Controller",
"advancement.create.arm_blaze_burner": "Combust-o-Tron", "advancement.create.arm_blaze_burner": "Combust-o-Tron",
"advancement.create.arm_blaze_burner.desc": "Instruct a Mechanical Arm to feed your Blaze Burner", "advancement.create.arm_blaze_burner.desc": "Instruct a Mechanical Arm to feed your Blaze Burner",
"advancement.create.crusher_maxed_0000": "Crushing it", "advancement.create.crusher_maxed_0000": "Crushing It",
"advancement.create.crusher_maxed_0000.desc": "Operate a Pair of Crushing wheels at max speed", "advancement.create.crusher_maxed_0000.desc": "Operate a pair of Crushing Wheels at maximum speed",
"advancement.create.arm_many_targets": "Organize-o-Tron", "advancement.create.arm_many_targets": "Organize-o-Tron",
"advancement.create.arm_many_targets.desc": "Program a Mechanical Arm with ten or more output locations", "advancement.create.arm_many_targets.desc": "Program a Mechanical Arm with 10 or more output locations",
"advancement.create.potato_cannon_collide": "Veggie Fireworks", "advancement.create.potato_cannon_collide": "Veggie Fireworks",
"advancement.create.potato_cannon_collide.desc": "Cause potato cannon projectiles of different types to collide with each other", "advancement.create.potato_cannon_collide.desc": "Cause Potato Cannon projectiles of different types to collide with each other",
"advancement.create.self_deploying": "Self-Driving Cart", "advancement.create.self_deploying": "Self-Driving Cart",
"advancement.create.self_deploying.desc": "Create a Minecart Contraption that places tracks in front of itself", "advancement.create.self_deploying.desc": "Create a Minecart Contraption that places tracks in front of itself",
"advancement.create.fist_bump": "Pound It, Bro!", "advancement.create.fist_bump": "Pound It, Bro!",
"advancement.create.fist_bump.desc": "Make two Deployers fist-bump§7\n(Hidden Advancement)", "advancement.create.fist_bump.desc": "Make two Deployers fist-bump§7\n(Hidden Advancement)",
"advancement.create.crafter_lazy_000": "Desperate Measures", "advancement.create.crafter_lazy_000": "Desperate Measures",
"advancement.create.crafter_lazy_000.desc": "Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000.desc": "Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)",
"advancement.create.extendo_grip_dual": "To full Extent", "advancement.create.extendo_grip_dual": "To Full Extent",
"advancement.create.extendo_grip_dual.desc": "Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", "advancement.create.extendo_grip_dual.desc": "Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)",
"advancement.create.musical_arm": "DJ Mechanico", "advancement.create.musical_arm": "DJ Mechanico",
"advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)", "advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)",
"advancement.create.sturdy_sheet": "The Sturdiest Rocks", "advancement.create.sturdy_sheet": "The Sturdiest Rocks",
"advancement.create.sturdy_sheet.desc": "Assemble a Sturdy Sheet from refining crushed Obsidian", "advancement.create.sturdy_sheet.desc": "Assemble a Sturdy Sheet by refining Powdered Obsidian",
"advancement.create.train_casing_00": "The Logistical Age", "advancement.create.train_casing_00": "The Logistical Age",
"advancement.create.train_casing_00.desc": "Use Sturdy Sheets to create a Casing for Railway Components", "advancement.create.train_casing_00.desc": "Use Sturdy Sheets to create a casing for railway components",
"advancement.create.train": "All Aboard!", "advancement.create.train": "All Aboard!",
"advancement.create.train.desc": "Assemble your first Train", "advancement.create.train.desc": "Assemble your first Train",
"advancement.create.conductor": "Conductor Instructor", "advancement.create.conductor": "Conductor Instructor",
"advancement.create.conductor.desc": "Instruct a Train driver with a Schedule", "advancement.create.conductor.desc": "Instruct a Train driver with a Train Schedule",
"advancement.create.track_signal": "Traffic Control", "advancement.create.track_signal": "Traffic Control",
"advancement.create.track_signal.desc": "Place a Train Signal", "advancement.create.track_signal.desc": "Place a Train Signal",
"advancement.create.display_board_0": "Dynamic Timetables", "advancement.create.display_board_0": "Dynamic Timetables",
"advancement.create.display_board_0.desc": "Forecast a Train's arrival on your Display Board with the help of Display Links", "advancement.create.display_board_0.desc": "Forecast a Train's arrival on your Display Board with the help of Display Links",
"advancement.create.track_0": "A new Gauge", "advancement.create.track_0": "A New Gauge",
"advancement.create.track_0.desc": "Obtain some Train Tracks", "advancement.create.track_0.desc": "Obtain some Train Tracks",
"advancement.create.train_whistle": "Choo choo!", "advancement.create.train_whistle": "Choo Choo!",
"advancement.create.train_whistle.desc": "Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_whistle.desc": "Assemble a Steam Whistle to your Train and activate it while driving",
"advancement.create.train_portal": "Dimensional Commuter", "advancement.create.train_portal": "Dimensional Commuter",
"advancement.create.train_portal.desc": "Ride a train through a Nether Portal", "advancement.create.train_portal.desc": "Ride a Train through a Nether portal",
"advancement.create.track_crafting_factory": "Track Factory", "advancement.create.track_crafting_factory": "Track Factory",
"advancement.create.track_crafting_factory.desc": "Produce more than 1000 train tracks in the same Mechanical Press", "advancement.create.track_crafting_factory.desc": "Produce more than 1000 Train Tracks with the same Mechanical Press",
"advancement.create.long_bend": "The Longest Bend", "advancement.create.long_bend": "The Longest Bend",
"advancement.create.long_bend.desc": "Create a Curved track section that spans more than 30 blocks in length", "advancement.create.long_bend.desc": "Create a curved track section that spans more than 30 blocks in length",
"advancement.create.long_train": "Ambitious Endeavours", "advancement.create.long_train": "Ambitious Endeavours",
"advancement.create.long_train.desc": "Create a Train with at least six Carriages", "advancement.create.long_train.desc": "Create a Train with at least 6 carriages",
"advancement.create.long_travel": "Field Trip", "advancement.create.long_travel": "Field Trip",
"advancement.create.long_travel.desc": "Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.long_travel.desc": "Leave a Train Seat over 5000 blocks away from where you started travelling",
"advancement.create.train_roadkill": "Road Kill", "advancement.create.train_roadkill": "Road Kill",
"advancement.create.train_roadkill.desc": "Run over an Enemy with your Train§7\n(Hidden Advancement)", "advancement.create.train_roadkill.desc": "Run over an enemy with your Train§7\n(Hidden Advancement)",
"advancement.create.red_signal": "Expert Driver", "advancement.create.red_signal": "Expert Driver",
"advancement.create.red_signal.desc": "Run a Red Signal with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal.desc": "Run a red Train Signal§7\n(Hidden Advancement)",
"advancement.create.train_crash": "Terrible Service", "advancement.create.train_crash": "Terrible Service",
"advancement.create.train_crash.desc": "Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", "advancement.create.train_crash.desc": "Witness a Train crash as a passenger§7\n(Hidden Advancement)",
"advancement.create.train_crash_backwards": "Blind Spot", "advancement.create.train_crash_backwards": "Blind Spot",
"advancement.create.train_crash_backwards.desc": "Crash into another Train while driving backwards§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards.desc": "Crash into another Train while driving backwards§7\n(Hidden Advancement)",
@ -1259,8 +1259,10 @@
"create.item_attributes.smeltable.inverted": "cannot be Smelted", "create.item_attributes.smeltable.inverted": "cannot be Smelted",
"create.item_attributes.smokable": "can be Smoked", "create.item_attributes.smokable": "can be Smoked",
"create.item_attributes.smokable.inverted": "cannot be Smoked", "create.item_attributes.smokable.inverted": "cannot be Smoked",
"create.item_attributes.blastable": "is smeltable in Blast Furnace", "create.item_attributes.blastable": "can be Smelted in a Blast Furnace",
"create.item_attributes.blastable.inverted": "is not smeltable in Blast Furnace", "create.item_attributes.blastable.inverted": "cannot be Smelted in a Blast Furnace",
"create.item_attributes.compostable": "can be composted",
"create.item_attributes.compostable.inverted": "cannot be composted",
"create.item_attributes.shulker_level": "is shulker %1$s", "create.item_attributes.shulker_level": "is shulker %1$s",
"create.item_attributes.shulker_level.inverted": "is shulker not %1$s", "create.item_attributes.shulker_level.inverted": "is shulker not %1$s",
"create.item_attributes.shulker_level.full": "full", "create.item_attributes.shulker_level.full": "full",
@ -1367,6 +1369,10 @@
"create.tooltip.chute.fans_pull_up": "Fans pull from Above", "create.tooltip.chute.fans_pull_up": "Fans pull from Above",
"create.tooltip.chute.fans_pull_down": "Fans pull from Below", "create.tooltip.chute.fans_pull_down": "Fans pull from Below",
"create.tooltip.chute.contains": "Contains: %1$s x%2$s", "create.tooltip.chute.contains": "Contains: %1$s x%2$s",
"create.tooltip.deployer.header": "Deployer Information",
"create.tooltip.deployer.using": "Mode: Use",
"create.tooltip.deployer.punching": "Mode: Attack",
"create.tooltip.deployer.contains": "Item: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "Currently distributing:", "create.tooltip.brass_tunnel.contains": "Currently distributing:",
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "Right-Click to retrieve", "create.tooltip.brass_tunnel.retrieve": "Right-Click to retrieve",
@ -1480,6 +1486,7 @@
"create.schedule.condition.threshold.equal": "exactly", "create.schedule.condition.threshold.equal": "exactly",
"create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "Matching Content", "create.schedule.condition.threshold.matching_content": "Matching Content",
"create.schedule.condition.threshold.anything": "Anything",
"create.schedule.condition.threshold.item_measure": "Item Measure", "create.schedule.condition.threshold.item_measure": "Item Measure",
"create.schedule.condition.threshold.items": "Items", "create.schedule.condition.threshold.items": "Items",
"create.schedule.condition.threshold.stacks": "Stacks", "create.schedule.condition.threshold.stacks": "Stacks",
@ -1487,6 +1494,7 @@
"create.schedule.condition.threshold.status": "Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "Reference Item", "create.schedule.condition.threshold.place_item": "Reference Item",
"create.schedule.condition.threshold.place_item_2": "Filters can be used", "create.schedule.condition.threshold.place_item_2": "Filters can be used",
"create.schedule.condition.threshold.place_item_3": "Leave empty to match any",
"create.schedule.condition.fluid_threshold": "Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "Item Cargo Condition", "create.schedule.condition.item_threshold": "Item Cargo Condition",
"create.schedule.condition.redstone_link": "Redstone Link", "create.schedule.condition.redstone_link": "Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 980", "_": "Missing Localizations: 988",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -672,23 +672,23 @@
"advancement.create.andesite_alloy.desc": "Los materiales de create tienen nombres raros. La Aleación de Andesita es uno de ellos.", "advancement.create.andesite_alloy.desc": "Los materiales de create tienen nombres raros. La Aleación de Andesita es uno de ellos.",
"advancement.create.andesite_casing": "La Edad de la Andesita", "advancement.create.andesite_casing": "La Edad de la Andesita",
"advancement.create.andesite_casing.desc": "Utilice un poco de madera y aleación de andesita para crear una cubierta básica.", "advancement.create.andesite_casing.desc": "Utilice un poco de madera y aleación de andesita para crear una cubierta básica.",
"advancement.create.mechanical_press": "UNLOCALIZED: Bonk", "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!",
"advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press",
"advancement.create.encased_fan": "UNLOCALIZED: Wind maker", "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker",
"advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan",
"advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle",
"advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials",
"advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared",
"advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials",
"advancement.create.compacting": "UNLOCALIZED: Compactification", "advancement.create.compacting": "UNLOCALIZED: Compactification",
"advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more",
"advancement.create.belt": "Unidad de Algas", "advancement.create.belt": "Unidad de Algas",
"advancement.create.belt.desc": "Conecta dos ejes con una cinta mecánica.", "advancement.create.belt.desc": "Conecta dos ejes con una cinta mecánica.",
"advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic",
"advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel",
"advancement.create.chute": "Viniendose Abajo", "advancement.create.chute": "Viniendose Abajo",
"advancement.create.chute.desc": "Coloca un tolvogán, la contraparte vertical de las cintas mecánicas.", "advancement.create.chute.desc": "Coloca un tolvogán, la contraparte vertical de las cintas mecánicas.",
"advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up",
"advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer",
"advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace",
"advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner",
@ -703,25 +703,25 @@
"advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue": "UNLOCALIZED: Area of Connect",
"advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group",
"advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose",
"advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board",
"advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange",
"advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption",
"advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out",
"advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench",
"advancement.create.stressometer": "Pero, ¿qué tan estresado exactamente?", "advancement.create.stressometer": "Pero, ¿qué tan estresado exactamente?",
"advancement.create.stressometer.desc": "Coloca y dale poder a un Estresómetro. Míralo con tus gafas para leer el número exacto.", "advancement.create.stressometer.desc": "Coloca y dale poder a un Estresómetro. Míralo con tus gafas para leer el número exacto.",
"advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?",
"advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime",
"advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze",
"advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength",
"advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion",
"advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector",
"advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere",
"advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep",
"advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms",
"advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks",
"advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery",
"advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs",
"advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel",
"advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)",
"advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session",
@ -730,48 +730,48 @@
"advancement.create.belt_funnel_kiss.desc": "Haz que dos ingresos montados en una cinta mecánica se besen.", "advancement.create.belt_funnel_kiss.desc": "Haz que dos ingresos montados en una cinta mecánica se besen.",
"advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed",
"advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)",
"advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum",
"advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation",
"advancement.create.copper_casing": "La Edad del Cobre", "advancement.create.copper_casing": "La Edad del Cobre",
"advancement.create.copper_casing.desc": "Utiliza planchas de cobre y un poco de madera para crear cubiertas de cobre.", "advancement.create.copper_casing.desc": "Utiliza planchas de cobre y un poco de madera para crear cubiertas de cobre.",
"advancement.create.spout": "Splash", "advancement.create.spout": "Splash",
"advancement.create.spout.desc": "Observa cómo se llena un objeto de líquido con un surtidor.", "advancement.create.spout.desc": "Observa cómo se llena un objeto de líquido con un surtidor.",
"advancement.create.drain": "UNLOCALIZED: Tumble Draining", "advancement.create.drain": "UNLOCALIZED: Tumble Draining",
"advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain",
"advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse",
"advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque",
"advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel",
"advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle",
"advancement.create.backtank": "UNLOCALIZED: Pressure to Go", "advancement.create.backtank": "UNLOCALIZED: Pressure to Go",
"advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure",
"advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths",
"advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water",
"advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure",
"advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump",
"advancement.create.glass_pipe": "Flujo Espía", "advancement.create.glass_pipe": "Flujo Espía",
"advancement.create.glass_pipe.desc": "Observa cómo se propaga el fluido a través de una tubería con ventana. Puedes añadir una ventana a una tubería recta con tu Llave Inglesa.", "advancement.create.glass_pipe.desc": "Observa cómo se propaga el fluido a través de una tubería con ventana. Puedes añadir una ventana a una tubería recta con tu Llave Inglesa.",
"advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector",
"advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water",
"advancement.create.hose_pulley": "Derrame industrial", "advancement.create.hose_pulley": "Derrame industrial",
"advancement.create.hose_pulley.desc": "Baja una polea manguera y observa cómo drena o llena un cuerpo de fluido.", "advancement.create.hose_pulley.desc": "Baja una polea manguera y observa cómo drena o llena un cuerpo de fluido.",
"advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination",
"advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate",
"advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping",
"advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive",
"advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle",
"advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite",
"advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam",
"advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power",
"advancement.create.foods": "UNLOCALIZED: Balanced Diet", "advancement.create.foods": "UNLOCALIZED: Balanced Diet",
"advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout",
"advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders",
"advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)",
"advancement.create.chained_drain": "UNLOCALIZED: On a Roll", "advancement.create.chained_drain": "UNLOCALIZED: On a Roll",
"advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)",
"advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!",
"advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)",
"advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ",
"advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)",
"advancement.create.brass": "Aleaciones de verdad", "advancement.create.brass": "Aleaciones de verdad",
"advancement.create.brass.desc": "Usa cobre triturado y zinc triturado para crear algo de latón.", "advancement.create.brass.desc": "Usa cobre triturado y zinc triturado para crear algo de latón.",
"advancement.create.brass_casing": "La Edad del Latón", "advancement.create.brass_casing": "La Edad del Latón",
@ -795,7 +795,7 @@
"advancement.create.clockwork_bearing": "Contrapción en Punto", "advancement.create.clockwork_bearing": "Contrapción en Punto",
"advancement.create.clockwork_bearing.desc": "Ensambla una estructura montada sobre un rodamiento de relojería.", "advancement.create.clockwork_bearing.desc": "Ensambla una estructura montada sobre un rodamiento de relojería.",
"advancement.create.display_link": "UNLOCALIZED: Big Data", "advancement.create.display_link": "UNLOCALIZED: Big Data",
"advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information",
"advancement.create.potato_cannon": "¡Fwoomp!", "advancement.create.potato_cannon": "¡Fwoomp!",
"advancement.create.potato_cannon.desc": "Derrota a un enemigo con tu Cañón de Papas.", "advancement.create.potato_cannon.desc": "Derrota a un enemigo con tu Cañón de Papas.",
"advancement.create.extendo_grip": "¡Boioioing!", "advancement.create.extendo_grip": "¡Boioioing!",
@ -804,54 +804,54 @@
"advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller",
"advancement.create.arm_blaze_burner": "Combustrón 3001", "advancement.create.arm_blaze_burner": "Combustrón 3001",
"advancement.create.arm_blaze_burner.desc": "Instruye a un brazo mecánico para que alimente tu Quemador Blaze.", "advancement.create.arm_blaze_burner.desc": "Instruye a un brazo mecánico para que alimente tu Quemador Blaze.",
"advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It",
"advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed",
"advancement.create.arm_many_targets": "Organizatrón 3000", "advancement.create.arm_many_targets": "Organizatrón 3000",
"advancement.create.arm_many_targets.desc": "Programa un brazo mecánico con 10 o más localizaciones de salida.", "advancement.create.arm_many_targets.desc": "Programa un brazo mecánico con 10 o más localizaciones de salida.",
"advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks",
"advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other",
"advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart",
"advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself",
"advancement.create.fist_bump": "¡Dame el puño, hermano!", "advancement.create.fist_bump": "¡Dame el puño, hermano!",
"advancement.create.fist_bump.desc": "Haz que dos Desplegadores se golpeen con el puño.", "advancement.create.fist_bump.desc": "Haz que dos Desplegadores se golpeen con el puño.",
"advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures",
"advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)",
"advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent",
"advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)",
"advancement.create.musical_arm": "¡Póneme mi tema principal!", "advancement.create.musical_arm": "¡Póneme mi tema principal!",
"advancement.create.musical_arm.desc": "Observa cómo un brazo mecánico opera un tocadiscos.", "advancement.create.musical_arm.desc": "Observa cómo un brazo mecánico opera un tocadiscos.",
"advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks",
"advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian",
"advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age",
"advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components",
"advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train": "UNLOCALIZED: All Aboard!",
"advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train",
"advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor",
"advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule",
"advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal": "UNLOCALIZED: Traffic Control",
"advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal",
"advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables",
"advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links",
"advancement.create.track_0": "UNLOCALIZED: A new Gauge", "advancement.create.track_0": "UNLOCALIZED: A New Gauge",
"advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks",
"advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!",
"advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving",
"advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter",
"advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal",
"advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory",
"advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press",
"advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend",
"advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length",
"advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours",
"advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages",
"advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel": "UNLOCALIZED: Field Trip",
"advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling",
"advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill",
"advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)",
"advancement.create.red_signal": "UNLOCALIZED: Expert Driver", "advancement.create.red_signal": "UNLOCALIZED: Expert Driver",
"advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)",
"advancement.create.train_crash": "UNLOCALIZED: Terrible Service", "advancement.create.train_crash": "UNLOCALIZED: Terrible Service",
"advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)",
"advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot",
"advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)",
@ -1262,6 +1262,8 @@
"create.item_attributes.smokable.inverted": "no puede ser Ahumado", "create.item_attributes.smokable.inverted": "no puede ser Ahumado",
"create.item_attributes.blastable": "puede ser cocinado en un Alto Horno", "create.item_attributes.blastable": "puede ser cocinado en un Alto Horno",
"create.item_attributes.blastable.inverted": "no puede ser cocinado en un Alto Horno", "create.item_attributes.blastable.inverted": "no puede ser cocinado en un Alto Horno",
"create.item_attributes.compostable": "UNLOCALIZED: can be composted",
"create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted",
"create.item_attributes.shulker_level": "es un shulker %1$s", "create.item_attributes.shulker_level": "es un shulker %1$s",
"create.item_attributes.shulker_level.inverted": "no es un shulker %1$s", "create.item_attributes.shulker_level.inverted": "no es un shulker %1$s",
"create.item_attributes.shulker_level.full": "lleno", "create.item_attributes.shulker_level.full": "lleno",
@ -1368,6 +1370,10 @@
"create.tooltip.chute.fans_pull_up": "Ventiladores tirando desde arriba", "create.tooltip.chute.fans_pull_up": "Ventiladores tirando desde arriba",
"create.tooltip.chute.fans_pull_down": "Ventiladores tirando desde abajo", "create.tooltip.chute.fans_pull_down": "Ventiladores tirando desde abajo",
"create.tooltip.chute.contains": "Contiene: %1$s x%2$s", "create.tooltip.chute.contains": "Contiene: %1$s x%2$s",
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
"create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use",
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "Actualmente distribuyendo:", "create.tooltip.brass_tunnel.contains": "Actualmente distribuyendo:",
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "Click-Derecho para recuperar", "create.tooltip.brass_tunnel.retrieve": "Click-Derecho para recuperar",
@ -1481,6 +1487,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1488,6 +1495,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2112", "_": "Missing Localizations: 2120",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -671,24 +671,24 @@
"advancement.create.andesite_alloy": "UNLOCALIZED: Sturdier Rocks", "advancement.create.andesite_alloy": "UNLOCALIZED: Sturdier Rocks",
"advancement.create.andesite_alloy.desc": "Certains matériaux de Create ont des noms bizzares; l'alliage d'andésite est l'un d'entre eux.", "advancement.create.andesite_alloy.desc": "Certains matériaux de Create ont des noms bizzares; l'alliage d'andésite est l'un d'entre eux.",
"advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age",
"advancement.create.andesite_casing.desc": "UNLOCALIZED: Apply Andesite Alloy to wood creating a basic casing for your machines", "advancement.create.andesite_casing.desc": "UNLOCALIZED: Apply Andesite Alloy to stripped wood, creating a basic casing for your machines",
"advancement.create.mechanical_press": "UNLOCALIZED: Bonk", "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!",
"advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press",
"advancement.create.encased_fan": "UNLOCALIZED: Wind maker", "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker",
"advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan",
"advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle",
"advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials",
"advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared",
"advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials",
"advancement.create.compacting": "UNLOCALIZED: Compactification", "advancement.create.compacting": "UNLOCALIZED: Compactification",
"advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more",
"advancement.create.belt": "UNLOCALIZED: Kelp Drive", "advancement.create.belt": "UNLOCALIZED: Kelp Drive",
"advancement.create.belt.desc": "UNLOCALIZED: Connect two Shafts with a Mechanical Belt", "advancement.create.belt.desc": "UNLOCALIZED: Connect two Shafts with a Mechanical Belt",
"advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic",
"advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel",
"advancement.create.chute": "UNLOCALIZED: Vertical Logistics", "advancement.create.chute": "UNLOCALIZED: Vertical Logistics",
"advancement.create.chute.desc": "UNLOCALIZED: Transport some items by Chute", "advancement.create.chute.desc": "UNLOCALIZED: Transport some items by Chute",
"advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up",
"advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer",
"advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace",
"advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner",
@ -703,25 +703,25 @@
"advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue": "UNLOCALIZED: Area of Connect",
"advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group",
"advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose",
"advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board",
"advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange",
"advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption",
"advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out",
"advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench",
"advancement.create.stressometer": "UNLOCALIZED: Stress for Nerds", "advancement.create.stressometer": "UNLOCALIZED: Stress for Nerds",
"advancement.create.stressometer.desc": "UNLOCALIZED: Get an exact readout with the help of Goggles and a Stressometer", "advancement.create.stressometer.desc": "UNLOCALIZED: Get an exact readout with the help of Engineer's Goggles and a Stressometer",
"advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?",
"advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime",
"advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze",
"advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength",
"advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion",
"advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector",
"advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere",
"advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep",
"advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms",
"advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks",
"advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery",
"advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs",
"advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel",
"advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)",
"advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session",
@ -730,62 +730,62 @@
"advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)",
"advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed",
"advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)",
"advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum",
"advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation",
"advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age",
"advancement.create.copper_casing.desc": "UNLOCALIZED: Apply Copper Ingots to wood creating a waterproof casing for your machines", "advancement.create.copper_casing.desc": "UNLOCALIZED: Apply Copper Ingots to stripped wood, creating a waterproof casing for your machines",
"advancement.create.spout": "UNLOCALIZED: Sploosh", "advancement.create.spout": "UNLOCALIZED: Sploosh",
"advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid containing item be filled using a Spout", "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid-containing item be filled by a Spout",
"advancement.create.drain": "UNLOCALIZED: Tumble Draining", "advancement.create.drain": "UNLOCALIZED: Tumble Draining",
"advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain",
"advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse",
"advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque",
"advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel",
"advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle",
"advancement.create.backtank": "UNLOCALIZED: Pressure to Go", "advancement.create.backtank": "UNLOCALIZED: Pressure to Go",
"advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure",
"advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths",
"advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water",
"advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure",
"advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump",
"advancement.create.glass_pipe": "UNLOCALIZED: Flow Discovery", "advancement.create.glass_pipe": "UNLOCALIZED: Flow Discovery",
"advancement.create.glass_pipe.desc": "UNLOCALIZED: Use your Wrench on a pipe that contains a fluid", "advancement.create.glass_pipe.desc": "UNLOCALIZED: Use your Wrench on a pipe that contains a fluid",
"advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector",
"advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water",
"advancement.create.hose_pulley": "UNLOCALIZED: Industrial Spillage", "advancement.create.hose_pulley": "UNLOCALIZED: Industrial Spillage",
"advancement.create.hose_pulley.desc": "UNLOCALIZED: Lower a Hose Pulley and watch it drain or fill a body of fluid", "advancement.create.hose_pulley.desc": "UNLOCALIZED: Lower a Hose Pulley and watch it drain or fill a body of fluid",
"advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination",
"advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate",
"advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping",
"advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive",
"advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle",
"advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite",
"advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam",
"advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power",
"advancement.create.foods": "UNLOCALIZED: Balanced Diet", "advancement.create.foods": "UNLOCALIZED: Balanced Diet",
"advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout",
"advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders",
"advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)",
"advancement.create.chained_drain": "UNLOCALIZED: On a Roll", "advancement.create.chained_drain": "UNLOCALIZED: On a Roll",
"advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)",
"advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!",
"advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)",
"advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ",
"advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)",
"advancement.create.brass": "UNLOCALIZED: Real Alloys", "advancement.create.brass": "UNLOCALIZED: Real Alloys",
"advancement.create.brass.desc": "UNLOCALIZED: Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer", "advancement.create.brass.desc": "UNLOCALIZED: Create Brass Ingots by alloying Copper and Zinc Ingots in your Blaze-heated Mechanical Mixer",
"advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age",
"advancement.create.brass_casing.desc": "UNLOCALIZED: Apply Brass Ingots to wood creating a casing for more sophisticated machines", "advancement.create.brass_casing.desc": "UNLOCALIZED: Apply Brass Ingots to stripped wood, creating a casing for more sophisticated machines",
"advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds",
"advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz",
"advancement.create.deployer": "UNLOCALIZED: Artificial Intelligence", "advancement.create.deployer": "UNLOCALIZED: Artificial Intelligence",
"advancement.create.deployer.desc": "UNLOCALIZED: Place and activate a Deployer, the perfect reflection of yourself", "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself",
"advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities", "advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities",
"advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism", "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism",
"advancement.create.speed_controller": "UNLOCALIZED: Engineers Hate Him!", "advancement.create.speed_controller": "UNLOCALIZED: Engineers Hate Him!",
"advancement.create.speed_controller.desc": "UNLOCALIZED: Fine tune your contraption with a Rotation Speed Controller", "advancement.create.speed_controller.desc": "UNLOCALIZED: Fine-tune your Contraption with a Rotation Speed Controller",
"advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands", "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands",
"advancement.create.mechanical_arm.desc": "UNLOCALIZED: Watch your Mechanical Arm transport its first Item", "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Watch your Mechanical Arm transport its first item",
"advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly",
"advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters",
"advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants",
@ -795,7 +795,7 @@
"advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption O'Clock", "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption O'Clock",
"advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a structure mounted on a Clockwork Bearing", "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a structure mounted on a Clockwork Bearing",
"advancement.create.display_link": "UNLOCALIZED: Big Data", "advancement.create.display_link": "UNLOCALIZED: Big Data",
"advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information",
"advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!", "advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!",
"advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon", "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon",
"advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!",
@ -804,54 +804,54 @@
"advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller",
"advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron", "advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron",
"advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner", "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner",
"advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It",
"advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed",
"advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron", "advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron",
"advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with ten or more output locations", "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with 10 or more output locations",
"advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks",
"advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other",
"advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart",
"advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself",
"advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!",
"advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)",
"advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures",
"advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)",
"advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent",
"advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)",
"advancement.create.musical_arm": "UNLOCALIZED: DJ Mechanico", "advancement.create.musical_arm": "UNLOCALIZED: DJ Mechanico",
"advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)", "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)",
"advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks",
"advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian",
"advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age",
"advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components",
"advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train": "UNLOCALIZED: All Aboard!",
"advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train",
"advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor",
"advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule",
"advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal": "UNLOCALIZED: Traffic Control",
"advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal",
"advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables",
"advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links",
"advancement.create.track_0": "UNLOCALIZED: A new Gauge", "advancement.create.track_0": "UNLOCALIZED: A New Gauge",
"advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks",
"advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!",
"advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving",
"advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter",
"advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal",
"advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory",
"advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press",
"advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend",
"advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length",
"advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours",
"advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages",
"advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel": "UNLOCALIZED: Field Trip",
"advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling",
"advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill",
"advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)",
"advancement.create.red_signal": "UNLOCALIZED: Expert Driver", "advancement.create.red_signal": "UNLOCALIZED: Expert Driver",
"advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)",
"advancement.create.train_crash": "UNLOCALIZED: Terrible Service", "advancement.create.train_crash": "UNLOCALIZED: Terrible Service",
"advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)",
"advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot",
"advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)",
@ -1262,6 +1262,8 @@
"create.item_attributes.smokable.inverted": "ne peut pas être fumé", "create.item_attributes.smokable.inverted": "ne peut pas être fumé",
"create.item_attributes.blastable": "est fondable dans un Haut fourneau", "create.item_attributes.blastable": "est fondable dans un Haut fourneau",
"create.item_attributes.blastable.inverted": "n'est pas fondable dans un Haut fourneau", "create.item_attributes.blastable.inverted": "n'est pas fondable dans un Haut fourneau",
"create.item_attributes.compostable": "UNLOCALIZED: can be composted",
"create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted",
"create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s",
"create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s",
"create.item_attributes.shulker_level.full": "UNLOCALIZED: full", "create.item_attributes.shulker_level.full": "UNLOCALIZED: full",
@ -1368,6 +1370,10 @@
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above", "create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below", "create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s", "create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
"create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use",
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:", "create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:",
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s", "create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve", "create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve",
@ -1481,6 +1487,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1488,6 +1495,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2460", "_": "Missing Localizations: 2468",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -667,28 +667,28 @@
"_": "->------------------------] Advancements [------------------------<-", "_": "->------------------------] Advancements [------------------------<-",
"advancement.create.root": "UNLOCALIZED: Welcome to Create", "advancement.create.root": "UNLOCALIZED: Welcome to Create",
"advancement.create.root.desc": "UNLOCALIZED: Here be Contraptions", "advancement.create.root.desc": "UNLOCALIZED: Here Be Contraptions",
"advancement.create.andesite_alloy": "UNLOCALIZED: Sturdier Rocks", "advancement.create.andesite_alloy": "UNLOCALIZED: Sturdier Rocks",
"advancement.create.andesite_alloy.desc": "UNLOCALIZED: Obtain some Andesite Alloy, Create's most important resource", "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Obtain some Andesite Alloy, Create's most important resource",
"advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age",
"advancement.create.andesite_casing.desc": "UNLOCALIZED: Apply Andesite Alloy to wood creating a basic casing for your machines", "advancement.create.andesite_casing.desc": "UNLOCALIZED: Apply Andesite Alloy to stripped wood, creating a basic casing for your machines",
"advancement.create.mechanical_press": "UNLOCALIZED: Bonk", "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!",
"advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press",
"advancement.create.encased_fan": "UNLOCALIZED: Wind maker", "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker",
"advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan",
"advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle",
"advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials",
"advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared",
"advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials",
"advancement.create.compacting": "UNLOCALIZED: Compactification", "advancement.create.compacting": "UNLOCALIZED: Compactification",
"advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more",
"advancement.create.belt": "UNLOCALIZED: Kelp Drive", "advancement.create.belt": "UNLOCALIZED: Kelp Drive",
"advancement.create.belt.desc": "UNLOCALIZED: Connect two Shafts with a Mechanical Belt", "advancement.create.belt.desc": "UNLOCALIZED: Connect two Shafts with a Mechanical Belt",
"advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic",
"advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel",
"advancement.create.chute": "UNLOCALIZED: Vertical Logistics", "advancement.create.chute": "UNLOCALIZED: Vertical Logistics",
"advancement.create.chute.desc": "UNLOCALIZED: Transport some items by Chute", "advancement.create.chute.desc": "UNLOCALIZED: Transport some items by Chute",
"advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up",
"advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer",
"advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace",
"advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner",
@ -703,25 +703,25 @@
"advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue": "UNLOCALIZED: Area of Connect",
"advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group",
"advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose",
"advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board",
"advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange",
"advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption",
"advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out",
"advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench",
"advancement.create.stressometer": "UNLOCALIZED: Stress for Nerds", "advancement.create.stressometer": "UNLOCALIZED: Stress for Nerds",
"advancement.create.stressometer.desc": "UNLOCALIZED: Get an exact readout with the help of Goggles and a Stressometer", "advancement.create.stressometer.desc": "UNLOCALIZED: Get an exact readout with the help of Engineer's Goggles and a Stressometer",
"advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?",
"advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime",
"advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze",
"advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength",
"advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion",
"advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector",
"advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere",
"advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep",
"advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms",
"advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks",
"advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery",
"advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs",
"advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel",
"advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)",
"advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session",
@ -730,62 +730,62 @@
"advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)",
"advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed",
"advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)",
"advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum",
"advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation",
"advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age",
"advancement.create.copper_casing.desc": "UNLOCALIZED: Apply Copper Ingots to wood creating a waterproof casing for your machines", "advancement.create.copper_casing.desc": "UNLOCALIZED: Apply Copper Ingots to stripped wood, creating a waterproof casing for your machines",
"advancement.create.spout": "UNLOCALIZED: Sploosh", "advancement.create.spout": "UNLOCALIZED: Sploosh",
"advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid containing item be filled using a Spout", "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid-containing item be filled by a Spout",
"advancement.create.drain": "UNLOCALIZED: Tumble Draining", "advancement.create.drain": "UNLOCALIZED: Tumble Draining",
"advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain",
"advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse",
"advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque",
"advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel",
"advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle",
"advancement.create.backtank": "UNLOCALIZED: Pressure to Go", "advancement.create.backtank": "UNLOCALIZED: Pressure to Go",
"advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure",
"advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths",
"advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water",
"advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure",
"advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump",
"advancement.create.glass_pipe": "UNLOCALIZED: Flow Discovery", "advancement.create.glass_pipe": "UNLOCALIZED: Flow Discovery",
"advancement.create.glass_pipe.desc": "UNLOCALIZED: Use your Wrench on a pipe that contains a fluid", "advancement.create.glass_pipe.desc": "UNLOCALIZED: Use your Wrench on a pipe that contains a fluid",
"advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector",
"advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water",
"advancement.create.hose_pulley": "UNLOCALIZED: Industrial Spillage", "advancement.create.hose_pulley": "UNLOCALIZED: Industrial Spillage",
"advancement.create.hose_pulley.desc": "UNLOCALIZED: Lower a Hose Pulley and watch it drain or fill a body of fluid", "advancement.create.hose_pulley.desc": "UNLOCALIZED: Lower a Hose Pulley and watch it drain or fill a body of fluid",
"advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination",
"advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate",
"advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping",
"advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive",
"advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle",
"advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite",
"advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam",
"advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power",
"advancement.create.foods": "UNLOCALIZED: Balanced Diet", "advancement.create.foods": "UNLOCALIZED: Balanced Diet",
"advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout",
"advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders",
"advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)",
"advancement.create.chained_drain": "UNLOCALIZED: On a Roll", "advancement.create.chained_drain": "UNLOCALIZED: On a Roll",
"advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)",
"advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!",
"advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)",
"advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ",
"advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)",
"advancement.create.brass": "UNLOCALIZED: Real Alloys", "advancement.create.brass": "UNLOCALIZED: Real Alloys",
"advancement.create.brass.desc": "UNLOCALIZED: Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer", "advancement.create.brass.desc": "UNLOCALIZED: Create Brass Ingots by alloying Copper and Zinc Ingots in your Blaze-heated Mechanical Mixer",
"advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age",
"advancement.create.brass_casing.desc": "UNLOCALIZED: Apply Brass Ingots to wood creating a casing for more sophisticated machines", "advancement.create.brass_casing.desc": "UNLOCALIZED: Apply Brass Ingots to stripped wood, creating a casing for more sophisticated machines",
"advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds",
"advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz",
"advancement.create.deployer": "UNLOCALIZED: Artificial Intelligence", "advancement.create.deployer": "UNLOCALIZED: Artificial Intelligence",
"advancement.create.deployer.desc": "UNLOCALIZED: Place and activate a Deployer, the perfect reflection of yourself", "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself",
"advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities", "advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities",
"advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism", "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism",
"advancement.create.speed_controller": "UNLOCALIZED: Engineers Hate Him!", "advancement.create.speed_controller": "UNLOCALIZED: Engineers Hate Him!",
"advancement.create.speed_controller.desc": "UNLOCALIZED: Fine tune your contraption with a Rotation Speed Controller", "advancement.create.speed_controller.desc": "UNLOCALIZED: Fine-tune your Contraption with a Rotation Speed Controller",
"advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands", "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands",
"advancement.create.mechanical_arm.desc": "UNLOCALIZED: Watch your Mechanical Arm transport its first Item", "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Watch your Mechanical Arm transport its first item",
"advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly",
"advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters",
"advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants",
@ -795,7 +795,7 @@
"advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption O'Clock", "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption O'Clock",
"advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a structure mounted on a Clockwork Bearing", "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a structure mounted on a Clockwork Bearing",
"advancement.create.display_link": "UNLOCALIZED: Big Data", "advancement.create.display_link": "UNLOCALIZED: Big Data",
"advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information",
"advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!", "advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!",
"advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon", "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon",
"advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!",
@ -804,54 +804,54 @@
"advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller",
"advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron", "advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron",
"advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner", "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner",
"advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It",
"advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed",
"advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron", "advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron",
"advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with ten or more output locations", "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with 10 or more output locations",
"advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks",
"advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other",
"advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart",
"advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself",
"advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!",
"advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)",
"advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures",
"advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)",
"advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent",
"advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)",
"advancement.create.musical_arm": "UNLOCALIZED: DJ Mechanico", "advancement.create.musical_arm": "UNLOCALIZED: DJ Mechanico",
"advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)", "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)",
"advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks",
"advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian",
"advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age",
"advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components",
"advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train": "UNLOCALIZED: All Aboard!",
"advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train",
"advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor",
"advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule",
"advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal": "UNLOCALIZED: Traffic Control",
"advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal",
"advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables",
"advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links",
"advancement.create.track_0": "UNLOCALIZED: A new Gauge", "advancement.create.track_0": "UNLOCALIZED: A New Gauge",
"advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks",
"advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!",
"advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving",
"advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter",
"advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal",
"advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory",
"advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press",
"advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend",
"advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length",
"advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours",
"advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages",
"advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel": "UNLOCALIZED: Field Trip",
"advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling",
"advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill",
"advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)",
"advancement.create.red_signal": "UNLOCALIZED: Expert Driver", "advancement.create.red_signal": "UNLOCALIZED: Expert Driver",
"advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)",
"advancement.create.train_crash": "UNLOCALIZED: Terrible Service", "advancement.create.train_crash": "UNLOCALIZED: Terrible Service",
"advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)",
"advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot",
"advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)",
@ -1260,8 +1260,10 @@
"create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted",
"create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked",
"create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked",
"create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", "create.item_attributes.blastable": "UNLOCALIZED: can be Smelted in a Blast Furnace",
"create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", "create.item_attributes.blastable.inverted": "UNLOCALIZED: cannot be Smelted in a Blast Furnace",
"create.item_attributes.compostable": "UNLOCALIZED: can be composted",
"create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted",
"create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s",
"create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s",
"create.item_attributes.shulker_level.full": "UNLOCALIZED: full", "create.item_attributes.shulker_level.full": "UNLOCALIZED: full",
@ -1368,6 +1370,10 @@
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above", "create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below", "create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s", "create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
"create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use",
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:", "create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:",
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s", "create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve", "create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve",
@ -1481,6 +1487,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1488,6 +1495,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1494", "_": "Missing Localizations: 1312",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -13,7 +13,7 @@
"block.create.andesite_encased_large_cogwheel": "Roda dentada grande revestida com andesito", "block.create.andesite_encased_large_cogwheel": "Roda dentada grande revestida com andesito",
"block.create.andesite_encased_shaft": "Eixo revestido com latão", "block.create.andesite_encased_shaft": "Eixo revestido com latão",
"block.create.andesite_funnel": "Funil de Andesito", "block.create.andesite_funnel": "Funil de Andesito",
"block.create.andesite_ladder": "UNLOCALIZED: Andesite Ladder", "block.create.andesite_ladder": "Escada de mão de andesito",
"block.create.andesite_pillar": "Pilar de andesito", "block.create.andesite_pillar": "Pilar de andesito",
"block.create.andesite_tunnel": "Tunel de Andesito", "block.create.andesite_tunnel": "Tunel de Andesito",
"block.create.asurine": "Asurino", "block.create.asurine": "Asurino",
@ -40,7 +40,7 @@
"block.create.brass_encased_large_cogwheel": "Roda dentada grande revestida com latão", "block.create.brass_encased_large_cogwheel": "Roda dentada grande revestida com latão",
"block.create.brass_encased_shaft": "Eixo Revestido com Latão", "block.create.brass_encased_shaft": "Eixo Revestido com Latão",
"block.create.brass_funnel": "Funil de Latão", "block.create.brass_funnel": "Funil de Latão",
"block.create.brass_ladder": "UNLOCALIZED: Brass Ladder", "block.create.brass_ladder": "Escada de mão de latão",
"block.create.brass_tunnel": "Tunel de Latão", "block.create.brass_tunnel": "Tunel de Latão",
"block.create.brown_nixie_tube": "Tubo de nixie marrom", "block.create.brown_nixie_tube": "Tubo de nixie marrom",
"block.create.brown_sail": "Vela marrom", "block.create.brown_sail": "Vela marrom",
@ -56,10 +56,10 @@
"block.create.cogwheel": "Roda Dentada", "block.create.cogwheel": "Roda Dentada",
"block.create.content_observer": "Observador de Conteúdo", "block.create.content_observer": "Observador de Conteúdo",
"block.create.controller_rail": "Trilho Controlador", "block.create.controller_rail": "Trilho Controlador",
"block.create.controls": "UNLOCALIZED: Train Controls", "block.create.controls": "Controles do trem",
"block.create.copper_backtank": "Tanque Traseiro de Cobre", "block.create.copper_backtank": "Tanque Traseiro de Cobre",
"block.create.copper_casing": "Revestimento de Cobre", "block.create.copper_casing": "Revestimento de Cobre",
"block.create.copper_ladder": "UNLOCALIZED: Copper Ladder", "block.create.copper_ladder": "Escada de mão de cobre",
"block.create.copper_shingle_slab": "Laje de telha de cobre", "block.create.copper_shingle_slab": "Laje de telha de cobre",
"block.create.copper_shingle_stairs": "Escada de telha de cobre", "block.create.copper_shingle_stairs": "Escada de telha de cobre",
"block.create.copper_shingles": "Telha de cobre", "block.create.copper_shingles": "Telha de cobre",
@ -201,8 +201,8 @@
"block.create.deployer": "Implantador", "block.create.deployer": "Implantador",
"block.create.depot": "Depósito", "block.create.depot": "Depósito",
"block.create.diorite_pillar": "Pilar de diorito", "block.create.diorite_pillar": "Pilar de diorito",
"block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_board": "Placa de exibição",
"block.create.display_link": "UNLOCALIZED: Display Link", "block.create.display_link": "Conexão de placa de exibição",
"block.create.dripstone_pillar": "Pilar de espeleotema", "block.create.dripstone_pillar": "Pilar de espeleotema",
"block.create.encased_chain_drive": "Correia Revestida", "block.create.encased_chain_drive": "Correia Revestida",
"block.create.encased_fan": "Ventilador Revestida", "block.create.encased_fan": "Ventilador Revestida",
@ -213,15 +213,15 @@
"block.create.exposed_copper_tile_slab": "Laje de ladrilho de cobre exposta", "block.create.exposed_copper_tile_slab": "Laje de ladrilho de cobre exposta",
"block.create.exposed_copper_tile_stairs": "Escada de ladrilho de cobre exposta", "block.create.exposed_copper_tile_stairs": "Escada de ladrilho de cobre exposta",
"block.create.exposed_copper_tiles": "Ladrilho de cobre exposto", "block.create.exposed_copper_tiles": "Ladrilho de cobre exposto",
"block.create.fake_track": "UNLOCALIZED: Track Marker for Maps", "block.create.fake_track": "Marcador de trilhos para mapa",
"block.create.fluid_pipe": "Cano de Fluido", "block.create.fluid_pipe": "Cano de Fluido",
"block.create.fluid_tank": "Tanque de fluido", "block.create.fluid_tank": "Tanque de fluido",
"block.create.fluid_valve": "Válvula", "block.create.fluid_valve": "Válvula",
"block.create.flywheel": "Volante de inércia", "block.create.flywheel": "Volante de inércia",
"block.create.framed_glass": "Vidro emoldurado", "block.create.framed_glass": "Vidro emoldurado",
"block.create.framed_glass_door": "UNLOCALIZED: Framed Glass Door", "block.create.framed_glass_door": "Porta de vidro emoldurado",
"block.create.framed_glass_pane": "Vidraça emoldurada", "block.create.framed_glass_pane": "Vidraça emoldurada",
"block.create.framed_glass_trapdoor": "UNLOCALIZED: Framed Glass Trapdoor", "block.create.framed_glass_trapdoor": "Alçapão de vidro emoldurado",
"block.create.gantry_carriage": "Carruagem de Pórtico", "block.create.gantry_carriage": "Carruagem de Pórtico",
"block.create.gantry_shaft": "Eixo de Pórtico", "block.create.gantry_shaft": "Eixo de Pórtico",
"block.create.gearbox": "Caixa de Transmissão", "block.create.gearbox": "Caixa de Transmissão",
@ -248,7 +248,7 @@
"block.create.item_vault": "Cofre de itens", "block.create.item_vault": "Cofre de itens",
"block.create.jungle_window": "Janela da selva", "block.create.jungle_window": "Janela da selva",
"block.create.jungle_window_pane": "Vidraça da selva", "block.create.jungle_window_pane": "Vidraça da selva",
"block.create.large_bogey": "UNLOCALIZED: Large Bogey", "block.create.large_bogey": "Roda grande do trem",
"block.create.large_cogwheel": "Roda dentada grande", "block.create.large_cogwheel": "Roda dentada grande",
"block.create.layered_andesite": "Andesito estratificado", "block.create.layered_andesite": "Andesito estratificado",
"block.create.layered_asurine": "Asurino estratificado", "block.create.layered_asurine": "Asurino estratificado",
@ -302,8 +302,8 @@
"block.create.mechanical_pump": "Bomba Mecânica", "block.create.mechanical_pump": "Bomba Mecânica",
"block.create.mechanical_saw": "Serra Mecânica", "block.create.mechanical_saw": "Serra Mecânica",
"block.create.metal_bracket": "Suporte de metal", "block.create.metal_bracket": "Suporte de metal",
"block.create.metal_girder": "UNLOCALIZED: Metal Girder", "block.create.metal_girder": "Viga de metal",
"block.create.metal_girder_encased_shaft": "UNLOCALIZED: Metal Girder Encased Shaft", "block.create.metal_girder_encased_shaft": "Eixo revestido com viga de metal",
"block.create.millstone": "Pedra de Moer", "block.create.millstone": "Pedra de Moer",
"block.create.minecart_anchor": "Ancóra de carrinho de Mina", "block.create.minecart_anchor": "Ancóra de carrinho de Mina",
"block.create.mysterious_cuckoo_clock": "Relógio cuckoo", "block.create.mysterious_cuckoo_clock": "Relógio cuckoo",
@ -332,7 +332,7 @@
"block.create.pink_toolbox": "Caixa de ferramentas rosa", "block.create.pink_toolbox": "Caixa de ferramentas rosa",
"block.create.pink_valve_handle": "Válvula rosa", "block.create.pink_valve_handle": "Válvula rosa",
"block.create.piston_extension_pole": "Vara de Extensão do Pistão", "block.create.piston_extension_pole": "Vara de Extensão do Pistão",
"block.create.placard": "UNLOCALIZED: Placard", "block.create.placard": "Cartaz",
"block.create.polished_cut_andesite": "Andesito lapidado polido", "block.create.polished_cut_andesite": "Andesito lapidado polido",
"block.create.polished_cut_andesite_slab": "Laje de andesito lapidado polido", "block.create.polished_cut_andesite_slab": "Laje de andesito lapidado polido",
"block.create.polished_cut_andesite_stairs": "Escada de andesito lapidado polido", "block.create.polished_cut_andesite_stairs": "Escada de andesito lapidado polido",
@ -392,9 +392,9 @@
"block.create.portable_fluid_interface": "Interface de fluidos portátil", "block.create.portable_fluid_interface": "Interface de fluidos portátil",
"block.create.portable_storage_interface": "Interface de armazenamento portátil", "block.create.portable_storage_interface": "Interface de armazenamento portátil",
"block.create.powered_latch": "Trava de redstone", "block.create.powered_latch": "Trava de redstone",
"block.create.powered_shaft": "UNLOCALIZED: Powered Shaft", "block.create.powered_shaft": "Eixo energizado",
"block.create.powered_toggle_latch": "Trave de alternância de redstone", "block.create.powered_toggle_latch": "Trava de alternância de redstone",
"block.create.pulley_magnet": "Imã da Polia", "block.create.pulley_magnet": "Ímã da Polia",
"block.create.pulse_extender": "Extensor de pulso", "block.create.pulse_extender": "Extensor de pulso",
"block.create.pulse_repeater": "Repetidor de Pulso", "block.create.pulse_repeater": "Repetidor de Pulso",
"block.create.purple_nixie_tube": "Tubo nixie roxo", "block.create.purple_nixie_tube": "Tubo nixie roxo",
@ -403,7 +403,7 @@
"block.create.purple_toolbox": "Caixa de ferramentas roxa", "block.create.purple_toolbox": "Caixa de ferramentas roxa",
"block.create.purple_valve_handle": "válvula roxa", "block.create.purple_valve_handle": "válvula roxa",
"block.create.radial_chassis": "Chassis Radial", "block.create.radial_chassis": "Chassis Radial",
"block.create.railway_casing": "UNLOCALIZED: Train Casing", "block.create.railway_casing": "Revestimento de trem",
"block.create.raw_zinc_block": "Bloco de zinco bruto", "block.create.raw_zinc_block": "Bloco de zinco bruto",
"block.create.red_nixie_tube": "Tubo nixie vermelho", "block.create.red_nixie_tube": "Tubo nixie vermelho",
"block.create.red_sail": "Vela vermelha", "block.create.red_sail": "Vela vermelha",
@ -415,11 +415,11 @@
"block.create.refined_radiance_casing": "Revestimento Brilhante", "block.create.refined_radiance_casing": "Revestimento Brilhante",
"block.create.rope": "Corda", "block.create.rope": "Corda",
"block.create.rope_pulley": "Polia", "block.create.rope_pulley": "Polia",
"block.create.rose_quartz_block": "UNLOCALIZED: Block of Rose Quartz", "block.create.rose_quartz_block": "Bloco de quartzo rosa",
"block.create.rose_quartz_lamp": "UNLOCALIZED: Rose Quartz Lamp", "block.create.rose_quartz_lamp": "Lâmpada de quartzo rosa",
"block.create.rose_quartz_tiles": "UNLOCALIZED: Rose Quartz Tiles", "block.create.rose_quartz_tiles": "Telha de quartzo rosa",
"block.create.rotation_speed_controller": "Controlador de Velocidade Rotacional", "block.create.rotation_speed_controller": "Controlador de velocidade rotacional",
"block.create.sail_frame": "moldura de vela", "block.create.sail_frame": "Moldura de vela",
"block.create.schematic_table": "Mesa de Esquema", "block.create.schematic_table": "Mesa de Esquema",
"block.create.schematicannon": "Canhão de Esquema", "block.create.schematicannon": "Canhão de Esquema",
"block.create.scorchia": "Escória negra", "block.create.scorchia": "Escória negra",
@ -427,8 +427,8 @@
"block.create.scoria": "Escória", "block.create.scoria": "Escória",
"block.create.scoria_pillar": "Pilar de escória", "block.create.scoria_pillar": "Pilar de escória",
"block.create.secondary_linear_chassis": "Chassis linear secundário", "block.create.secondary_linear_chassis": "Chassis linear secundário",
"block.create.sequenced_gearshift": "Câmbio sequenciado", "block.create.sequenced_gearshift": "Câmbio sequencial",
"block.create.shadow_steel_casing": "Revestiment das Sombras", "block.create.shadow_steel_casing": "Revestimento das Sombras",
"block.create.shaft": "Eixo", "block.create.shaft": "Eixo",
"block.create.small_andesite_brick_slab": "Laje de tijolos pequenos de andesito", "block.create.small_andesite_brick_slab": "Laje de tijolos pequenos de andesito",
"block.create.small_andesite_brick_stairs": "Escada de tijolos pequenos de andesito", "block.create.small_andesite_brick_stairs": "Escada de tijolos pequenos de andesito",
@ -438,7 +438,7 @@
"block.create.small_asurine_brick_stairs": "Escada de tijolos pequenos de Asurino", "block.create.small_asurine_brick_stairs": "Escada de tijolos pequenos de Asurino",
"block.create.small_asurine_brick_wall": "Muro de tijolos pequenos de Asurino", "block.create.small_asurine_brick_wall": "Muro de tijolos pequenos de Asurino",
"block.create.small_asurine_bricks": "Tijolos pequenos de Asurino", "block.create.small_asurine_bricks": "Tijolos pequenos de Asurino",
"block.create.small_bogey": "UNLOCALIZED: Small Bogey", "block.create.small_bogey": "Roda do trem pequena",
"block.create.small_calcite_brick_slab": "Laje de tijolos pequenos de calcita", "block.create.small_calcite_brick_slab": "Laje de tijolos pequenos de calcita",
"block.create.small_calcite_brick_stairs": "Escada de tijolos pequenos de calcita", "block.create.small_calcite_brick_stairs": "Escada de tijolos pequenos de calcita",
"block.create.small_calcite_brick_wall": "Muro de tijolos pequenos de calcita", "block.create.small_calcite_brick_wall": "Muro de tijolos pequenos de calcita",
@ -471,7 +471,7 @@
"block.create.small_ochrum_brick_stairs": "Escada de tijolos pequenos de Ocrom", "block.create.small_ochrum_brick_stairs": "Escada de tijolos pequenos de Ocrom",
"block.create.small_ochrum_brick_wall": "Muro de tijolos pequenos de Ocrom", "block.create.small_ochrum_brick_wall": "Muro de tijolos pequenos de Ocrom",
"block.create.small_ochrum_bricks": "Tijolos pequenos de Ocrom", "block.create.small_ochrum_bricks": "Tijolos pequenos de Ocrom",
"block.create.small_rose_quartz_tiles": "UNLOCALIZED: Small Rose Quartz Tiles", "block.create.small_rose_quartz_tiles": "Telha de quartzo rosa pequena",
"block.create.small_scorchia_brick_slab": "Laje de tijolos pequenos de escória negra", "block.create.small_scorchia_brick_slab": "Laje de tijolos pequenos de escória negra",
"block.create.small_scorchia_brick_stairs": "Escada de tijolos pequenos de escória negra", "block.create.small_scorchia_brick_stairs": "Escada de tijolos pequenos de escória negra",
"block.create.small_scorchia_brick_wall": "Muro de tijolos pequenos de escória negra", "block.create.small_scorchia_brick_wall": "Muro de tijolos pequenos de escória negra",
@ -494,21 +494,21 @@
"block.create.spout": "Bica", "block.create.spout": "Bica",
"block.create.spruce_window": "Janela de pinheiro", "block.create.spruce_window": "Janela de pinheiro",
"block.create.spruce_window_pane": "Vidraça de pinheiro", "block.create.spruce_window_pane": "Vidraça de pinheiro",
"block.create.steam_engine": "UNLOCALIZED: Steam Engine", "block.create.steam_engine": "Motor a vapor",
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle", "block.create.steam_whistle": "Apito a vapor",
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension", "block.create.steam_whistle_extension": "Extensão do apito a vapor",
"block.create.sticker": "Adesivo", "block.create.sticker": "Adesivo",
"block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento",
"block.create.stockpile_switch": "Disjuntor de Armazenamento", "block.create.stockpile_switch": "Disjuntor de Armazenamento",
"block.create.stressometer": "Estressómetro", "block.create.stressometer": "Estressómetro",
"block.create.tiled_glass": "Vidro Entalhado", "block.create.tiled_glass": "Vidro Entalhado",
"block.create.tiled_glass_pane": "Vidraça Entalhada", "block.create.tiled_glass_pane": "Vidraça Entalhada",
"block.create.track": "UNLOCALIZED: Train Track", "block.create.track": "Trilho do trem",
"block.create.track_observer": "UNLOCALIZED: Train Observer", "block.create.track_observer": "Observador de trem",
"block.create.track_signal": "UNLOCALIZED: Train Signal", "block.create.track_signal": "Sinal de trem",
"block.create.track_station": "UNLOCALIZED: Train Station", "block.create.track_station": "Estação de trem",
"block.create.train_door": "UNLOCALIZED: Train Door", "block.create.train_door": "Porta de trem",
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor", "block.create.train_trapdoor": "Alçapão de trem",
"block.create.tuff_pillar": "Pilar de tufo", "block.create.tuff_pillar": "Pilar de tufo",
"block.create.turntable": "Mesa giratória", "block.create.turntable": "Mesa giratória",
"block.create.veridium": "Veridiano", "block.create.veridium": "Veridiano",
@ -532,7 +532,7 @@
"block.create.waxed_exposed_copper_tiles": "Ladrilhos de cobre exposto encerado", "block.create.waxed_exposed_copper_tiles": "Ladrilhos de cobre exposto encerado",
"block.create.waxed_oxidized_copper_shingle_slab": "Laje de telha de cobre oxidada encerada", "block.create.waxed_oxidized_copper_shingle_slab": "Laje de telha de cobre oxidada encerada",
"block.create.waxed_oxidized_copper_shingle_stairs": "Escada de telha de cobre oxidada encerada", "block.create.waxed_oxidized_copper_shingle_stairs": "Escada de telha de cobre oxidada encerada",
"block.create.waxed_oxidized_copper_shingles": "Telha de cobre oxidada encerada", "block.create.waxed_oxidized_copper_shingles": "Telha de cobre oxidado encerada",
"block.create.waxed_oxidized_copper_tile_slab": "Laje de ladrilhos de cobre oxidada encerada", "block.create.waxed_oxidized_copper_tile_slab": "Laje de ladrilhos de cobre oxidada encerada",
"block.create.waxed_oxidized_copper_tile_stairs": "Escada de ladrilhos de cobre oxidada encerada", "block.create.waxed_oxidized_copper_tile_stairs": "Escada de ladrilhos de cobre oxidada encerada",
"block.create.waxed_oxidized_copper_tiles": "Ladrilhos de cobre oxidado encerado", "block.create.waxed_oxidized_copper_tiles": "Ladrilhos de cobre oxidado encerado",
@ -567,10 +567,10 @@
"enchantment.create.capacity": "Capacidade", "enchantment.create.capacity": "Capacidade",
"enchantment.create.potato_recovery": "Recuperação de Batata", "enchantment.create.potato_recovery": "Recuperação de Batata",
"entity.create.carriage_contraption": "UNLOCALIZED: Carriage Contraption", "entity.create.carriage_contraption": "Engenhoca de carruagem",
"entity.create.contraption": "Engenhoca", "entity.create.contraption": "Engenhoca",
"entity.create.crafting_blueprint": "Esquema de Fabricação", "entity.create.crafting_blueprint": "Esquema de Fabricação",
"entity.create.gantry_contraption": "Engenhoca de Pórticolo", "entity.create.gantry_contraption": "Engenhoca de Pórtico",
"entity.create.potato_projectile": "Projétil de batata", "entity.create.potato_projectile": "Projétil de batata",
"entity.create.seat": "Assento", "entity.create.seat": "Assento",
"entity.create.stationary_contraption": "Engenhoca estacionária", "entity.create.stationary_contraption": "Engenhoca estacionária",
@ -595,8 +595,8 @@
"item.create.chocolate_glazed_berries": "Baga com Cobertura de Chocolate", "item.create.chocolate_glazed_berries": "Baga com Cobertura de Chocolate",
"item.create.chromatic_compound": "Composto Cromático", "item.create.chromatic_compound": "Composto Cromático",
"item.create.cinder_flour": "Farinha de Netherrack", "item.create.cinder_flour": "Farinha de Netherrack",
"item.create.copper_backtank": "Tanque Traseiro", "item.create.copper_backtank": "Tanque Traseiro de cobre",
"item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable", "item.create.copper_backtank_placeable": "Tanque de cobre traseiro colocável",
"item.create.copper_nugget": "Pepita de Cobre", "item.create.copper_nugget": "Pepita de Cobre",
"item.create.copper_sheet": "Chapa de Cobre", "item.create.copper_sheet": "Chapa de Cobre",
"item.create.crafter_slot_cover": "Cobertura do slot de fabricador", "item.create.crafter_slot_cover": "Cobertura do slot de fabricador",
@ -631,7 +631,7 @@
"item.create.honey_bucket": "Balde de Mel", "item.create.honey_bucket": "Balde de Mel",
"item.create.honeyed_apple": "Maçã com Cobertura de Mel", "item.create.honeyed_apple": "Maçã com Cobertura de Mel",
"item.create.incomplete_precision_mechanism": "Mecanismo de Precisão", "item.create.incomplete_precision_mechanism": "Mecanismo de Precisão",
"item.create.incomplete_track": "UNLOCALIZED: Incomplete Track", "item.create.incomplete_track": "trilho incompleto",
"item.create.iron_sheet": "Chapa de Ferro", "item.create.iron_sheet": "Chapa de Ferro",
"item.create.linked_controller": "Controle conectado", "item.create.linked_controller": "Controle conectado",
"item.create.minecart_contraption": "Engenhoca de Carrinho de Mina", "item.create.minecart_contraption": "Engenhoca de Carrinho de Mina",
@ -646,15 +646,15 @@
"item.create.refined_radiance": "Luz Refinada", "item.create.refined_radiance": "Luz Refinada",
"item.create.rose_quartz": "Quartzo Rosa", "item.create.rose_quartz": "Quartzo Rosa",
"item.create.sand_paper": "Lixa", "item.create.sand_paper": "Lixa",
"item.create.schedule": "UNLOCALIZED: Train Schedule", "item.create.schedule": "Programação do trem",
"item.create.schematic": "Esquema", "item.create.schematic": "Esquema",
"item.create.schematic_and_quill": "Esquema e pena", "item.create.schematic_and_quill": "Esquema e pena",
"item.create.shadow_steel": "Aço sombrio", "item.create.shadow_steel": "Aço sombrio",
"item.create.sturdy_sheet": "UNLOCALIZED: Sturdy Sheet", "item.create.sturdy_sheet": "Chapa resistente",
"item.create.super_glue": "Super Cola", "item.create.super_glue": "Super Cola",
"item.create.sweet_roll": "Rolinho Doce", "item.create.sweet_roll": "Rolinho Doce",
"item.create.tree_fertilizer": "Fertilizante de Árvore", "item.create.tree_fertilizer": "Fertilizante de Árvore",
"item.create.unprocessed_obsidian_sheet": "UNLOCALIZED: Unprocessed Obsidian Sheet", "item.create.unprocessed_obsidian_sheet": "Chapa de obsidiana não processada",
"item.create.vertical_gearbox": "Caixa de Transmissão Vertical", "item.create.vertical_gearbox": "Caixa de Transmissão Vertical",
"item.create.wand_of_symmetry": "Varinha de Simetria", "item.create.wand_of_symmetry": "Varinha de Simetria",
"item.create.wheat_flour": "Farinha de trigo", "item.create.wheat_flour": "Farinha de trigo",
@ -669,29 +669,29 @@
"advancement.create.root": "Bem vindo a Create", "advancement.create.root": "Bem vindo a Create",
"advancement.create.root.desc": "É hora de construir engenhocas maravilhosas", "advancement.create.root.desc": "É hora de construir engenhocas maravilhosas",
"advancement.create.andesite_alloy": "Aliterações Em abundância", "advancement.create.andesite_alloy": "Aliterações Em abundância",
"advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.", "advancement.create.andesite_alloy.desc": "Materiais do Create têm nomes estranhos, a liga de andesito é um deles.",
"advancement.create.andesite_casing": "A era do andesito", "advancement.create.andesite_casing": "A era do andesito",
"advancement.create.andesite_casing.desc": "Use um pouco de liga de andesito e madeira para fazer um revestimento basico.", "advancement.create.andesite_casing.desc": "Use um pouco de liga de andesito e madeira para fazer um revestimento basico.",
"advancement.create.mechanical_press": "UNLOCALIZED: Bonk", "advancement.create.mechanical_press": "Bonk",
"advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", "advancement.create.mechanical_press.desc": "Crie algumas chapas na prensa mecânica",
"advancement.create.encased_fan": "UNLOCALIZED: Wind maker", "advancement.create.encased_fan": "Fazedor de vento",
"advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", "advancement.create.encased_fan.desc": "Coloque e ative um ventilador revestido",
"advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing": "Processando por particulas",
"advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", "advancement.create.fan_processing.desc": "Use um ventilador revestido para processar materiais",
"advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", "advancement.create.saw_processing": "O mais temido da oficina",
"advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.saw_processing.desc": "Use uma serra mecânica de pé para processar materiais",
"advancement.create.compacting": "UNLOCALIZED: Compactification", "advancement.create.compacting": "Compactação",
"advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", "advancement.create.compacting.desc": "Use uma prensa e uma bacia para criar menos itens de mais itens",
"advancement.create.belt": "Correia de alga", "advancement.create.belt": "Correia de alga",
"advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecânica.", "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecânica.",
"advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel": "Estética de aeroporto",
"advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.funnel.desc": "Extraia ou insira itens num container usando um funil de andesito",
"advancement.create.chute": "Caindo", "advancement.create.chute": "Caindo",
"advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecânica.",
"advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", "advancement.create.mechanical_mixer": "Misturando",
"advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.mechanical_mixer.desc": "Combina ingredientes em uma batedeira mecânica",
"advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner": "Fogueira viva",
"advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", "advancement.create.burner.desc": "Obtenha um queimador de blaze",
"advancement.create.water_wheel": "aproveitamento hidráulico", "advancement.create.water_wheel": "aproveitamento hidráulico",
"advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!", "advancement.create.water_wheel.desc": "Coloque uma roda de água e tente conseguir gira-la!",
"advancement.create.windmill": "Uma brisa moderada", "advancement.create.windmill": "Uma brisa moderada",
@ -700,160 +700,160 @@
"advancement.create.shifting_gears.desc": "Conecte uma roda dentada grande com uma roda dentada pequena, permitindo você a mudar a velocidade da engenhoca.", "advancement.create.shifting_gears.desc": "Conecte uma roda dentada grande com uma roda dentada pequena, permitindo você a mudar a velocidade da engenhoca.",
"advancement.create.millstone": "Moedor portátil", "advancement.create.millstone": "Moedor portátil",
"advancement.create.millstone.desc": "Coloque e energize uma pedra de moer", "advancement.create.millstone.desc": "Coloque e energize uma pedra de moer",
"advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue": "Área de conexão",
"advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.super_glue.desc": "Cole alguns blocos em um grupo",
"advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", "advancement.create.contraption_actors": "Movimento com proposito",
"advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", "advancement.create.contraption_actors.desc": "Crie uma engenhoca com brocas, serras ou coletores a bordo",
"advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", "advancement.create.portable_storage_interface": "Troca por drive-thru",
"advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", "advancement.create.portable_storage_interface.desc": "Use uma interface de armazenamento portátil para extrair ou inserir itens numa engenhoca",
"advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", "advancement.create.wrench_goggles": "Bem equipado",
"advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", "advancement.create.wrench_goggles.desc": "Equipe um óculos do engenheiro e uma chave inglesa",
"advancement.create.stressometer": "Mas quão estressado exatamente?", "advancement.create.stressometer": "Mas quão estressado exatamente?",
"advancement.create.stressometer.desc": "Coloque e energise o estressômetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", "advancement.create.stressometer.desc": "Coloque e energise o estressômetro. Olhe a este por através dos seus óculos para ler o valor exato.",
"advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", "advancement.create.cuckoo_clock": "Mas é a hora?",
"advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.cuckoo_clock.desc": "testemunhe seu relógio cuckoo anunciar a hora de dormir",
"advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed": "Uma brisa forte",
"advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.windmill_maxed.desc": "Monte um moinho de vento com força maxima",
"advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", "advancement.create.ejector_maxed": "Campeão do trampolim",
"advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", "advancement.create.ejector_maxed.desc": "Seja lançado mais de 30 blocos por um ejetor ponderado",
"advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed": "Corda para lugar nenhum",
"advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.pulley_maxed.desc": "Extenda uma corda por mais de 200 blocos de profundidade",
"advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup": "Braçõs fortes",
"advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.cart_pickup.desc": "Pegue uma engenhoca de carrinho de minas com pelos menos 200 blocos colados",
"advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", "advancement.create.anvil_plough": "Artilharia de ferreiro",
"advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", "advancement.create.anvil_plough.desc": "Lance uma bigorna com um arador mecânico",
"advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000": "Roda de magma",
"advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.lava_wheel_00000.desc": "Isso nãoi deveria ter funcionado§7\n(Hidden Advancement)",
"advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", "advancement.create.hand_crank_000": "Sessão de malhação",
"advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", "advancement.create.hand_crank_000.desc": "Use uma manivela até estar completamente exausto§7\n(Hidden Advancement)",
"advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", "advancement.create.belt_funnel_kiss": "Os pombinhos",
"advancement.create.belt_funnel_kiss.desc": "Faça dois funis de esteira beijarem.", "advancement.create.belt_funnel_kiss.desc": "Faça dois funis de esteira beijarem.",
"advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed": "Perfeitamente estressado",
"advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed.desc": "Consiga uma leitura de 100% de um estressómetro§7\n(Hidden Advancement)",
"advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", "advancement.create.copper": "Rochas mais resistentes",
"advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper.desc": "Acumule cobre para as suas explorações na manipulações de fluido",
"advancement.create.copper_casing": "A era do cobre", "advancement.create.copper_casing": "A era do cobre",
"advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.", "advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.",
"advancement.create.spout": "Sploosh", "advancement.create.spout": "Sploosh",
"advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.", "advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.",
"advancement.create.drain": "UNLOCALIZED: Tumble Draining", "advancement.create.drain": "Cambalhotas de drenagem",
"advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", "advancement.create.drain.desc": "Assista um item contendo fluidos ser esvaziado por um dreno de itens",
"advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", "advancement.create.steam_engine": "A usina",
"advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", "advancement.create.steam_engine.desc": "Use um motor a vapor para gerar torque",
"advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle": "Voz de um anjo",
"advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.steam_whistle.desc": "Ative um apito a vapor",
"advancement.create.backtank": "UNLOCALIZED: Pressure to Go", "advancement.create.backtank": "Pressão para ir",
"advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", "advancement.create.backtank.desc": "Crie um tanque traseiro de cobre e faça ele acumular pressão",
"advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", "advancement.create.diving_suit": "Preparado para as profundezas",
"advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", "advancement.create.diving_suit.desc": "Equipe um capacete de mergulhador junto com o seu tanque traseiro de cobre e pule na água",
"advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0": "Sobre pressão",
"advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.mechanical_pump_0.desc": "Coloque e ative uma bomba mecânica",
"advancement.create.glass_pipe": "Espião de fluxo", "advancement.create.glass_pipe": "Espião de fluxo",
"advancement.create.glass_pipe.desc": "Assista fluidos se propagarem por através de canos de fluido com janela. Canos retos ficam com janelas quando uma chave inglesa é usada neles.", "advancement.create.glass_pipe.desc": "Assista fluidos se propagarem por através de canos de fluido com janela. Canos retos ficam com janelas quando uma chave inglesa é usada neles.",
"advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", "advancement.create.water_supply": "Coletor de poças",
"advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.water_supply.desc": "Use a extremidade sugante de um cano ou bomba para coletar blocos de água",
"advancement.create.hose_pulley": "Vazamento industrial", "advancement.create.hose_pulley": "Vazamento industrial",
"advancement.create.hose_pulley.desc": "desça uma polia de mangueira e assista esta drenar ou encher qualquer corpo de fluido.", "advancement.create.hose_pulley.desc": "desça uma polia de mangueira e assista esta drenar ou encher qualquer corpo de fluido.",
"advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", "advancement.create.chocolate_bucket": "Um mundo de imaginação",
"advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", "advancement.create.chocolate_bucket.desc": "Obtenha um balde de chocolate derretido",
"advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", "advancement.create.honey_drain": "Apicultura autônoma",
"advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", "advancement.create.honey_drain.desc": "Use canos para sugar o mel de colmeias ou colmeias artificiais",
"advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", "advancement.create.hose_pulley_lava": "Extraindo o manto",
"advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", "advancement.create.hose_pulley_lava.desc": "Bombeie de um corpo de lava grande o bastante para ser considerado infinito",
"advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed": "Todo o vapor",
"advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.steam_engine_maxed.desc": "Opere uma caldeira na potencia maxima",
"advancement.create.foods": "UNLOCALIZED: Balanced Diet", "advancement.create.foods": "Dieta equilibrada",
"advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", "advancement.create.foods.desc": "Crie bagas doces com chocolate, maçã com cobertura de mel e um rolinho doce; todas da mesma bica",
"advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", "advancement.create.diving_suit_lava": "Nadando com os lavagantes",
"advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", "advancement.create.diving_suit_lava.desc": "Tente mergulhar na lava com o seu equipamento de mergulho de cobre§7\n(Hidden Advancement)",
"advancement.create.chained_drain": "UNLOCALIZED: On a Roll", "advancement.create.chained_drain": "Rolando",
"advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", "advancement.create.chained_drain.desc": "Assista um item se mover através de uma fileira de drenos de item§7\n(Hidden Advancement)",
"advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", "advancement.create.cross_streams": "Não cruze os fluxos!",
"advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.cross_streams.desc": "Assista dois fluidos se encontrarem na sua rede de canos§7\n(Hidden Advancement)",
"advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", "advancement.create.pipe_organ": "Órgão de tubo",
"advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", "advancement.create.pipe_organ.desc": "Conecte 12 apitos a vapor com afinação diferentes a um único tanque de fluidos§7\n(Hidden Advancement)",
"advancement.create.brass": "Ligas de verdade", "advancement.create.brass": "Ligas de verdade",
"advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.", "advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.",
"advancement.create.brass_casing": "a era do latão", "advancement.create.brass_casing": "a era do latão",
"advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.", "advancement.create.brass_casing.desc": "Use o recentemente obtido latão e um pouco de madeira para criar um revestimento mais avançado.",
"advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", "advancement.create.rose_quartz": "Diamantes rosa",
"advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.rose_quartz.desc": "Pula alguns quartzos rosas",
"advancement.create.deployer": "Cutuque, coloque e ataque", "advancement.create.deployer": "Cutuque, coloque e ataque",
"advancement.create.deployer.desc": "coloque e energize um implantador, o reflexo perfeito de voce mesmo.", "advancement.create.deployer.desc": "coloque e energize um implantador, o reflexo perfeito de você mesmo.",
"advancement.create.precision_mechanism": "Curiosidades complexas", "advancement.create.precision_mechanism": "Curiosidades complexas",
"advancement.create.precision_mechanism.desc": "Monte um mecanismo de precisão.", "advancement.create.precision_mechanism.desc": "Monte um mecanismo de precisão.",
"advancement.create.speed_controller": "Engenheiros odiam ele!", "advancement.create.speed_controller": "Engenheiros odiam ele!",
"advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.", "advancement.create.speed_controller.desc": "Coloque um Controlador de velocidade rotacional, o dispositivo ultimato para mudança de marcha.",
"advancement.create.mechanical_arm": "Mâos ocupadas!", "advancement.create.mechanical_arm": "Mâos ocupadas!",
"advancement.create.mechanical_arm.desc": "Fabrique um braço mecânico,selecione as entradas e saidas,Coloque e energize o; em seguida assista como elo faz todo o trabalho para você.", "advancement.create.mechanical_arm.desc": "Fabrique um braço mecânico,selecione as entradas e saídas,Coloque e energize o; em seguida assista como elo faz todo o trabalho para você.",
"advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", "advancement.create.mechanical_crafter": "Fabricação automatica",
"advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.mechanical_crafter.desc": "Coloque e ative alguns fabricadores mecânicos and power some Mechanical Crafters",
"advancement.create.crushing_wheel": "Par de gigantes", "advancement.create.crushing_wheel": "Par de gigantes",
"advancement.create.crushing_wheel.desc": "Crie algumas rodas de moer para triturar alguns materiais eficientemente.", "advancement.create.crushing_wheel.desc": "Crie algumas rodas de moer para triturar alguns materiais eficientemente.",
"advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", "advancement.create.haunted_bell": "Sentido sombrio",
"advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", "advancement.create.haunted_bell.desc": "toque um sino assombrado",
"advancement.create.clockwork_bearing": "Hora da engenhoca", "advancement.create.clockwork_bearing": "Hora da engenhoca",
"advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de relógio.",
"advancement.create.display_link": "UNLOCALIZED: Big Data", "advancement.create.display_link": "Grandes dados",
"advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.display_link.desc": "Use uma conexão de placa de exibição para visualizar informações",
"advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon": "Fwoomp!",
"advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.", "advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.",
"advancement.create.extendo_grip": "Boioioing!", "advancement.create.extendo_grip": "Boioioing!",
"advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.", "advancement.create.extendo_grip.desc": "Apossar-se de uma extensão de pegador.",
"advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", "advancement.create.linked_controller": "Ativação remota",
"advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.linked_controller.desc": "Ative uma coneção de redstone usando um controle conectado",
"advancement.create.arm_blaze_burner": "Combuste-tron", "advancement.create.arm_blaze_burner": "Combuste-tron",
"advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.", "advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.",
"advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", "advancement.create.crusher_maxed_0000": "Triturando",
"advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", "advancement.create.crusher_maxed_0000.desc": "Opere um par de rodas de moer na velocidade maxima",
"advancement.create.arm_many_targets": "Organiza-tron", "advancement.create.arm_many_targets": "Organiza-tron",
"advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.", "advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saída.",
"advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", "advancement.create.potato_cannon_collide": "Fogos de artificios vegetais",
"advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", "advancement.create.potato_cannon_collide.desc": "Colida diferentes tipos de projéteis do canhão de batata",
"advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying": "Carrinho com auto-condução",
"advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.self_deploying.desc": "Crie uma engenhoca de carrinho de minas que coloque trilhos à frente de si mesmo",
"advancement.create.fist_bump": "Bate isso, mano!", "advancement.create.fist_bump": "Bate isso, mano!",
"advancement.create.fist_bump.desc": "Faça dois implantadores baterem com o punho.", "advancement.create.fist_bump.desc": "Faça dois implantadores baterem com o punho.",
"advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000": "Medidas desesperadas",
"advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000.desc": "Drasticamente desacelere um fabricador mecânico para procrastinar numa verdadeira infraestrutura§7\n(Hidden Advancement)",
"advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", "advancement.create.extendo_grip_dual": "Extensão completa",
"advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", "advancement.create.extendo_grip_dual.desc": "Empunhe duas extensões de pegadores para ter alcance super-humano§7\n(Hidden Advancement)",
"advancement.create.musical_arm": "toque minha musica!", "advancement.create.musical_arm": "toque minha musica!",
"advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.",
"advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", "advancement.create.sturdy_sheet": "As rochas mais resistentes",
"advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", "advancement.create.sturdy_sheet.desc": "Monte uma chapa resistente refinado obsidiana esmagada",
"advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", "advancement.create.train_casing_00": "A era da logistica",
"advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", "advancement.create.train_casing_00.desc": "Use chapas resistente para criar o revestimento para componentes ferroviários",
"advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train": "Todos a bordo!",
"advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.train.desc": "Monte o seu primeiro trem",
"advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", "advancement.create.conductor": "Condutor instrutor",
"advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", "advancement.create.conductor.desc": "Instrua um maquinista com uma programação",
"advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal": "Controle de tráfego",
"advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.track_signal.desc": "Coloque um sinal de trem",
"advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0": "Horarios dinâmicos",
"advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", "advancement.create.display_board_0.desc": "Exiba a previsão de chegada de um trem na sua placa de exibição com a ajuda da conexão de placa de exibição",
"advancement.create.track_0": "UNLOCALIZED: A new Gauge", "advancement.create.track_0": "Uma nova medida",
"advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", "advancement.create.track_0.desc": "Obtenha alguns trilhos de trem",
"advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", "advancement.create.train_whistle": "Choo choo!",
"advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_whistle.desc": "Monte um apito a vapor no seu trem e ative ele enquanto dirige",
"advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", "advancement.create.train_portal": "Transporte dimensional",
"advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", "advancement.create.train_portal.desc": "Ande de trem através de um portal do Nether",
"advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", "advancement.create.track_crafting_factory": "Fabrica de trilhos",
"advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", "advancement.create.track_crafting_factory.desc": "Produza mais de 1000 trilhos de trem no mesmo fabricador mecânico",
"advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", "advancement.create.long_bend": "A curva mais longa",
"advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", "advancement.create.long_bend.desc": "Crie uma seção de trilho curvada que abrange mais de 30 blocos de comprimento",
"advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", "advancement.create.long_train": "Esforços ambiciosos",
"advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", "advancement.create.long_train.desc": "Crie um trem com pelo menos 6 vagões",
"advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel": "Viagem de campo",
"advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.long_travel.desc": "Deixe um assento de trem a mais de 5000 blocos de distância da onde você começou a viagem",
"advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", "advancement.create.train_roadkill": "Atropelamento",
"advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", "advancement.create.train_roadkill.desc": "Atropele um inimigo com o seu trem§7\n(Hidden Advancement)",
"advancement.create.red_signal": "UNLOCALIZED: Expert Driver", "advancement.create.red_signal": "Motorista expert",
"advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal.desc": "Atravesse um sinal vermelho com o seu trem§7\n(Hidden Advancement)",
"advancement.create.train_crash": "UNLOCALIZED: Terrible Service", "advancement.create.train_crash": "Serviço terrivel",
"advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", "advancement.create.train_crash.desc": "Testemunhe uma batida de trem como um passageiro§7\n(Hidden Advancement)",
"advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards": "Ponto cego",
"advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards.desc": "Bata em outro trem enquanto dirige para trás§7\n(Hidden Advancement)",
"_": "->------------------------] UI & Messages [------------------------<-", "_": "->------------------------] UI & Messages [------------------------<-",
@ -875,7 +875,7 @@
"death.attack.create.potato_cannon.item": "%1$s foi atirado por %2$s usando %3$s", "death.attack.create.potato_cannon.item": "%1$s foi atirado por %2$s usando %3$s",
"death.attack.create.cuckoo_clock_explosion": "%1$s foi explodido por relógio cuco adulterado", "death.attack.create.cuckoo_clock_explosion": "%1$s foi explodido por relógio cuco adulterado",
"death.attack.create.cuckoo_clock_explosion.player": "%1$s foi explodido por relógio cuco adulterado", "death.attack.create.cuckoo_clock_explosion.player": "%1$s foi explodido por relógio cuco adulterado",
"death.attack.create.run_over": "UNLOCALIZED: %1$s was run over by %2$s", "death.attack.create.run_over": "%1$s foi atropelado por %2$s",
"create.block.deployer.damage_source_name": "Implantador rebelde", "create.block.deployer.damage_source_name": "Implantador rebelde",
"create.block.cart_assembler.invalid": "Coloque o seu montador de carrinho de minas num trilho", "create.block.cart_assembler.invalid": "Coloque o seu montador de carrinho de minas num trilho",
@ -898,14 +898,14 @@
"create.recipe.fan_haunting": "Assombração em massa", "create.recipe.fan_haunting": "Assombração em massa",
"create.recipe.fan_haunting.fan": "Ventilador atrás do fogo das almas ", "create.recipe.fan_haunting.fan": "Ventilador atrás do fogo das almas ",
"create.recipe.fan_blasting": "Fundição em massa", "create.recipe.fan_blasting": "Fundição em massa",
"create.recipe.fan_blasting.fan": "entilador atrás de lava", "create.recipe.fan_blasting.fan": "ventilador atrás de lava",
"create.recipe.pressing": "Prensando", "create.recipe.pressing": "Prensando",
"create.recipe.mixing": "Misturando", "create.recipe.mixing": "Misturando",
"create.recipe.deploying": "Implantando", "create.recipe.deploying": "Implantando",
"create.recipe.automatic_shapeless": "Fabricação sem forma automático", "create.recipe.automatic_shapeless": "Fabricação sem forma automático",
"create.recipe.automatic_brewing": "Produção de poções", "create.recipe.automatic_brewing": "Produção de poções",
"create.recipe.packing": "Compactando", "create.recipe.packing": "Compactando",
"create.recipe.automatic_packing": "Compactamento automático", "create.recipe.automatic_packing": "Compactação automático",
"create.recipe.sawing": "Serrando", "create.recipe.sawing": "Serrando",
"create.recipe.mechanical_crafting": "Fabricação mecânica", "create.recipe.mechanical_crafting": "Fabricação mecânica",
"create.recipe.automatic_shaped": "Fabricação com forma automática", "create.recipe.automatic_shaped": "Fabricação com forma automática",
@ -915,8 +915,8 @@
"create.recipe.mystery_conversion": "Conversão misteriosa", "create.recipe.mystery_conversion": "Conversão misteriosa",
"create.recipe.spout_filling": "Preenchimento com bica", "create.recipe.spout_filling": "Preenchimento com bica",
"create.recipe.draining": "Drenação de item", "create.recipe.draining": "Drenação de item",
"create.recipe.item_application": "UNLOCALIZED: Manual Item Application", "create.recipe.item_application": "Aplicação de item manual",
"create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", "create.recipe.item_application.any_axe": "Qualquer machado",
"create.recipe.sequenced_assembly": "Montagem sequenciada", "create.recipe.sequenced_assembly": "Montagem sequenciada",
"create.recipe.assembly.next": "Proximo: %1$s", "create.recipe.assembly.next": "Proximo: %1$s",
"create.recipe.assembly.step": "Passo %1$s:", "create.recipe.assembly.step": "Passo %1$s:",
@ -940,26 +940,26 @@
"create.generic.length": "Comprimento", "create.generic.length": "Comprimento",
"create.generic.speed": "Velocidade", "create.generic.speed": "Velocidade",
"create.generic.delay": "Demorada", "create.generic.delay": "Demorada",
"create.generic.duration": "UNLOCALIZED: Duration", "create.generic.duration": "Duração",
"create.generic.timeUnit": "UNLOCALIZED: Time Unit", "create.generic.timeUnit": "Unidade de tempo",
"create.generic.unit.ticks": "Ticks", "create.generic.unit.ticks": "Ticks",
"create.generic.unit.seconds": "Segundos", "create.generic.unit.seconds": "Segundos",
"create.generic.unit.minutes": "Minutos", "create.generic.unit.minutes": "Minutos",
"create.generic.daytime.hour": "UNLOCALIZED: Hour", "create.generic.daytime.hour": "Horas",
"create.generic.daytime.minute": "UNLOCALIZED: Minute", "create.generic.daytime.minute": "Minuto",
"create.generic.daytime.second": "UNLOCALIZED: Second", "create.generic.daytime.second": "Segundo",
"create.generic.daytime.pm": "UNLOCALIZED: pm", "create.generic.daytime.pm": "Da tarde",
"create.generic.daytime.am": "UNLOCALIZED: am", "create.generic.daytime.am": "Da manhã",
"create.generic.unit.rpm": "RPM", "create.generic.unit.rpm": "RPM",
"create.generic.unit.stress": "us", "create.generic.unit.stress": "us",
"create.generic.unit.degrees": "°", "create.generic.unit.degrees": "°",
"create.generic.unit.millibuckets": "%1$smB", "create.generic.unit.millibuckets": "%1$smB",
"create.generic.unit.buckets": "UNLOCALIZED: B", "create.generic.unit.buckets": "B",
"create.generic.clockwise": "Sentido horário", "create.generic.clockwise": "Sentido horário",
"create.generic.counter_clockwise": "Sentido anti-horário", "create.generic.counter_clockwise": "Sentido anti-horário",
"create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", "create.generic.in_quotes": "\"%1$s\"",
"create.generic.pitch": "UNLOCALIZED: Pitch: %1$s", "create.generic.pitch": "Afinação: %1$s",
"create.generic.notes": "UNLOCALIZED: F#;F;E;D#;D;C#;C;B;A#;A;G#;G", "create.generic.notes": "F#;F;E;D#;D;C#;C;B;A#;A;G#;G",
"create.action.scroll": "Rolar", "create.action.scroll": "Rolar",
"create.action.confirm": "Confirmar", "create.action.confirm": "Confirmar",
@ -1243,7 +1243,7 @@
"create.item_attributes.damaged": "Está danificado", "create.item_attributes.damaged": "Está danificado",
"create.item_attributes.damaged.inverted": "Não está danificado", "create.item_attributes.damaged.inverted": "Não está danificado",
"create.item_attributes.badly_damaged": "Está severamente danificado", "create.item_attributes.badly_damaged": "Está severamente danificado",
"create.item_attributes.badly_damaged.inverted": "Não esta severamente danificado", "create.item_attributes.badly_damaged.inverted": "Não está severamente danificado",
"create.item_attributes.not_stackable": "Não pode ser empilhado", "create.item_attributes.not_stackable": "Não pode ser empilhado",
"create.item_attributes.not_stackable.inverted": "Pode ser empilhado", "create.item_attributes.not_stackable.inverted": "Pode ser empilhado",
"create.item_attributes.equipable": "Pode ser equipado", "create.item_attributes.equipable": "Pode ser equipado",
@ -1262,6 +1262,8 @@
"create.item_attributes.smokable.inverted": "Não pode ser defumado", "create.item_attributes.smokable.inverted": "Não pode ser defumado",
"create.item_attributes.blastable": "È fundível no alto-forno", "create.item_attributes.blastable": "È fundível no alto-forno",
"create.item_attributes.blastable.inverted": "Não é fundível no alto-forno", "create.item_attributes.blastable.inverted": "Não é fundível no alto-forno",
"create.item_attributes.compostable": "UNLOCALIZED: can be composted",
"create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted",
"create.item_attributes.shulker_level": "O shulker é %1$s", "create.item_attributes.shulker_level": "O shulker é %1$s",
"create.item_attributes.shulker_level.inverted": "O shulker não é %1$s", "create.item_attributes.shulker_level.inverted": "O shulker não é %1$s",
"create.item_attributes.shulker_level.full": "Cheio", "create.item_attributes.shulker_level.full": "Cheio",
@ -1297,8 +1299,8 @@
"create.item_attributes.astralsorcery_constellation.inverted": "Não esta sintonizado a %1$s", "create.item_attributes.astralsorcery_constellation.inverted": "Não esta sintonizado a %1$s",
"create.item_attributes.astralsorcery_crystal": "Tem atributos de cristais %1$s", "create.item_attributes.astralsorcery_crystal": "Tem atributos de cristais %1$s",
"create.item_attributes.astralsorcery_crystal.inverted": "Não tem atributos de cristais %1$s", "create.item_attributes.astralsorcery_crystal.inverted": "Não tem atributos de cristais %1$s",
"create.item_attributes.astralsorcery_perk_gem": " %1$s Tem um atributo de benefio", "create.item_attributes.astralsorcery_perk_gem": " %1$s Tem um atributo de beneficio",
"create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s Não tem um atributo de benefio", "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s Não tem um atributo de benefício",
"create.gui.attribute_filter.no_selected_attributes": "Nenhum atributo selecionado", "create.gui.attribute_filter.no_selected_attributes": "Nenhum atributo selecionado",
"create.gui.attribute_filter.selected_attributes": "Atributos selecionados:", "create.gui.attribute_filter.selected_attributes": "Atributos selecionados:",
@ -1368,6 +1370,10 @@
"create.tooltip.chute.fans_pull_up": "Ventiladores sugam de cima", "create.tooltip.chute.fans_pull_up": "Ventiladores sugam de cima",
"create.tooltip.chute.fans_pull_down": "Ventiladores sugam de baixo", "create.tooltip.chute.fans_pull_down": "Ventiladores sugam de baixo",
"create.tooltip.chute.contains": "Contem: %1$s x%2$s", "create.tooltip.chute.contains": "Contem: %1$s x%2$s",
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
"create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use",
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "Distribuindo:", "create.tooltip.brass_tunnel.contains": "Distribuindo:",
"create.tooltip.brass_tunnel.contains_entry": " > %1$s x%2$s", "create.tooltip.brass_tunnel.contains_entry": " > %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "Clique direito para recuperar item", "create.tooltip.brass_tunnel.retrieve": "Clique direito para recuperar item",
@ -1393,9 +1399,9 @@
"create.hint.hose_pulley.title": "Abastecimento sem fundo", "create.hint.hose_pulley.title": "Abastecimento sem fundo",
"create.hint.hose_pulley": "O corpo de fluido selecionado é considerado infinito.", "create.hint.hose_pulley": "O corpo de fluido selecionado é considerado infinito.",
"create.hint.mechanical_arm_no_targets.title": "Sem alvos", "create.hint.mechanical_arm_no_targets.title": "Sem alvos",
"create.hint.mechanical_arm_no_targets": "Aparentemente esse _Braço_ _Mecânico_ não foi designado nenhum _alvo._ Selecione esteiras, depósitos, funis e outros blocos com o _botão direito do mouse_ enquanto _segurando_ o _Braço_ _Mecanico_ na sua _mão_.", "create.hint.mechanical_arm_no_targets": "Aparentemente esse _Braço_ _Mecânico_ não foi designado nenhum _alvo._ Selecione esteiras, depósitos, funis e outros blocos com o _botão direito do mouse_ enquanto _segurando_ o _Braço_ _Mecânico_ na sua _mão_.",
"create.hint.empty_bearing.title": "Atualizar o rolamento", "create.hint.empty_bearing.title": "Atualizar o rolamento",
"create.hint.empty_bearing": " _clique com o botão direito_ o rolamento com a _mão_ _vazia_ para _conectar_ a estrutura que você construiu não frente disso.", "create.hint.empty_bearing": " clique com o botão direito_ o rolamento com a _mão_ _vazia_ para _conectar_ a estrutura que você construiu não frente disso.",
"create.hint.full_deployer.title": "Implantador transbordando de itens", "create.hint.full_deployer.title": "Implantador transbordando de itens",
"create.hint.full_deployer": "Aparenta que esse _inplantador_ contém _itens_ em _excesso_ que precisam ser _extraídos._ Use um _funil,_ _funil de andesito/latão_ ou outros meios para extrair os itens excedentes.", "create.hint.full_deployer": "Aparenta que esse _inplantador_ contém _itens_ em _excesso_ que precisam ser _extraídos._ Use um _funil,_ _funil de andesito/latão_ ou outros meios para extrair os itens excedentes.",
@ -1481,6 +1487,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1488,6 +1495,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",
@ -1723,7 +1731,7 @@
"create.super_glue.not_enough": "UNLOCALIZED: Not enough glue in inventory", "create.super_glue.not_enough": "UNLOCALIZED: Not enough glue in inventory",
"create.super_glue.success": "UNLOCALIZED: Applying Glue...", "create.super_glue.success": "UNLOCALIZED: Applying Glue...",
"create.gui.config.overlay1": "Oi :)", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)",
"create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay",
"create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse",
"create.gui.config.overlay4": "UNLOCALIZED: to move this preview", "create.gui.config.overlay4": "UNLOCALIZED: to move this preview",
@ -1749,17 +1757,17 @@
"create.subtitle.contraption_disassemble": "Engenhoca para", "create.subtitle.contraption_disassemble": "Engenhoca para",
"create.subtitle.peculiar_bell_use": "Sino peculiar toca", "create.subtitle.peculiar_bell_use": "Sino peculiar toca",
"create.subtitle.worldshaper_place": "Zaps do terraformador", "create.subtitle.worldshaper_place": "Zaps do terraformador",
"create.subtitle.whistle_train_manual": "UNLOCALIZED: Train honks", "create.subtitle.whistle_train_manual": "Buzinas de trem",
"create.subtitle.steam": "UNLOCALIZED: Steam noises", "create.subtitle.steam": "Sons de vapor",
"create.subtitle.saw_activate_stone": "Serra mecânica ativa", "create.subtitle.saw_activate_stone": "Serra mecânica ativa",
"create.subtitle.schematicannon_finish": "Ding do canhão de esquema", "create.subtitle.schematicannon_finish": "Ding do canhão de esquema",
"create.subtitle.crafter_craft": "Fabricador fábrica", "create.subtitle.crafter_craft": "Fabricador fábrica",
"create.subtitle.wrench_remove": "Componente quebra", "create.subtitle.wrench_remove": "Componente quebra",
"create.subtitle.train3": "UNLOCALIZED: Bogey wheels rumble muffled", "create.subtitle.train3": "Tremer abafado das rodas do trem",
"create.subtitle.whistle": "UNLOCALIZED: Whistling", "create.subtitle.whistle": "Apito",
"create.subtitle.cogs": "tremer da rodas dentadas", "create.subtitle.cogs": "tremer da rodas dentadas",
"create.subtitle.slime_added": "Slime sendo espremido", "create.subtitle.slime_added": "Slime sendo espremido",
"create.subtitle.whistle_train_low": "UNLOCALIZED: Low whistling", "create.subtitle.whistle_train_low": "Apito baixo",
"create.subtitle.schematicannon_launch_block": "Canhão de esquema atira", "create.subtitle.schematicannon_launch_block": "Canhão de esquema atira",
"create.subtitle.controller_take": "Atril esvaziado", "create.subtitle.controller_take": "Atril esvaziado",
"create.subtitle.crafter_click": "Clicks do fabricador", "create.subtitle.crafter_click": "Clicks do fabricador",
@ -1781,14 +1789,14 @@
"create.subtitle.wrench_rotate": "Chave inglesa usada", "create.subtitle.wrench_rotate": "Chave inglesa usada",
"create.subtitle.potato_hit": "Impacto vegetal", "create.subtitle.potato_hit": "Impacto vegetal",
"create.subtitle.saw_activate_wood": "Serra mecânica ativa", "create.subtitle.saw_activate_wood": "Serra mecânica ativa",
"create.subtitle.whistle_high": "UNLOCALIZED: High whistling", "create.subtitle.whistle_high": "Apito alto",
"create.subtitle.whistle_train_manual_low": "UNLOCALIZED: Train honks", "create.subtitle.whistle_train_manual_low": "Buzinas de trem",
"create.subtitle.whistle_train": "UNLOCALIZED: Whistling", "create.subtitle.whistle_train": "Apito",
"create.subtitle.haunted_bell_convert": "Sino assombrado acorda", "create.subtitle.haunted_bell_convert": "Sino assombrado acorda",
"create.subtitle.train": "UNLOCALIZED: Bogey wheels rumble", "create.subtitle.train": "Tremer das rodas do trem",
"create.subtitle.deny": "Boop de negação", "create.subtitle.deny": "Boop de negação",
"create.subtitle.controller_click": "Clicks do controle", "create.subtitle.controller_click": "Clicks do controle",
"create.subtitle.whistle_low": "UNLOCALIZED: Low whistling", "create.subtitle.whistle_low": "Apito baixo",
"create.subtitle.copper_armor_equip": "Tilintar dos equipamentos de mergulho", "create.subtitle.copper_armor_equip": "Tilintar dos equipamentos de mergulho",
"create.subtitle.mechanical_press_activation": "Clang da prensa mecânica", "create.subtitle.mechanical_press_activation": "Clang da prensa mecânica",
"create.subtitle.contraption_assemble": "Engenhoca move", "create.subtitle.contraption_assemble": "Engenhoca move",
@ -1805,13 +1813,13 @@
"item.create.example_item.tooltip.control1": "Quando Ctrl pressed", "item.create.example_item.tooltip.control1": "Quando Ctrl pressed",
"item.create.example_item.tooltip.action1": "These controls are displayed.", "item.create.example_item.tooltip.action1": "These controls are displayed.",
"block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", "block.create.wooden_bracket.tooltip": "Suporte de madeira",
"block.create.wooden_bracket.tooltip.summary": "_Decore_ seus _eixos, rodas dentadas_ e _canos_com um pedaço aconchegante e de madeira de reforço.", "block.create.wooden_bracket.tooltip.summary": "_Decore_ seus _eixos, rodas dentadas_ e _canos_com um pedaço aconchegante e de madeira de reforço.",
"block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", "block.create.metal_bracket.tooltip": "Suporte de ferro",
"block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.",
"block.create.seat.tooltip": "UNLOCALIZED: SEAT", "block.create.seat.tooltip": "Assento",
"block.create.seat.tooltip.summary": "UNLOCALIZED: Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.", "block.create.seat.tooltip.summary": "UNLOCALIZED: Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.",
"block.create.seat.tooltip.condition1": "UNLOCALIZED: Right click on Seat", "block.create.seat.tooltip.condition1": "UNLOCALIZED: Right click on Seat",
"block.create.seat.tooltip.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", "block.create.seat.tooltip.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.",
@ -1839,10 +1847,10 @@
"item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking",
"item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration Interface_", "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration Interface_",
"item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ÁRVORE",
"item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de árvores",
"item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas", "item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas",
"item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Árvores independentemente das suas Regras de espaço",
"item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP",
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_",
@ -1876,7 +1884,7 @@
"item.create.empty_schematic.tooltip.summary": "Usado como ingrediente em receitas e para escrever na _Mesa_ _de_ _Esquematizar_", "item.create.empty_schematic.tooltip.summary": "Usado como ingrediente em receitas e para escrever na _Mesa_ _de_ _Esquematizar_",
"item.create.schematic.tooltip": "ESQUEMA", "item.create.schematic.tooltip": "ESQUEMA",
"item.create.schematic.tooltip.summary": "Contem uma estrutura para ser posicionada e colocada no mundo. Posicione o Holograma como desejar e use um _Esquemaannon_ para construí-lo.", "item.create.schematic.tooltip.summary": "Contém uma estrutura para ser posicionada e colocada no mundo. Posicione o Holograma como desejar e use um _Esquemaannon_ para construí-lo.",
"item.create.schematic.tooltip.condition1": "Quando Em mãos", "item.create.schematic.tooltip.condition1": "Quando Em mãos",
"item.create.schematic.tooltip.behaviour1": "Pode ser posicionado usando as Ferramentas em Tela", "item.create.schematic.tooltip.behaviour1": "Pode ser posicionado usando as Ferramentas em Tela",
"item.create.schematic.tooltip.control1": "B-Direito enquanto Abaixado", "item.create.schematic.tooltip.control1": "B-Direito enquanto Abaixado",
@ -1954,7 +1962,7 @@
"block.create.content_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _Redstone Pulse_ when a _matching_ Item is _transferred_.", "block.create.content_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _Redstone Pulse_ when a _matching_ Item is _transferred_.",
"block.create.creative_crate.tooltip": "Caixa Criativa", "block.create.creative_crate.tooltip": "Caixa Criativa",
"block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para Canho~es de Esquema próximos", "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para Canhões de Esquema próximos",
"block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot",
"block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2169", "_": "Missing Localizations: 2177",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -672,23 +672,23 @@
"advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.", "advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.",
"advancement.create.andesite_casing": "A era do andesito", "advancement.create.andesite_casing": "A era do andesito",
"advancement.create.andesite_casing.desc": "Use um pouco de liga de andesito e madeira para fazer um revestimento basico.", "advancement.create.andesite_casing.desc": "Use um pouco de liga de andesito e madeira para fazer um revestimento basico.",
"advancement.create.mechanical_press": "UNLOCALIZED: Bonk", "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!",
"advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press",
"advancement.create.encased_fan": "UNLOCALIZED: Wind maker", "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker",
"advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan",
"advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle",
"advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials",
"advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared",
"advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials",
"advancement.create.compacting": "UNLOCALIZED: Compactification", "advancement.create.compacting": "UNLOCALIZED: Compactification",
"advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more",
"advancement.create.belt": "Correia de alga", "advancement.create.belt": "Correia de alga",
"advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecanica.", "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecanica.",
"advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic",
"advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel",
"advancement.create.chute": "Caindo", "advancement.create.chute": "Caindo",
"advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.",
"advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up",
"advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer",
"advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace",
"advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner",
@ -703,25 +703,25 @@
"advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue": "UNLOCALIZED: Area of Connect",
"advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group",
"advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose",
"advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board",
"advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange",
"advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption",
"advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out",
"advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench",
"advancement.create.stressometer": "Mas quão estressado exatamente?", "advancement.create.stressometer": "Mas quão estressado exatamente?",
"advancement.create.stressometer.desc": "Coloque e energise o estressómetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", "advancement.create.stressometer.desc": "Coloque e energise o estressómetro. Olhe a este por atraves dos seus óculos para ler o valor exato.",
"advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?",
"advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime",
"advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze",
"advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength",
"advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion",
"advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector",
"advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere",
"advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep",
"advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms",
"advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks",
"advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery",
"advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs",
"advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel",
"advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)",
"advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session",
@ -730,48 +730,48 @@
"advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)",
"advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed",
"advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)",
"advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum",
"advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation",
"advancement.create.copper_casing": "A era do cobre", "advancement.create.copper_casing": "A era do cobre",
"advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.", "advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.",
"advancement.create.spout": "Sploosh", "advancement.create.spout": "Sploosh",
"advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.", "advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.",
"advancement.create.drain": "UNLOCALIZED: Tumble Draining", "advancement.create.drain": "UNLOCALIZED: Tumble Draining",
"advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain",
"advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse",
"advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque",
"advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel",
"advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle",
"advancement.create.backtank": "UNLOCALIZED: Pressure to Go", "advancement.create.backtank": "UNLOCALIZED: Pressure to Go",
"advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure",
"advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths",
"advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water",
"advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure",
"advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump",
"advancement.create.glass_pipe": "Espião de fluxo", "advancement.create.glass_pipe": "Espião de fluxo",
"advancement.create.glass_pipe.desc": "Assista fluidos se propagarem por através de canos de fluido com janela. Canos retos ficam com janelas quando uma chave inglesa é usada neles.", "advancement.create.glass_pipe.desc": "Assista fluidos se propagarem por através de canos de fluido com janela. Canos retos ficam com janelas quando uma chave inglesa é usada neles.",
"advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector",
"advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water",
"advancement.create.hose_pulley": "Vazamento industrial", "advancement.create.hose_pulley": "Vazamento industrial",
"advancement.create.hose_pulley.desc": "desça uma polia de mangueira e assista esta drenar ou encher qualquer corpo de fluido.", "advancement.create.hose_pulley.desc": "desça uma polia de mangueira e assista esta drenar ou encher qualquer corpo de fluido.",
"advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination",
"advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate",
"advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping",
"advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive",
"advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle",
"advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite",
"advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam",
"advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power",
"advancement.create.foods": "UNLOCALIZED: Balanced Diet", "advancement.create.foods": "UNLOCALIZED: Balanced Diet",
"advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout",
"advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders",
"advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)",
"advancement.create.chained_drain": "UNLOCALIZED: On a Roll", "advancement.create.chained_drain": "UNLOCALIZED: On a Roll",
"advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)",
"advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!",
"advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)",
"advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ",
"advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)",
"advancement.create.brass": "Ligas de verdade", "advancement.create.brass": "Ligas de verdade",
"advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.", "advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.",
"advancement.create.brass_casing": "a era do latão", "advancement.create.brass_casing": "a era do latão",
@ -795,7 +795,7 @@
"advancement.create.clockwork_bearing": "Hora da engenhoca", "advancement.create.clockwork_bearing": "Hora da engenhoca",
"advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.",
"advancement.create.display_link": "UNLOCALIZED: Big Data", "advancement.create.display_link": "UNLOCALIZED: Big Data",
"advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information",
"advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon": "Fwoomp!",
"advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.", "advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.",
"advancement.create.extendo_grip": "Boioioing!", "advancement.create.extendo_grip": "Boioioing!",
@ -804,54 +804,54 @@
"advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller",
"advancement.create.arm_blaze_burner": "Combuste-tron", "advancement.create.arm_blaze_burner": "Combuste-tron",
"advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.", "advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.",
"advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It",
"advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed",
"advancement.create.arm_many_targets": "Organiza-tron", "advancement.create.arm_many_targets": "Organiza-tron",
"advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.", "advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.",
"advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks",
"advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other",
"advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart",
"advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself",
"advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!",
"advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)",
"advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures",
"advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)",
"advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent",
"advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)",
"advancement.create.musical_arm": "toque minha musica!", "advancement.create.musical_arm": "toque minha musica!",
"advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.",
"advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks",
"advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian",
"advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age",
"advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components",
"advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train": "UNLOCALIZED: All Aboard!",
"advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train",
"advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor",
"advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule",
"advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal": "UNLOCALIZED: Traffic Control",
"advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal",
"advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables",
"advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links",
"advancement.create.track_0": "UNLOCALIZED: A new Gauge", "advancement.create.track_0": "UNLOCALIZED: A New Gauge",
"advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks",
"advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!",
"advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving",
"advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter",
"advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal",
"advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory",
"advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press",
"advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend",
"advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length",
"advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours",
"advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages",
"advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel": "UNLOCALIZED: Field Trip",
"advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling",
"advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill",
"advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)",
"advancement.create.red_signal": "UNLOCALIZED: Expert Driver", "advancement.create.red_signal": "UNLOCALIZED: Expert Driver",
"advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)",
"advancement.create.train_crash": "UNLOCALIZED: Terrible Service", "advancement.create.train_crash": "UNLOCALIZED: Terrible Service",
"advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)",
"advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot",
"advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)",
@ -1260,8 +1260,10 @@
"create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted",
"create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked",
"create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked",
"create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", "create.item_attributes.blastable": "UNLOCALIZED: can be Smelted in a Blast Furnace",
"create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", "create.item_attributes.blastable.inverted": "UNLOCALIZED: cannot be Smelted in a Blast Furnace",
"create.item_attributes.compostable": "UNLOCALIZED: can be composted",
"create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted",
"create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s",
"create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s",
"create.item_attributes.shulker_level.full": "UNLOCALIZED: full", "create.item_attributes.shulker_level.full": "UNLOCALIZED: full",
@ -1368,6 +1370,10 @@
"create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above", "create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above",
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below", "create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s", "create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
"create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use",
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:", "create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:",
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s", "create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve", "create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve",
@ -1481,6 +1487,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1488,6 +1495,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 647", "_": "Missing Localizations: 655",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -672,23 +672,23 @@
"advancement.create.andesite_alloy.desc": "Materialele Create-ului au nume ciudate, Aliajul Din Andezit este unul dintre ele.", "advancement.create.andesite_alloy.desc": "Materialele Create-ului au nume ciudate, Aliajul Din Andezit este unul dintre ele.",
"advancement.create.andesite_casing": "Epoca Andezitului", "advancement.create.andesite_casing": "Epoca Andezitului",
"advancement.create.andesite_casing.desc": "Folosește niște Aliaj De Andezit și Lemn ca să creezi o Carcasă de bază.", "advancement.create.andesite_casing.desc": "Folosește niște Aliaj De Andezit și Lemn ca să creezi o Carcasă de bază.",
"advancement.create.mechanical_press": "UNLOCALIZED: Bonk", "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!",
"advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press",
"advancement.create.encased_fan": "UNLOCALIZED: Wind maker", "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker",
"advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan",
"advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle",
"advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials",
"advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared",
"advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials",
"advancement.create.compacting": "UNLOCALIZED: Compactification", "advancement.create.compacting": "UNLOCALIZED: Compactification",
"advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more",
"advancement.create.belt": "Conducere de Alge", "advancement.create.belt": "Conducere de Alge",
"advancement.create.belt.desc": "Conectează două rotoare cu o Bandă Mecanică.", "advancement.create.belt.desc": "Conectează două rotoare cu o Bandă Mecanică.",
"advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic",
"advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel",
"advancement.create.chute": "Rostogolind în Jos", "advancement.create.chute": "Rostogolind în Jos",
"advancement.create.chute.desc": "Plasează un Tobogan, partea verticală echivalentă a unei Benzi.", "advancement.create.chute.desc": "Plasează un Tobogan, partea verticală echivalentă a unei Benzi.",
"advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up",
"advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer",
"advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace",
"advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner",
@ -703,25 +703,25 @@
"advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue": "UNLOCALIZED: Area of Connect",
"advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group",
"advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose",
"advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board",
"advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange",
"advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption",
"advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out",
"advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench",
"advancement.create.stressometer": "Dar Cât De Stresat, Mai Exact?", "advancement.create.stressometer": "Dar Cât De Stresat, Mai Exact?",
"advancement.create.stressometer.desc": "Plasează și alimentează un Stresometru. Uită-te la el prin Ochelari ca să îi citești valoarea exactă.", "advancement.create.stressometer.desc": "Plasează și alimentează un Stresometru. Uită-te la el prin Ochelari ca să îi citești valoarea exactă.",
"advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?",
"advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime",
"advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze",
"advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength",
"advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion",
"advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector",
"advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere",
"advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep",
"advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms",
"advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks",
"advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery",
"advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs",
"advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel",
"advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)",
"advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session",
@ -730,48 +730,48 @@
"advancement.create.belt_funnel_kiss.desc": "Fă două săruturi de Pâlnii montate pe Bandă.", "advancement.create.belt_funnel_kiss.desc": "Fă două săruturi de Pâlnii montate pe Bandă.",
"advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed",
"advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)",
"advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum",
"advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation",
"advancement.create.copper_casing": "Epoca de cupru", "advancement.create.copper_casing": "Epoca de cupru",
"advancement.create.copper_casing.desc": "Folosește niște and Wood to create some Copper Casings.", "advancement.create.copper_casing.desc": "Folosește niște and Wood to create some Copper Casings.",
"advancement.create.spout": "Splosh", "advancement.create.spout": "Splosh",
"advancement.create.spout.desc": "Privește un obiect de fluid fiind umplut folosind o Duză.", "advancement.create.spout.desc": "Privește un obiect de fluid fiind umplut folosind o Duză.",
"advancement.create.drain": "UNLOCALIZED: Tumble Draining", "advancement.create.drain": "UNLOCALIZED: Tumble Draining",
"advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain",
"advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse",
"advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque",
"advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel",
"advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle",
"advancement.create.backtank": "UNLOCALIZED: Pressure to Go", "advancement.create.backtank": "UNLOCALIZED: Pressure to Go",
"advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure",
"advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths",
"advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water",
"advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure",
"advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump",
"advancement.create.glass_pipe": "Spion De Flux", "advancement.create.glass_pipe": "Spion De Flux",
"advancement.create.glass_pipe.desc": "Privește un fluid propagându-se printr-o Conductă De Fluide De Sticlă. Conducte De Fluide Drepte devin de sticlă când o cheie este folosită pe ele.", "advancement.create.glass_pipe.desc": "Privește un fluid propagându-se printr-o Conductă De Fluide De Sticlă. Conducte De Fluide Drepte devin de sticlă când o cheie este folosită pe ele.",
"advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector",
"advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water",
"advancement.create.hose_pulley": "Vărsare Industrială", "advancement.create.hose_pulley": "Vărsare Industrială",
"advancement.create.hose_pulley.desc": "Coboară un Scripete De Furtun și privește-l scurgând sau umplând un corp de fluid.", "advancement.create.hose_pulley.desc": "Coboară un Scripete De Furtun și privește-l scurgând sau umplând un corp de fluid.",
"advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination",
"advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate",
"advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping",
"advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive",
"advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle",
"advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite",
"advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam",
"advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power",
"advancement.create.foods": "UNLOCALIZED: Balanced Diet", "advancement.create.foods": "UNLOCALIZED: Balanced Diet",
"advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout",
"advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders",
"advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)",
"advancement.create.chained_drain": "UNLOCALIZED: On a Roll", "advancement.create.chained_drain": "UNLOCALIZED: On a Roll",
"advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)",
"advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!",
"advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)",
"advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ",
"advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)",
"advancement.create.brass": "Aliaje reale", "advancement.create.brass": "Aliaje reale",
"advancement.create.brass.desc": "Folosește Cupru Zdrobit și Zinc Zdrobit ca să creezi niște Alamă.", "advancement.create.brass.desc": "Folosește Cupru Zdrobit și Zinc Zdrobit ca să creezi niște Alamă.",
"advancement.create.brass_casing": "Epoca Alamei", "advancement.create.brass_casing": "Epoca Alamei",
@ -795,7 +795,7 @@
"advancement.create.clockwork_bearing": "Ora Invențiilor", "advancement.create.clockwork_bearing": "Ora Invențiilor",
"advancement.create.clockwork_bearing.desc": "Asamblează o structură montată pe un Rulment De Ceasornic.", "advancement.create.clockwork_bearing.desc": "Asamblează o structură montată pe un Rulment De Ceasornic.",
"advancement.create.display_link": "UNLOCALIZED: Big Data", "advancement.create.display_link": "UNLOCALIZED: Big Data",
"advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information",
"advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon": "Fwoomp!",
"advancement.create.potato_cannon.desc": "Înfrânge un inamic cu Tunul tău De Cartofi.", "advancement.create.potato_cannon.desc": "Înfrânge un inamic cu Tunul tău De Cartofi.",
"advancement.create.extendo_grip": "Boioioing!", "advancement.create.extendo_grip": "Boioioing!",
@ -804,54 +804,54 @@
"advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller",
"advancement.create.arm_blaze_burner": "Arzător-o-Tron", "advancement.create.arm_blaze_burner": "Arzător-o-Tron",
"advancement.create.arm_blaze_burner.desc": "Instructează un Braț Mecanic să hrănească Arzătorul tău De Dogoreală.", "advancement.create.arm_blaze_burner.desc": "Instructează un Braț Mecanic să hrănească Arzătorul tău De Dogoreală.",
"advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It",
"advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed",
"advancement.create.arm_many_targets": "Organiz-o-Tron", "advancement.create.arm_many_targets": "Organiz-o-Tron",
"advancement.create.arm_many_targets.desc": "Programează un Braț Mecanic cu zece sau mai multe locații de ieșire.", "advancement.create.arm_many_targets.desc": "Programează un Braț Mecanic cu zece sau mai multe locații de ieșire.",
"advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks",
"advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other",
"advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart",
"advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself",
"advancement.create.fist_bump": "Bate-o, Bro!", "advancement.create.fist_bump": "Bate-o, Bro!",
"advancement.create.fist_bump.desc": "Fă două Deployere să bată pumnul.", "advancement.create.fist_bump.desc": "Fă două Deployere să bată pumnul.",
"advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures",
"advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)",
"advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent",
"advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)",
"advancement.create.musical_arm": "Cântă-mi melodia mea tematică!", "advancement.create.musical_arm": "Cântă-mi melodia mea tematică!",
"advancement.create.musical_arm.desc": "Privește un Braț Mecanic operând Tonomatul tău.", "advancement.create.musical_arm.desc": "Privește un Braț Mecanic operând Tonomatul tău.",
"advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks",
"advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian",
"advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age",
"advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components",
"advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train": "UNLOCALIZED: All Aboard!",
"advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train",
"advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor",
"advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule",
"advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal": "UNLOCALIZED: Traffic Control",
"advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal",
"advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables",
"advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links",
"advancement.create.track_0": "UNLOCALIZED: A new Gauge", "advancement.create.track_0": "UNLOCALIZED: A New Gauge",
"advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks",
"advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!",
"advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving",
"advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter",
"advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal",
"advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory",
"advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press",
"advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend",
"advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length",
"advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours",
"advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages",
"advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel": "UNLOCALIZED: Field Trip",
"advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling",
"advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill",
"advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)",
"advancement.create.red_signal": "UNLOCALIZED: Expert Driver", "advancement.create.red_signal": "UNLOCALIZED: Expert Driver",
"advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)",
"advancement.create.train_crash": "UNLOCALIZED: Terrible Service", "advancement.create.train_crash": "UNLOCALIZED: Terrible Service",
"advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)",
"advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot",
"advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)",
@ -1262,6 +1262,8 @@
"create.item_attributes.smokable.inverted": "nu poate fi Afumat", "create.item_attributes.smokable.inverted": "nu poate fi Afumat",
"create.item_attributes.blastable": "poate fi topit în Furnal", "create.item_attributes.blastable": "poate fi topit în Furnal",
"create.item_attributes.blastable.inverted": "nu poate fi topit în Furnal", "create.item_attributes.blastable.inverted": "nu poate fi topit în Furnal",
"create.item_attributes.compostable": "UNLOCALIZED: can be composted",
"create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted",
"create.item_attributes.shulker_level": "este shulkerul %1$s", "create.item_attributes.shulker_level": "este shulkerul %1$s",
"create.item_attributes.shulker_level.inverted": "nu este shulkerul %1$s", "create.item_attributes.shulker_level.inverted": "nu este shulkerul %1$s",
"create.item_attributes.shulker_level.full": "plin", "create.item_attributes.shulker_level.full": "plin",
@ -1368,6 +1370,10 @@
"create.tooltip.chute.fans_pull_up": "Ventilatoarele trag de Sus", "create.tooltip.chute.fans_pull_up": "Ventilatoarele trag de Sus",
"create.tooltip.chute.fans_pull_down": "Ventilatoarele trag de Jos", "create.tooltip.chute.fans_pull_down": "Ventilatoarele trag de Jos",
"create.tooltip.chute.contains": "Conține: %1$s x%2$s", "create.tooltip.chute.contains": "Conține: %1$s x%2$s",
"create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information",
"create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use",
"create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack",
"create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "Distribuie Curent:", "create.tooltip.brass_tunnel.contains": "Distribuie Curent:",
"create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "Click Dreapta pentru a recupera", "create.tooltip.brass_tunnel.retrieve": "Click Dreapta pentru a recupera",
@ -1481,6 +1487,7 @@
"create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly",
"create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s",
"create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content",
"create.schedule.condition.threshold.anything": "UNLOCALIZED: Anything",
"create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure",
"create.schedule.condition.threshold.items": "UNLOCALIZED: Items", "create.schedule.condition.threshold.items": "UNLOCALIZED: Items",
"create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks",
@ -1488,6 +1495,7 @@
"create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s",
"create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item",
"create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used",
"create.schedule.condition.threshold.place_item_3": "UNLOCALIZED: Leave empty to match any",
"create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition",
"create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition",
"create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link",

File diff suppressed because it is too large Load diff

View file

@ -1,37 +0,0 @@
{
"parent": "create:block/fluid_pipe/core_x",
"elements": [
{
"from": [
4,
4,
4
],
"to": [
12,
12,
12
],
"faces": {
"west": {
"texture": "#0",
"uv": [
16.0,
8.0,
12.0,
12.0
]
},
"east": {
"texture": "#0",
"uv": [
12.0,
8.0,
16.0,
12.0
]
}
}
}
]
}

View file

@ -1,37 +0,0 @@
{
"parent": "create:block/fluid_pipe/core_y",
"elements": [
{
"from": [
4,
4,
4
],
"to": [
12,
12,
12
],
"faces": {
"down": {
"texture": "#0",
"uv": [
16.0,
8.0,
12.0,
12.0
]
},
"up": {
"texture": "#0",
"uv": [
16.0,
12.0,
12.0,
8.0
]
}
}
}
]
}

View file

@ -1,37 +0,0 @@
{
"parent": "create:block/fluid_pipe/core_z",
"elements": [
{
"from": [
4,
4,
4
],
"to": [
12,
12,
12
],
"faces": {
"north": {
"texture": "#0",
"uv": [
12.0,
8.0,
16.0,
12.0
]
},
"south": {
"texture": "#0",
"uv": [
16.0,
8.0,
12.0,
12.0
]
}
}
}
]
}

View file

@ -19,7 +19,7 @@
"chance": 0.75 "chance": 0.75
}, },
{ {
"item": "minecraft:cobblestone", "item": "minecraft:cobbled_deepslate",
"chance": 0.125 "chance": 0.125
} }
], ],

View file

@ -73,6 +73,10 @@
"item": "create:cogwheel", "item": "create:cogwheel",
"chance": 5.0 "chance": 5.0
}, },
{
"item": "minecraft:gold_nugget",
"chance": 3.0
},
{ {
"item": "create:shaft", "item": "create:shaft",
"chance": 2.0 "chance": 2.0
@ -81,10 +85,6 @@
"item": "create:crushed_gold_ore", "item": "create:crushed_gold_ore",
"chance": 2.0 "chance": 2.0
}, },
{
"item": "minecraft:gold_nugget",
"chance": 2.0
},
{ {
"item": "minecraft:iron_ingot" "item": "minecraft:iron_ingot"
}, },

View file

@ -1,11 +0,0 @@
{
"replace": false,
"values": [
"create:blaze_burner",
"create:lit_blaze_burner",
"#minecraft:fire",
"#minecraft:campfires",
"minecraft:magma_block",
"minecraft:lava"
]
}

View file

@ -1,6 +1,11 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"#create:fan_heaters" "create:blaze_burner",
"create:lit_blaze_burner",
"#minecraft:fire",
"#minecraft:campfires",
"minecraft:magma_block",
"minecraft:lava"
] ]
} }

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"minecraft:bee_nest",
"minecraft:vine",
"minecraft:moss_carpet",
"minecraft:shroomlight",
"minecraft:cocoa"
]
}

View file

@ -16,6 +16,7 @@
"minecraft:tripwire", "minecraft:tripwire",
"minecraft:tripwire_hook", "minecraft:tripwire_hook",
"minecraft:daylight_detector", "minecraft:daylight_detector",
"minecraft:target" "minecraft:target",
"minecraft:hopper"
] ]
} }

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"create:copper_backtank"
]
}

View file

@ -1,6 +1,7 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"create:sturdy_sheet",
"create:copper_sheet", "create:copper_sheet",
"create:brass_sheet", "create:brass_sheet",
"create:iron_sheet", "create:iron_sheet",

View file

@ -161,16 +161,14 @@ public class AllBlockPartials {
; ;
public static final Map<FluidTransportBehaviour.AttachmentTypes, Map<Direction, PartialModel>> PIPE_ATTACHMENTS = public static final Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> PIPE_ATTACHMENTS =
new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.class); new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.ComponentPartials.class);
public static final Map<Direction, PartialModel> METAL_GIRDER_BRACKETS = new EnumMap<>(Direction.class); public static final Map<Direction, PartialModel> METAL_GIRDER_BRACKETS = new EnumMap<>(Direction.class);
public static final Map<DyeColor, PartialModel> TOOLBOX_LIDS = new EnumMap<>(DyeColor.class); public static final Map<DyeColor, PartialModel> TOOLBOX_LIDS = new EnumMap<>(DyeColor.class);
static { static {
for (FluidTransportBehaviour.AttachmentTypes type : FluidTransportBehaviour.AttachmentTypes.values()) { for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials type : FluidTransportBehaviour.AttachmentTypes.ComponentPartials.values()) {
if (!type.hasModel())
continue;
Map<Direction, PartialModel> map = new HashMap<>(); Map<Direction, PartialModel> map = new HashMap<>();
for (Direction d : Iterate.directions) { for (Direction d : Iterate.directions) {
String asId = Lang.asId(type.name()); String asId = Lang.asId(type.name());

View file

@ -172,7 +172,7 @@ import com.simibubi.create.content.logistics.block.display.source.FluidListDispl
import com.simibubi.create.content.logistics.block.display.source.ItemCountDisplaySource; import com.simibubi.create.content.logistics.block.display.source.ItemCountDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemListDisplaySource; import com.simibubi.create.content.logistics.block.display.source.ItemListDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemNameDisplaySource; import com.simibubi.create.content.logistics.block.display.source.ItemNameDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ItemThoughputDisplaySource; import com.simibubi.create.content.logistics.block.display.source.ItemThroughputDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.KineticSpeedDisplaySource; import com.simibubi.create.content.logistics.block.display.source.KineticSpeedDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.KineticStressDisplaySource; import com.simibubi.create.content.logistics.block.display.source.KineticStressDisplaySource;
import com.simibubi.create.content.logistics.block.display.source.ObservedTrainNameSource; import com.simibubi.create.content.logistics.block.display.source.ObservedTrainNameSource;
@ -241,12 +241,12 @@ import net.createmod.catnip.utility.Couple;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.core.Registry;
import net.minecraft.data.recipes.ShapelessRecipeBuilder; import net.minecraft.data.recipes.ShapelessRecipeBuilder;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags; import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags; import net.minecraft.tags.ItemTags;
import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Rarity; import net.minecraft.world.item.Rarity;
import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
@ -570,7 +570,7 @@ public class AllBlocks {
.transform(axeOrPickaxe()) .transform(axeOrPickaxe())
.transform(BuilderTransformers.cuckooClock()) .transform(BuilderTransformers.cuckooClock())
.lang("Cuckoo Clock") .lang("Cuckoo Clock")
.onRegisterAfter(Item.class, c -> TooltipHelper.referTo(c, CUCKOO_CLOCK)) .onRegisterAfter(Registry.ITEM_REGISTRY, c -> TooltipHelper.referTo(c, CUCKOO_CLOCK))
.register(); .register();
public static final BlockEntry<MillstoneBlock> MILLSTONE = REGISTRATE.block("millstone", MillstoneBlock::new) public static final BlockEntry<MillstoneBlock> MILLSTONE = REGISTRATE.block("millstone", MillstoneBlock::new)
@ -652,7 +652,7 @@ public class AllBlocks {
.properties(p -> p.lightLevel(BlazeBurnerBlock::getLight)) .properties(p -> p.lightLevel(BlazeBurnerBlock::getLight))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
.tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.FAN_HEATERS.tag) .tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
.loot((lt, block) -> lt.add(block, BlazeBurnerBlock.buildLootTable())) .loot((lt, block) -> lt.add(block, BlazeBurnerBlock.buildLootTable()))
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
.onRegister(movementBehaviour(new BlazeBurnerMovementBehaviour())) .onRegister(movementBehaviour(new BlazeBurnerMovementBehaviour()))
@ -669,7 +669,7 @@ public class AllBlocks {
.properties(p -> p.lightLevel(LitBlazeBurnerBlock::getLight)) .properties(p -> p.lightLevel(LitBlazeBurnerBlock::getLight))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
.tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.FAN_HEATERS.tag) .tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
.loot((lt, block) -> lt.dropOther(block, AllItems.EMPTY_BLAZE_BURNER.get())) .loot((lt, block) -> lt.dropOther(block, AllItems.EMPTY_BLAZE_BURNER.get()))
.blockstate((c, p) -> p.getVariantBuilder(c.get()) .blockstate((c, p) -> p.getVariantBuilder(c.get())
.forAllStates(state -> ConfiguredModel.builder() .forAllStates(state -> ConfiguredModel.builder()
@ -812,7 +812,7 @@ public class AllBlocks {
.initialProperties(SharedProperties::copperMetal) .initialProperties(SharedProperties::copperMetal)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(BlockStateGen.pipe()) .blockstate(BlockStateGen.pipe())
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque)) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.item() .item()
.transform(customItemModel()) .transform(customItemModel())
.register(); .register();
@ -827,7 +827,7 @@ public class AllBlocks {
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING))) .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING, .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
(s, f) -> !s.getValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(f))))) (s, f) -> !s.getValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque)) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, FLUID_PIPE.get())) .loot((p, b) -> p.dropOther(b, FLUID_PIPE.get()))
.register(); .register();
@ -849,7 +849,7 @@ public class AllBlocks {
.build(); .build();
}, BlockStateProperties.WATERLOGGED); }, BlockStateProperties.WATERLOGGED);
}) })
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::transparent)) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.loot((p, b) -> p.dropOther(b, FLUID_PIPE.get())) .loot((p, b) -> p.dropOther(b, FLUID_PIPE.get()))
.register(); .register();
@ -858,7 +858,7 @@ public class AllBlocks {
.properties(p -> p.color(MaterialColor.STONE)) .properties(p -> p.color(MaterialColor.STONE))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true)) .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque)) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.transform(BlockStressDefaults.setImpact(4.0)) .transform(BlockStressDefaults.setImpact(4.0))
.item() .item()
.transform(customItemModel()) .transform(customItemModel())
@ -870,7 +870,7 @@ public class AllBlocks {
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW)) .properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(new SmartFluidPipeGenerator()::generate) .blockstate(new SmartFluidPipeGenerator()::generate)
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::transparent)) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.item() .item()
.transform(customItemModel()) .transform(customItemModel())
.register(); .register();
@ -881,7 +881,7 @@ public class AllBlocks {
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p, .blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal", (state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed"))) state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
.onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque)) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new))
.item() .item()
.transform(customItemModel()) .transform(customItemModel())
.register(); .register();
@ -1337,7 +1337,7 @@ public class AllBlocks {
.unlockedBy("has_seat", RegistrateRecipeProvider.has(AllItemTags.SEATS.tag)) .unlockedBy("has_seat", RegistrateRecipeProvider.has(AllItemTags.SEATS.tag))
.save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_seat")); .save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_seat"));
}) })
.onRegisterAfter(Item.class, v -> TooltipHelper.referTo(v, "block.create.brown_seat")) .onRegisterAfter(Registry.ITEM_REGISTRY, v -> TooltipHelper.referTo(v, "block.create.brown_seat"))
.tag(AllBlockTags.SEATS.tag) .tag(AllBlockTags.SEATS.tag)
.item() .item()
.tag(AllItemTags.SEATS.tag) .tag(AllItemTags.SEATS.tag)
@ -1696,7 +1696,7 @@ public class AllBlocks {
.properties(p -> p.color(MaterialColor.STONE)) .properties(p -> p.color(MaterialColor.STONE))
.transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite"))) .transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite")))
.onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items")) .onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items"))
.onRegister(assignDataBehaviour(new ItemThoughputDisplaySource(), "item_throughput")) .onRegister(assignDataBehaviour(new ItemThroughputDisplaySource(), "item_throughput"))
.register(); .register();
public static final BlockEntry<BrassTunnelBlock> BRASS_TUNNEL = public static final BlockEntry<BrassTunnelBlock> BRASS_TUNNEL =
@ -1704,7 +1704,7 @@ public class AllBlocks {
.properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW)) .properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW))
.transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block"))) .transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block")))
.onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items")) .onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items"))
.onRegister(assignDataBehaviour(new ItemThoughputDisplaySource(), "item_throughput")) .onRegister(assignDataBehaviour(new ItemThroughputDisplaySource(), "item_throughput"))
.onRegister(connectedTextures(BrassTunnelCTBehaviour::new)) .onRegister(connectedTextures(BrassTunnelCTBehaviour::new))
.register(); .register();
@ -1953,7 +1953,7 @@ public class AllBlocks {
.withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/block")) .withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/block"))
.texture("0", p.modLoc("block/toolbox/" + colourName))); .texture("0", p.modLoc("block/toolbox/" + colourName)));
}) })
.onRegisterAfter(Item.class, v -> TooltipHelper.referTo(v, "block.create.toolbox")) .onRegisterAfter(Registry.ITEM_REGISTRY, v -> TooltipHelper.referTo(v, "block.create.toolbox"))
.tag(AllBlockTags.TOOLBOXES.tag) .tag(AllBlockTags.TOOLBOXES.tag)
.item(UncontainableBlockItem::new) .item(UncontainableBlockItem::new)
.model((c, p) -> p.withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/item")) .model((c, p) -> p.withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/item"))

View file

@ -2,17 +2,20 @@ package com.simibubi.create;
import com.simibubi.create.content.logistics.trains.entity.CarriageSyncDataSerializer; import com.simibubi.create.content.logistics.trains.entity.CarriageSyncDataSerializer;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DataSerializerEntry; import net.minecraftforge.registries.DataSerializerEntry;
import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public class AllEntityDataSerializers { public class AllEntityDataSerializers {
private static final DeferredRegister<DataSerializerEntry> REGISTER = DeferredRegister.create(ForgeRegistries.Keys.DATA_SERIALIZERS, Create.ID);
public static final CarriageSyncDataSerializer CARRIAGE_DATA = new CarriageSyncDataSerializer(); public static final CarriageSyncDataSerializer CARRIAGE_DATA = new CarriageSyncDataSerializer();
public static void register(RegistryEvent.Register<DataSerializerEntry> event) { public static final RegistryObject<DataSerializerEntry> CARRIAGE_DATA_ENTRY = REGISTER.register("carriage_data", () -> new DataSerializerEntry(CARRIAGE_DATA));
IForgeRegistry<DataSerializerEntry> registry = event.getRegistry();
registry.register(new DataSerializerEntry(CARRIAGE_DATA).setRegistryName(Create.asResource("carriage_data")));
}
public static void register(IEventBus modEventBus) {
REGISTER.register(modEventBus);
}
} }

View file

@ -10,15 +10,11 @@ import com.simibubi.create.content.palettes.AllPaletteStoneTypes;
import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.data.CreateRegistrate;
import com.tterrag.registrate.util.entry.FluidEntry; import com.tterrag.registrate.util.entry.FluidEntry;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.FluidState;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.ForgeFlowingFluid; import net.minecraftforge.fluids.ForgeFlowingFluid;
@ -28,17 +24,17 @@ public class AllFluids {
public static final FluidEntry<PotionFluid> POTION = public static final FluidEntry<PotionFluid> POTION =
REGISTRATE.virtualFluid("potion", PotionFluidAttributes::new, PotionFluid::new) REGISTRATE.virtualFluid("potion", PotionFluidAttributes::new, PotionFluid::new)
.lang(f -> "fluid.create.potion", "Potion") .lang("Potion")
.register(); .register();
public static final FluidEntry<VirtualFluid> TEA = REGISTRATE.virtualFluid("tea") public static final FluidEntry<VirtualFluid> TEA = REGISTRATE.virtualFluid("tea")
.lang(f -> "fluid.create.tea", "Builder's Tea") .lang("Builder's Tea")
.tag(AllTags.forgeFluidTag("tea")) .tag(AllTags.forgeFluidTag("tea"))
.register(); .register();
public static final FluidEntry<ForgeFlowingFluid.Flowing> HONEY = public static final FluidEntry<ForgeFlowingFluid.Flowing> HONEY =
REGISTRATE.standardFluid("honey", NoColorFluidAttributes::new) REGISTRATE.standardFluid("honey", NoColorFluidAttributes::new)
.lang(f -> "fluid.create.honey", "Honey") .lang("Honey")
.attributes(b -> b.viscosity(2000) .attributes(b -> b.viscosity(2000)
.density(1400)) .density(1400))
.properties(p -> p.levelDecreasePerBlock(2) .properties(p -> p.levelDecreasePerBlock(2)
@ -54,7 +50,7 @@ public class AllFluids {
public static final FluidEntry<ForgeFlowingFluid.Flowing> CHOCOLATE = public static final FluidEntry<ForgeFlowingFluid.Flowing> CHOCOLATE =
REGISTRATE.standardFluid("chocolate", NoColorFluidAttributes::new) REGISTRATE.standardFluid("chocolate", NoColorFluidAttributes::new)
.lang(f -> "fluid.create.chocolate", "Chocolate") .lang("Chocolate")
.tag(AllTags.forgeFluidTag("chocolate")) .tag(AllTags.forgeFluidTag("chocolate"))
.attributes(b -> b.viscosity(1500) .attributes(b -> b.viscosity(1500)
.density(1400)) .density(1400))
@ -68,16 +64,6 @@ public class AllFluids {
public static void register() {} public static void register() {}
@OnlyIn(Dist.CLIENT)
public static void assignRenderLayers() {}
@OnlyIn(Dist.CLIENT)
private static void makeTranslucent(FluidEntry<?> entry) {
ForgeFlowingFluid fluid = entry.get();
ItemBlockRenderTypes.setRenderLayer(fluid, RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(fluid.getSource(), RenderType.translucent());
}
@Nullable @Nullable
public static BlockState getLavaInteraction(FluidState fluidState) { public static BlockState getLavaInteraction(FluidState fluidState) {
Fluid fluid = fluidState.getType(); Fluid fluid = fluidState.getType();

View file

@ -1,9 +1,7 @@
package com.simibubi.create; package com.simibubi.create;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -11,20 +9,32 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Mov
import com.simibubi.create.content.contraptions.components.structureMovement.interaction.DoorMovingInteraction; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.DoorMovingInteraction;
import com.simibubi.create.content.contraptions.components.structureMovement.interaction.LeverMovingInteraction; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.LeverMovingInteraction;
import com.simibubi.create.content.contraptions.components.structureMovement.interaction.TrapdoorMovingInteraction; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.TrapdoorMovingInteraction;
import com.simibubi.create.foundation.utility.CreateRegistry;
import com.tterrag.registrate.util.nullness.NonNullConsumer; import com.tterrag.registrate.util.nullness.NonNullConsumer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags; import net.minecraft.tags.BlockTags;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.IRegistryDelegate; import net.minecraftforge.registries.IRegistryDelegate;
public class AllInteractionBehaviours { public class AllInteractionBehaviours {
private static final Map<IRegistryDelegate<Block>, MovingInteractionBehaviour> BLOCK_BEHAVIOURS = new HashMap<>(); private static final CreateRegistry<Block, MovingInteractionBehaviour> BLOCK_BEHAVIOURS = new CreateRegistry<>(ForgeRegistries.BLOCKS);
private static final List<BehaviourProvider> GLOBAL_BEHAVIOURS = new ArrayList<>(); private static final List<BehaviourProvider> GLOBAL_BEHAVIOURS = new ArrayList<>();
public static void registerBehaviour(ResourceLocation block, MovingInteractionBehaviour provider) {
BLOCK_BEHAVIOURS.register(block, provider);
}
public static void registerBehaviour(Block block, MovingInteractionBehaviour provider) {
BLOCK_BEHAVIOURS.register(block, provider);
}
@Deprecated(forRemoval = true)
public static void registerBehaviour(IRegistryDelegate<Block> block, MovingInteractionBehaviour provider) { public static void registerBehaviour(IRegistryDelegate<Block> block, MovingInteractionBehaviour provider) {
BLOCK_BEHAVIOURS.put(block, provider); registerBehaviour(block.name(), provider);
} }
public static void registerBehaviourProvider(BehaviourProvider provider) { public static void registerBehaviourProvider(BehaviourProvider provider) {
@ -33,7 +43,7 @@ public class AllInteractionBehaviours {
@Nullable @Nullable
public static MovingInteractionBehaviour getBehaviour(BlockState state) { public static MovingInteractionBehaviour getBehaviour(BlockState state) {
MovingInteractionBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock().delegate); MovingInteractionBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock());
if (behaviour != null) { if (behaviour != null) {
return behaviour; return behaviour;
} }
@ -50,11 +60,11 @@ public class AllInteractionBehaviours {
public static <B extends Block> NonNullConsumer<? super B> interactionBehaviour( public static <B extends Block> NonNullConsumer<? super B> interactionBehaviour(
MovingInteractionBehaviour behaviour) { MovingInteractionBehaviour behaviour) {
return b -> registerBehaviour(b.delegate, behaviour); return b -> registerBehaviour(b, behaviour);
} }
static void registerDefaults() { static void registerDefaults() {
registerBehaviour(Blocks.LEVER.delegate, new LeverMovingInteraction()); registerBehaviour(Blocks.LEVER, new LeverMovingInteraction());
DoorMovingInteraction doorBehaviour = new DoorMovingInteraction(); DoorMovingInteraction doorBehaviour = new DoorMovingInteraction();
registerBehaviourProvider(state -> { registerBehaviourProvider(state -> {

View file

@ -1,9 +1,9 @@
package com.simibubi.create; package com.simibubi.create;
import static com.simibubi.create.AllTags.forgeItemTag;
import static com.simibubi.create.AllTags.AllItemTags.CREATE_INGOTS; import static com.simibubi.create.AllTags.AllItemTags.CREATE_INGOTS;
import static com.simibubi.create.AllTags.AllItemTags.CRUSHED_ORES; import static com.simibubi.create.AllTags.AllItemTags.CRUSHED_ORES;
import static com.simibubi.create.AllTags.AllItemTags.PLATES; import static com.simibubi.create.AllTags.AllItemTags.PLATES;
import static com.simibubi.create.AllTags.forgeItemTag;
import static com.simibubi.create.content.AllSections.CURIOSITIES; import static com.simibubi.create.content.AllSections.CURIOSITIES;
import static com.simibubi.create.content.AllSections.KINETICS; import static com.simibubi.create.content.AllSections.KINETICS;
import static com.simibubi.create.content.AllSections.LOGISTICS; import static com.simibubi.create.content.AllSections.LOGISTICS;
@ -85,7 +85,7 @@ public class AllItems {
DOUGH = taggedIngredient("dough", forgeItemTag("dough"), forgeItemTag("dough/wheat")), DOUGH = taggedIngredient("dough", forgeItemTag("dough"), forgeItemTag("dough/wheat")),
CINDER_FLOUR = ingredient("cinder_flour"), ROSE_QUARTZ = ingredient("rose_quartz"), CINDER_FLOUR = ingredient("cinder_flour"), ROSE_QUARTZ = ingredient("rose_quartz"),
POLISHED_ROSE_QUARTZ = ingredient("polished_rose_quartz"), POWDERED_OBSIDIAN = ingredient("powdered_obsidian"), POLISHED_ROSE_QUARTZ = ingredient("polished_rose_quartz"), POWDERED_OBSIDIAN = ingredient("powdered_obsidian"),
STURDY_SHEET = taggedIngredient("sturdy_sheet", forgeItemTag("plates/obsidian")), STURDY_SHEET = taggedIngredient("sturdy_sheet", forgeItemTag("plates/obsidian"), PLATES.tag),
PROPELLER = ingredient("propeller"), WHISK = ingredient("whisk"), BRASS_HAND = ingredient("brass_hand"), PROPELLER = ingredient("propeller"), WHISK = ingredient("whisk"), BRASS_HAND = ingredient("brass_hand"),
CRAFTER_SLOT_COVER = ingredient("crafter_slot_cover"), ELECTRON_TUBE = ingredient("electron_tube"); CRAFTER_SLOT_COVER = ingredient("crafter_slot_cover"), ELECTRON_TUBE = ingredient("electron_tube");
@ -248,6 +248,7 @@ public class AllItems {
COPPER_BACKTANK = REGISTRATE.item("copper_backtank", p -> new CopperBacktankItem(p, COPPER_BACKTANK_PLACEABLE)) COPPER_BACKTANK = REGISTRATE.item("copper_backtank", p -> new CopperBacktankItem(p, COPPER_BACKTANK_PLACEABLE))
.model(AssetLookup.customGenericItemModel("_", "item")) .model(AssetLookup.customGenericItemModel("_", "item"))
.tag(AllItemTags.PRESSURIZED_AIR_SOURCES.tag)
.register(), .register(),
DIVING_HELMET = REGISTRATE.item("diving_helmet", DivingHelmetItem::new) DIVING_HELMET = REGISTRATE.item("diving_helmet", DivingHelmetItem::new)

View file

@ -1,9 +1,7 @@
package com.simibubi.create; package com.simibubi.create;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -12,19 +10,31 @@ import com.simibubi.create.content.contraptions.components.actors.CampfireMoveme
import com.simibubi.create.content.contraptions.components.actors.dispenser.DispenserMovementBehaviour; import com.simibubi.create.content.contraptions.components.actors.dispenser.DispenserMovementBehaviour;
import com.simibubi.create.content.contraptions.components.actors.dispenser.DropperMovementBehaviour; import com.simibubi.create.content.contraptions.components.actors.dispenser.DropperMovementBehaviour;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour;
import com.simibubi.create.foundation.utility.CreateRegistry;
import com.tterrag.registrate.util.nullness.NonNullConsumer; import com.tterrag.registrate.util.nullness.NonNullConsumer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.IRegistryDelegate; import net.minecraftforge.registries.IRegistryDelegate;
public class AllMovementBehaviours { public class AllMovementBehaviours {
private static final Map<IRegistryDelegate<Block>, MovementBehaviour> BLOCK_BEHAVIOURS = new HashMap<>(); private static final CreateRegistry<Block, MovementBehaviour> BLOCK_BEHAVIOURS = new CreateRegistry<>(ForgeRegistries.BLOCKS);
private static final List<BehaviourProvider> GLOBAL_BEHAVIOURS = new ArrayList<>(); private static final List<BehaviourProvider> GLOBAL_BEHAVIOURS = new ArrayList<>();
public static void registerBehaviour(ResourceLocation block, MovementBehaviour behaviour) {
BLOCK_BEHAVIOURS.register(block, behaviour);
}
public static void registerBehaviour(Block block, MovementBehaviour behaviour) {
BLOCK_BEHAVIOURS.register(block, behaviour);
}
@Deprecated(forRemoval = true)
public static void registerBehaviour(IRegistryDelegate<Block> block, MovementBehaviour behaviour) { public static void registerBehaviour(IRegistryDelegate<Block> block, MovementBehaviour behaviour) {
BLOCK_BEHAVIOURS.put(block, behaviour); registerBehaviour(block.name(), behaviour);
} }
public static void registerBehaviourProvider(BehaviourProvider provider) { public static void registerBehaviourProvider(BehaviourProvider provider) {
@ -33,7 +43,7 @@ public class AllMovementBehaviours {
@Nullable @Nullable
public static MovementBehaviour getBehaviour(BlockState state) { public static MovementBehaviour getBehaviour(BlockState state) {
MovementBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock().delegate); MovementBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock());
if (behaviour != null) { if (behaviour != null) {
return behaviour; return behaviour;
} }
@ -50,16 +60,16 @@ public class AllMovementBehaviours {
public static <B extends Block> NonNullConsumer<? super B> movementBehaviour( public static <B extends Block> NonNullConsumer<? super B> movementBehaviour(
MovementBehaviour behaviour) { MovementBehaviour behaviour) {
return b -> registerBehaviour(b.delegate, behaviour); return b -> registerBehaviour(b, behaviour);
} }
static void registerDefaults() { static void registerDefaults() {
registerBehaviour(Blocks.BELL.delegate, new BellMovementBehaviour()); registerBehaviour(Blocks.BELL, new BellMovementBehaviour());
registerBehaviour(Blocks.CAMPFIRE.delegate, new CampfireMovementBehaviour()); registerBehaviour(Blocks.CAMPFIRE, new CampfireMovementBehaviour());
DispenserMovementBehaviour.gatherMovedDispenseItemBehaviours(); DispenserMovementBehaviour.gatherMovedDispenseItemBehaviours();
registerBehaviour(Blocks.DISPENSER.delegate, new DispenserMovementBehaviour()); registerBehaviour(Blocks.DISPENSER, new DispenserMovementBehaviour());
registerBehaviour(Blocks.DROPPER.delegate, new DropperMovementBehaviour()); registerBehaviour(Blocks.DROPPER, new DropperMovementBehaviour());
} }
public interface BehaviourProvider { public interface BehaviourProvider {

View file

@ -18,12 +18,13 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.ParticleEngine; import net.minecraft.client.particle.ParticleEngine;
import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleType; import net.minecraft.core.particles.ParticleType;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; import net.minecraftforge.client.event.ParticleFactoryRegisterEvent;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public enum AllParticleTypes { public enum AllParticleTypes {
@ -39,19 +40,17 @@ public enum AllParticleTypes {
SOUL(SoulParticle.Data::new), SOUL(SoulParticle.Data::new),
SOUL_BASE(SoulBaseParticle.Data::new), SOUL_BASE(SoulBaseParticle.Data::new),
SOUL_PERIMETER(SoulParticle.PerimeterData::new), SOUL_PERIMETER(SoulParticle.PerimeterData::new),
SOUL_EXPANDING_PERIMETER(SoulParticle.ExpandingPerimeterData::new) SOUL_EXPANDING_PERIMETER(SoulParticle.ExpandingPerimeterData::new);
;
private ParticleEntry<?> entry; private final ParticleEntry<?> entry;
<D extends ParticleOptions> AllParticleTypes(Supplier<? extends ICustomParticleData<D>> typeFactory) { <D extends ParticleOptions> AllParticleTypes(Supplier<? extends ICustomParticleData<D>> typeFactory) {
String asId = Lang.asId(this.name()); String name = Lang.asId(name());
entry = new ParticleEntry<>(new ResourceLocation(Create.ID, asId), typeFactory); entry = new ParticleEntry<>(name, typeFactory);
} }
public static void register(RegistryEvent.Register<ParticleType<?>> event) { public static void register(IEventBus modEventBus) {
for (AllParticleTypes particle : values()) ParticleEntry.REGISTER.register(modEventBus);
particle.entry.register(event.getRegistry());
} }
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@ -62,40 +61,31 @@ public enum AllParticleTypes {
} }
public ParticleType<?> get() { public ParticleType<?> get() {
return entry.getOrCreateType(); return entry.object.get();
} }
public String parameter() { public String parameter() {
return Lang.asId(name()); return entry.name;
} }
private class ParticleEntry<D extends ParticleOptions> { private static class ParticleEntry<D extends ParticleOptions> {
Supplier<? extends ICustomParticleData<D>> typeFactory; private static final DeferredRegister<ParticleType<?>> REGISTER = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, Create.ID);
ParticleType<D> type;
ResourceLocation id;
public ParticleEntry(ResourceLocation id, Supplier<? extends ICustomParticleData<D>> typeFactory) { private final String name;
this.id = id; private final Supplier<? extends ICustomParticleData<D>> typeFactory;
private final RegistryObject<ParticleType<D>> object;
public ParticleEntry(String name, Supplier<? extends ICustomParticleData<D>> typeFactory) {
this.name = name;
this.typeFactory = typeFactory; this.typeFactory = typeFactory;
}
void register(IForgeRegistry<ParticleType<?>> registry) { object = REGISTER.register(name, () -> this.typeFactory.get().createType());
registry.register(getOrCreateType());
}
ParticleType<D> getOrCreateType() {
if (type != null)
return type;
type = typeFactory.get()
.createType();
type.setRegistryName(id);
return type;
} }
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
void registerFactory(ParticleEngine particles) { public void registerFactory(ParticleEngine particles) {
typeFactory.get() typeFactory.get()
.register(getOrCreateType(), particles); .register(object.get(), particles);
} }
} }

View file

@ -4,6 +4,8 @@ import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.function.Supplier; import java.util.function.Supplier;
import org.jetbrains.annotations.Nullable;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.simibubi.create.compat.jei.ConversionRecipe; import com.simibubi.create.compat.jei.ConversionRecipe;
import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe;
@ -27,6 +29,7 @@ import com.simibubi.create.content.curiosities.toolbox.ToolboxDyeingRecipe;
import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe; import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe;
import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo; import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo;
import net.createmod.catnip.platform.CatnipServices;
import net.createmod.catnip.utility.lang.Lang; import net.createmod.catnip.utility.lang.Lang;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -37,7 +40,10 @@ import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.item.crafting.ShapedRecipe; import net.minecraft.world.item.crafting.ShapedRecipe;
import net.minecraft.world.item.crafting.SimpleRecipeSerializer; import net.minecraft.world.item.crafting.SimpleRecipeSerializer;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public enum AllRecipeTypes implements IRecipeTypeInfo { public enum AllRecipeTypes implements IRecipeTypeInfo {
@ -60,34 +66,53 @@ public enum AllRecipeTypes implements IRecipeTypeInfo {
MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new), MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new),
SEQUENCED_ASSEMBLY(SequencedAssemblyRecipeSerializer::new), SEQUENCED_ASSEMBLY(SequencedAssemblyRecipeSerializer::new),
TOOLBOX_DYEING(() -> new SimpleRecipeSerializer<>(ToolboxDyeingRecipe::new), RecipeType.CRAFTING); TOOLBOX_DYEING(() -> new SimpleRecipeSerializer<>(ToolboxDyeingRecipe::new), () -> RecipeType.CRAFTING, false);
; private final ResourceLocation id;
private final RegistryObject<RecipeSerializer<?>> serializerObject;
@Nullable
private final RegistryObject<RecipeType<?>> typeObject;
private final Supplier<RecipeType<?>> type;
private ResourceLocation id; AllRecipeTypes(Supplier<RecipeSerializer<?>> serializerSupplier, Supplier<RecipeType<?>> typeSupplier, boolean registerType) {
private Supplier<RecipeSerializer<?>> serializerSupplier; String name = Lang.asId(name());
private Supplier<RecipeType<?>> typeSupplier; id = Create.asResource(name);
private RecipeSerializer<?> serializer; serializerObject = Registers.SERIALIZER_REGISTER.register(name, serializerSupplier);
private RecipeType<?> type; if (registerType) {
typeObject = Registers.TYPE_REGISTER.register(name, typeSupplier);
AllRecipeTypes(Supplier<RecipeSerializer<?>> serializerSupplier, Supplier<RecipeType<?>> typeSupplier) { type = typeObject;
this.id = Create.asResource(Lang.asId(name())); } else {
this.serializerSupplier = serializerSupplier; typeObject = null;
this.typeSupplier = typeSupplier; type = typeSupplier;
} }
AllRecipeTypes(Supplier<RecipeSerializer<?>> serializerSupplier, RecipeType<?> existingType) {
this(serializerSupplier, () -> existingType);
} }
AllRecipeTypes(Supplier<RecipeSerializer<?>> serializerSupplier) { AllRecipeTypes(Supplier<RecipeSerializer<?>> serializerSupplier) {
this.id = Create.asResource(Lang.asId(name())); String name = Lang.asId(name());
this.serializerSupplier = serializerSupplier; id = Create.asResource(name);
this.typeSupplier = () -> simpleType(id); serializerObject = Registers.SERIALIZER_REGISTER.register(name, serializerSupplier);
typeObject = Registers.TYPE_REGISTER.register(name, () -> simpleType(id));
type = typeObject;
} }
AllRecipeTypes(ProcessingRecipeFactory<?> processingFactory) { AllRecipeTypes(ProcessingRecipeFactory<?> processingFactory) {
this(processingSerializer(processingFactory)); this(() -> new ProcessingRecipeSerializer<>(processingFactory));
}
public static <T extends Recipe<?>> RecipeType<T> simpleType(ResourceLocation id) {
String stringId = id.toString();
return new RecipeType<T>() {
@Override
public String toString() {
return stringId;
}
};
}
public static void register(IEventBus modEventBus) {
ShapedRecipe.setCraftingSize(9, 9);
Registers.SERIALIZER_REGISTER.register(modEventBus);
Registers.TYPE_REGISTER.register(modEventBus);
} }
@Override @Override
@ -98,13 +123,13 @@ public enum AllRecipeTypes implements IRecipeTypeInfo {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public <T extends RecipeSerializer<?>> T getSerializer() { public <T extends RecipeSerializer<?>> T getSerializer() {
return (T) serializer; return (T) serializerObject.get();
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public <T extends RecipeType<?>> T getType() { public <T extends RecipeType<?>> T getType() {
return (T) type; return (T) type.get();
} }
public <C extends Container, T extends Recipe<C>> Optional<T> find(C inv, Level world) { public <C extends Container, T extends Recipe<C>> Optional<T> find(C inv, Level world) {
@ -112,42 +137,21 @@ public enum AllRecipeTypes implements IRecipeTypeInfo {
.getRecipeFor(getType(), inv, world); .getRecipeFor(getType(), inv, world);
} }
public static void register(RegistryEvent.Register<RecipeSerializer<?>> event) {
ShapedRecipe.setCraftingSize(9, 9);
for (AllRecipeTypes r : AllRecipeTypes.values()) {
r.serializer = r.serializerSupplier.get();
r.type = r.typeSupplier.get();
r.serializer.setRegistryName(r.id);
event.getRegistry()
.register(r.serializer);
}
}
private static Supplier<RecipeSerializer<?>> processingSerializer(ProcessingRecipeFactory<?> factory) {
return () -> new ProcessingRecipeSerializer<>(factory);
}
public static <T extends Recipe<?>> RecipeType<T> simpleType(ResourceLocation id) {
String stringId = id.toString();
return Registry.register(Registry.RECIPE_TYPE, id, new RecipeType<T>() {
@Override
public String toString() {
return stringId;
}
});
}
public static final Set<ResourceLocation> RECIPE_DENY_SET = public static final Set<ResourceLocation> RECIPE_DENY_SET =
ImmutableSet.of(new ResourceLocation("occultism", "spirit_trade"), new ResourceLocation("occultism", "ritual")); ImmutableSet.of(new ResourceLocation("occultism", "spirit_trade"), new ResourceLocation("occultism", "ritual"));
public static boolean shouldIgnoreInAutomation(Recipe<?> recipe) { public static boolean shouldIgnoreInAutomation(Recipe<?> recipe) {
RecipeSerializer<?> serializer = recipe.getSerializer(); RecipeSerializer<?> serializer = recipe.getSerializer();
if (serializer != null && RECIPE_DENY_SET.contains(serializer.getRegistryName())) if (serializer != null && RECIPE_DENY_SET.contains(CatnipServices.REGISTRIES.getKeyOrThrow(serializer)))
return true; return true;
return recipe.getId() return recipe.getId()
.getPath() .getPath()
.endsWith("_manual_only"); .endsWith("_manual_only");
} }
private static class Registers {
private static final DeferredRegister<RecipeSerializer<?>> SERIALIZER_REGISTER = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Create.ID);
private static final DeferredRegister<RecipeType<?>> TYPE_REGISTER = DeferredRegister.create(Registry.RECIPE_TYPE_REGISTRY, Create.ID);
}
} }

View file

@ -6,15 +6,13 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Supplier;
import com.google.common.collect.Lists;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import net.createmod.catnip.utility.Couple;
import net.createmod.catnip.utility.Pair;
import net.minecraft.core.Vec3i; import net.minecraft.core.Vec3i;
import net.minecraft.data.DataGenerator; import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider; import net.minecraft.data.DataProvider;
@ -28,12 +26,15 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.RegistryObject;
//@EventBusSubscriber(bus = Bus.FORGE) //@EventBusSubscriber(bus = Bus.FORGE)
public class AllSoundEvents { public class AllSoundEvents {
public static final Map<ResourceLocation, SoundEntry> entries = new HashMap<>(); public static final Map<ResourceLocation, SoundEntry> ALL = new HashMap<>();
public static final SoundEntry public static final SoundEntry
SCHEMATICANNON_LAUNCH_BLOCK = create("schematicannon_launch_block").subtitle("Schematicannon fires") SCHEMATICANNON_LAUNCH_BLOCK = create("schematicannon_launch_block").subtitle("Schematicannon fires")
@ -306,20 +307,20 @@ public class AllSoundEvents {
return new SoundEntryBuilder(id); return new SoundEntryBuilder(id);
} }
public static void register(RegistryEvent.Register<SoundEvent> event) { public static void prepare() {
IForgeRegistry<SoundEvent> registry = event.getRegistry(); for (SoundEntry entry : ALL.values())
for (SoundEntry entry : entries.values()) entry.prepare();
entry.register(registry);
} }
public static void prepare() { public static void register(RegistryEvent.Register<SoundEvent> event) {
for (SoundEntry entry : entries.values()) IForgeRegistry<SoundEvent> registry = event.getRegistry();
entry.prepare(); for (SoundEntry entry : ALL.values())
entry.register(registry);
} }
public static JsonObject provideLangEntries() { public static JsonObject provideLangEntries() {
JsonObject object = new JsonObject(); JsonObject object = new JsonObject();
for (SoundEntry entry : entries.values()) for (SoundEntry entry : ALL.values())
if (entry.hasSubtitle()) if (entry.hasSubtitle())
object.addProperty(entry.getSubtitleKey(), entry.getSubtitle()); object.addProperty(entry.getSubtitleKey(), entry.getSubtitle());
return object; return object;
@ -370,7 +371,7 @@ public class AllSoundEvents {
try { try {
JsonObject json = new JsonObject(); JsonObject json = new JsonObject();
entries.entrySet() ALL.entrySet()
.stream() .stream()
.sorted(Map.Entry.comparingByKey()) .sorted(Map.Entry.comparingByKey())
.forEach(entry -> { .forEach(entry -> {
@ -386,12 +387,15 @@ public class AllSoundEvents {
} }
public record ConfiguredSoundEvent(Supplier<SoundEvent> event, float volume, float pitch) {
}
public static class SoundEntryBuilder { public static class SoundEntryBuilder {
protected ResourceLocation id; protected ResourceLocation id;
protected String subtitle = "unregistered"; protected String subtitle = "unregistered";
protected SoundSource category = SoundSource.BLOCKS; protected SoundSource category = SoundSource.BLOCKS;
protected List<Pair<SoundEvent, Couple<Float>>> wrappedEvents; protected List<ConfiguredSoundEvent> wrappedEvents;
protected List<ResourceLocation> variants; protected List<ResourceLocation> variants;
protected int attenuationDistance; protected int attenuationDistance;
@ -430,11 +434,15 @@ public class AllSoundEvents {
return this; return this;
} }
public SoundEntryBuilder playExisting(SoundEvent event, float volume, float pitch) { public SoundEntryBuilder playExisting(Supplier<SoundEvent> event, float volume, float pitch) {
wrappedEvents.add(Pair.of(event, Couple.create(volume, pitch))); wrappedEvents.add(new ConfiguredSoundEvent(event, volume, pitch));
return this; return this;
} }
public SoundEntryBuilder playExisting(SoundEvent event, float volume, float pitch) {
return playExisting(() -> event, volume, pitch);
}
public SoundEntryBuilder playExisting(SoundEvent event) { public SoundEntryBuilder playExisting(SoundEvent event) {
return playExisting(event, 1, 1); return playExisting(event, 1, 1);
} }
@ -443,7 +451,7 @@ public class AllSoundEvents {
SoundEntry entry = SoundEntry entry =
wrappedEvents.isEmpty() ? new CustomSoundEntry(id, variants, subtitle, category, attenuationDistance) wrappedEvents.isEmpty() ? new CustomSoundEntry(id, variants, subtitle, category, attenuationDistance)
: new WrappedSoundEntry(id, subtitle, wrappedEvents, category, attenuationDistance); : new WrappedSoundEntry(id, subtitle, wrappedEvents, category, attenuationDistance);
entries.put(entry.getId(), entry); ALL.put(entry.getId(), entry);
return entry; return entry;
} }
@ -532,50 +540,53 @@ public class AllSoundEvents {
private static class WrappedSoundEntry extends SoundEntry { private static class WrappedSoundEntry extends SoundEntry {
private List<Pair<SoundEvent, Couple<Float>>> wrappedEvents; private List<ConfiguredSoundEvent> wrappedEvents;
private List<Pair<SoundEvent, Couple<Float>>> compiledEvents; private List<CompiledSoundEvent> compiledEvents;
public WrappedSoundEntry(ResourceLocation id, String subtitle, public WrappedSoundEntry(ResourceLocation id, String subtitle,
List<Pair<SoundEvent, Couple<Float>>> wrappedEvents, SoundSource category, int attenuationDistance) { List<ConfiguredSoundEvent> wrappedEvents, SoundSource category, int attenuationDistance) {
super(id, subtitle, category, attenuationDistance); super(id, subtitle, category, attenuationDistance);
this.wrappedEvents = wrappedEvents; this.wrappedEvents = wrappedEvents;
compiledEvents = Lists.newArrayList(); compiledEvents = new ArrayList<>();
} }
@Override @Override
public void prepare() { public void prepare() {
for (int i = 0; i < wrappedEvents.size(); i++) { for (int i = 0; i < wrappedEvents.size(); i++) {
ResourceLocation location = Create.asResource(getIdOf(i)); ConfiguredSoundEvent wrapped = wrappedEvents.get(i);
SoundEvent sound = new SoundEvent(location).setRegistryName(location); ResourceLocation location = getIdOf(i);
compiledEvents.add(Pair.of(sound, wrappedEvents.get(i) RegistryObject<SoundEvent> event = RegistryObject.create(location, ForgeRegistries.SOUND_EVENTS);
.getSecond())); compiledEvents.add(new CompiledSoundEvent(event, wrapped.volume(), wrapped.pitch()));
} }
} }
@Override @Override
public void register(IForgeRegistry<SoundEvent> registry) { public void register(IForgeRegistry<SoundEvent> registry) {
for (Pair<SoundEvent, Couple<Float>> pair : compiledEvents) for (CompiledSoundEvent compiledEvent : compiledEvents) {
registry.register(pair.getFirst()); ResourceLocation location = compiledEvent.event().getId();
registry.register(new SoundEvent(location).setRegistryName(location));
}
} }
@Override @Override
public SoundEvent getMainEvent() { public SoundEvent getMainEvent() {
return compiledEvents.get(0) return compiledEvents.get(0)
.getFirst(); .event().get();
} }
protected String getIdOf(int i) { protected ResourceLocation getIdOf(int i) {
return i == 0 ? id.getPath() : id.getPath() + "_compounded_" + i; return new ResourceLocation(id.getNamespace(), i == 0 ? id.getPath() : id.getPath() + "_compounded_" + i);
} }
@Override @Override
public void write(JsonObject json) { public void write(JsonObject json) {
for (int i = 0; i < wrappedEvents.size(); i++) { for (int i = 0; i < wrappedEvents.size(); i++) {
Pair<SoundEvent, Couple<Float>> pair = wrappedEvents.get(i); ConfiguredSoundEvent event = wrappedEvents.get(i);
JsonObject entry = new JsonObject(); JsonObject entry = new JsonObject();
JsonArray list = new JsonArray(); JsonArray list = new JsonArray();
JsonObject s = new JsonObject(); JsonObject s = new JsonObject();
s.addProperty("name", pair.getFirst() s.addProperty("name", event.event()
.get()
.getLocation() .getLocation()
.toString()); .toString());
s.addProperty("type", "event"); s.addProperty("type", "event");
@ -585,33 +596,35 @@ public class AllSoundEvents {
entry.add("sounds", list); entry.add("sounds", list);
if (i == 0 && hasSubtitle()) if (i == 0 && hasSubtitle())
entry.addProperty("subtitle", getSubtitleKey()); entry.addProperty("subtitle", getSubtitleKey());
json.add(getIdOf(i), entry); json.add(getIdOf(i).getPath(), entry);
} }
} }
@Override @Override
public void play(Level world, Player entity, double x, double y, double z, float volume, float pitch) { public void play(Level world, Player entity, double x, double y, double z, float volume, float pitch) {
for (Pair<SoundEvent, Couple<Float>> pair : compiledEvents) { for (CompiledSoundEvent event : compiledEvents) {
Couple<Float> volPitch = pair.getSecond(); world.playSound(entity, x, y, z, event.event().get(), category, event.volume() * volume,
world.playSound(entity, x, y, z, pair.getFirst(), category, volPitch.getFirst() * volume, event.pitch() * pitch);
volPitch.getSecond() * pitch);
} }
} }
@Override @Override
public void playAt(Level world, double x, double y, double z, float volume, float pitch, boolean fade) { public void playAt(Level world, double x, double y, double z, float volume, float pitch, boolean fade) {
for (Pair<SoundEvent, Couple<Float>> pair : compiledEvents) { for (CompiledSoundEvent event : compiledEvents) {
Couple<Float> volPitch = pair.getSecond(); world.playLocalSound(x, y, z, event.event().get(), category, event.volume() * volume,
world.playLocalSound(x, y, z, pair.getFirst(), category, volPitch.getFirst() * volume, event.pitch() * pitch, fade);
volPitch.getSecond() * pitch, fade);
} }
} }
private record CompiledSoundEvent(RegistryObject<SoundEvent> event, float volume, float pitch) {
}
} }
private static class CustomSoundEntry extends SoundEntry { private static class CustomSoundEntry extends SoundEntry {
protected List<ResourceLocation> variants; protected List<ResourceLocation> variants;
protected SoundEvent event; protected RegistryObject<SoundEvent> event;
public CustomSoundEntry(ResourceLocation id, List<ResourceLocation> variants, String subtitle, public CustomSoundEntry(ResourceLocation id, List<ResourceLocation> variants, String subtitle,
SoundSource category, int attenuationDistance) { SoundSource category, int attenuationDistance) {
@ -621,17 +634,18 @@ public class AllSoundEvents {
@Override @Override
public void prepare() { public void prepare() {
event = new SoundEvent(id).setRegistryName(id); event = RegistryObject.create(id, ForgeRegistries.SOUND_EVENTS);
} }
@Override @Override
public void register(IForgeRegistry<SoundEvent> registry) { public void register(IForgeRegistry<SoundEvent> registry) {
registry.register(event); ResourceLocation location = event.getId();
registry.register(new SoundEvent(location).setRegistryName(location));
} }
@Override @Override
public SoundEvent getMainEvent() { public SoundEvent getMainEvent() {
return event; return event.get();
} }
@Override @Override
@ -663,12 +677,12 @@ public class AllSoundEvents {
@Override @Override
public void play(Level world, Player entity, double x, double y, double z, float volume, float pitch) { public void play(Level world, Player entity, double x, double y, double z, float volume, float pitch) {
world.playSound(entity, x, y, z, event, category, volume, pitch); world.playSound(entity, x, y, z, event.get(), category, volume, pitch);
} }
@Override @Override
public void playAt(Level world, double x, double y, double z, float volume, float pitch, boolean fade) { public void playAt(Level world, double x, double y, double z, float volume, float pitch, boolean fade) {
world.playLocalSound(x, y, z, event, category, volume, pitch, fade); world.playLocalSound(x, y, z, event.get(), category, volume, pitch, fade);
} }
} }

View file

@ -0,0 +1,19 @@
package com.simibubi.create;
import com.simibubi.create.content.schematics.SchematicProcessor;
import net.minecraft.core.Registry;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
public class AllStructureProcessorTypes {
private static final DeferredRegister<StructureProcessorType<?>> REGISTER = DeferredRegister.create(Registry.STRUCTURE_PROCESSOR_REGISTRY, Create.ID);
public static final RegistryObject<StructureProcessorType<SchematicProcessor>> SCHEMATIC = REGISTER.register("schematic", () -> () -> SchematicProcessor.CODEC);
public static void register(IEventBus modEventBus) {
REGISTER.register(modEventBus);
}
}

View file

@ -112,9 +112,11 @@ public class AllTags {
public enum AllBlockTags { public enum AllBlockTags {
BRITTLE, BRITTLE,
FAN_HEATERS, CASING,
FAN_TRANSPARENT, FAN_TRANSPARENT,
NON_MOVABLE,
ORE_OVERRIDE_STONE, ORE_OVERRIDE_STONE,
PASSIVE_BOILER_HEATERS,
SAFE_NBT, SAFE_NBT,
SEATS, SEATS,
TOOLBOXES, TOOLBOXES,
@ -122,10 +124,7 @@ public class AllTags {
WINDMILL_SAILS, WINDMILL_SAILS,
WINDOWABLE, WINDOWABLE,
WRENCH_PICKUP, WRENCH_PICKUP,
CASING, TREE_ATTACHMENTS,
NON_MOVABLE,
PASSIVE_BOILER_HEATERS,
RELOCATION_NOT_SUPPORTED(FORGE), RELOCATION_NOT_SUPPORTED(FORGE),
WG_STONE(FORGE), WG_STONE(FORGE),
@ -208,10 +207,13 @@ public class AllTags {
BLAZE_BURNER_FUEL_REGULAR(MOD, "blaze_burner_fuel/regular"), BLAZE_BURNER_FUEL_REGULAR(MOD, "blaze_burner_fuel/regular"),
BLAZE_BURNER_FUEL_SPECIAL(MOD, "blaze_burner_fuel/special"), BLAZE_BURNER_FUEL_SPECIAL(MOD, "blaze_burner_fuel/special"),
CASING,
CREATE_INGOTS, CREATE_INGOTS,
CRUSHED_ORES, CRUSHED_ORES,
PRESSURIZED_AIR_SOURCES,
SANDPAPER, SANDPAPER,
SEATS, SEATS,
SLEEPERS,
TOOLBOXES, TOOLBOXES,
UPRIGHT_ON_BELT, UPRIGHT_ON_BELT,
VALVE_HANDLES, VALVE_HANDLES,
@ -219,8 +221,6 @@ public class AllTags {
VANILLA_STRIPPED_WOOD, VANILLA_STRIPPED_WOOD,
MODDED_STRIPPED_LOGS, MODDED_STRIPPED_LOGS,
MODDED_STRIPPED_WOOD, MODDED_STRIPPED_WOOD,
CASING,
SLEEPERS,
STRIPPED_LOGS(FORGE), STRIPPED_LOGS(FORGE),
STRIPPED_WOOD(FORGE), STRIPPED_WOOD(FORGE),
@ -401,10 +401,9 @@ public class AllTags {
AllBlockTags.FAN_TRANSPARENT.includeAll(BlockTags.CAMPFIRES); AllBlockTags.FAN_TRANSPARENT.includeAll(BlockTags.CAMPFIRES);
AllBlockTags.FAN_TRANSPARENT.add(Blocks.IRON_BARS); AllBlockTags.FAN_TRANSPARENT.add(Blocks.IRON_BARS);
AllBlockTags.FAN_HEATERS.includeAll(BlockTags.FIRE); AllBlockTags.PASSIVE_BOILER_HEATERS.includeAll(BlockTags.FIRE);
AllBlockTags.FAN_HEATERS.includeAll(BlockTags.CAMPFIRES); AllBlockTags.PASSIVE_BOILER_HEATERS.includeAll(BlockTags.CAMPFIRES);
AllBlockTags.FAN_HEATERS.add(Blocks.MAGMA_BLOCK, Blocks.LAVA); AllBlockTags.PASSIVE_BOILER_HEATERS.add(Blocks.MAGMA_BLOCK, Blocks.LAVA);
AllBlockTags.FAN_HEATERS.includeIn(AllBlockTags.PASSIVE_BOILER_HEATERS);
AllBlockTags.SAFE_NBT.includeAll(BlockTags.SIGNS); AllBlockTags.SAFE_NBT.includeAll(BlockTags.SIGNS);
AllBlockTags.SAFE_NBT.includeAll(BlockTags.BANNERS); AllBlockTags.SAFE_NBT.includeAll(BlockTags.BANNERS);
@ -414,7 +413,10 @@ public class AllTags {
AllBlockTags.WRENCH_PICKUP.includeAll(BlockTags.PRESSURE_PLATES); AllBlockTags.WRENCH_PICKUP.includeAll(BlockTags.PRESSURE_PLATES);
AllBlockTags.WRENCH_PICKUP.add(Blocks.REDSTONE_WIRE, Blocks.REDSTONE_TORCH, Blocks.REPEATER, Blocks.LEVER, AllBlockTags.WRENCH_PICKUP.add(Blocks.REDSTONE_WIRE, Blocks.REDSTONE_TORCH, Blocks.REPEATER, Blocks.LEVER,
Blocks.COMPARATOR, Blocks.OBSERVER, Blocks.REDSTONE_WALL_TORCH, Blocks.PISTON, Blocks.STICKY_PISTON, Blocks.COMPARATOR, Blocks.OBSERVER, Blocks.REDSTONE_WALL_TORCH, Blocks.PISTON, Blocks.STICKY_PISTON,
Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK, Blocks.DAYLIGHT_DETECTOR, Blocks.TARGET); Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK, Blocks.DAYLIGHT_DETECTOR, Blocks.TARGET, Blocks.HOPPER);
AllBlockTags.TREE_ATTACHMENTS.add(Blocks.BEE_NEST, Blocks.VINE, Blocks.MOSS_CARPET, Blocks.SHROOMLIGHT,
Blocks.COCOA);
AllBlockTags.ORE_OVERRIDE_STONE.includeAll(BlockTags.STONE_ORE_REPLACEABLES); AllBlockTags.ORE_OVERRIDE_STONE.includeAll(BlockTags.STONE_ORE_REPLACEABLES);

View file

@ -20,7 +20,7 @@ import com.simibubi.create.content.logistics.block.display.AllDisplayBehaviours;
import com.simibubi.create.content.logistics.block.mechanicalArm.AllArmInteractionPointTypes; import com.simibubi.create.content.logistics.block.mechanicalArm.AllArmInteractionPointTypes;
import com.simibubi.create.content.logistics.trains.GlobalRailwayManager; import com.simibubi.create.content.logistics.trains.GlobalRailwayManager;
import com.simibubi.create.content.palettes.AllPaletteBlocks; import com.simibubi.create.content.palettes.AllPaletteBlocks;
import com.simibubi.create.content.schematics.SchematicProcessor; import com.simibubi.create.content.palettes.PalettesItemGroup;
import com.simibubi.create.content.schematics.ServerSchematicLoader; import com.simibubi.create.content.schematics.ServerSchematicLoader;
import com.simibubi.create.content.schematics.filtering.SchematicInstances; import com.simibubi.create.content.schematics.filtering.SchematicInstances;
import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.advancement.AllAdvancements;
@ -28,6 +28,7 @@ import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.block.CopperRegistries; import com.simibubi.create.foundation.block.CopperRegistries;
import com.simibubi.create.foundation.command.ServerLagger; import com.simibubi.create.foundation.command.ServerLagger;
import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.ContraptionMovementSetting;
import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.data.CreateRegistrate;
import com.simibubi.create.foundation.data.LangMerger; import com.simibubi.create.foundation.data.LangMerger;
import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen; import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen;
@ -36,17 +37,21 @@ import com.simibubi.create.foundation.data.recipe.SequencedAssemblyRecipeGen;
import com.simibubi.create.foundation.data.recipe.StandardRecipeGen; import com.simibubi.create.foundation.data.recipe.StandardRecipeGen;
import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.ponder.CreatePonderPlugin; import com.simibubi.create.foundation.ponder.CreatePonderPlugin;
import com.simibubi.create.foundation.worldgen.AllWorldFeatures; import com.simibubi.create.foundation.utility.CreateRegistry;
import com.simibubi.create.foundation.worldgen.AllFeatures;
import com.simibubi.create.foundation.worldgen.AllOreFeatureConfigEntries;
import com.simibubi.create.foundation.worldgen.AllPlacementModifiers;
import com.simibubi.create.foundation.worldgen.BuiltinRegistration;
import com.tterrag.registrate.util.nullness.NonNullSupplier; import com.tterrag.registrate.util.nullness.NonNullSupplier;
import net.createmod.catnip.utility.lang.LangBuilder;
import net.createmod.ponder.foundation.PonderIndex; import net.createmod.ponder.foundation.PonderIndex;
import net.minecraft.core.particles.ParticleType;
import net.minecraft.data.DataGenerator; import net.minecraft.data.DataGenerator;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level;
import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.ForgeMod; import net.minecraftforge.common.ForgeMod;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@ -58,14 +63,13 @@ import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; import net.minecraftforge.forge.event.lifecycle.GatherDataEvent;
import net.minecraftforge.registries.DataSerializerEntry;
@Mod(Create.ID) @Mod(Create.ID)
public class Create { public class Create {
public static final String ID = "create"; public static final String ID = "create";
public static final String NAME = "Create"; public static final String NAME = "Create";
public static final String VERSION = "0.5c"; public static final String VERSION = "0.5e";
public static final Logger LOGGER = LogManager.getLogger(); public static final Logger LOGGER = LogManager.getLogger();
@ -74,13 +78,15 @@ public class Create {
.create(); .create();
public static final CreativeModeTab BASE_CREATIVE_TAB = new CreateItemGroup(); public static final CreativeModeTab BASE_CREATIVE_TAB = new CreateItemGroup();
// public static final CreativeModeTab PALETTES_CREATIVE_TAB = new PalettesItemGroup(); public static final CreativeModeTab PALETTES_CREATIVE_TAB = new PalettesItemGroup();
public static final ServerSchematicLoader SCHEMATIC_RECEIVER = new ServerSchematicLoader(); public static final ServerSchematicLoader SCHEMATIC_RECEIVER = new ServerSchematicLoader();
public static final RedstoneLinkNetworkHandler REDSTONE_LINK_NETWORK_HANDLER = new RedstoneLinkNetworkHandler(); public static final RedstoneLinkNetworkHandler REDSTONE_LINK_NETWORK_HANDLER = new RedstoneLinkNetworkHandler();
public static final TorquePropagator TORQUE_PROPAGATOR = new TorquePropagator(); public static final TorquePropagator TORQUE_PROPAGATOR = new TorquePropagator();
public static final GlobalRailwayManager RAILWAYS = new GlobalRailwayManager(); public static final GlobalRailwayManager RAILWAYS = new GlobalRailwayManager();
public static final ServerLagger LAGGER = new ServerLagger(); public static final ServerLagger LAGGER = new ServerLagger();
/** Use the {@link Random} of a local {@link Level} or {@link Entity} or create one */
@Deprecated
public static final Random RANDOM = new Random(); public static final Random RANDOM = new Random();
private static final NonNullSupplier<CreateRegistrate> REGISTRATE = CreateRegistrate.lazy(ID); private static final NonNullSupplier<CreateRegistrate> REGISTRATE = CreateRegistrate.lazy(ID);
@ -92,6 +98,10 @@ public class Create {
public static void onCtor() { public static void onCtor() {
ModLoadingContext modLoadingContext = ModLoadingContext.get(); ModLoadingContext modLoadingContext = ModLoadingContext.get();
IEventBus modEventBus = FMLJavaModLoadingContext.get()
.getModEventBus();
IEventBus forgeEventBus = MinecraftForge.EVENT_BUS;
AllSoundEvents.prepare(); AllSoundEvents.prepare();
AllBlocks.register(); AllBlocks.register();
AllItems.register(); AllItems.register();
@ -101,30 +111,31 @@ public class Create {
AllContainerTypes.register(); AllContainerTypes.register();
AllEntityTypes.register(); AllEntityTypes.register();
AllTileEntities.register(); AllTileEntities.register();
AllEnchantments.register();
AllRecipeTypes.register(modEventBus);
AllParticleTypes.register(modEventBus);
AllStructureProcessorTypes.register(modEventBus);
AllEntityDataSerializers.register(modEventBus);
AllOreFeatureConfigEntries.init();
AllFeatures.register(modEventBus);
AllPlacementModifiers.register(modEventBus);
BuiltinRegistration.register(modEventBus);
AllConfigs.register(modLoadingContext);
AllMovementBehaviours.registerDefaults(); AllMovementBehaviours.registerDefaults();
AllInteractionBehaviours.registerDefaults(); AllInteractionBehaviours.registerDefaults();
AllDisplayBehaviours.registerDefaults(); AllDisplayBehaviours.registerDefaults();
ContraptionMovementSetting.registerDefaults();
AllArmInteractionPointTypes.register(); AllArmInteractionPointTypes.register();
AllWorldFeatures.register(); BlockSpoutingBehaviour.registerDefaults();
AllEnchantments.register();
AllConfigs.register(modLoadingContext);
BlockSpoutingBehaviour.register();
ForgeMod.enableMilkFluid(); ForgeMod.enableMilkFluid();
CopperRegistries.inject(); CopperRegistries.inject();
IEventBus modEventBus = FMLJavaModLoadingContext.get()
.getModEventBus();
IEventBus forgeEventBus = MinecraftForge.EVENT_BUS;
modEventBus.addListener(Create::init); modEventBus.addListener(Create::init);
modEventBus.addListener(EventPriority.LOWEST, Create::gatherData); modEventBus.addListener(EventPriority.LOWEST, Create::gatherData);
modEventBus.addGenericListener(Feature.class, AllWorldFeatures::registerOreFeatures);
modEventBus.addGenericListener(RecipeSerializer.class, AllRecipeTypes::register);
modEventBus.addGenericListener(ParticleType.class, AllParticleTypes::register);
modEventBus.addGenericListener(SoundEvent.class, AllSoundEvents::register); modEventBus.addGenericListener(SoundEvent.class, AllSoundEvents::register);
modEventBus.addGenericListener(DataSerializerEntry.class, AllEntityDataSerializers::register);
forgeEventBus.addListener(EventPriority.HIGH, SlidingDoorBlock::stopItQuark); forgeEventBus.addListener(EventPriority.HIGH, SlidingDoorBlock::stopItQuark);
@ -134,6 +145,7 @@ public class Create {
} }
public static void init(final FMLCommonSetupEvent event) { public static void init(final FMLCommonSetupEvent event) {
CreateRegistry.unwrapAll();
AllPackets.registerPackets(); AllPackets.registerPackets();
SchematicInstances.register(); SchematicInstances.register();
BuiltinPotatoProjectileTypes.register(); BuiltinPotatoProjectileTypes.register();
@ -141,30 +153,35 @@ public class Create {
event.enqueueWork(() -> { event.enqueueWork(() -> {
AllAdvancements.register(); AllAdvancements.register();
AllTriggers.register(); AllTriggers.register();
SchematicProcessor.register();
AllWorldFeatures.registerFeatures();
AllWorldFeatures.registerPlacementTypes();
BoilerHeaters.registerDefaults(); BoilerHeaters.registerDefaults();
}); });
} }
public static void gatherData(GatherDataEvent event) { public static void gatherData(GatherDataEvent event) {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> PonderIndex.addPlugin(new CreatePonderPlugin()));
DataGenerator gen = event.getGenerator(); DataGenerator gen = event.getGenerator();
gen.addProvider(new AllAdvancements(gen)); if (event.includeClient()) {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> PonderIndex.addPlugin(new CreatePonderPlugin()));
gen.addProvider(new LangMerger(gen)); gen.addProvider(new LangMerger(gen));
gen.addProvider(AllSoundEvents.provider(gen)); gen.addProvider(AllSoundEvents.provider(gen));
}
if (event.includeServer()) {
gen.addProvider(new AllAdvancements(gen));
gen.addProvider(new StandardRecipeGen(gen)); gen.addProvider(new StandardRecipeGen(gen));
gen.addProvider(new MechanicalCraftingRecipeGen(gen)); gen.addProvider(new MechanicalCraftingRecipeGen(gen));
gen.addProvider(new SequencedAssemblyRecipeGen(gen)); gen.addProvider(new SequencedAssemblyRecipeGen(gen));
ProcessingRecipeGen.registerAll(gen); ProcessingRecipeGen.registerAll(gen);
// AllOreFeatureConfigEntries.gatherData(event);
}
} }
public static CreateRegistrate registrate() { public static CreateRegistrate registrate() {
return REGISTRATE.get(); return REGISTRATE.get();
} }
public static LangBuilder lang() {
return new LangBuilder(ID);
}
public static ResourceLocation asResource(String path) { public static ResourceLocation asResource(String path) {
return new ResourceLocation(ID, path); return new ResourceLocation(ID, path);
} }

View file

@ -29,24 +29,22 @@ import com.simibubi.create.foundation.render.CachedPartialBuffers;
import com.simibubi.create.foundation.render.CreateContexts; import com.simibubi.create.foundation.render.CreateContexts;
import com.simibubi.create.foundation.render.FlwSuperBufferFactory; import com.simibubi.create.foundation.render.FlwSuperBufferFactory;
import com.simibubi.create.foundation.utility.ModelSwapper; import com.simibubi.create.foundation.utility.ModelSwapper;
import com.simibubi.create.foundation.utility.ShippedResourcePacks;
import net.createmod.catnip.config.ui.BaseConfigScreen; import net.createmod.catnip.config.ui.BaseConfigScreen;
import net.createmod.catnip.config.ui.ConfigScreen; import net.createmod.catnip.config.ui.ConfigScreen;
import net.createmod.catnip.render.SuperBufferFactory; import net.createmod.catnip.render.SuperBufferFactory;
import net.createmod.catnip.render.SuperByteBufferCache; import net.createmod.catnip.render.SuperByteBufferCache;
import net.createmod.catnip.utility.lang.Components;
import net.createmod.ponder.foundation.PonderIndex; import net.createmod.ponder.foundation.PonderIndex;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.client.GraphicsStatus; import net.minecraft.client.GraphicsStatus;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.Screen;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.network.chat.ChatType;
import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.ClickEvent;
import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.ComponentUtils;
import net.minecraft.network.chat.HoverEvent; import net.minecraft.network.chat.HoverEvent;
import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TextComponent;
import net.minecraftforge.client.gui.ForgeIngameGui; import net.minecraftforge.client.gui.ForgeIngameGui;
import net.minecraftforge.client.gui.OverlayRegistry; import net.minecraftforge.client.gui.OverlayRegistry;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
@ -89,10 +87,7 @@ public class CreateClient {
SuperByteBufferCache.getInstance().registerCompartment(KineticTileEntityRenderer.KINETIC_TILE); SuperByteBufferCache.getInstance().registerCompartment(KineticTileEntityRenderer.KINETIC_TILE);
SuperByteBufferCache.getInstance().registerCompartment(SBBContraptionManager.CONTRAPTION, 20); SuperByteBufferCache.getInstance().registerCompartment(SBBContraptionManager.CONTRAPTION, 20);
ShippedResourcePacks.extractFiles("Copper Legacy Pack");
AllKeys.register(); AllKeys.register();
// AllFluids.assignRenderLayers();
AllBlockPartials.init(); AllBlockPartials.init();
AllStitchedTextures.init(); AllStitchedTextures.init();
@ -150,16 +145,16 @@ public class CreateClient {
if (AllConfigs.CLIENT.ignoreFabulousWarning.get()) if (AllConfigs.CLIENT.ignoreFabulousWarning.get())
return; return;
MutableComponent text = ComponentUtils.wrapInSquareBrackets(new TextComponent("WARN")) MutableComponent text = ComponentUtils.wrapInSquareBrackets(Components.literal("WARN"))
.withStyle(ChatFormatting.GOLD) .withStyle(ChatFormatting.GOLD)
.append(new TextComponent( .append(Components.literal(
" Some of Create's visual features will not be available while Fabulous graphics are enabled!")) " Some of Create's visual features will not be available while Fabulous graphics are enabled!"))
.withStyle(style -> style .withStyle(style -> style
.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/create dismissFabulousWarning")) .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/create dismissFabulousWarning"))
.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
new TextComponent("Click here to disable this warning")))); Components.literal("Click here to disable this warning"))));
mc.gui.handleChat(ChatType.CHAT, text, mc.player.getUUID()); mc.player.displayClientMessage(text, false);
} }
} }

View file

@ -1,6 +1,7 @@
package com.simibubi.create.api.behaviour; package com.simibubi.create.api.behaviour;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.simibubi.create.Create; import com.simibubi.create.Create;
@ -14,7 +15,7 @@ import net.minecraftforge.fluids.FluidStack;
public abstract class BlockSpoutingBehaviour { public abstract class BlockSpoutingBehaviour {
private static final HashMap<ResourceLocation, BlockSpoutingBehaviour> BLOCK_SPOUTING_BEHAVIOURS = new HashMap<>(); private static final Map<ResourceLocation, BlockSpoutingBehaviour> BLOCK_SPOUTING_BEHAVIOURS = new HashMap<>();
public static void addCustomSpoutInteraction(ResourceLocation resourceLocation, public static void addCustomSpoutInteraction(ResourceLocation resourceLocation,
BlockSpoutingBehaviour movementBehaviour) { BlockSpoutingBehaviour movementBehaviour) {
@ -45,7 +46,7 @@ public abstract class BlockSpoutingBehaviour {
public abstract int fillBlock(Level world, BlockPos pos, SpoutTileEntity spout, FluidStack availableFluid, public abstract int fillBlock(Level world, BlockPos pos, SpoutTileEntity spout, FluidStack availableFluid,
boolean simulate); boolean simulate);
public static void register() { public static void registerDefaults() {
addCustomSpoutInteraction(Create.asResource("ticon_casting"), new SpoutCasting()); addCustomSpoutInteraction(Create.asResource("ticon_casting"), new SpoutCasting());
} }

View file

@ -2,6 +2,7 @@ package com.simibubi.create.compat.jei;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Consumer; import java.util.function.Consumer;
@ -40,14 +41,24 @@ import com.simibubi.create.compat.jei.category.SawingCategory;
import com.simibubi.create.compat.jei.category.SequencedAssemblyCategory; import com.simibubi.create.compat.jei.category.SequencedAssemblyCategory;
import com.simibubi.create.compat.jei.category.SpoutCategory; import com.simibubi.create.compat.jei.category.SpoutCategory;
import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe;
import com.simibubi.create.content.contraptions.components.crusher.AbstractCrushingRecipe;
import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe;
import com.simibubi.create.content.contraptions.components.deployer.ManualApplicationRecipe; import com.simibubi.create.content.contraptions.components.deployer.ManualApplicationRecipe;
import com.simibubi.create.content.contraptions.components.fan.HauntingRecipe;
import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe;
import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity;
import com.simibubi.create.content.contraptions.components.press.PressingRecipe;
import com.simibubi.create.content.contraptions.components.saw.CuttingRecipe;
import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; import com.simibubi.create.content.contraptions.components.saw.SawTileEntity;
import com.simibubi.create.content.contraptions.fluids.actors.FillingRecipe;
import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid;
import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipes; import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipes;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
import com.simibubi.create.content.contraptions.processing.BasinRecipe; import com.simibubi.create.content.contraptions.processing.BasinRecipe;
import com.simibubi.create.content.contraptions.processing.EmptyingRecipe;
import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe;
import com.simibubi.create.content.curiosities.tools.BlueprintScreen; import com.simibubi.create.content.curiosities.tools.BlueprintScreen;
import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe;
import com.simibubi.create.content.logistics.item.LinkedControllerScreen; import com.simibubi.create.content.logistics.item.LinkedControllerScreen;
import com.simibubi.create.content.logistics.item.filter.AbstractFilterScreen; import com.simibubi.create.content.logistics.item.filter.AbstractFilterScreen;
import com.simibubi.create.content.logistics.trains.management.schedule.ScheduleScreen; import com.simibubi.create.content.logistics.trains.management.schedule.ScheduleScreen;
@ -55,11 +66,14 @@ import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.CRecipes; import com.simibubi.create.foundation.config.CRecipes;
import com.simibubi.create.foundation.data.recipe.LogStrippingFakeRecipes; import com.simibubi.create.foundation.data.recipe.LogStrippingFakeRecipes;
import com.simibubi.create.foundation.gui.container.AbstractSimiContainerScreen; import com.simibubi.create.foundation.gui.container.AbstractSimiContainerScreen;
import com.simibubi.create.foundation.utility.CreateLang;
import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo; import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo;
import mezz.jei.api.IModPlugin; import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin; import mezz.jei.api.JeiPlugin;
import mezz.jei.api.constants.RecipeTypes; import mezz.jei.api.constants.RecipeTypes;
import mezz.jei.api.forge.ForgeTypes;
import mezz.jei.api.gui.drawable.IDrawable;
import mezz.jei.api.recipe.category.IRecipeCategory; import mezz.jei.api.recipe.category.IRecipeCategory;
import mezz.jei.api.registration.IGuiHandlerRegistration; import mezz.jei.api.registration.IGuiHandlerRegistration;
import mezz.jei.api.registration.IRecipeCatalystRegistration; import mezz.jei.api.registration.IRecipeCatalystRegistration;
@ -73,10 +87,13 @@ import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items; import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.AbstractCookingRecipe;
import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.CraftingRecipe;
import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.item.crafting.SmokingRecipe;
import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.Blocks;
import net.minecraftforge.common.crafting.IShapedRecipe; import net.minecraftforge.common.crafting.IShapedRecipe;
import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModList;
@ -87,60 +104,76 @@ public class CreateJEI implements IModPlugin {
private static final ResourceLocation ID = Create.asResource("jei_plugin"); private static final ResourceLocation ID = Create.asResource("jei_plugin");
public IIngredientManager ingredientManager;
private final List<CreateRecipeCategory<?>> allCategories = new ArrayList<>(); private final List<CreateRecipeCategory<?>> allCategories = new ArrayList<>();
private IIngredientManager ingredientManager;
private void loadCategories() { private void loadCategories() {
allCategories.clear(); allCategories.clear();
CreateRecipeCategory<?> CreateRecipeCategory<?>
milling = register("milling", MillingCategory::new) milling = builder(AbstractCrushingRecipe.class)
.addTypedRecipes(AllRecipeTypes.MILLING) .addTypedRecipes(AllRecipeTypes.MILLING)
.catalyst(AllBlocks.MILLSTONE::get) .catalyst(AllBlocks.MILLSTONE::get)
.build(), .doubleItemIcon(AllBlocks.MILLSTONE.get(), AllItems.WHEAT_FLOUR.get())
.emptyBackground(177, 53)
.build("milling", MillingCategory::new),
crushing = register("crushing", CrushingCategory::new) crushing = builder(AbstractCrushingRecipe.class)
.addTypedRecipes(AllRecipeTypes.CRUSHING) .addTypedRecipes(AllRecipeTypes.CRUSHING)
.addTypedRecipesExcluding(AllRecipeTypes.MILLING::getType, AllRecipeTypes.CRUSHING::getType) .addTypedRecipesExcluding(AllRecipeTypes.MILLING::getType, AllRecipeTypes.CRUSHING::getType)
.catalyst(AllBlocks.CRUSHING_WHEEL::get) .catalyst(AllBlocks.CRUSHING_WHEEL::get)
.build(), .doubleItemIcon(AllBlocks.CRUSHING_WHEEL.get(), AllItems.CRUSHED_GOLD.get())
.emptyBackground(177, 100)
.build("crushing", CrushingCategory::new),
pressing = register("pressing", PressingCategory::new) pressing = builder(PressingRecipe.class)
.addTypedRecipes(AllRecipeTypes.PRESSING) .addTypedRecipes(AllRecipeTypes.PRESSING)
.catalyst(AllBlocks.MECHANICAL_PRESS::get) .catalyst(AllBlocks.MECHANICAL_PRESS::get)
.build(), .doubleItemIcon(AllBlocks.MECHANICAL_PRESS.get(), AllItems.IRON_SHEET.get())
.emptyBackground(177, 70)
.build("pressing", PressingCategory::new),
washing = register("fan_washing", FanWashingCategory::new) washing = builder(SplashingRecipe.class)
.addTypedRecipes(AllRecipeTypes.SPLASHING) .addTypedRecipes(AllRecipeTypes.SPLASHING)
.catalystStack(ProcessingViaFanCategory.getFan("fan_washing")) .catalystStack(ProcessingViaFanCategory.getFan("fan_washing"))
.build(), .doubleItemIcon(AllItems.PROPELLER.get(), Items.WATER_BUCKET)
.emptyBackground(178, 72)
.build("fan_washing", FanWashingCategory::new),
smoking = register("fan_smoking", FanSmokingCategory::new) smoking = builder(SmokingRecipe.class)
.addTypedRecipes(() -> RecipeType.SMOKING) .addTypedRecipes(() -> RecipeType.SMOKING)
.catalystStack(ProcessingViaFanCategory.getFan("fan_smoking")) .catalystStack(ProcessingViaFanCategory.getFan("fan_smoking"))
.build(), .doubleItemIcon(AllItems.PROPELLER.get(), Items.CAMPFIRE)
.emptyBackground(178, 72)
.build("fan_smoking", FanSmokingCategory::new),
blasting = register("fan_blasting", FanBlastingCategory::new) blasting = builder(AbstractCookingRecipe.class)
.addTypedRecipesExcluding(() -> RecipeType.SMELTING, () -> RecipeType.BLASTING) .addTypedRecipesExcluding(() -> RecipeType.SMELTING, () -> RecipeType.BLASTING)
.addTypedRecipes(() -> RecipeType.BLASTING) .addTypedRecipes(() -> RecipeType.BLASTING)
.removeRecipes(() -> RecipeType.SMOKING) .removeRecipes(() -> RecipeType.SMOKING)
.catalystStack(ProcessingViaFanCategory.getFan("fan_blasting")) .catalystStack(ProcessingViaFanCategory.getFan("fan_blasting"))
.build(), .doubleItemIcon(AllItems.PROPELLER.get(), Items.LAVA_BUCKET)
.emptyBackground(178, 72)
.build("fan_blasting", FanBlastingCategory::new),
haunting = register("fan_haunting", FanHauntingCategory::new).addTypedRecipes(AllRecipeTypes.HAUNTING) haunting = builder(HauntingRecipe.class)
.addTypedRecipes(AllRecipeTypes.HAUNTING)
.catalystStack(ProcessingViaFanCategory.getFan("fan_haunting")) .catalystStack(ProcessingViaFanCategory.getFan("fan_haunting"))
.build(), .doubleItemIcon(AllItems.PROPELLER.get(), Items.SOUL_CAMPFIRE)
.emptyBackground(178, 72)
.build("fan_haunting", FanHauntingCategory::new),
mixing = register("mixing", MixingCategory::standard).addTypedRecipes(AllRecipeTypes.MIXING) mixing = builder(BasinRecipe.class)
.addTypedRecipes(AllRecipeTypes.MIXING)
.catalyst(AllBlocks.MECHANICAL_MIXER::get) .catalyst(AllBlocks.MECHANICAL_MIXER::get)
.catalyst(AllBlocks.BASIN::get) .catalyst(AllBlocks.BASIN::get)
.build(), .doubleItemIcon(AllBlocks.MECHANICAL_MIXER.get(), AllBlocks.BASIN.get())
.emptyBackground(177, 103)
.build("mixing", MixingCategory::standard),
seqAssembly = register("sequenced_assembly", SequencedAssemblyCategory::new) autoShapeless = builder(BasinRecipe.class)
.addTypedRecipes(AllRecipeTypes.SEQUENCED_ASSEMBLY) .enableWhen(c -> c.allowShapelessInMixer)
.build(),
autoShapeless = register("automatic_shapeless", MixingCategory::autoShapeless)
.addAllRecipesIf(r -> r instanceof CraftingRecipe && !(r instanceof IShapedRecipe<?>) .addAllRecipesIf(r -> r instanceof CraftingRecipe && !(r instanceof IShapedRecipe<?>)
&& r.getIngredients() && r.getIngredients()
.size() > 1 .size() > 1
@ -148,81 +181,107 @@ public class CreateJEI implements IModPlugin {
BasinRecipe::convertShapeless) BasinRecipe::convertShapeless)
.catalyst(AllBlocks.MECHANICAL_MIXER::get) .catalyst(AllBlocks.MECHANICAL_MIXER::get)
.catalyst(AllBlocks.BASIN::get) .catalyst(AllBlocks.BASIN::get)
.enableWhen(c -> c.allowShapelessInMixer) .doubleItemIcon(AllBlocks.MECHANICAL_MIXER.get(), Items.CRAFTING_TABLE)
.build(), .emptyBackground(177, 85)
.build("automatic_shapeless", MixingCategory::autoShapeless),
brewing = register("automatic_brewing", MixingCategory::autoBrewing).addRecipes(() -> PotionMixingRecipes.ALL) brewing = builder(BasinRecipe.class)
.enableWhen(c -> c.allowBrewingInMixer)
.addRecipes(() -> PotionMixingRecipes.ALL)
.catalyst(AllBlocks.MECHANICAL_MIXER::get) .catalyst(AllBlocks.MECHANICAL_MIXER::get)
.catalyst(AllBlocks.BASIN::get) .catalyst(AllBlocks.BASIN::get)
.build(), .doubleItemIcon(AllBlocks.MECHANICAL_MIXER.get(), Blocks.BREWING_STAND)
.emptyBackground(177, 103)
.build("automatic_brewing", MixingCategory::autoBrewing),
sawing = register("sawing", SawingCategory::new).addTypedRecipes(AllRecipeTypes.CUTTING) packing = builder(BasinRecipe.class)
.catalyst(AllBlocks.MECHANICAL_SAW::get) .addTypedRecipes(AllRecipeTypes.COMPACTING)
.build(),
blockCutting = register("block_cutting", () -> new BlockCuttingCategory(Items.STONE_BRICK_STAIRS))
.addRecipes(() -> CondensedBlockCuttingRecipe.condenseRecipes(getTypedRecipesExcluding(RecipeType.STONECUTTING, AllRecipeTypes::shouldIgnoreInAutomation)))
.catalyst(AllBlocks.MECHANICAL_SAW::get)
.enableWhen(c -> c.allowStonecuttingOnSaw)
.build(),
woodCutting = register("wood_cutting", () -> new BlockCuttingCategory(Items.OAK_STAIRS))
.addRecipes(() -> CondensedBlockCuttingRecipe.condenseRecipes(getTypedRecipesExcluding(SawTileEntity.woodcuttingRecipeType.get(), AllRecipeTypes::shouldIgnoreInAutomation)))
.catalyst(AllBlocks.MECHANICAL_SAW::get)
.enableWhenBool(c -> c.allowWoodcuttingOnSaw.get() && ModList.get()
.isLoaded("druidcraft"))
.build(),
packing = register("packing", PackingCategory::standard).addTypedRecipes(AllRecipeTypes.COMPACTING)
.catalyst(AllBlocks.MECHANICAL_PRESS::get) .catalyst(AllBlocks.MECHANICAL_PRESS::get)
.catalyst(AllBlocks.BASIN::get) .catalyst(AllBlocks.BASIN::get)
.build(), .doubleItemIcon(AllBlocks.MECHANICAL_PRESS.get(), AllBlocks.BASIN.get())
.emptyBackground(177, 103)
.build("packing", PackingCategory::standard),
autoSquare = register("automatic_packing", PackingCategory::autoSquare) autoSquare = builder(BasinRecipe.class)
.enableWhen(c -> c.allowShapedSquareInPress)
.addAllRecipesIf( .addAllRecipesIf(
r -> (r instanceof CraftingRecipe) && !(r instanceof MechanicalCraftingRecipe) r -> (r instanceof CraftingRecipe) && !(r instanceof MechanicalCraftingRecipe)
&& MechanicalPressTileEntity.canCompress(r) && !AllRecipeTypes.shouldIgnoreInAutomation(r), && MechanicalPressTileEntity.canCompress(r) && !AllRecipeTypes.shouldIgnoreInAutomation(r),
BasinRecipe::convertShapeless) BasinRecipe::convertShapeless)
.catalyst(AllBlocks.MECHANICAL_PRESS::get) .catalyst(AllBlocks.MECHANICAL_PRESS::get)
.catalyst(AllBlocks.BASIN::get) .catalyst(AllBlocks.BASIN::get)
.enableWhen(c -> c.allowShapedSquareInPress) .doubleItemIcon(AllBlocks.MECHANICAL_PRESS.get(), Blocks.CRAFTING_TABLE)
.build(), .emptyBackground(177, 85)
.build("automatic_packing", PackingCategory::autoSquare),
polishing = register("sandpaper_polishing", PolishingCategory::new) sawing = builder(CuttingRecipe.class)
.addTypedRecipes(AllRecipeTypes.CUTTING)
.catalyst(AllBlocks.MECHANICAL_SAW::get)
.doubleItemIcon(AllBlocks.MECHANICAL_SAW.get(), Items.OAK_LOG)
.emptyBackground(177, 70)
.build("sawing", SawingCategory::new),
blockCutting = builder(CondensedBlockCuttingRecipe.class)
.enableWhen(c -> c.allowStonecuttingOnSaw)
.addRecipes(() -> CondensedBlockCuttingRecipe.condenseRecipes(getTypedRecipesExcluding(RecipeType.STONECUTTING, AllRecipeTypes::shouldIgnoreInAutomation)))
.catalyst(AllBlocks.MECHANICAL_SAW::get)
.doubleItemIcon(AllBlocks.MECHANICAL_SAW.get(), Items.STONE_BRICK_STAIRS)
.emptyBackground(177, 70)
.build("block_cutting", BlockCuttingCategory::new),
woodCutting = builder(CondensedBlockCuttingRecipe.class)
.enableIf(c -> c.allowWoodcuttingOnSaw.get() && ModList.get()
.isLoaded("druidcraft"))
.addRecipes(() -> CondensedBlockCuttingRecipe.condenseRecipes(getTypedRecipesExcluding(SawTileEntity.woodcuttingRecipeType.get(), AllRecipeTypes::shouldIgnoreInAutomation)))
.catalyst(AllBlocks.MECHANICAL_SAW::get)
.doubleItemIcon(AllBlocks.MECHANICAL_SAW.get(), Items.OAK_STAIRS)
.emptyBackground(177, 70)
.build("wood_cutting", BlockCuttingCategory::new),
polishing = builder(SandPaperPolishingRecipe.class)
.addTypedRecipes(AllRecipeTypes.SANDPAPER_POLISHING) .addTypedRecipes(AllRecipeTypes.SANDPAPER_POLISHING)
.catalyst(AllItems.SAND_PAPER::get) .catalyst(AllItems.SAND_PAPER::get)
.catalyst(AllItems.RED_SAND_PAPER::get) .catalyst(AllItems.RED_SAND_PAPER::get)
.build(), .itemIcon(AllItems.SAND_PAPER.get())
.emptyBackground(177, 55)
.build("sandpaper_polishing", PolishingCategory::new),
item_application = register("item_application", ItemApplicationCategory::new) item_application = builder(ItemApplicationRecipe.class)
.addTypedRecipes(AllRecipeTypes.ITEM_APPLICATION) .addTypedRecipes(AllRecipeTypes.ITEM_APPLICATION)
.addRecipes(LogStrippingFakeRecipes::createRecipes) .addRecipes(LogStrippingFakeRecipes::createRecipes)
.build(), .itemIcon(AllItems.BRASS_HAND.get())
.emptyBackground(177, 60)
.build("item_application", ItemApplicationCategory::new),
deploying = register("deploying", DeployingCategory::new).addTypedRecipes(AllRecipeTypes.DEPLOYING) deploying = builder(DeployerApplicationRecipe.class)
.addTypedRecipes(AllRecipeTypes.DEPLOYING)
.addTypedRecipes(AllRecipeTypes.SANDPAPER_POLISHING::getType, DeployerApplicationRecipe::convert) .addTypedRecipes(AllRecipeTypes.SANDPAPER_POLISHING::getType, DeployerApplicationRecipe::convert)
.addTypedRecipes(AllRecipeTypes.ITEM_APPLICATION::getType, ManualApplicationRecipe::asDeploying) .addTypedRecipes(AllRecipeTypes.ITEM_APPLICATION::getType, ManualApplicationRecipe::asDeploying)
.catalyst(AllBlocks.DEPLOYER::get) .catalyst(AllBlocks.DEPLOYER::get)
.catalyst(AllBlocks.DEPOT::get) .catalyst(AllBlocks.DEPOT::get)
.catalyst(AllItems.BELT_CONNECTOR::get) .catalyst(AllItems.BELT_CONNECTOR::get)
.build(), .itemIcon(AllBlocks.DEPLOYER.get())
.emptyBackground(177, 70)
.build("deploying", DeployingCategory::new),
mysteryConversion = register("mystery_conversion", MysteriousItemConversionCategory::new) spoutFilling = builder(FillingRecipe.class)
.addRecipes(() -> MysteriousItemConversionCategory.RECIPES) .addTypedRecipes(AllRecipeTypes.FILLING)
.build(),
spoutFilling = register("spout_filling", SpoutCategory::new).addTypedRecipes(AllRecipeTypes.FILLING)
.addRecipeListConsumer(recipes -> SpoutCategory.consumeRecipes(recipes::add, ingredientManager)) .addRecipeListConsumer(recipes -> SpoutCategory.consumeRecipes(recipes::add, ingredientManager))
.catalyst(AllBlocks.SPOUT::get) .catalyst(AllBlocks.SPOUT::get)
.build(), .doubleItemIcon(AllBlocks.SPOUT.get(), Items.WATER_BUCKET)
.emptyBackground(177, 70)
.build("spout_filling", SpoutCategory::new),
draining = register("draining", ItemDrainCategory::new) draining = builder(EmptyingRecipe.class)
.addRecipeListConsumer(recipes -> ItemDrainCategory.consumeRecipes(recipes::add, ingredientManager)) .addRecipeListConsumer(recipes -> ItemDrainCategory.consumeRecipes(recipes::add, ingredientManager))
.addTypedRecipes(AllRecipeTypes.EMPTYING) .addTypedRecipes(AllRecipeTypes.EMPTYING)
.catalyst(AllBlocks.ITEM_DRAIN::get) .catalyst(AllBlocks.ITEM_DRAIN::get)
.build(), .doubleItemIcon(AllBlocks.ITEM_DRAIN.get(), Items.WATER_BUCKET)
.emptyBackground(177, 50)
.build("draining", ItemDrainCategory::new),
autoShaped = register("automatic_shaped", MechanicalCraftingCategory::new) autoShaped = builder(CraftingRecipe.class)
.enableWhen(c -> c.allowRegularCraftingInCrafter)
.addAllRecipesIf(r -> r instanceof CraftingRecipe && !(r instanceof IShapedRecipe<?>) .addAllRecipesIf(r -> r instanceof CraftingRecipe && !(r instanceof IShapedRecipe<?>)
&& r.getIngredients() && r.getIngredients()
.size() == 1 .size() == 1
@ -230,18 +289,33 @@ public class CreateJEI implements IModPlugin {
.addTypedRecipesIf(() -> RecipeType.CRAFTING, .addTypedRecipesIf(() -> RecipeType.CRAFTING,
recipe -> recipe instanceof IShapedRecipe<?> && !AllRecipeTypes.shouldIgnoreInAutomation(recipe)) recipe -> recipe instanceof IShapedRecipe<?> && !AllRecipeTypes.shouldIgnoreInAutomation(recipe))
.catalyst(AllBlocks.MECHANICAL_CRAFTER::get) .catalyst(AllBlocks.MECHANICAL_CRAFTER::get)
.enableWhen(c -> c.allowRegularCraftingInCrafter) .itemIcon(AllBlocks.MECHANICAL_CRAFTER.get())
.build(), .emptyBackground(177, 107)
.build("automatic_shaped", MechanicalCraftingCategory::new),
mechanicalCrafting = register("mechanical_crafting", MechanicalCraftingCategory::new) mechanicalCrafting = builder(CraftingRecipe.class)
.addTypedRecipes(AllRecipeTypes.MECHANICAL_CRAFTING) .addTypedRecipes(AllRecipeTypes.MECHANICAL_CRAFTING)
.catalyst(AllBlocks.MECHANICAL_CRAFTER::get) .catalyst(AllBlocks.MECHANICAL_CRAFTER::get)
.build(); .itemIcon(AllBlocks.MECHANICAL_CRAFTER.get())
.emptyBackground(177, 107)
.build("mechanical_crafting", MechanicalCraftingCategory::new),
seqAssembly = builder(SequencedAssemblyRecipe.class)
.addTypedRecipes(AllRecipeTypes.SEQUENCED_ASSEMBLY)
.itemIcon(AllItems.PRECISION_MECHANISM.get())
.emptyBackground(180, 115)
.build("sequenced_assembly", SequencedAssemblyCategory::new),
mysteryConversion = builder(ConversionRecipe.class)
.addRecipes(() -> MysteriousItemConversionCategory.RECIPES)
.itemIcon(AllBlocks.PECULIAR_BELL.get())
.emptyBackground(177, 50)
.build("mystery_conversion", MysteriousItemConversionCategory::new);
} }
private <T extends Recipe<?>> CategoryBuilder<T> register(String name, Supplier<CreateRecipeCategory<T>> supplier) { private <T extends Recipe<?>> CategoryBuilder<T> builder(Class<? extends T> recipeClass) {
return new CategoryBuilder<>(name, supplier); return new CategoryBuilder<>(recipeClass);
} }
@Override @Override
@ -250,25 +324,12 @@ public class CreateJEI implements IModPlugin {
return ID; return ID;
} }
@Override
public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) {
registration.addRecipeTransferHandler(new BlueprintTransferHandler(), RecipeTypes.CRAFTING);
}
@Override @Override
public void registerCategories(IRecipeCategoryRegistration registration) { public void registerCategories(IRecipeCategoryRegistration registration) {
loadCategories(); loadCategories();
registration.addRecipeCategories(allCategories.toArray(IRecipeCategory[]::new)); registration.addRecipeCategories(allCategories.toArray(IRecipeCategory[]::new));
} }
@Override
public void registerFluidSubtypes(ISubtypeRegistration registration) {
PotionFluidSubtypeInterpreter interpreter = new PotionFluidSubtypeInterpreter();
PotionFluid potionFluid = AllFluids.POTION.get();
registration.registerSubtypeInterpreter(potionFluid.getSource(), interpreter);
registration.registerSubtypeInterpreter(potionFluid.getFlowing(), interpreter);
}
@Override @Override
public void registerRecipes(IRecipeRegistration registration) { public void registerRecipes(IRecipeRegistration registration) {
ingredientManager = registration.getIngredientManager(); ingredientManager = registration.getIngredientManager();
@ -280,7 +341,20 @@ public class CreateJEI implements IModPlugin {
@Override @Override
public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) {
allCategories.forEach(c -> c.recipeCatalysts.forEach(s -> registration.addRecipeCatalyst(s.get(), c.getRecipeType()))); allCategories.forEach(c -> c.registerCatalysts(registration));
}
@Override
public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) {
registration.addRecipeTransferHandler(new BlueprintTransferHandler(), RecipeTypes.CRAFTING);
}
@Override
public void registerFluidSubtypes(ISubtypeRegistration registration) {
PotionFluidSubtypeInterpreter interpreter = new PotionFluidSubtypeInterpreter();
PotionFluid potionFluid = AllFluids.POTION.get();
registration.registerSubtypeInterpreter(ForgeTypes.FLUID_STACK, potionFluid.getSource(), interpreter);
registration.registerSubtypeInterpreter(ForgeTypes.FLUID_STACK, potionFluid.getFlowing(), interpreter);
} }
@SuppressWarnings({ "unchecked", "rawtypes" }) @SuppressWarnings({ "unchecked", "rawtypes" })
@ -295,15 +369,27 @@ public class CreateJEI implements IModPlugin {
} }
private class CategoryBuilder<T extends Recipe<?>> { private class CategoryBuilder<T extends Recipe<?>> {
private final CreateRecipeCategory<T> category; private final Class<? extends T> recipeClass;
private final List<Consumer<List<T>>> recipeListConsumers = new ArrayList<>(); private Predicate<CRecipes> predicate = cRecipes -> true;
private Predicate<CRecipes> predicate;
public CategoryBuilder(String name, Supplier<CreateRecipeCategory<T>> category) { private IDrawable background;
this.category = category.get(); private IDrawable icon;
this.category.setCategoryId(name);
mezz.jei.api.recipe.RecipeType<T> recipeType = this.category.getRecipeType(); private final List<Consumer<List<T>>> recipeListConsumers = new ArrayList<>();
predicate = cRecipes -> true; private final List<Supplier<? extends ItemStack>> catalysts = new ArrayList<>();
public CategoryBuilder(Class<? extends T> recipeClass) {
this.recipeClass = recipeClass;
}
public CategoryBuilder<T> enableIf(Predicate<CRecipes> predicate) {
this.predicate = predicate;
return this;
}
public CategoryBuilder<T> enableWhen(Function<CRecipes, ConfigBool> configValue) {
predicate = c -> configValue.apply(c).get();
return this;
} }
public CategoryBuilder<T> addRecipeListConsumer(Consumer<List<T>> consumer) { public CategoryBuilder<T> addRecipeListConsumer(Consumer<List<T>> consumer) {
@ -380,38 +466,61 @@ public class CreateJEI implements IModPlugin {
}); });
} }
public CategoryBuilder<T> catalystStack(Supplier<ItemStack> supplier) {
catalysts.add(supplier);
return this;
}
public CategoryBuilder<T> catalyst(Supplier<ItemLike> supplier) { public CategoryBuilder<T> catalyst(Supplier<ItemLike> supplier) {
return catalystStack(() -> new ItemStack(supplier.get() return catalystStack(() -> new ItemStack(supplier.get()
.asItem())); .asItem()));
} }
public CategoryBuilder<T> catalystStack(Supplier<ItemStack> supplier) { public CategoryBuilder<T> icon(IDrawable icon) {
category.recipeCatalysts.add(supplier); this.icon = icon;
return this; return this;
} }
public CategoryBuilder<T> enableWhen(Function<CRecipes, ConfigBool> configValue) { public CategoryBuilder<T> itemIcon(ItemLike item) {
predicate = c -> configValue.apply(c).get(); icon(new ItemIcon(() -> new ItemStack(item)));
return this; return this;
} }
public CategoryBuilder<T> enableWhenBool(Function<CRecipes, Boolean> configValue) { public CategoryBuilder<T> doubleItemIcon(ItemLike item1, ItemLike item2) {
predicate = configValue::apply; icon(new DoubleItemIcon(() -> new ItemStack(item1), () -> new ItemStack(item2)));
return this; return this;
} }
public CreateRecipeCategory<T> build() { public CategoryBuilder<T> background(IDrawable background) {
if (predicate.test(AllConfigs.SERVER.recipes)) this.background = background;
category.recipes.add(() -> { return this;
}
public CategoryBuilder<T> emptyBackground(int width, int height) {
background(new EmptyBackground(width, height));
return this;
}
public CreateRecipeCategory<T> build(String name, CreateRecipeCategory.Factory<T> factory) {
Supplier<List<T>> recipesSupplier;
if (predicate.test(AllConfigs.SERVER.recipes)) {
recipesSupplier = () -> {
List<T> recipes = new ArrayList<>(); List<T> recipes = new ArrayList<>();
for (Consumer<List<T>> consumer : recipeListConsumers) for (Consumer<List<T>> consumer : recipeListConsumers)
consumer.accept(recipes); consumer.accept(recipes);
return recipes; return recipes;
}); };
} else {
recipesSupplier = () -> Collections.emptyList();
}
CreateRecipeCategory.Info<T> info = new CreateRecipeCategory.Info<>(
new mezz.jei.api.recipe.RecipeType<>(Create.asResource(name), recipeClass),
CreateLang.translateDirect("recipe." + name), background, icon, recipesSupplier, catalysts);
CreateRecipeCategory<T> category = factory.create(info);
allCategories.add(category); allCategories.add(category);
return category; return category;
} }
} }
public static void consumeAllRecipes(Consumer<Recipe<?>> consumer) { public static void consumeAllRecipes(Consumer<Recipe<?>> consumer) {

View file

@ -56,7 +56,6 @@ public class DoubleItemIcon implements IDrawable {
matrixStack.popPose(); matrixStack.popPose();
matrixStack.popPose(); matrixStack.popPose();
RenderSystem.enableBlend();
} }
} }

View file

@ -0,0 +1,48 @@
package com.simibubi.create.compat.jei;
import java.util.function.Supplier;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import mezz.jei.api.gui.drawable.IDrawable;
import net.createmod.catnip.gui.element.GuiGameElement;
import net.minecraft.world.item.ItemStack;
public class ItemIcon implements IDrawable {
private Supplier<ItemStack> supplier;
private ItemStack stack;
public ItemIcon(Supplier<ItemStack> stack) {
this.supplier = stack;
}
@Override
public int getWidth() {
return 18;
}
@Override
public int getHeight() {
return 18;
}
@Override
public void draw(PoseStack matrixStack, int xOffset, int yOffset) {
if (stack == null) {
stack = supplier.get();
}
RenderSystem.enableDepthTest();
matrixStack.pushPose();
matrixStack.translate(xOffset + 1, yOffset + 1, 0);
GuiGameElement.of(stack)
.render(matrixStack);
matrixStack.popPose();
}
}

View file

@ -19,9 +19,8 @@ import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.item.ItemHelper;
import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.CreateLang;
import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.forge.ForgeTypes;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.drawable.IDrawable;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeIngredientRole;
@ -36,16 +35,11 @@ public class BasinCategory extends CreateRecipeCategory<BasinRecipe> {
private final boolean needsHeating; private final boolean needsHeating;
public BasinCategory(boolean needsHeating, IDrawable icon, IDrawable background) { public BasinCategory(Info<BasinRecipe> info, boolean needsHeating) {
super(icon, background); super(info);
this.needsHeating = needsHeating; this.needsHeating = needsHeating;
} }
@Override
public Class<? extends BasinRecipe> getRecipeClass() {
return BasinRecipe.class;
}
@Override @Override
public void setRecipe(IRecipeLayoutBuilder builder, BasinRecipe recipe, IFocusGroup focuses) { public void setRecipe(IRecipeLayoutBuilder builder, BasinRecipe recipe, IFocusGroup focuses) {
List<Pair<Ingredient, MutableInt>> condensedIngredients = ItemHelper.condenseIngredients(recipe.getIngredients()); List<Pair<Ingredient, MutableInt>> condensedIngredients = ItemHelper.condenseIngredients(recipe.getIngredients());
@ -72,7 +66,7 @@ public class BasinCategory extends CreateRecipeCategory<BasinRecipe> {
builder builder
.addSlot(RecipeIngredientRole.INPUT, 17 + xOffset + (i % 3) * 19, 51 - (i / 3) * 19) .addSlot(RecipeIngredientRole.INPUT, 17 + xOffset + (i % 3) * 19, 51 - (i / 3) * 19)
.setBackground(getRenderedSlot(), -1, -1) .setBackground(getRenderedSlot(), -1, -1)
.addIngredients(VanillaTypes.FLUID, withImprovedVisibility(fluidIngredient.getMatchingFluidStacks())) .addIngredients(ForgeTypes.FLUID_STACK, withImprovedVisibility(fluidIngredient.getMatchingFluidStacks()))
.addTooltipCallback(addFluidTooltip(fluidIngredient.getRequiredAmount())); .addTooltipCallback(addFluidTooltip(fluidIngredient.getRequiredAmount()));
i++; i++;
} }
@ -99,7 +93,7 @@ public class BasinCategory extends CreateRecipeCategory<BasinRecipe> {
builder builder
.addSlot(RecipeIngredientRole.OUTPUT, xPosition, yPosition) .addSlot(RecipeIngredientRole.OUTPUT, xPosition, yPosition)
.setBackground(getRenderedSlot(), -1, -1) .setBackground(getRenderedSlot(), -1, -1)
.addIngredient(VanillaTypes.FLUID, withImprovedVisibility(fluidResult)) .addIngredient(ForgeTypes.FLUID_STACK, withImprovedVisibility(fluidResult))
.addTooltipCallback(addFluidTooltip(fluidResult.getAmount())); .addTooltipCallback(addFluidTooltip(fluidResult.getAmount()));
i++; i++;
} }

View file

@ -7,7 +7,6 @@ import java.util.List;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.compat.jei.category.BlockCuttingCategory.CondensedBlockCuttingRecipe; import com.simibubi.create.compat.jei.category.BlockCuttingCategory.CondensedBlockCuttingRecipe;
import com.simibubi.create.compat.jei.category.animations.AnimatedSaw; import com.simibubi.create.compat.jei.category.animations.AnimatedSaw;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
@ -18,7 +17,6 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeIngredientRole;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.Recipe;
@ -29,13 +27,8 @@ public class BlockCuttingCategory extends CreateRecipeCategory<CondensedBlockCut
private final AnimatedSaw saw = new AnimatedSaw(); private final AnimatedSaw saw = new AnimatedSaw();
public BlockCuttingCategory(Item symbol) { public BlockCuttingCategory(Info<CondensedBlockCuttingRecipe> info) {
super(doubleItemIcon(AllBlocks.MECHANICAL_SAW.get(), symbol), emptyBackground(177, 70)); // Items.STONE_BRICK_STAIRS super(info);
}
@Override
public Class<? extends CondensedBlockCuttingRecipe> getRecipeClass() {
return CondensedBlockCuttingRecipe.class;
} }
@Override @Override

View file

@ -12,63 +12,50 @@ import org.jetbrains.annotations.NotNull;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllFluids; import com.simibubi.create.AllFluids;
import com.simibubi.create.Create;
import com.simibubi.create.compat.jei.DoubleItemIcon;
import com.simibubi.create.compat.jei.EmptyBackground;
import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.CreateLang;
import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.forge.ForgeTypes;
import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.drawable.IDrawable;
import mezz.jei.api.gui.ingredient.IRecipeSlotTooltipCallback; import mezz.jei.api.gui.ingredient.IRecipeSlotTooltipCallback;
import mezz.jei.api.recipe.RecipeType; import mezz.jei.api.recipe.RecipeType;
import mezz.jei.api.recipe.category.IRecipeCategory; import mezz.jei.api.recipe.category.IRecipeCategory;
import mezz.jei.api.registration.IRecipeCatalystRegistration;
import mezz.jei.api.registration.IRecipeRegistration; import mezz.jei.api.registration.IRecipeRegistration;
import net.createmod.catnip.utility.lang.Components;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.level.ItemLike;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault @MethodsReturnNonnullByDefault
public abstract class CreateRecipeCategory<T extends Recipe<?>> implements IRecipeCategory<T> { public abstract class CreateRecipeCategory<T extends Recipe<?>> implements IRecipeCategory<T> {
private static final IDrawable BASIC_SLOT = asDrawable(AllGuiTextures.JEI_SLOT);
private static final IDrawable CHANCE_SLOT = asDrawable(AllGuiTextures.JEI_CHANCE_SLOT);
public final List<Supplier<List<T>>> recipes = new ArrayList<>(); protected final RecipeType<T> type;
public final List<Supplier<? extends ItemStack>> recipeCatalysts = new ArrayList<>(); protected final Component title;
protected final IDrawable background;
protected final IDrawable icon;
protected String name; private final Supplier<List<T>> recipes;
protected RecipeType<T> type; private final List<Supplier<? extends ItemStack>> catalysts;
private final IDrawable background;
private final IDrawable icon;
private static final IDrawable basicSlot = asDrawable(AllGuiTextures.JEI_SLOT); public CreateRecipeCategory(Info<T> info) {
private static final IDrawable chanceSlot = asDrawable(AllGuiTextures.JEI_CHANCE_SLOT); this.type = info.recipeType();
this.title = info.title();
public CreateRecipeCategory(IDrawable icon, IDrawable background) { this.background = info.background();
this.background = background; this.icon = info.icon();
this.icon = icon; this.recipes = info.recipes();
this.catalysts = info.catalysts();
} }
public void setCategoryId(String name) {
this.name = name;
this.type = RecipeType.create(Create.ID, name, getRecipeClass());
}
@Override
public ResourceLocation getUid() {
return getRecipeType().getUid();
}
@Override
public abstract Class<? extends T> getRecipeClass();
@NotNull @NotNull
@Override @Override
public RecipeType<T> getRecipeType() { public RecipeType<T> getRecipeType() {
@ -77,7 +64,7 @@ public abstract class CreateRecipeCategory<T extends Recipe<?>> implements IReci
@Override @Override
public Component getTitle() { public Component getTitle() {
return CreateLang.translateDirect("recipe." + name); return title;
} }
@Override @Override
@ -90,12 +77,28 @@ public abstract class CreateRecipeCategory<T extends Recipe<?>> implements IReci
return icon; return icon;
} }
@Override
@Deprecated
public final ResourceLocation getUid() {
return type.getUid();
}
@Override
@Deprecated
public final Class<? extends T> getRecipeClass() {
return type.getRecipeClass();
}
public void registerRecipes(IRecipeRegistration registration) { public void registerRecipes(IRecipeRegistration registration) {
recipes.forEach(s -> registration.addRecipes(getRecipeType(), s.get())); registration.addRecipes(type, recipes.get());
}
public void registerCatalysts(IRecipeCatalystRegistration registration) {
catalysts.forEach(s -> registration.addRecipeCatalyst(s.get(), type));
} }
public static IDrawable getRenderedSlot() { public static IDrawable getRenderedSlot() {
return basicSlot; return BASIC_SLOT;
} }
public static IDrawable getRenderedSlot(ProcessingOutput output) { public static IDrawable getRenderedSlot(ProcessingOutput output) {
@ -104,21 +107,9 @@ public abstract class CreateRecipeCategory<T extends Recipe<?>> implements IReci
public static IDrawable getRenderedSlot(float chance) { public static IDrawable getRenderedSlot(float chance) {
if (chance == 1) if (chance == 1)
return basicSlot; return BASIC_SLOT;
return chanceSlot; return CHANCE_SLOT;
}
public static IDrawable emptyBackground(int width, int height) {
return new EmptyBackground(width, height);
}
public static IDrawable doubleItemIcon(ItemLike item1, ItemLike item2) {
return new DoubleItemIcon(() -> new ItemStack(item1), () -> new ItemStack(item2));
}
public static IDrawable itemIcon(ItemLike item) {
return new DoubleItemIcon(() -> new ItemStack(item), () -> ItemStack.EMPTY);
} }
public static IRecipeSlotTooltipCallback addStochasticTooltip(ProcessingOutput output) { public static IRecipeSlotTooltipCallback addStochasticTooltip(ProcessingOutput output) {
@ -149,7 +140,7 @@ public abstract class CreateRecipeCategory<T extends Recipe<?>> implements IReci
public static IRecipeSlotTooltipCallback addFluidTooltip(int mbAmount) { public static IRecipeSlotTooltipCallback addFluidTooltip(int mbAmount) {
return (view, tooltip) -> { return (view, tooltip) -> {
Optional<FluidStack> displayed = view.getDisplayedIngredient(VanillaTypes.FLUID); Optional<FluidStack> displayed = view.getDisplayedIngredient(ForgeTypes.FLUID_STACK);
if (displayed.isEmpty()) if (displayed.isEmpty())
return; return;
@ -168,18 +159,18 @@ public abstract class CreateRecipeCategory<T extends Recipe<?>> implements IReci
} }
int amount = mbAmount == -1 ? fluidStack.getAmount() : mbAmount; int amount = mbAmount == -1 ? fluidStack.getAmount() : mbAmount;
Component text = new TextComponent(String.valueOf(amount)).append(CreateLang.translateDirect("generic.unit.millibuckets")).withStyle(ChatFormatting.GOLD); Component text = Components.literal(String.valueOf(amount)).append(CreateLang.translateDirect("generic.unit.millibuckets")).withStyle(ChatFormatting.GOLD);
if (tooltip.isEmpty()) if (tooltip.isEmpty())
tooltip.add(0, text); tooltip.add(0, text);
else { else {
List<Component> siblings = tooltip.get(0).getSiblings(); List<Component> siblings = tooltip.get(0).getSiblings();
siblings.add(new TextComponent(" ")); siblings.add(Components.literal(" "));
siblings.add(text); siblings.add(text);
} }
}; };
} }
private static IDrawable asDrawable(AllGuiTextures texture) { protected static IDrawable asDrawable(AllGuiTextures texture) {
return new IDrawable() { return new IDrawable() {
@Override @Override
public int getWidth() { public int getWidth() {
@ -198,4 +189,10 @@ public abstract class CreateRecipeCategory<T extends Recipe<?>> implements IReci
}; };
} }
public record Info<T extends Recipe<?>>(RecipeType<T> recipeType, Component title, IDrawable background, IDrawable icon, Supplier<List<T>> recipes, List<Supplier<? extends ItemStack>> catalysts) {
}
public interface Factory<T extends Recipe<?>> {
CreateRecipeCategory<T> create(Info<T> info);
}
} }

View file

@ -6,8 +6,6 @@ import java.util.List;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.compat.jei.category.animations.AnimatedCrushingWheels; import com.simibubi.create.compat.jei.category.animations.AnimatedCrushingWheels;
import com.simibubi.create.content.contraptions.components.crusher.AbstractCrushingRecipe; import com.simibubi.create.content.contraptions.components.crusher.AbstractCrushingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
@ -25,13 +23,8 @@ public class CrushingCategory extends CreateRecipeCategory<AbstractCrushingRecip
private final AnimatedCrushingWheels crushingWheels = new AnimatedCrushingWheels(); private final AnimatedCrushingWheels crushingWheels = new AnimatedCrushingWheels();
public CrushingCategory() { public CrushingCategory(Info<AbstractCrushingRecipe> info) {
super(doubleItemIcon(AllBlocks.CRUSHING_WHEEL.get(), AllItems.CRUSHED_GOLD.get()), emptyBackground(177, 100)); super(info);
}
@Override
public Class<? extends AbstractCrushingRecipe> getRecipeClass() {
return AbstractCrushingRecipe.class;
} }
@Override @Override

View file

@ -3,7 +3,6 @@ package com.simibubi.create.compat.jei.category;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.compat.jei.category.animations.AnimatedDeployer; import com.simibubi.create.compat.jei.category.animations.AnimatedDeployer;
import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
@ -21,13 +20,8 @@ public class DeployingCategory extends CreateRecipeCategory<DeployerApplicationR
private final AnimatedDeployer deployer = new AnimatedDeployer(); private final AnimatedDeployer deployer = new AnimatedDeployer();
public DeployingCategory() { public DeployingCategory(Info<DeployerApplicationRecipe> info) {
super(itemIcon(AllBlocks.DEPLOYER.get()), emptyBackground(177, 70)); super(info);
}
@Override
public Class<DeployerApplicationRecipe> getRecipeClass() {
return DeployerApplicationRecipe.class;
} }
@Override @Override

View file

@ -3,24 +3,17 @@ package com.simibubi.create.compat.jei.category;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllItems;
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import net.createmod.catnip.gui.element.GuiGameElement; import net.createmod.catnip.gui.element.GuiGameElement;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.AbstractCookingRecipe; import net.minecraft.world.item.crafting.AbstractCookingRecipe;
import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.Fluids;
public class FanBlastingCategory extends ProcessingViaFanCategory<AbstractCookingRecipe> { public class FanBlastingCategory extends ProcessingViaFanCategory<AbstractCookingRecipe> {
public FanBlastingCategory() { public FanBlastingCategory(Info<AbstractCookingRecipe> info) {
super(doubleItemIcon(AllItems.PROPELLER.get(), Items.LAVA_BUCKET)); super(info);
}
@Override
public Class<? extends AbstractCookingRecipe> getRecipeClass() {
return AbstractCookingRecipe.class;
} }
@Override @Override

View file

@ -3,24 +3,17 @@ package com.simibubi.create.compat.jei.category;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllItems;
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
import com.simibubi.create.content.contraptions.components.fan.HauntingRecipe; import com.simibubi.create.content.contraptions.components.fan.HauntingRecipe;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import net.createmod.catnip.gui.element.GuiGameElement; import net.createmod.catnip.gui.element.GuiGameElement;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
public class FanHauntingCategory extends ProcessingViaFanCategory.MultiOutput<HauntingRecipe> { public class FanHauntingCategory extends ProcessingViaFanCategory.MultiOutput<HauntingRecipe> {
public FanHauntingCategory() { public FanHauntingCategory(Info<HauntingRecipe> info) {
super(doubleItemIcon(AllItems.PROPELLER.get(), Items.SOUL_CAMPFIRE)); super(info);
}
@Override
public Class<? extends HauntingRecipe> getRecipeClass() {
return HauntingRecipe.class;
} }
@Override @Override

View file

@ -3,24 +3,17 @@ package com.simibubi.create.compat.jei.category;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllItems;
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import net.createmod.catnip.gui.element.GuiGameElement; import net.createmod.catnip.gui.element.GuiGameElement;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.SmokingRecipe; import net.minecraft.world.item.crafting.SmokingRecipe;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
public class FanSmokingCategory extends ProcessingViaFanCategory<SmokingRecipe> { public class FanSmokingCategory extends ProcessingViaFanCategory<SmokingRecipe> {
public FanSmokingCategory() { public FanSmokingCategory(Info<SmokingRecipe> info) {
super(doubleItemIcon(AllItems.PROPELLER.get(), Items.CAMPFIRE)); super(info);
}
@Override
public Class<? extends SmokingRecipe> getRecipeClass() {
return SmokingRecipe.class;
} }
@Override @Override

View file

@ -3,23 +3,16 @@ package com.simibubi.create.compat.jei.category;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllItems;
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe; import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe;
import net.createmod.catnip.gui.element.GuiGameElement; import net.createmod.catnip.gui.element.GuiGameElement;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.Fluids;
public class FanWashingCategory extends ProcessingViaFanCategory.MultiOutput<SplashingRecipe> { public class FanWashingCategory extends ProcessingViaFanCategory.MultiOutput<SplashingRecipe> {
public FanWashingCategory() { public FanWashingCategory(Info<SplashingRecipe> info) {
super(doubleItemIcon(AllItems.PROPELLER.get(), Items.WATER_BUCKET)); super(info);
}
@Override
public Class<? extends SplashingRecipe> getRecipeClass() {
return SplashingRecipe.class;
} }
@Override @Override

View file

@ -6,7 +6,6 @@ import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import com.simibubi.create.AllItems;
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe; import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
@ -27,13 +26,8 @@ import net.minecraft.world.level.block.state.BlockState;
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public class ItemApplicationCategory extends CreateRecipeCategory<ItemApplicationRecipe> { public class ItemApplicationCategory extends CreateRecipeCategory<ItemApplicationRecipe> {
public ItemApplicationCategory() { public ItemApplicationCategory(Info<ItemApplicationRecipe> info) {
super(itemIcon(AllItems.BRASS_HAND.get()), emptyBackground(177, 60)); super(info);
}
@Override
public Class<ItemApplicationRecipe> getRecipeClass() {
return ItemApplicationRecipe.class;
} }
@Override @Override
@ -65,7 +59,7 @@ public class ItemApplicationCategory extends CreateRecipeCategory<ItemApplicatio
Optional<ItemStack> displayedIngredient = recipeSlotsView.getSlotViews() Optional<ItemStack> displayedIngredient = recipeSlotsView.getSlotViews()
.get(0) .get(0)
.getDisplayedIngredient(VanillaTypes.ITEM); .getDisplayedIngredient(VanillaTypes.ITEM_STACK);
if (displayedIngredient.isEmpty()) if (displayedIngredient.isEmpty())
return; return;

View file

@ -5,7 +5,6 @@ import java.util.function.Consumer;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.compat.jei.category.animations.AnimatedItemDrain; import com.simibubi.create.compat.jei.category.animations.AnimatedItemDrain;
import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler;
@ -14,11 +13,13 @@ import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuild
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.forge.ForgeTypes;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeIngredientRole;
import mezz.jei.api.runtime.IIngredientManager; import mezz.jei.api.runtime.IIngredientManager;
import net.createmod.catnip.platform.CatnipServices;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items; import net.minecraft.world.item.Items;
@ -33,15 +34,14 @@ import net.minecraftforge.fluids.capability.IFluidHandlerItem;
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public class ItemDrainCategory extends CreateRecipeCategory<EmptyingRecipe> { public class ItemDrainCategory extends CreateRecipeCategory<EmptyingRecipe> {
AnimatedItemDrain drain; private final AnimatedItemDrain drain = new AnimatedItemDrain();
public ItemDrainCategory() { public ItemDrainCategory(Info<EmptyingRecipe> info) {
super(doubleItemIcon(AllBlocks.ITEM_DRAIN.get(), Items.WATER_BUCKET), emptyBackground(177, 50)); super(info);
drain = new AnimatedItemDrain();
} }
public static void consumeRecipes(Consumer<EmptyingRecipe> consumer, IIngredientManager ingredientManager) { public static void consumeRecipes(Consumer<EmptyingRecipe> consumer, IIngredientManager ingredientManager) {
for (ItemStack stack : ingredientManager.getAllIngredients(VanillaTypes.ITEM)) { for (ItemStack stack : ingredientManager.getAllIngredients(VanillaTypes.ITEM_STACK)) {
if (stack.getItem() instanceof PotionItem) { if (stack.getItem() instanceof PotionItem) {
FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack); FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack);
Ingredient potion = Ingredient.of(stack); Ingredient potion = Ingredient.of(stack);
@ -69,10 +69,8 @@ public class ItemDrainCategory extends CreateRecipeCategory<EmptyingRecipe> {
continue; continue;
Ingredient ingredient = Ingredient.of(stack); Ingredient ingredient = Ingredient.of(stack);
ResourceLocation itemName = stack.getItem() ResourceLocation itemName = CatnipServices.REGISTRIES.getKeyOrThrow(stack.getItem());
.getRegistryName(); ResourceLocation fluidName = CatnipServices.REGISTRIES.getKeyOrThrow(extracted.getFluid());
ResourceLocation fluidName = extracted.getFluid()
.getRegistryName();
consumer.accept(new ProcessingRecipeBuilder<>(EmptyingRecipe::new, consumer.accept(new ProcessingRecipeBuilder<>(EmptyingRecipe::new,
Create.asResource("empty_" + itemName.getNamespace() + "_" + itemName.getPath() + "_of_" Create.asResource("empty_" + itemName.getNamespace() + "_" + itemName.getPath() + "_of_"
@ -83,11 +81,6 @@ public class ItemDrainCategory extends CreateRecipeCategory<EmptyingRecipe> {
} }
} }
@Override
public Class<? extends EmptyingRecipe> getRecipeClass() {
return EmptyingRecipe.class;
}
@Override @Override
public void setRecipe(IRecipeLayoutBuilder builder, EmptyingRecipe recipe, IFocusGroup focuses) { public void setRecipe(IRecipeLayoutBuilder builder, EmptyingRecipe recipe, IFocusGroup focuses) {
builder builder
@ -97,7 +90,7 @@ public class ItemDrainCategory extends CreateRecipeCategory<EmptyingRecipe> {
builder builder
.addSlot(RecipeIngredientRole.OUTPUT, 132, 8) .addSlot(RecipeIngredientRole.OUTPUT, 132, 8)
.setBackground(getRenderedSlot(), -1, -1) .setBackground(getRenderedSlot(), -1, -1)
.addIngredient(VanillaTypes.FLUID, withImprovedVisibility(recipe.getResultingFluid())) .addIngredient(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getResultingFluid()))
.addTooltipCallback(addFluidTooltip(recipe.getResultingFluid().getAmount())); .addTooltipCallback(addFluidTooltip(recipe.getResultingFluid().getAmount()));
builder builder
.addSlot(RecipeIngredientRole.OUTPUT, 132, 27) .addSlot(RecipeIngredientRole.OUTPUT, 132, 27)

View file

@ -9,7 +9,6 @@ import org.jetbrains.annotations.NotNull;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.compat.jei.category.animations.AnimatedCrafter; import com.simibubi.create.compat.jei.category.animations.AnimatedCrafter;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
@ -19,12 +18,13 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.ingredients.IIngredientRenderer; import mezz.jei.api.ingredients.IIngredientRenderer;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeIngredientRole;
import net.createmod.catnip.utility.lang.Components;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font; import net.minecraft.client.gui.Font;
import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.TooltipFlag;
@ -37,8 +37,8 @@ public class MechanicalCraftingCategory extends CreateRecipeCategory<CraftingRec
private final AnimatedCrafter crafter = new AnimatedCrafter(); private final AnimatedCrafter crafter = new AnimatedCrafter();
public MechanicalCraftingCategory() { public MechanicalCraftingCategory(Info<CraftingRecipe> info) {
super(itemIcon(AllBlocks.MECHANICAL_CRAFTER.get()), emptyBackground(177, 107)); super(info);
} }
@Override @Override
@ -59,7 +59,7 @@ public class MechanicalCraftingCategory extends CreateRecipeCategory<CraftingRec
int yPosition = (int) (y + 1 + (i / getWidth(recipe)) * f); int yPosition = (int) (y + 1 + (i / getWidth(recipe)) * f);
builder.addSlot(RecipeIngredientRole.INPUT, xPosition, yPosition) builder.addSlot(RecipeIngredientRole.INPUT, xPosition, yPosition)
.setCustomRenderer(VanillaTypes.ITEM, renderer) .setCustomRenderer(VanillaTypes.ITEM_STACK, renderer)
.addIngredients(ingredient); .addIngredients(ingredient);
i++; i++;
@ -130,11 +130,6 @@ public class MechanicalCraftingCategory extends CreateRecipeCategory<CraftingRec
matrixStack.popPose(); matrixStack.popPose();
} }
@Override
public Class<? extends CraftingRecipe> getRecipeClass() {
return CraftingRecipe.class;
}
private static final class CrafterIngredientRenderer implements IIngredientRenderer<ItemStack> { private static final class CrafterIngredientRenderer implements IIngredientRenderer<ItemStack> {
private final CraftingRecipe recipe; private final CraftingRecipe recipe;
@ -189,7 +184,7 @@ public class MechanicalCraftingCategory extends CreateRecipeCategory<CraftingRec
return ingredient.getTooltipLines(player, tooltipFlag); return ingredient.getTooltipLines(player, tooltipFlag);
} catch (RuntimeException | LinkageError e) { } catch (RuntimeException | LinkageError e) {
List<Component> list = new ArrayList<>(); List<Component> list = new ArrayList<>();
TranslatableComponent crash = new TranslatableComponent("jei.tooltip.error.crash"); MutableComponent crash = Components.translatable("jei.tooltip.error.crash");
list.add(crash.withStyle(ChatFormatting.RED)); list.add(crash.withStyle(ChatFormatting.RED));
return list; return list;
} }

View file

@ -5,8 +5,6 @@ import java.util.List;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.compat.jei.category.animations.AnimatedMillstone; import com.simibubi.create.compat.jei.category.animations.AnimatedMillstone;
import com.simibubi.create.content.contraptions.components.crusher.AbstractCrushingRecipe; import com.simibubi.create.content.contraptions.components.crusher.AbstractCrushingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
@ -22,13 +20,8 @@ public class MillingCategory extends CreateRecipeCategory<AbstractCrushingRecipe
private final AnimatedMillstone millstone = new AnimatedMillstone(); private final AnimatedMillstone millstone = new AnimatedMillstone();
public MillingCategory() { public MillingCategory(Info<AbstractCrushingRecipe> info) {
super(doubleItemIcon(AllBlocks.MILLSTONE.get(), AllItems.WHEAT_FLOUR.get()), emptyBackground(177, 53)); super(info);
}
@Override
public Class<? extends AbstractCrushingRecipe> getRecipeClass() {
return AbstractCrushingRecipe.class;
} }
@Override @Override

View file

@ -3,16 +3,12 @@ package com.simibubi.create.compat.jei.category;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.compat.jei.category.animations.AnimatedBlazeBurner; import com.simibubi.create.compat.jei.category.animations.AnimatedBlazeBurner;
import com.simibubi.create.compat.jei.category.animations.AnimatedMixer; import com.simibubi.create.compat.jei.category.animations.AnimatedMixer;
import com.simibubi.create.content.contraptions.processing.BasinRecipe; import com.simibubi.create.content.contraptions.processing.BasinRecipe;
import com.simibubi.create.content.contraptions.processing.HeatCondition; import com.simibubi.create.content.contraptions.processing.HeatCondition;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.Blocks;
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public class MixingCategory extends BasinCategory { public class MixingCategory extends BasinCategory {
@ -22,24 +18,23 @@ public class MixingCategory extends BasinCategory {
MixingType type; MixingType type;
enum MixingType { enum MixingType {
AUTO_SHAPELESS, MIXING, AUTO_BREWING MIXING, AUTO_SHAPELESS, AUTO_BREWING
} }
public static MixingCategory autoShapeless() { public static MixingCategory standard(Info<BasinRecipe> info) {
return new MixingCategory(MixingType.AUTO_SHAPELESS, Items.CRAFTING_TABLE, 85); return new MixingCategory(info, MixingType.MIXING);
} }
public static MixingCategory standard() { public static MixingCategory autoShapeless(Info<BasinRecipe> info) {
return new MixingCategory(MixingType.MIXING, AllBlocks.BASIN.get(), 103); return new MixingCategory(info, MixingType.AUTO_SHAPELESS);
} }
public static MixingCategory autoBrewing() { public static MixingCategory autoBrewing(Info<BasinRecipe> info) {
return new MixingCategory(MixingType.AUTO_BREWING, Blocks.BREWING_STAND, 103); return new MixingCategory(info, MixingType.AUTO_BREWING);
} }
protected MixingCategory(MixingType type, ItemLike secondaryItem, int height) { protected MixingCategory(Info<BasinRecipe> info, MixingType type) {
super(type != MixingType.AUTO_SHAPELESS, doubleItemIcon(AllBlocks.MECHANICAL_MIXER.get(), secondaryItem), super(info, type != MixingType.AUTO_SHAPELESS);
emptyBackground(177, height));
this.type = type; this.type = type;
} }

View file

@ -24,17 +24,12 @@ public class MysteriousItemConversionCategory extends CreateRecipeCategory<Conve
static { static {
RECIPES.add(ConversionRecipe.create(AllItems.EMPTY_BLAZE_BURNER.asStack(), AllBlocks.BLAZE_BURNER.asStack())); RECIPES.add(ConversionRecipe.create(AllItems.EMPTY_BLAZE_BURNER.asStack(), AllBlocks.BLAZE_BURNER.asStack()));
RECIPES.add(ConversionRecipe.create(AllBlocks.PECULIAR_BELL.asStack(), AllBlocks.HAUNTED_BELL.asStack())); RECIPES.add(ConversionRecipe.create(AllBlocks.PECULIAR_BELL.asStack(), AllBlocks.HAUNTED_BELL.asStack()));
RECIPES.add(ConversionRecipe.create(AllItems.CHROMATIC_COMPOUND.asStack(), AllItems.SHADOW_STEEL.asStack())); // RECIPES.add(ConversionRecipe.create(AllItems.CHROMATIC_COMPOUND.asStack(), AllItems.SHADOW_STEEL.asStack()));
RECIPES.add(ConversionRecipe.create(AllItems.CHROMATIC_COMPOUND.asStack(), AllItems.REFINED_RADIANCE.asStack())); // RECIPES.add(ConversionRecipe.create(AllItems.CHROMATIC_COMPOUND.asStack(), AllItems.REFINED_RADIANCE.asStack()));
} }
public MysteriousItemConversionCategory() { public MysteriousItemConversionCategory(Info<ConversionRecipe> info) {
super(itemIcon(AllItems.CHROMATIC_COMPOUND.get()), emptyBackground(177, 50)); super(info);
}
@Override
public Class<? extends ConversionRecipe> getRecipeClass() {
return ConversionRecipe.class;
} }
@Override @Override

View file

@ -3,7 +3,6 @@ package com.simibubi.create.compat.jei.category;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.compat.jei.category.animations.AnimatedBlazeBurner; import com.simibubi.create.compat.jei.category.animations.AnimatedBlazeBurner;
import com.simibubi.create.compat.jei.category.animations.AnimatedPress; import com.simibubi.create.compat.jei.category.animations.AnimatedPress;
import com.simibubi.create.content.contraptions.processing.BasinRecipe; import com.simibubi.create.content.contraptions.processing.BasinRecipe;
@ -16,8 +15,6 @@ import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeIngredientRole;
import net.minecraft.core.NonNullList; import net.minecraft.core.NonNullList;
import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.Blocks;
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public class PackingCategory extends BasinCategory { public class PackingCategory extends BasinCategory {
@ -27,20 +24,19 @@ public class PackingCategory extends BasinCategory {
private final PackingType type; private final PackingType type;
enum PackingType { enum PackingType {
AUTO_SQUARE, COMPACTING COMPACTING, AUTO_SQUARE
} }
public static PackingCategory standard() { public static PackingCategory standard(Info<BasinRecipe> info) {
return new PackingCategory(PackingType.COMPACTING, AllBlocks.BASIN.get(), 103); return new PackingCategory(info, PackingType.COMPACTING);
} }
public static PackingCategory autoSquare() { public static PackingCategory autoSquare(Info<BasinRecipe> info) {
return new PackingCategory(PackingType.AUTO_SQUARE, Blocks.CRAFTING_TABLE, 85); return new PackingCategory(info, PackingType.AUTO_SQUARE);
} }
protected PackingCategory(PackingType type, ItemLike icon, int height) { protected PackingCategory(Info<BasinRecipe> info, PackingType type) {
super(type != PackingType.AUTO_SQUARE, doubleItemIcon(AllBlocks.MECHANICAL_PRESS.get(), icon), super(info, type != PackingType.AUTO_SQUARE);
emptyBackground(177, height));
this.type = type; this.type = type;
} }

View file

@ -23,16 +23,11 @@ public class PolishingCategory extends CreateRecipeCategory<SandPaperPolishingRe
private final ItemStack renderedSandpaper; private final ItemStack renderedSandpaper;
public PolishingCategory() { public PolishingCategory(Info<SandPaperPolishingRecipe> info) {
super(itemIcon(AllItems.SAND_PAPER.get()), emptyBackground(177, 55)); super(info);
renderedSandpaper = AllItems.SAND_PAPER.asStack(); renderedSandpaper = AllItems.SAND_PAPER.asStack();
} }
@Override
public Class<? extends SandPaperPolishingRecipe> getRecipeClass() {
return SandPaperPolishingRecipe.class;
}
@Override @Override
public void setRecipe(IRecipeLayoutBuilder builder, SandPaperPolishingRecipe recipe, IFocusGroup focuses) { public void setRecipe(IRecipeLayoutBuilder builder, SandPaperPolishingRecipe recipe, IFocusGroup focuses) {
builder builder

View file

@ -5,8 +5,6 @@ import java.util.List;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.compat.jei.category.animations.AnimatedPress; import com.simibubi.create.compat.jei.category.animations.AnimatedPress;
import com.simibubi.create.content.contraptions.components.press.PressingRecipe; import com.simibubi.create.content.contraptions.components.press.PressingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
@ -22,13 +20,8 @@ public class PressingCategory extends CreateRecipeCategory<PressingRecipe> {
private final AnimatedPress press = new AnimatedPress(false); private final AnimatedPress press = new AnimatedPress(false);
public PressingCategory() { public PressingCategory(Info<PressingRecipe> info) {
super(doubleItemIcon(AllBlocks.MECHANICAL_PRESS.get(), AllItems.IRON_SHEET.get()), emptyBackground(177, 70)); super(info);
}
@Override
public Class<? extends PressingRecipe> getRecipeClass() {
return PressingRecipe.class;
} }
@Override @Override

View file

@ -16,7 +16,6 @@ import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.CreateLang;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.drawable.IDrawable;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeIngredientRole;
@ -28,12 +27,8 @@ public abstract class ProcessingViaFanCategory<T extends Recipe<?>> extends Crea
protected static final int SCALE = 24; protected static final int SCALE = 24;
public ProcessingViaFanCategory(IDrawable icon) { public ProcessingViaFanCategory(Info<T> info) {
this(178, icon); super(info);
}
public ProcessingViaFanCategory(int width, IDrawable icon) {
super(icon, emptyBackground(width, 72));
} }
public static Supplier<ItemStack> getFan(String name) { public static Supplier<ItemStack> getFan(String name) {
@ -95,8 +90,8 @@ public abstract class ProcessingViaFanCategory<T extends Recipe<?>> extends Crea
public static abstract class MultiOutput<T extends ProcessingRecipe<?>> extends ProcessingViaFanCategory<T> { public static abstract class MultiOutput<T extends ProcessingRecipe<?>> extends ProcessingViaFanCategory<T> {
public MultiOutput(IDrawable icon) { public MultiOutput(Info<T> info) {
super(icon); super(info);
} }
@Override @Override

View file

@ -5,7 +5,6 @@ import java.util.List;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.compat.jei.category.animations.AnimatedSaw; import com.simibubi.create.compat.jei.category.animations.AnimatedSaw;
import com.simibubi.create.content.contraptions.components.saw.CuttingRecipe; import com.simibubi.create.content.contraptions.components.saw.CuttingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.content.contraptions.processing.ProcessingOutput;
@ -15,20 +14,14 @@ import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeIngredientRole;
import net.minecraft.world.item.Items;
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public class SawingCategory extends CreateRecipeCategory<CuttingRecipe> { public class SawingCategory extends CreateRecipeCategory<CuttingRecipe> {
private final AnimatedSaw saw = new AnimatedSaw(); private final AnimatedSaw saw = new AnimatedSaw();
public SawingCategory() { public SawingCategory(Info<CuttingRecipe> info) {
super(doubleItemIcon(AllBlocks.MECHANICAL_SAW.get(), Items.OAK_LOG), emptyBackground(177, 70)); super(info);
}
@Override
public Class<? extends CuttingRecipe> getRecipeClass() {
return CuttingRecipe.class;
} }
@Override @Override

View file

@ -10,8 +10,6 @@ import javax.annotation.ParametersAreNonnullByDefault;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllItems;
import com.simibubi.create.compat.jei.EmptyBackground;
import com.simibubi.create.compat.jei.category.sequencedAssembly.SequencedAssemblySubCategory; import com.simibubi.create.compat.jei.category.sequencedAssembly.SequencedAssemblySubCategory;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe; import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
import com.simibubi.create.content.contraptions.itemAssembly.SequencedRecipe; import com.simibubi.create.content.contraptions.itemAssembly.SequencedRecipe;
@ -23,12 +21,13 @@ import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeIngredientRole;
import net.createmod.catnip.platform.CatnipServices;
import net.createmod.catnip.utility.lang.Components;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font; import net.minecraft.client.gui.Font;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
@ -36,13 +35,8 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory<SequencedAss
Map<ResourceLocation, SequencedAssemblySubCategory> subCategories = new HashMap<>(); Map<ResourceLocation, SequencedAssemblySubCategory> subCategories = new HashMap<>();
public SequencedAssemblyCategory() { public SequencedAssemblyCategory(Info<SequencedAssemblyRecipe> info) {
super(itemIcon(AllItems.PRECISION_MECHANISM.get()), new EmptyBackground(180, 115)); super(info);
}
@Override
public Class<? extends SequencedAssemblyRecipe> getRecipeClass() {
return SequencedAssemblyRecipe.class;
} }
@Override @Override
@ -63,8 +57,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory<SequencedAss
return; return;
float chance = recipe.getOutputChance(); float chance = recipe.getOutputChance();
tooltip.add(1, CreateLang.translateDirect("recipe.processing.chance", chance < 0.01 ? "<1" : (int) (chance * 100)) tooltip.add(1, chanceComponent(chance));
.withStyle(ChatFormatting.GOLD));
}); });
int width = 0; int width = 0;
@ -82,9 +75,8 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory<SequencedAss
} }
private SequencedAssemblySubCategory getSubCategory(SequencedRecipe<?> sequencedRecipe) { private SequencedAssemblySubCategory getSubCategory(SequencedRecipe<?> sequencedRecipe) {
return subCategories.computeIfAbsent(sequencedRecipe.getRecipe() return subCategories.computeIfAbsent(CatnipServices.REGISTRIES.getKeyOrThrow(sequencedRecipe.getRecipe()
.getSerializer() .getSerializer()),
.getRegistryName(),
rl -> sequencedRecipe.getAsAssemblyRecipe() rl -> sequencedRecipe.getAsAssemblyRecipe()
.getJEISubCategory() .getJEISubCategory()
.get() .get()
@ -107,7 +99,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory<SequencedAss
AllGuiTextures.JEI_LONG_ARROW.render(matrixStack, 52 + xOffset, 79); AllGuiTextures.JEI_LONG_ARROW.render(matrixStack, 52 + xOffset, 79);
if (!singleOutput) { if (!singleOutput) {
AllGuiTextures.JEI_CHANCE_SLOT.render(matrixStack, 150 + xOffset, 75); AllGuiTextures.JEI_CHANCE_SLOT.render(matrixStack, 150 + xOffset, 75);
Component component = new TextComponent("?").withStyle(ChatFormatting.BOLD); Component component = Components.literal("?").withStyle(ChatFormatting.BOLD);
font.drawShadow(matrixStack, component, font.width(component) / -2 + 8 + 150 + xOffset, 2 + 78, font.drawShadow(matrixStack, component, font.width(component) / -2 + 8 + 150 + xOffset, 2 + 78,
0xefefef); 0xefefef);
} }
@ -116,7 +108,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory<SequencedAss
matrixStack.pushPose(); matrixStack.pushPose();
matrixStack.translate(15, 9, 0); matrixStack.translate(15, 9, 0);
AllIcons.I_SEQ_REPEAT.render(matrixStack, 50 + xOffset, 75); AllIcons.I_SEQ_REPEAT.render(matrixStack, 50 + xOffset, 75);
Component repeat = new TextComponent("x" + recipe.getLoops()); Component repeat = Components.literal("x" + recipe.getLoops());
font.draw(matrixStack, repeat, 66 + xOffset, 80, 0x888888); font.draw(matrixStack, repeat, 66 + xOffset, 80, 0x888888);
matrixStack.popPose(); matrixStack.popPose();
} }
@ -136,7 +128,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory<SequencedAss
SequencedRecipe<?> sequencedRecipe = sequence.get(i); SequencedRecipe<?> sequencedRecipe = sequence.get(i);
SequencedAssemblySubCategory subCategory = getSubCategory(sequencedRecipe); SequencedAssemblySubCategory subCategory = getSubCategory(sequencedRecipe);
int subWidth = subCategory.getWidth(); int subWidth = subCategory.getWidth();
TextComponent component = new TextComponent("" + romans[Math.min(i, 6)]); MutableComponent component = Components.literal("" + romans[Math.min(i, 6)]);
font.draw(matrixStack, component, font.width(component) / -2 + subWidth / 2, 2, 0x888888); font.draw(matrixStack, component, font.width(component) / -2 + subWidth / 2, 2, 0x888888);
subCategory.draw(sequencedRecipe, matrixStack, mouseX, mouseY, i); subCategory.draw(sequencedRecipe, matrixStack, mouseX, mouseY, i);
matrixStack.translate(subWidth + margin, 0, 0); matrixStack.translate(subWidth + margin, 0, 0);
@ -151,7 +143,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory<SequencedAss
public List<Component> getTooltipStrings(SequencedAssemblyRecipe recipe, IRecipeSlotsView iRecipeSlotsView, double mouseX, double mouseY) { public List<Component> getTooltipStrings(SequencedAssemblyRecipe recipe, IRecipeSlotsView iRecipeSlotsView, double mouseX, double mouseY) {
List<Component> tooltip = new ArrayList<>(); List<Component> tooltip = new ArrayList<>();
TranslatableComponent junk = CreateLang.translateDirect("recipe.assembly.junk"); MutableComponent junk = CreateLang.translateDirect("recipe.assembly.junk");
boolean singleOutput = recipe.getOutputChance() == 1; boolean singleOutput = recipe.getOutputChance() == 1;
boolean willRepeat = recipe.getLoops() > 1; boolean willRepeat = recipe.getLoops() > 1;
@ -164,8 +156,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory<SequencedAss
if (!singleOutput && mouseX >= minX && mouseX < maxX && mouseY >= minY && mouseY < maxY) { if (!singleOutput && mouseX >= minX && mouseX < maxX && mouseY >= minY && mouseY < maxY) {
float chance = recipe.getOutputChance(); float chance = recipe.getOutputChance();
tooltip.add(junk); tooltip.add(junk);
tooltip.add(CreateLang.translateDirect("recipe.processing.chance", chance < 0.01 ? "<1" : 100 - (int) (chance * 100)) tooltip.add(chanceComponent(1 - chance));
.withStyle(ChatFormatting.GOLD));
return tooltip; return tooltip;
} }
@ -205,4 +196,10 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory<SequencedAss
return tooltip; return tooltip;
} }
protected MutableComponent chanceComponent(float chance) {
String number = chance < 0.01 ? "<1" : chance > 0.99 ? ">99" : String.valueOf(Math.round(chance * 100));
return CreateLang.translateDirect("recipe.processing.chance", number)
.withStyle(ChatFormatting.GOLD);
}
} }

View file

@ -6,7 +6,6 @@ import java.util.function.Consumer;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.compat.jei.category.animations.AnimatedSpout; import com.simibubi.create.compat.jei.category.animations.AnimatedSpout;
import com.simibubi.create.content.contraptions.fluids.actors.FillingRecipe; import com.simibubi.create.content.contraptions.fluids.actors.FillingRecipe;
@ -17,11 +16,13 @@ import com.simibubi.create.foundation.fluid.FluidIngredient;
import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllGuiTextures;
import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.forge.ForgeTypes;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.recipe.RecipeIngredientRole;
import mezz.jei.api.runtime.IIngredientManager; import mezz.jei.api.runtime.IIngredientManager;
import net.createmod.catnip.platform.CatnipServices;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items; import net.minecraft.world.item.Items;
@ -36,16 +37,15 @@ import net.minecraftforge.fluids.capability.IFluidHandlerItem;
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public class SpoutCategory extends CreateRecipeCategory<FillingRecipe> { public class SpoutCategory extends CreateRecipeCategory<FillingRecipe> {
private final AnimatedSpout spout; private final AnimatedSpout spout = new AnimatedSpout();
public SpoutCategory() { public SpoutCategory(Info<FillingRecipe> info) {
super(doubleItemIcon(AllBlocks.SPOUT.get(), Items.WATER_BUCKET), emptyBackground(177, 70)); super(info);
spout = new AnimatedSpout();
} }
public static void consumeRecipes(Consumer<FillingRecipe> consumer, IIngredientManager ingredientManager) { public static void consumeRecipes(Consumer<FillingRecipe> consumer, IIngredientManager ingredientManager) {
Collection<FluidStack> fluidStacks = ingredientManager.getAllIngredients(VanillaTypes.FLUID); Collection<FluidStack> fluidStacks = ingredientManager.getAllIngredients(ForgeTypes.FLUID_STACK);
for (ItemStack stack : ingredientManager.getAllIngredients(VanillaTypes.ITEM)) { for (ItemStack stack : ingredientManager.getAllIngredients(VanillaTypes.ITEM_STACK)) {
if (stack.getItem() instanceof PotionItem) { if (stack.getItem() instanceof PotionItem) {
FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack); FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack);
Ingredient bottle = Ingredient.of(Items.GLASS_BOTTLE); Ingredient bottle = Ingredient.of(Items.GLASS_BOTTLE);
@ -78,10 +78,8 @@ public class SpoutCategory extends CreateRecipeCategory<FillingRecipe> {
return; return;
Ingredient bucket = Ingredient.of(stack); Ingredient bucket = Ingredient.of(stack);
ResourceLocation itemName = stack.getItem() ResourceLocation itemName = CatnipServices.REGISTRIES.getKeyOrThrow(stack.getItem());
.getRegistryName(); ResourceLocation fluidName = CatnipServices.REGISTRIES.getKeyOrThrow(fluidCopy.getFluid());
ResourceLocation fluidName = fluidCopy.getFluid()
.getRegistryName();
consumer.accept(new ProcessingRecipeBuilder<>(FillingRecipe::new, consumer.accept(new ProcessingRecipeBuilder<>(FillingRecipe::new,
Create.asResource("fill_" + itemName.getNamespace() + "_" + itemName.getPath() Create.asResource("fill_" + itemName.getNamespace() + "_" + itemName.getPath()
+ "_with_" + fluidName.getNamespace() + "_" + fluidName.getPath())) + "_with_" + fluidName.getNamespace() + "_" + fluidName.getPath()))
@ -94,11 +92,6 @@ public class SpoutCategory extends CreateRecipeCategory<FillingRecipe> {
} }
} }
@Override
public Class<? extends FillingRecipe> getRecipeClass() {
return FillingRecipe.class;
}
@Override @Override
public void setRecipe(IRecipeLayoutBuilder builder, FillingRecipe recipe, IFocusGroup focuses) { public void setRecipe(IRecipeLayoutBuilder builder, FillingRecipe recipe, IFocusGroup focuses) {
builder builder
@ -108,7 +101,7 @@ public class SpoutCategory extends CreateRecipeCategory<FillingRecipe> {
builder builder
.addSlot(RecipeIngredientRole.INPUT, 27, 32) .addSlot(RecipeIngredientRole.INPUT, 27, 32)
.setBackground(getRenderedSlot(), -1, -1) .setBackground(getRenderedSlot(), -1, -1)
.addIngredients(VanillaTypes.FLUID, withImprovedVisibility(recipe.getRequiredFluid().getMatchingFluidStacks())) .addIngredients(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getRequiredFluid().getMatchingFluidStacks()))
.addTooltipCallback(addFluidTooltip(recipe.getRequiredFluid().getRequiredAmount())); .addTooltipCallback(addFluidTooltip(recipe.getRequiredFluid().getRequiredAmount()));
builder builder
.addSlot(RecipeIngredientRole.OUTPUT, 132, 51) .addSlot(RecipeIngredientRole.OUTPUT, 132, 51)

View file

@ -11,7 +11,7 @@ import com.simibubi.create.content.contraptions.itemAssembly.SequencedRecipe;
import com.simibubi.create.foundation.fluid.FluidIngredient; import com.simibubi.create.foundation.fluid.FluidIngredient;
import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.CreateLang;
import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.forge.ForgeTypes;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.builder.IRecipeSlotBuilder; import mezz.jei.api.gui.builder.IRecipeSlotBuilder;
import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.IFocusGroup;
@ -73,7 +73,7 @@ public abstract class SequencedAssemblySubCategory {
builder builder
.addSlot(RecipeIngredientRole.INPUT, x + 4, 15) .addSlot(RecipeIngredientRole.INPUT, x + 4, 15)
.setBackground(CreateRecipeCategory.getRenderedSlot(), -1, -1) .setBackground(CreateRecipeCategory.getRenderedSlot(), -1, -1)
.addIngredients(VanillaTypes.FLUID, CreateRecipeCategory.withImprovedVisibility(fluidIngredient.getMatchingFluidStacks())) .addIngredients(ForgeTypes.FLUID_STACK, CreateRecipeCategory.withImprovedVisibility(fluidIngredient.getMatchingFluidStacks()))
.addTooltipCallback(CreateRecipeCategory.addFluidTooltip(fluidIngredient.getRequiredAmount())); .addTooltipCallback(CreateRecipeCategory.addFluidTooltip(fluidIngredient.getRequiredAmount()));
} }

View file

@ -6,6 +6,7 @@ import com.simibubi.create.content.contraptions.fluids.actors.SpoutTileEntity;
import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.fluid.FluidHelper;
import net.createmod.catnip.platform.CatnipServices;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -40,8 +41,7 @@ public class SpoutCasting extends BlockSpoutingBehaviour {
if (handler.getTanks() != 1) if (handler.getTanks() != 1)
return 0; return 0;
ResourceLocation registryName = te.getType() ResourceLocation registryName = CatnipServices.REGISTRIES.getKeyOrThrow(te.getType());
.getRegistryName();
if (!registryName.equals(TABLE) && !registryName.equals(BASIN)) if (!registryName.equals(TABLE) && !registryName.equals(BASIN))
return 0; return 0;
if (!handler.isFluidValid(0, availableFluid)) if (!handler.isFluidValid(0, availableFluid))

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